The Right Mindset For App Developers

Written by Reinder de Vries on January 16 2018 in App Business

The Right Mindset For App Developers

Learning how to code iOS apps is hard. Just like learning any other skill, it takes time, effort and a bit of talent.

The majority of people who want to learn to code, give up early. That’s why skilled developers make five and six figure salaries.

It’s also why there is a shortage of developers in just about any industry you can think of. The supply is low and the demand is high.

I have seen one differentiator between the people who want to learn how to code, but never do, and those that got the job and built great apps.

It’s not talent. It’s not intelligence. It’s not (even) persistence. I’ll tell you what it is…

  1. 20% Coding, 80% Debugging
  2. Coding, Fast and Slow
  3. Learn Something New Every Day
  4. Further Reading

20% Coding, 80% Debugging

Most professional developers spend 20% of their time writing new code and 80% on debugging, testing and refactoring.

Finding bugs and fixing them can be frustrating work. Pick a random post on StackOverflow and you’ll find at least one person complaining about how that one bug cost him or her hours of work.

Typical work that developers do consists of:

  • Writing a block of code, like a function or feature
  • Testing that bit of code by hand – does it work?
  • Finding bugs in the code and fixing them one by one
  • Testing the code again for “edge cases” – what happens when you do X?

Finally, you refactor the code you wrote. This means you rewrite the code so it has better architecture1, better performance, and is more readable.

Ideally, you also write unit tests so you can automate testing your code in the future. (Unit testing, refactoring and discipline are signs of an intermediate-level developer.)

Refactoring your code means rewriting it. You’ve added so much new code by now that there has to be a better, clearer way of writing it.

You now see that it’s easy to spend 4 hours on debugging, for every hour of writing new code.

Learn how to build iOS apps

Get started with iOS 12 and Swift 4

Sign up for our iOS development course Zero to App Store and learn how to build professional iOS 12 apps with Swift 4 and Xcode 10.

Coding, Fast and Slow

Do a quick Google search and you’ll see that developers are in high demand these days.

Over 2 million search results for “iOS developer jobs”, thousands of job posts on LinkedIn, and hundreds of pages with job descriptions of recruitment firms.

It’s no surprise that Udemy’s latest iOS course has almost 50.000 students at $10 a pop. But is $10 and 40 hours of video courses all it takes to become an iOS developer?

Imagine that all those 50.000 students become successful iOS developers. There would not be a shortage of good developers any more. No, there’s something else going on.

Anders Ericsson, a Swedish psychologist who studied human performance, wrote about the 10.000 Hours Rule. It stated that any one could master any skill, with no innate talent, given that you spent 10.000 hours to practice it. That’s about 10 years of practicing programming!

Provided you can fill 10 years of practice with Udemy video courses, can anyone learn to code well and become a great developer?

It depends…

As it turns out, time spent is a determining factor. Intelligence, talent and guidance all play a role, but what matters most of all is deliberate practice.

Are you racing through iOS tutorials and coding exercises as fast as you can, or are you deliberately examining and practicing as you work through your 10, 100 or 1000 hours of practice?

Chris Ching from CodeWithChris.com puts it very aptly: “It’s a journey, not a race!”

Don’t code on auto-pilot, ticking off iOS tutorials from your to-do list. Develop your critical thinking and technical design skills by going slow. Be patient. Deliberately practice your craft to get better at it.

It’s better to code the same app 10 times, improving it every time, than it is to code one app idea once, poorly.

Learn how to code your own iOS apps by mastering Swift 4 and Xcode 10 » Find out how

Learn Something New Every Day

The difference between an iOS developer and a quitter is that the iOS developer is willing to learn something new every day.

”Willing” is key here. Most aspiring developers dream of a six figure salary, but not many of them are willing to put in the work.

It is the ability to do emotional labor, making mistakes, and getting back up again, that defines the mindset of a successful developer.

Surprised? Don’t forget that there are footsteps on the moon. They weren’t put there by people who wanted to go to the moon. They were put there by people that got to the moon!

Interestingly, the difference between a junior and senior developer is that one of them is willing to make mistakes. But which one is it?

The airplane from Paris to New York didn’t turn back when it realised that it was 2 degrees off course. It adjusted course, and kept adjusting its course, until it got to New York.

You know what the cool thing is? When you learn to code like this, learning to code is easy. Your mindset makes all the difference.

Further Reading

The right mindset to learn how to code is this:

  • Expect 20% coding, 80% debugging – and refactor your code
  • Go slow rather than fast, and practice deliberately
  • Learn something new every day

And last but not least: cultivate your ability to put in the work by taking action.

Ready to get to work? Learn to code apps with Zero to App Store. We’ll help you build your deliberate practice.

1 “Better architecture” here means rewriting for better structure, and making sure your code better follows the architectural patterns and design patterns you chose before coding the project.

Reinder de Vries

Reinder de Vries is a professional iOS developer. He teaches app developers how to build their own apps at LearnAppMaking.com. Since 2009 he has developed a few dozen apps for iOS, worked for global brands and lead development at several startups. When he’s not coding, he enjoys strong espresso and traveling.

Leave a Reply

Required to post: Your real name and email address, and a pleasant demeanor. Your email address will not be published. Markdown is supported.

  • Mina Edinburgh August 7, 2018 06:36

    I liked it when you said that talent, intelligence, and guidance are the important factors to be a successful app developer, however, without deliberate practice, they mean nothing. For me, it takes an awfully long time before the perfect app comes out, so practice means a lot to me. Hopefully, the professionals that I will hire have devoted time to practice because I need the right app as soon as I open a business next month. Thanks!

    1. Reinder de Vries August 7, 2018 09:42 in reply to Mina

      Awesome! It's not that talent doesn't matter. Many things start with talent, and are further cultivated through practice. Good luck with your app!

  • Great post was wondering if you could provide an insight over how different or difficult woud it be for an android developer to port into the iOS world , in other words are the basics same or are they very different in each aspects?

    1. Reinder de Vries April 25, 2018 10:00 in reply to Sam

      Thanks! Yes, iOS and Android are 100% different in terms of programming languages and SDKs.

      Android uses Kotlin or Java, and the Android SDKs, and iOS uses Swift (or Objective-C), and the Cocoa Touch SDKs. Many principles are the same though, as with any programming language, so if you're already familiar with another programming language, any new programming language is easier to pick up, compared to starting from scratch.

      Between iOS and Android, many concepts are the same, such as navigation, tap interaction, using table views, etcetera. Some popular tools, such as Realm, Firebase and Parse Server, are available for both platforms.

      You can of course look into cross-platform tools like React Native or PhoneGap, but from your perspective right now, that's also another platform you'd get into. React Native is JavaScript-based, for instance.

      I started out as an iOS developer, and later built ~ 4 Android apps too, and I often found it helpful to Google "[iOS thing] for Android" or "Android alternative for [X]". That would often lead me to a comparable concept for Android. You can do the same for iOS. And as always, you'll want to invest some time and/or money into really getting to grips with a new platform. Cheers!

  • I have never been so determined in my life to become a professional iOS developer like i am now after reading this article .Thanks Reinder de Vries :-)

    1. Reinder de Vries March 20, 2018 21:49 in reply to Simcyndy

      Awesome! Glad you liked it :-)

  • Athanasiou Anna January 28, 2018 20:37

    That's inspiring...<3

    1. Reinder de Vries January 28, 2018 21:48 in reply to Athanasiou

      I'm glad you like it! Happy coding :-)