4 Ways to get the most from an iOS Coding Bootcamp

Getting the most from your next bootcamp

For the last while I’ve had stellar experiences helping iOS developers pass technical interviews. As someone who finds satisfaction by helping others, being able to work 1-1 with fellow engineers has been great. Fast-forward to the present and the sky is now the limit in terms of teachable topics as well as the number of services that specialize in content delivery. Although I remain enthusiastic about all forms of learning, I find students who learn iOS development through bootcamps have many additional questions about the environment, coding syntax and commonly used design patterns. Instead of writing the typical “what’s wrong bootcamps” essay, I thought I would turn things around and review how one can get the most from this type of learning experience.


Goals & Format

For those who don’t know, bootcamps differentiate themselves based on the promised depth and breadth of content. In other words, they propose a major bang for buck, offering a significant learning outcome from a single 15-20 week course. With the advent of online learning, there are now a number of long-standing MOOC (massive open online course) platforms that offer a scaled-down version of the traditional bootcamp at a significantly reduced rate - sometimes even free.

The Challenge

As mentioned, many of these services offer a transformational outcome, promising anyone can become an iOS development expert with a few short months of intense learning. To back this claim, schools put a substantial effort into immediate content delivery (e.g. fulfillment) and less on the long-term outcome. Let’s see how this model compares to what employers are actually seeking:

 
From “Why do programming bootcamps fail to live up to their job placement expectations?”  by Chris Lee via   Medium

From “Why do programming bootcamps fail to live up to their job placement expectations?” by Chris Lee via Medium

 

This illustration provides a great comparison of a bootcamp model versus traditional learning. As with acquiring any new skill, there are no shortcuts to mastery. We as people increase our knowledge through a systematic process of testing ideas to see what works and what doesn’t. Similar to machine learning algorithms powering Google, Amazon and Netflix, the more time one has to absorb and process new content, the more knowledgeable one becomes. However, if you’re considering enrolling in a bootcamp, there are a few ways you can enhance your experience.


Learn the known-unknowns

If it’s not already obvious, the main benefit of the bootcamp model is being exposed to a load of focused content. Getting the roadmap of what you need to learn to be successful certainly provides more clarity than if you were trying to learn everything by yourself. Back when I learned iOS, I had already spent a considerable amount of time developing solutions on the Microsoft platform. Even though I had good industry experience, I found the Objective-C language and tools hard-to-learn and foreign. Now we have a much-improved learning environment with Swift and SwiftUI, and it will only benefit you to acquire skills from someone who’s been there and done that.


Dissect the signals versus noise

Although being exposed to a lot of cool content is great, getting too much at one time can be like trying to drink through a firehose. What will eventually move your skills to mastery is being able to mentally digest the material so that you can understand the signal versus noise. This is especially important in a profession like software development, where it’s easy to invest substantial amounts of time learning the latest SDK’s and 3rd-party services just to have it all change in 12-15 months. Even though these skills are important, try instead to focus on the flow of data throughout your solution or app. By focusing on data flow, you’ll be much better positioned to ask smart questions which will lead to increased learning. This is much more aligned with what hiring managers are seeking in candidates. Examples include a basic understanding of algorithms and data structures coupled with iOS-specific techniques like GCD (Grand Central Dispatch), Model-View Controller, Key-Value Observation, Closures as well as OO (Object-Oriented) and Protocol-Oriented coding techniques.


Position yourself to ask great questions

As mentioned, being able to recognize signals as you learn new topics will allow you to ask great questions. Asking questions not only clarifies what you’ve learned but also helps builds the characteristics needed to become a great developer. For example, I often ask this seemingly straightforward question to students in my interview program. Interestingly, answers vary widely as the challenge requires folks to ask clarifying questions to solve the problem:

/*
challenge: using Swift code, rewrite the following function so the first variable is expressed as an optional and the second variable as an implicit unwrapped optional. 
*/

func multipler(first: Int, second: Int) -> Int {
     return first * second
}

Test & Apply your knowledge

Lastly, seek opportunities to test and apply your knowledge. Often in coding bootcamps, students get the chance to apply what they’ve learned towards some type of final capstone project. This provides a good foundation, but also continue to find new opportunities to reinforce your learning long after your course completion. As shown in the aforementioned graph, this is time to build upon your new skillset with additional projects or interview prep questions in order for you to succeed.