The Airsource Blog

Become an iOS Developer in Three Weeks!

Anyone who has been out from under their rock in the past five years cannot have failed to notice the continual adverts for courses that promise to make you an iOS developer in three weeks.

I dare say that at least some of these courses have merit. The problem I see with them is that anyone competent at programming knows full well that they do not need a course to learn how to do something. They need a set of instructions on how to install the build tools, which is almost always the painful bit, an example project (that actually builds), and a good internet connection to the documentation and StackOverflow. Plus some time to play. Anyone employing (competent) engineers should know the same.

Naturally you can learn all of that from formal tuition as well. But what formal tuition will rarely give you - and where the value of the engineer with five years experience rather than three weeks lies - is not knowing how things work. It is knowing how to work efficiently, effectively, and how to cope when things don't work.

For example, five complexities of iOS that you are unlikely to pick up from a short course

Even if your course happens to teach you all the gotchas on an operating system, it will only teach you the ones the instructor knows about - and there are new ones appearing all the time. The value of an experienced developer is that they know how to debug problems when things go wrong. And it cannot possibly teach you all of the gotchas as well as the critical foundation of how a computer actually works under the hood.

And that's just the raw programming. I took a look at the lecture list for a three week course, and compared it to some of the books hanging around the office here. There were several things absent from the syllabus that I would consider critical to being a competent engineer, or let us say developer, as opposed to a programmer.

  • Understanding Requirements
  • Design
  • Estimating
  • Testing
  • Debugging
  • Performance
  • How to write robust, maintainable, portable code.
  • Source Code Control (subversion,git)
  • Release Management

What do these courses promise?

  • No pre-knowledge required - I'll teach you everything you need to know
  • Develop any iOS app you want

No it won't; and no, you won't.

  • Get app development jobs on freelancer sites

You can get those anyway. Just submit the lowest bid. The trick is delivering it for a profit, which I would argue is almost impossible for those sites unless you compromise immensely on quality.

At best, a course will enable you to write fairly standard applications in fairly standard environments. If you are competent, you will spend the next few years gradually improving the quality of your code, your estimation skills, your processes, and your repertoire of tools to be applied when things fail to work the way they should. And if you are competent, you will realise you never needed to pay that money for the course in the first place, because while a three week course may have saved you a little bit of time overall (if the instructor was really good), it has certainly not made you an expert developer.

If you are incompetent, you will fail to do all of these things, and you will leave a trail of half-finished (more like 20% finished) projects behind you.