Getting your first job in software development seems like a tall task, but it can often be really straightforward. First – get a computer science degree at a top program. Next – work through a couple internships. Finally – interview at all the big tech companies. Follow those three steps and you’re almost guaranteed to find a job. But that’s not how I did it.
You don’t need a CS degree or any degree at all to get a job. There is neither a minimum nor maximum age to become an iOS developer. You don’t need tons of years of experience before your first job. Instead, you just need to focus your time on showing potential employers that you’re worth betting on.
I did not study computer science in college, and when I graduated in 2013 I never landed an interview with a big tech company. In spite of that, I did end up finding a job as an iOS developer, and I’ve had no problem finding rewarding work ever since.
Where to invest your time
Every company has their own flavor of hiring process, so you’ll get different results depending where you apply. I’ve heard what works and what doesn’t work from hundreds of people by hosting a weekly and a monthly developer meetup. If one of these approaches isn’t working for you, don’t be afraid to switch to a different one.
Your first priority should be separating yourself from the crowd. There’s a number of ways to do this, but there are three common ways:
- release an app that shows your skills
- contribute to an open source project
- become very involved in an online or local iOS community
The app you release doesn’t have to be a genius idea – all you need is something simple with an original approach. My first app displayed vehicle data from a car sharing service web API. Tons of apps do this for you already, but I wrote my app in a way that felt more convenient for me than the official app. A simple app that you’re passionate about will get you further than a complex app you wouldn’t even use yourself. This shows employers that you’ve progressed past the stage of just being able to follow a tutorial.
Larger or more established companies value individuals who can consistently make small improvements to existing projects. If you’re applying to these types of companies, you might have better luck by contributing to an open source project. If you do this don’t worry that your code isn’t perfect – focus on making it better and more clear whenever you can. Familiarize yourself with Git branches and pull requests, because you will use these a lot once you have your first job. It’s also worth making your projects look as attractive as possible, not just to users but to other developers as well. Do this by including screenshots in your GitHub README and unit tests in the Xcode project. It’s usually much better to link to specific repositories or pull requests instead of your GitHub profile when you apply for a job.
Getting involved in a local or online community is another way to make yourself stand out. This works because you bypass recruiters and get to talk directly with other developers. This can fast-track you straight to the final interview. The more iOS developers you know, the better your chances. You should chat with local developers you know, because chances are one of them knows about an entry level iOS position looking to be filled. Meetups that met locally before COVID-19 often have online Slack or Discord instances you can join.
By pursuing one or more of these approaches, you should get at least a phone interview. However, actually getting the job may require some more project experience, development knowledge or interviewing skills.
Getting project experience
I gained project experience by doing contract web development and by releasing my own iOS app on the store. Learning a new programming language can be frustrating, because you often run into a ton of small challenges that cause your entire app to break. Perseverance makes a difference – keep working on your bugs and fix each issue as it arises, and you’ll eventually get to a point where most issues are similar to ones you’ve already fixed. After that point, every problem is solvable.
You can gain project experience on your own app or by contributing to open source projects. However, an even better way to gain project experience is by doing small freelance apps. Freelance projects force you to deliver on real product requirements and give you a broad base of knowledge.
If you go down this route I would recommend you find projects with budgets of at least $5,000, so that you can charge at least $30 per hour. If you do this, I would also recommend that you agree on clearly stated functionality and estimated hours before you begin the project. A Statement of Work is the formal document you use for this. Don’t forget to consider required research, visual design, and server-side work. Make sure your client will be available for questions, and have a plan for supporting the app after the project is complete.
Code and learn as much as you can on your own time, and then put that experience into your projects. Build things that challenge you, and you’ll soon be working at a level that makes companies want to hire you.
Focusing your learning
There are definitely some books and courses worth spending money on, but you probably don’t need to spend more than $200 to get all the knowledge you need to get your first job. I recommend you compile job listings for jobs you like and write down the skills they are looking for. This will help you form your study guide.
Understanding major Apple frameworks such as UIKit and Foundation is important, but you don’t ever need to memorize the details of every Apple framework. Focus on remembering the major functionality of frameworks you learn about, and their limitations. You should know URLSession can be used to download data from the web, but you don’t need to know which framework is used to integrate Apple Pay into an app.
At this stage, it is very important to understand the Swift programming language, and you should know everything covered in the Swift language guide. It’s also very important to understand the platform you want to write code for, so take some time to familiarize yourself with Apple’s Human Interface Guidelines.
Outside of Swift-specific skills, it’s a good idea to improve your general software development skills. These include debugging, triaging bugs, and effective written communication. You should also understand how different design patterns allow you to manage complexity as an app code-base grows larger.
Many companies do still use Objective-C, but don’t need their new code to be written in it. It’s a good idea to learn how to read Objective-C code, but you don’t necessarily need to be well versed in writing it.
Improving your chances
As VP of Engineering at Jackrabbit Mobile, I interviewed dozens of developers and hired ten of them. The biggest deal-breaker was when people over-exaggerated their skills. It was okay if a candidate didn’t know everything, but I lost faith in them when, during the interview, they weren’t able to demonstrate skills listed in their resume.
When you’re at an interview, it’s important that you’re a pleasant person. You should ask good questions to demonstrate teach-ability, and show humility by being able to ask for help when you need it. Your answers and actions during interviews should show that you know how to work on a team, can set your ego aside and compromise and have the ability to take criticism.
You should communicate that you know how to handle and fix bugs. It’s also to your advantage to have opinions about iOS that allow you to demonstrate deeper knowledge of the platform. For example, if you have a favorite language feature like Property Wrappers or the guard statement, or a thing you wish you could improve in one of the Apple frameworks – that often makes for good conversation during interviews.
I never used data structures and algorithms focused interview questions when I was charged with hiring developers, but if you run into these at interviews, you should read the book, Cracking the Coding Interview by Gayle Laakmann McDowell.
If you’re not having luck during interviews, re-examine your strengths and search for a company where they would be valued. Seek out companies that don’t advertise their job postings well and reach out as soon as possible so that you are the first person on their list. Companies hire for iOS developers all over the world, so try to be flexible and consider moving to a different city where there are more iOS jobs. If that doesn’t work, you can always focus on web development as an alternative. You can transition to iOS work later, and web development is a rewarding career on its own.
My second job came from a recruiter reaching out to me on LinkedIn. So take time to make sure your LinkedIn profile is complete.
If you give it time, you will find an iOS job. Remember that you don’t need a computer science degree. I don’t have a CS degree, and neither do 53% of professional developers according to the Stack Overflow 2020 Developer Survey. The majority of iOS jobs are about writing readable code and understanding documentation. Arguably a minority of jobs truly require CS knowledge.
Tech is also very forgiving to lack of formal education. Not having a degree is a filter that will get you disqualified at some companies, but that doesn’t happen everywhere. Once you get past resume screening, talent and passion are more important than a degree.
Ageism is a real bias, but you can overcome it by always focusing on the skills you have. I’ve hired developers without a CS degree and I’ve hired developers older than my parents.
One of the biggest problems junior developers have is getting stuck at a stage where they can only build things by following a tutorial. If you can demonstrate that you’re past that stage and that you’re eager to grow, then you’ll find a job.
Be optimistic in your job search and give your best effort because every company out there is looking for a different combination of knowledge, experience and skills. Send me an email if you have any questions. My email address is david at getonthestore.com.
Thank you to David Okun for editing this piece and adding empathy that was missing in my first draft.