Why is building a mobile app this hard | /var/log/share

Why is building a mobile app this hard

This year I thought about building my ideas and I’ve already done a post on “Drone Trails” and the motivation behind it. The part I didn’t speak about much is how hard it was to develop. I started building around March, released my app in September on iOS. 10 months later I’ll finally have the Android app ready.

What ticks me off in the entire process is the time it takes to learn, build and create mobile apps. This is a whole new world to be honest. A lot of the process is very discouraging because to me the thing that makes coding interesting is “You get to see what you build quickly”. It’s that dopamine hit that keeps me going and when that disappears (the tipping point) - the motivation to finish something is entirely driven by will power and no longer the passion for the idea.

There are areas and choices of implementation that will make life easier here but honestly if there is a tool out there to help me build and design quickly - I would try it in an instant (and there isn’t IMO).

The build tools

This is by far the most frustrating part of the process. To build a crud app with some basic server functionality including hooking up firebase - I needed about dozens of dependencies and building the app took ~ 20 mins every time I needed to do. Why is compiling such a pain ? It’s the most visible component in terms of building/iterating quickly and this is the part that takes up most of the time.

The dependency management tool is janky at times that you need to unlink and link them back. Worse - it shits the bed and XCode complains about stuff you didn’t even know existed in your app. It takes much of your time to understand this and about the time you figure this out, you have other problems of managing your release environments to test things quickly.

It takes scripts and Makefile recipes to make this happen quickly. Why can’t this be so much easier ? I learned you can circumvent this issue by using React Native which I ended up doing because I didn’t want to do Kotlin and spend 3 months learning that.

The app specific concepts

I come from an DevOps/Infra engineer background - so mobile app building was something new to me. There are tons of resources out there explaining how to build but nothing that talks about the why. On top of this - there are some programming paradigms that’s very specific to apps that makes life even more trickier. I had trouble understanding:

The last point is something I’m going to stress on. There is a certain acumen one needs to develop to build something useful. By useful - I mean something that can be tolerated by your users. This is not the same as knowing how to build because you have to understand why you have to build here.

I can build the worst UI experience with some really good functionality and lose the narrative. You want to learn those and that takes time. My 2 cents on people building curriculum around app development - include design and user experience. It’s underrated and taken so lightly that judgements like “Design can’t be so hard” will bite you for sure.

Don’t even get me started on UI building in Android - that stuff still uses xml and is way behind when the tool chain that makes iOS so good. I quickly resorted to React native for building the Android app. I will wrote more there in a new post since I was pleasantly surprised I could replicate functionality in 2 weeks.

Will No-code tools solve this ?

I don’t think so. You need something in the middle. The grass looks greener thinking about non-engineer customer base here but it is equally greener on this side of the field too :)

You are looking at folks who want to build the courage to try out ideas outside of their regular jobs. Saving time is the most valuable thing you can buy then from a development perspective. Prototyping takes precedence and feedback becomes equally important.

There isn’t a single tool out there that hits this sweet spot including feedback. It’s extremely hard to get noticed and it is even harder to get testers. I would totally get on the bandwagon if something out there provides all this functionality.

Final Thoughts

There are tons of tools out there to make life easier but finding and selecting one is a challenge. If your app is slightly non-trivial - the research needed exponentially rises. There are fewer resources out there that points you to the bits you should care about. Build tutorials that teaches fundamentals because questioning the why(s) is even harder than teaching the how(s).