This is a article from my "Dev Chats" series where I speak to an awesome developer or techie every week or so. You can read more here. Let me know in the comments if you find these useful to you!
Mugunth, iOS developer and author.
I’m a programmer who likes to work on operating systems than browsers. I ran a successful consulting company based in Singapore. I graduated in 2009 with a Masters in Information Systems from Nanyang Technological University, Singapore.
I was toying around with the iOS toolchain during the vacation breaks, made a few apps (actually just running a UITabbar based application) for the original iPhone even before the SDK was out. Till about 2010, I moonlighted as a iOS developer for startups and the launch of iPhone 4 made iOS a serious career choice for me. Since then, iOS consulting became my full time job. In October 2017, I moved to Melbourne to join Itty Bitty Apps full time.
I grew up in India. Mathematics and accounting (tax related stuff) used to be favourite subjects for most people there. When we grew up, policy makers thought computer science was a natural extension of mathematics and they started us on programming way back in primary 2 (late 80s/early 90s). It was an “opt-in” subject, though everyone opted in (just so as to enter the sacred computer room. At least back in 90s the computer lab was almost like a sanctum. No shoes were allowed inside :-) ). I learnt a programming language called Logo. It’s loosely similar to Swift Playgrounds. Back then, no one, not the policy makers, nor teachers or parents, would have thought, introducing programming would have this impact. But we mere mortals have never predicted the future precisely right? Or should I bring up Steve’s famous quote, “You can't connect the dots looking forward; you can only connect them looking backwards”
I used to write a “well-read” blog back in the day. Unlike most other Objective-C “tutorial” blogs, mine focussed on deep tech articles like this one on memory management or backend stuff like this one. Wiley approached me to co-author a book with Rob Napier and that’s how it started. The book helped me learn all the new things in that version of iOS, because we have to write about them. No one wants to read about old stuff in a new book.
And yes, the book definitely helped with freelancing. Getting contracts with bigger clients were easier. When a couple others compete for a project, I usually win the contract despite my relatively higher daily rates. Royalties-wise, not much. Most people don’t have time to read and the publishing industry is in a steady decline. I would equate the publishing industry to the music industry. Most artists make money by selling tickets to concerts rather than by selling/streaming music. In this digital revolution, we should be watching out for new avenues to tap in rather than cringing that the old model no longer works. I’ve seen a lot of people who are like, I don’t want to publish books electronically because most people torrent them anyway. That’s not how the industry works. Embrace technology and find other avenues of making money. Don’t be a Taylor Swift.
Apple is ruthless in replacing things that work beautifully well. I remember watching the presentation by Steve Jobs, introducing the iPod Nano, where he replaces the already super popular iPod mini with the nano. It doesn’t stop with their products. Apple extends this philosophy to their SDK as well. As such, there are plenty of things to learn every year. For example, you thought you are a pro at manual memory management and Apple came up with ARC. You thought you mastered custom code driven layouting and Apple came up with Auto Layout. You thought you knew everything about networking and Apple deprecated and replaced NSURLConnection with NSURLSession. You thought you are a pro in Objective-C and Apple introduced Swift. The list goes on and on and on.
Where do you think the future of the iOS platform is going? What are your thoughts on tools like React Native?
I’m not a big fan of cross-platform tools like Reach Native or Xamarin. In my experience, I’ve seen a lot of clients moving to native, after toying around and spending money on cross platform tools. There is one and only one cross-platform tool that I really like and that is Unity game engine. I have not done much work on Unity, though, I would like to use it for making interactive storybooks kind of apps.
Singapore tech scene is pretty awesome. We organize the only English based iOS conference in Asia every year and invite people from all around the world.
In last year’s WWDC, we also won its first Apple Design Award for an app called Elk.
In Singapore, vast majority of people prefer working for an employer than being independent/sub-contract, although the ratio is significantly lower than San Francisco. I recently moved to Melbourne and see the opposite. A sizeable majority of iOS developers here in Melbourne are independent contractors.
Tech is easy. Building a team is hard.
Whilst consulting, it was hard for me to hire, build and manage a team that consistently delivers great stuff. iOS used to be a simple platform and most projects were 2-3 man months work. But since iOS 7, the platform has gotten significantly bigger than iOS apps are no longer a single person work. Clients (and users) are no longer happy with an app that works only on iPhones. The bar is now higher. Everyone wants a iPad, watch and some even a tv app for their service. To implement all these means, you need a team and that means, you need a process in place. Unfortunately, most companies still interview candidates based on their tech skills than their team/process skills.
To give an analogy, building a team is like building a phone. Though Samsung phones (and most android phones) have more RAM and more space and more battery capacity, when put together, they perform inferior to iPhone. A team is like that. You can easily work with a person who is not usually the most talented in the team, but it is close to impossible to work with someone who is super talented but not team player.
Raw tech skills don’t matter. Team playing is.
I’m still learning this tough lesson. I’m still learning the process changes that are required to hire the right person for the right team.
Teamwork is THE most important skill one should learn as he/she starts building a career. Apps are not built by people. They are built by teams. No matter whether you are a novice developer or a super senior developer, you first step is to understand what the team goals are and contribute to it. Team goals are often aligned to client requirements that eventually makes or breaks the project.
Photography. I intentionally choose hobbies that are tangential to my career. When I’m out in the nature, shooting sceneries, I would prefer to turn of that part of brain that deals with iOS and Swift. :)
On tech side, I read (or let’s be practical: purchase and read at least 30%) of every Erica Sadun’s book. My preferred source of online resources are,
Swift evolution - To keep an eye on what’s happening in the Swift world.
I’m assuming, most of the readers are iOS developers. I’m a big fan of Natasha’s curated list of “This Week in Swift”. (https://swiftnews.curated.co). You should go read and subscribe to it.