To be or not to be an Apple developer

Kale Howell
5 min readAug 17, 2020

--

Photo by Medhat Dawoud on Unsplash

Follow me @humankale for more content like this.

I am not an engineer and I’ve never been interested in becoming one. Engineers are concerned with building in the most efficient way possible. I just like to build, taking an idea that’s in my head and bringing it to life — whether or not the construction is efficient. That probably makes me a bad programmer and it’s in part the reason why I gravitated towards learning web development four years ago.

Building for the web is frictionless and it’s the cheapest way to build software. Web technology is ubiquitous, making learning easy since learning resources for web development are everywhere. And there are plenty of ways to practice what you learn, including at the workplace even if your job has nothing to do with writing code.

I’ve used my web development knowledge to become a citizen developer and increase my value as an employee.

My background is in film and media production but over the years I’ve found ways to use my web development knowledge at work. What I’ve realized is that the technology departments at non-technology organizations don’t have the bandwidth to support non-critical initiatives. That becomes my opportunity to create value for the organization by providing support they cannot get (in a timely manner) from the existing technology unit. In short, I’ve used my web development knowledge to become a citizen developer and increase my value as an employee. Sometimes in small ways like solving for how to embed one web utility into another. Other times in more visible ways like writing code to allow integrations or developing new features for a web based service.

If coding for the web has helped me so much over the years, why the interest in native development and why now? Javascript, HTML, and CSS can execute on just about any software platform. Would it make sense for me to write code using any other paradigm? I don’t make games or work much with proprietary hardware. PWAs have certainly grown in popularity over the years. With intermediaries like Cordova and React Native, I can create apps for IOS and Android simultaneously using web technology. From a practical and pragmatic standpoint web development has so many upsides it’s hard to reason learning anything else.

I didn’t understand at the time that React Native was built to solve an efficiency problem, not to make building easier.

Working on a React Native project forced me to reconsider this thought pattern. It made me realize that there is more to it than what meets the eye when it comes to developing using web technology everywhere. Targeting IOS (though I’m sure it applies to Android as well), I realized that realistically there would be no way for me to avoid Xcode. There was no way to avoid CocoaPods. When I got obscure build errors, all the Javascript knowledge I had didn’t help me figure out what was going wrong.

While working through that React Native project (it’s now on hold), whenever I had to switch from VSCode the Xcode for whatever reason, I had no idea what I was doing. I kept stumbling my way through, hoping stackoverflow would solve all my problems. I didn’t understand at the time that React Native was built to solve an efficiency problem, not to make building easier.

I figured, maybe I’ll learn just enough about IOS development to make working with React Native less painful. It was while I was on that journey that I discovered SwiftUI. SwiftUI laid to rest a lot of my frontend development anxieties. Taking a step back…I’ve always had an issue with translating visuals via CSS or Sass. I don’t know if it’s a mental block or not enough practice but it has always been a pain point for me. Libraries like bootstrap make it easier. The various React component libraries also helped me to get by but I can’t say that I’ve ever felt freedom when building out a frontend design for the web. SwiftUI was a different experience. In the short amount of time I spent learning the basics, I was shocked by how easily I was able translate a design idea from chicken scratches on paper to code that represented it accurately in Simulator.

It’s not about building something that’s supported everywhere, it’s about getting out the best version of what’s being built as quickly as possible.

I started to think that I should give native development a serious look. One other thing pushed me over the edge — the focus problem. With web development, it is so hard to focus. From both a design and technology perspective, web development pulls the attention away from building the core product. From a design perspective, building responsive web apps takes up time that could be better spent focusing on optimizing a single design layout. From a technology perspective, building and testing to support most browsers can be painful.

With native development, I can just target one device type, choose the minimum device and OS spec supported and focus just on building to that target. I’m really seeing the benefit of that now. It’s not about building something that’s supported everywhere, it’s about getting out the best version of what’s being built as quickly as possible. If users demand support on other platforms, I can always build to their needs at that time.

With that, I got off the fence and started my journey to learn IOS development. But something has kept me close to the fence since that time. This anxiety has nothing to do with the technology and has everything to do with how Apple has designed the IOS development ecosystem. Coming from the web where freedom and open source are the dominant philosophy and in light of all the bad press Apple has gotten this year regarding its anti-competitive App store policies, I’m pondering, do I really want to commit to putting my neck under Apple’s boot? I’ll explore this question in part 2.

P.S.

Why IOS and not Android?

  • I own mostly Apple hardware which makes on device testing easier.
  • In the US, market dynamics dictate that if you want to make an app that can actually make money, it has to be on IOS.
  • Java Trauma (from high school and yes, I know Kotlin is an option).

Follow me @humankale for more content like this.

--

--