How did I learn building a OS X app with Swift so fast?

Last Update: 01.02.2019. By Jens in Learning | Newsletter

I got a few questions how long ti actually took me to build the OS X app without any prior experience in this field. Of course, I could give out a number, but that would not help anybody. Does it matter, if it took 1 or 5 days?

Nope.

The question is wrong and the approach to learning.

What matters is the approach. It is different from “traditional learning” or better what people think about how it works. I wrote about it before and one of the main problems is the feeling you need to know it all before you can even start. Not even close to the truth. You don’t need to know all the syntax of Swift and operators, how obscure they are., before you can write a single tiny app. You don’t need to read the whole OS X docs before you are ready to build a small menu bar app.

Neither does reading one of the ancient tombstones aka traditional computer books help you. Man, I did waste so many hours in my life by reading them back to front. It was boring, dreading and more often than not I never finished them… Had an “Internet Protocols” book laying there for years, never actually read it. I just wanted to SMTP or send some packets per UDP… I still have a huge pile of shit in my bookshelf or on a hard drive.

But the problem is not only the material, but it is also what we expect from them and how we approach the whole learning stuff. The thing is, you don’t need to know all and everything before you are ready. The best thing you can do is to reduce the scope of what you want to do. In my case a simple reminder in the menubar of OS X. Build with Swift, because Objective-C scared me aways like one of the nightmares from Cthulhu. If you know Java, Kotlin, Python or any of similar languages you already know most of the Swift syntax. An iOS dev told me if you can code in Kotlin, you can do so in Swift. And he was right. I didn’t even read about the syntax, just looking at sample code and it is obvious.

Anyways, the harder part is always the standard libs and the ecosystem around. In my particular case, OS X APIs. But there is no sense to read through the docs so I know every widget or API. Nope, right now when I start I only need to know what I need to build my first app. With a tiny scope. And this is the key, your scope for learning. I would not learn that fast if I would not reduce my scope a lot. Once I had the knack, I never went to learn “all about X” for any given subject anymore.

You can read all day long but never take action. However, action is what drives learning. And not just that. You learn more by doing. Doing. Doing. Doing. Not reading ancient artifacts for months or years. I tell all my students at the end of training, that the best thing they can do to continue learning Spring Boot is to code the same fucking simple example app several times during the next days. And every time you look up less and less until finally, you can code it almost in sleep. I would do the same with Swift and OS X now, but I don’t think I will write more now.

Furthermore, to really check if you understood it, teach others about it. Write, Screencast or talk. When you can explain it, you understood it. If you can’t teach it or it is hard, you know you have a knowledge gap. One you can fix.

Follow it and you will outpace your peers.

Next week, I’ll break that down for you using my recent example.


P.S.: Read Lovecraft, still the best horror fiction :-)