Dec.04

Knight on the horizon!

Knight on the horizon to bring peace in our kingdom of mobile application development. Knight is coming and coming strong.

Nowadays lots of companies are going for cross-platform development to reduce development time and cost. Question is … how safe is it for long-term investment? 🤔

I’m working on mobile application development for a while and I saw many cross-platform projects died prematurely. Many projects died because those were depending 100% on 3rd party technologies. When these 3rd party technologies slow down, our projects slow down and when those die, take our projects with those as well. 😥

😭 THEN WHAT ARE WE GOING TO DO? WHO IS GOING TO SAVE US?

Well, we need to evaluate our long-term objectives and find balances. We might have chosen those paths because we didn’t have any other option at that time. But it’s about to change. 😉

3rd party technologies should be our projects’ supports but not souls. Our objective should be using those for our benefits, but if necessary we should be able to cut those off without killing our projects.

Let’s check iOS and Android native technologies.

iOS: Swift + Objective-C + UI Components (Proprietary).
Android: Kotlin + Java + UI Components (Proprietary).

Now let’s check widely used cross-platform technologies nowadays.

React Native: JavaScript + UI Components (Proprietary).
Flutter: Dart + UI Components (Proprietary).

We write whole application in React Native or Flutter. Those compile whole application natively for platforms.

As we can see, there are no common grounds between iOS/Android and React Native/Flutter in terms of technologies until compilation. 🥺

We just can’t cut those off whenever we want because whole existences of our applications depend on their existences. React Native and Flutter don’t correspond to native iOS and Android technologies until compilation.

Behold! Knight aka Kotlin Multiplatform is here to save us. 🛡

Kotlin Multiplatform allow us to compile codes and create libraries in native languages and formats. This technology compile codes written in Kotlin and generate libraries for Android and frameworks for iOS.

Check out: 😃 Kotlin Multiplatform 😍

We should develop user interface natively for platforms to provide native experience, smooth performance and customization whenever necessary.

We can compile sharable codes e.g. business rules, etc written for Android projects with Kotlin Multiplatform and can use those for iOS projects.

Later, if we don’t want to continue cross-platform development or share codes among platforms, we can just write those codes e.g. business rules, etc for iOS projects natively. Android projects can keep using existing codes as those are written in Kotlin.

Even after separation, both iOS and Android projects are alive and developments can continue independently with native technologies. 😍

Don’t worry! Our knight aka Kotlin Multiplaform is coming. Everything will be alright soon. 😁

Kotlin,Multiplaform,Thought

Dec.03

How do we develop projects without messing up?

Through out my career, I got chances to work on different types of projects, architectures and with different types of teams.

NOBODY ever told me that they have messed up their project because they didn’t know better architecture or library.

From my experience and conversation with others, it seems like we usually mess up projects because of mismanagement or disorganization.

Every architecture and library have pros and cons. When we write dirty codes, we write dirty codes. We don’t write dirty codes because of any architecture or library.

Little by little our dirty codes grow and one day we realize that our project is out of control. We can’t point out a specific thing as it’s everywhere, so we blame our architecture.

Many companies or teams concentrate only on architectures and libraries during recruitments. We are developers and we always develop skills or learn new libraries quickly. Personality, experience and management or organizational skills come with time and these are things mainly responsible for messing up projects.

We are always learning new technologies as developers, but we should be open to learn and improve on those other non technical things as well.

Usually when we talk about what went wrong, we usually end up talking about technical things which we already know or safe to talk. We never talk about minor things which lead to those mistakes. So here I’m going to concentrate on those minor but important things.

How do we mess up projects?

1. Lack of guidelines – No coding convention and resource naming guideline.
2. Not following architecture – Mixing up entities (views and business rules) and not following directory structure.
3. Lack of tests – No actual plan on what to test or which corner cases to cover.
4. No code review – No code review or giving feedback negligibly. Also taking feedback personally.
5. Unclear responsibilities – Not knowing who is responsible for what. This brings lack of coordination as well.
6. Eyes not on target – Falling in love with project and forgetting about target e.g. consumers.
7. Lack of recognition – Lack of recognition brings lack of motivation. Employees usually don’t leave because of salaries.
8. Ego – Bringing ego in professional life which makes work environment toxic. Slowly everyone tries to avoid people with ego which is not good for project as well as for team.

How do we develop projects without messing up?
1. Guidelines – We can’t read minds. So make sure there are coding convention and resource naming guideline.
2. Following architecture – No matter which architecture we choose, we need to follow strictly. No exception is acceptable.
3. Tests – We should have plan for tests, otherwise we will end up with no tests or basic tests which may not cover corner cases.
4. Code review – Code review should be a habit. We should do code review with feedback. We should not take feedback personally.
5. Clear responsibilities – Everyone should be clear about their responsibilities and this is crucial for team building and coordination.
6. Eyes on target – Don’t fall in love with project and develop project only for oneself. We have target e.g. consumers.
7. Recognition – We need to recognize good works or someone else is going to recognize their works.
8. Politeness – Be polite and professional which make work environment great. Remember, everyone is working on same goal.

Now we know those little things we did unknowingly which indirectly affected our projects. We need to try to avoid those things. We can always try to become a better developer, a better colleague and a better human being.

Architecture,Thought,Management