Starting out development
My first programming language to learn was Visual Basic 6. I had this book that gave a nice introduction to the language with all the Sub…End Sub, Dim title() As String etc. Using forms with drag and drop support, I’d create beautiful UI on my PC that gave me that super power I longed for — instructing a computer to do what I want. If you think about it, that’s what programming is all about.
I desired to write mobile apps but didn’t know where to start. My research led to Java2ME and NetBeans 6.0 was installed. I toyed around with this new found tech but lacked a proper introduction to the language used — Java.
If I remember correctly, the first Java book to encounter on was Teach Yourself Java in 21 days. Such a quick walk through of the language! Later on, I found out about Deitel & Deitel, Java How to Program, 6th Edition and I fell in love with their books and mode of teaching. Armed with these, I went on to write routines for those pesky maze games on the Java2ME platform.
I first laid my hands on Android development at a Google event dubbed
gKenya 2.0 (I think I also attended gKenya 1.0 🤔). I’m surprised the schedule is still up here at the time of writing. Day 2 was the most interesting as it was focused on developers. Someone at the event made a remark:
If you know Java, you know 50% Android development!
That was my cue. How true this was, I left it to chance. I learnt the basics; Activities, Services, Broadcast Receiver and Content Providers. This got me going as I continued to learn from the official documentation and samples I would gather online + Stack Overflow. I have written several hobby apps since then (just published one of them — open source) and also had a chance to be a consultant on an app rewrite; Ionic to native Android.
Full time employment as a mobile application developer altered the course of my development career. Writing a hobby app is one thing. Delivering a business solution is another. Being in a work environment adheres to two major points:
- Delivering quality solutions
- Delivering those solutions in a timeframe
These two requirements seem paradoxical for a beginner/junior developer but experience teaches you that’s how a business runs. To the first point, you need to learn Computer Science fundamentals; commonly used data structures such as arrays, sets, lists, maps, hash tables etc as well as have some skills in problem solving — knowing how and when to use these data structures alongside common techniques like Dynamic Programming or general recursion. My two go to practice sites are the famous LeetCode and CodeSignal. Pramp is also a good resource especially for interview-like preparation.
Diving into iOS was by self-inflicted fire. I had to deliver a clone of an Android app within the shortest time possible. I mention this in the introductory section of another article. Official documentation served me well for this task as well as samples online for a couple of features. YouTube tutorials from Brian Voong, Sean Allen, Cocoacasts, Brian Advent among others came in handy in bootstrapping my iOS learning journey. Awesome writers such John Sundell and Paul Hudson keep me up to date with content. I am currently reading iOS 13 Programming fundamentals, a great book by Matt Neuberg.
YouTube has been a great resource in my learning. I’ve watched videos from Devoxx, Android Dev Summit & Google IO, WWDC videos, William Fiset (Graph theory + Data Structures) and My Code School (Algorithms and DS).
I engage a lot with my peers on their view on development and find out how they keep up with the industry: books, conference videos, code labs, tutorials, blog posts, twitter, OSS and podcasts among others come up as some ways to learn content. I write apps using Swift, Kotlin and Java. These 3 languages, in addition to the various frameworks and libraries on Android and iOS, sure keep me learning something everyday. Keep learning!
Data Structures + Algorithms
- Matt Neuburg
- John Sundell
- Paul Hudson
- WWDC + other videos
- Kickstarter iOS OSS
- Brian Advent
- Sean Allen
- Brian Voong