How To Become A Professional iOS Developer
I could tell you that this is how you get a job as an iOS developer:
- Make a GitHub profile and contribute to OSS projects
- Sign up for Twitter and pitch in on relevant conversations
- Update your LinkedIn profile and your curriculum vitae
- Find and talk to potential employers, clients and/or recruiters
- Practice for the technical coding interview
- Go to networking events and talk to career coaches
Even though every one of these items is good advice for job seekers, it’s also just a checklist. Any decent developer can tick off these boxes. What makes your work yours?
This tutorial shows you how you can do original, professional and career-defining work. How to do work worth showcasing. If you’re looking for a checklist, you’re looking for an excuse to be unoriginal. And that’s not going to land you that next iOS project!
Here’s how to become a professional iOS developer:
Let’s get started!
Step 1: Build Your App Portfolio
The first step of becoming a professional iOS developer is to understand that your app portfolio is a crucial component of your work. It’s as important as your professional reputation, keeping your tools sharp, and learning new things every day.
Your app portfolio is the culmination of your work. They are carefully crafted projects, over the long term, that you carry around as a badge of accomplishment.
When you interview with a potential employer or client, your portfolio can do the talking for you. You can fold it open in front of the interviewer and say: “Look, I did this great work. I’d love to add your project to the list.”
You won’t merely add it to the list. You seek to start a collaboration that results in work that’s by far more than good enough to belong in your portfolio. To do your work, you need your employer or client just as much as they need you. This synergy is where your best work is done.
An app portfolio is more than a collection of app screenshots. Here’s what you should highlight:
- Technologies, tools and techniques you’ve worked with (including ones unrelated to app development)
- Insights you’ve gained, like subject matter expertise or “skill multipliers” (more on that later)
- Experiments, try-outs, studies, work-in-progress, and finished-but-incomplete work
Your curriculum vitae (CV) should list former employers, your education, and a quick list of tools and techniques, so the interviewer can scan those and tick the appropriate boxes.
Some interviewers just want to check boxes. Do you have 3 years of experience with Swift? Check. Do you know unit testing? Check. Can you speak English? Check. Do you have a pulse? Check.
This makes the interviewer feel safe, because they’re afraid of hiring the wrong person and losing their job. They missed out on the inescapable truth that a good hire is not someone who merely checks all the boxes.
This hiring process is changing, but the reality is: interviewers will hang onto that checklist for a while longer.
Now that you know, you can either make sure you check the boxes, and use it as a first step to do original work. And of course, you can seek out companies and teams that value independent thinking and original work.
Back to your app portfolio. A portfolio is a chance to showcase your best work. But what do you do if you don’t yet have any work to showcase?
You make work worth showcasing. It’s that simple. In fact, “make work worth showcasing” is a damn fine approach to building a professional career!
Let’s take a look at a few misconceptions about app projects that you’re “allowed” to put in your portfolio:
- It needs to be paid work (no it doesn’t!)
- It needs to be only your best work (nope, your worst is fine too!)
- It needs to be for big-time clients and employers (no, “small” is OK too!)
Some of the best app development work I’ve done in the past 10 years wasn’t for the biggest clients on my CV. I learned a lot from working on my own failed startup ideas, that I made no money with whatsoever. I learned more from saving a near-failed project, than from sitting in a cubicle for 6 months.
Every app in your portfolio gives you the opportunity to connect with a potential employer or client. The first step is to do work that’s worth showcasing.
Take it from there: put it on your website, on your CV, and create stories around it for those you seek to serve with your work. What are you going to build?
Step 2: Gain Real-World Experience
Let’s look at a typical job posting for an iOS developer:
- At least 5 years of experience as a software developer
- Experience with Swift, iOS, CocoaPods and XCUnit
- Experience with agile and scrum
- Experience with unit testing, mocking and stubbing
- Knowledge of “clean architecture”
- Knowledge of security
It looks like a fair deal, right? They need someone who can deliver. A developer with enough experience. Someone who takes input and produces output. But what does it mean to have experience and knowledge?
I think the above job posting should have said:
- We need someone who’s built enough apps to understand our business’ needs and desires
- She should tick the boxes on whatever tools, frameworks and technologies she thinks are best to complete the work we require of her
- She needs to be independent, self-directing, autonomous and in control
And it also should have said:
- We need someone who has written spaghetti code before, tried to unit test it, failed, f*cked up the project, and now knows how to do it better
- We need someone who doesn’t hide behind “clean architecture”, but a developer who can explain to us why the app is built like this
- When the app has a security breach, we need someone who can take responsibility and fix it
- We need someone who can ask the right questions, and tell us the best answers
The next step in becoming a professional iOS developer is not about experience, it’s about real-world experience. As a career-oriented iOS developer, you need to ask yourself what it means to have gained experience.
Make lots of mistakes! That’s the only thing you need to do to gain real-world experience. Mistakes lead to insights, and insights lead to innovation, and innovation leads to progress. It’s not about failure – it’s about how making mistakes leads to a better outcome next time.
The difference between a junior and a senior developer isn’t measured in years, but in the willingness to make mistakes.
A senior developer will look at a problem from different angles, try out different approaches, and then succeeds in coming up with the best answer. A junior developer will merely do what he’s told, while avoiding mistakes. And they often need constant oversight.
The problem in the software industry isn’t that there aren’t enough senior developers to mentor the juniors. The problem is that no one taught the junior developers to think like seniors.
When you do work worth showcasing, you almost immediately gain real-world experience. Unless you avoid making mistakes – so don’t do that. Start with a first app project that resonates with you. Test out different approaches, hypothesize what might work, and then try it out.
- Did it work? Great, keep it!
- Did it fail? Great, fix it!
You want to test what works, make mistakes, fix those mistakes, and repeat the successes that you found. It’s quite literally the recipe for life. What’s your next best mistake?
Step 3: Deliver Beyond Spec
When you do work that follows the specifications, your employers and clients can find someone else who can do that same job cheaper. Why don’t we outsource your work to a developer with a lower cost of living?
What’s keeping your employers and clients from doing so, is the cost of change. They are used to working with you and it takes too much effort to replace you. Until it doesn’t.
Marketplaces like Upwork, Freelancer.com, Toptal and 99designs make it easier than ever to hire good developers that deliver good projects. Some of these developers have modest expenses, so they can afford to price themselves lower than you. It’s a race to the bottom.
I tell myself that those developers can’t do what I do. But is that really true? And what is it that I do, anyway?
Recently I explained to a freelance client that they don’t hire me for iOS development services. They hire me to think critically, and to communicate. Writing code is just one of the things I do. What I really do, is make insightful decisions on their behalf.
The third step of becoming a professional iOS developer is delivering beyond spec. What does it mean to deliver beyond specifications?
- Make a functional and technical design before you start coding
- Explain alternatives and choices to stakeholders in an insightful way
- Take your client, employer or team on a journey towards the end result
- See your work through the eyes of another person
Of course you bring your skills, expertise and experience to your work. Anyone can learn to code, but it definitely requires skill. But now that some of us can code, and some of us can code cheaply – why should we hire you?
A simple way to deliver beyond spec, is to develop a skill multiplier. As an iOS developer, you can…
- Learn about UI/UX and build apps with better usability
- Learn about marketing and help make change happen
- Learn about business, and understand that apps need to make money
- Learn about any subject matter, like finance, life science, education, and use it to create apps that better fit the needs of its users
I like to think of the skill multiplier as an asset that appreciates in value over time. The more insights you gain in your field, the better you become:
value = iOS x [skill multiplier]
The same is not true for just iOS development. Other developers are more skillful than you are, they know more than you, and they learn faster than you. Working harder and learning faster isn’t an option when everyone is competing in the same race, racing towards the bottom.
When you bring another skill into the equation, it’s suddenly much more difficult to replace a skillful developer who combines iOS development with marketing, UI/UX, business, etcetera.
You easily get to be in the Top 10% of the world for 2-3 related skills, but it’s much harder to do the same for merely one skill. What skills are you going to cultivate next?
We’ve discussed how you can become a professional iOS developer. The key take-away here is, that you want to tell a potential employer or client the story of you and your work.
You start by doing work worth showcasing. You gain real-world experience by doing so. Now you know that’s what really matters to a client or employer. When you do your work, you deliver beyond spec.
It’s not a replacement for traditional career advice, like polishing your CV and making contributions in your field. It’s an extension of those things. Because when everybody can do what you do, the bar raises for all of us. And that’s exactly where you can make a difference!
Learn more with these resources:
Code Swift right in your browser!
Go to the Swift Sandbox