How to become an iOS Developer
Life stories of Badoo developers and how they became iOS folk
Don’t know where to start? Use iOS Developer Roadmap for 2018!
I’ve been a developer for a while now and I frequently look back to my origins to assess how much I have progressed. Becoming iOS Developer was surprisingly easy for me. However, it was the biggest change in my life which caused a chain of fantastic improvements in my quality of life. I decided it is time to figure out if I got lucky, or if it is truly an easy profession to master. So how might this article help you to become an iOS developer? Let’s start with a popular quote:
“If you do what other people do, you will get what other people get. If you do what other people DON’T do, you will get what other people could never hope to get.”
This quote encourages you to think and act out of the box to achieve more than others. But what if you just follow the first part of it? What if you just imitate the people you want to be like?
Find, follow and observe successful people
I’m lucky to be surrounded by very talented engineers who happened to work as iOS developers, and so I decided to interview them and gather some stories about how they managed to succeed as iOS developers.
When choosing people to interview, my primary goal was to pick people with different backgrounds and varying years of experience in the platform. My own answers are also included.
Successful iOS Developers and me.
Let me introduce my colleagues and myself:
Kateryna Trofimenko, Senior iOS Developer, Badoo, London.
Has been in the company for 3 years, and she helped to build the team, apply Swift and make all Badoo products awesome. Started her career as a game developer in Donetsk, and then, in search of a greater challenge, moved to Moscow and then to London. Likes to travel, snowboarding and implementing new features.
Diego Sanchez, Senior iOS Developer, Badoo, London.
He was born in Guadalajara (Spain) and got his first real job thanks to a programming contest. He’s been working at Badoo for almost 3 years, where he’s done very cool things, like writing Chatto. He’s really into new technologies and programming languages.
Victor Shamanov, iOS Developer, Badoo, London.
He has been developing iOS applications for 4 years. And over the last 2.5 years he has been doing it in Swift. Loves functional programming. Most of his free time is spent on tweaking his emacs setup. 🐙
Victor hasn’t yet got the word “Senior” word in his title. Nevertheless, I’m jealous of him! Working in the biggest dating social network is better when you are 22, without the “Senior” word, than when you are much older but have the word ;)
Bohdan Orlov, Senior iOS Developer, Badoo, London.
I was born in Ternopil, Ukraine, and somehow I ended up in London ¯\_(ツ)_/¯. I wasn’t into coding until I enrolled at a university, even though I had had access to a PC since I was 10 years old. I was using it for games, mostly. In 2012 I found my first job as an iOS programmer. I’ve gained a lot of experience mostly because I was switching jobs frequently and always had access to new challenges and environments. I think the best interviews are those which you fail, so long as you embrace the failure and accept the new knowledge ;)
Fail interviews — accept the knowledge!
Getting the first job.
How did you get your first job as a programmer?
Kateryna.
I was attending Java courses, and a guy from my university asked me if I wanted to have interview for a position in his friend’s company. That was during the third year of my course. Through that interview, I got into Boolat Games — a small games studio. I was working on a 3D game written in Java. I had tried PHP before that, but that didn’t go well.
Diego.
My first developer job was at university. I didn’t know if I should continue with a Ph.D. or Master’s degree or go to a corporate environment. I heard that a research group in my university had a developer position. I interviewed with them and got my first full-time job and a scholarship for my Master’s degree. My second job (as a professional programmer) was at one of the biggest Spanish IT companies — Tuenti, which I got through doing well at a code challenge organised by the company.
Victor.
I was studying in a university and got bored a bit. At that time I had an iPad, and so I decided to develop for it. I joined multiple iOS developers groups in social networks. In one of those groups, I found a startup which took me on board in an unpaid iOS position. In six months I found my first real, paid job.
Bohdan.
My story is an example of how the weak ties theory works in practice. There were no software development companies in my native city, and so I had no hope finding a developer job there. At the end of the day, I contacted my mom’s former pupil who turned out to own a small web-dev company which had an unpaid position for an iOS developer which I, of course, occupied. The position became paid immediately as I started produce at a good pace.
Go to university, get bored and job will find you.
Was your first job an iOS developer position or did switch later?
Kateryna.
After a year on JaveME, my boss asked me if I wanted to explore iOS development because they had an iOS project. We sat down and started to learn from the documentation, and eventually we ended up rewriting ScrollView, before publishing our first game a few months later. After that, Stanford iOS course helped a lot.
Diego.
After the job in the university, I started as a backend developer at Tuenti but moved shortly to a frontend position after some team restructuring. My shift to the iOS world happened a year later. Our users were moving very fast from the desktop to the phone, and my company was desperately looking to put more resources into native applications. So I offered myself as a volunteer to learn about iOS development. I did the Stanford iOS course; it helped a lot. When someone asks me where to start, I always refer to this course.
Victor.
I didn’t choose iOS intentionally: it was rather a twist of fate. Before that, I’d been trying Java, Delphi and a bit of C++.
Bohdan.
I had a choice between becoming a Web developer or an iOS developer. My new colleague asked me “Why didn’t you choose Web development?”. “It is too complicated.” — I answered, not thinking. You can image how hard he was laughing, since he was a web developer himself.
In those days iOS was the most attractive platform. How about now?
Did you have access to Mac or did you have to work around it?
Kateryna.
I was provided with a Mac. It was my first Mac, so I had to Google how to toggle the keyboard layout =) Also, I had been working on Hackintosh for a while, because I couldn’t afford a Mac at the time.
Diego.
Tuenti provided me with a Mac when I switched to iOS development.
Victor.
I didn’t have a Mac. I didn’t even have a decent PC. I had a low spec netbook. I’ve managed to install a Snow Leopard Hackintosh on it. It didn’t support new Xcode for iOS 6. Eventually, I borrowed money from my father to buy the cheapest Macbook air, which I also used on my first paid job (they didn’t provide a Mac as far as I remember).
Bohdan.
To get the job, I had to make a simple weather application. I had no Mac, and so I used a virtual machine with Hackintosh on top for that. I couldn’t join the company for a couple of months because they were waiting for a Mac mini shipment.
Not having a Mac is not a showstopper.
Did you have to relocate to get your first iOS job? Did you relocate eventually?
Kateryna.
My first two jobs were in Donetsk. Then I was relocated to Moscow.
Diego.
First I relocated to attend a university. After that, I moved back to my home town and started commuting to my job at the research group. I moved to Madrid to work at Tuenti and then to London.
Victor.
The first unpaid work in the startup was a remote position. I was studying at that time, so I was only looking for a job in my city.
Bohdan.
I was lucky to find a first job in my native town Ternopil, Ukraine, which is beautiful but there is no IT industry at all. Eventually, I had to move to the capital of Ukraine — Kiev since in my town there were no other companies with whom I could grow as an engineer.
You grow — you relocate.
What do you think was essential to get your first job as a programmer?
Kateryna.
Basic Java knowledge, huge desire, and passion to work. I’ve realised that it is important to be able to dig into a code and never give up when you face issues. A better knowledge of frameworks will come eventually during this process.
Diego.
I think I just got the job because I got good scores in the university. The interview was just an informal conversation about my interests and what they were doing at the research group, but my skills weren’t put to the test at any moment.
Victor.
I think curiosity was essential. It motivated me and didn’t allow me to give up. The first paid job didn’t require in-depth knowledge and the interview only involved basic iOS and design patterns questions.
Bohdan.
The ability to deliver a working program was critical. I knew, if there is a way, I can find it, no matter how long it takes. The first month on the job I spent 10+ hours working every day.
Desire and ability to deliver are keys for the first programmer job.
Is computer science knowledge is necessary for getting the first job?
Kateryna.
Yes, of course. How can you be a programmer if you don’t know algorithms and data structures? It is essential knowledge which is now falsely impaired by loads of tools and open source frameworks — you can create a so-called Frankenstein app without writing any code by yourself :)
Diego.
I think it’s good to have some knowledge about CS because at some point you will need it. It depends a lot on the company. At the moment when you start to work on some caching, persistence, or synchronisation then things start to be more complicated. Knowing a bit about data structures and algorithms is good.
Victor.
For getting the first job, it is not important. For getting a good job, it is. As well as for being a good programmer in general. Ideally, I’d recommend learning CS before getting a job, but it was not the way I did it
Bohdan.
No, CS knowledge is not required. But don’t trust me, I say this only because I’m horrible in CS =) Although, according to my observations: the higher coding standards company has, the more CS questions are asked. CS questions are a strong candidate filter.
More CS knowledge — better job.
What was your first salary and when it was?
Kateryna.
It was around $150 per month for the part-time job in 2008. (Ukraine)
Diego.
I was getting €1150 per month in the university, that was 2009. It was the average salary in the research group. (Spain)
Victor.
It was 35000 RUB per month, so it was around $1150 as of 2013. (Russia)
Bohdan.
I was taken as an unpaid intern, but since I started to deliver almost immediately (and because my boss was an awesome person), I was paid straight away. The first salary was $500 per month in 2012. (Ukraine)
Starting money is not a big deal, so long as the first job has potential for personal growth.
How to succeed on interviews
Most of us conduct interviews more frequently than attend them, so I’ve decided to ask guys from the interviewer perspective rather than interviewee.
What do you like to ask at iOS Developer interviews? What is the most important thing that candidates need to demonstrate?
Kateryna.
I’m looking for good understanding of how things work in iOS, excellent communication skills, and an ability to explain how you think problems through. It’s always a good idea to understand why a person wants to join your team, what went wrong in the previous job. I like to ask which video is their favourite from WWDC. This immediately defines their main area of interest.
Diego.
It’s very important to learn the foundations of a platform you are working with. Especially on iOS, we have a memory model which is different from other platforms. I always ask candidates about reference counting. Getting this wrong is a recipe for subtle bugs and leaks everywhere. For the first job, I’d focus on foundations like the memory model. Additionally, I’d focus on writing clean, simple and consistent code. You should make your colleagues’ lives easier by writing code that is easy to understand, maintain and delete.
Victor.
For a junior position, I think it’s important to know the language and its runtime, have a basic knowledge of algorithms and to have some experience with UIKit and Foundation. Also, if a person is interested in other languages, that’s a good sign for me. Especially if they are completely different from traditional OOP languages, such as Haskell, Lisps, and Erlang. Looking at how different languages solve the same problem with completely different approaches gives you a better understanding of the problem itself.
Bohdan.
I like to ask iOS specific multithreading, Objective-C runtime questions and how apps work in a background. It is perfect if a candidate likes to learn design patterns and how things work under the hood. Such an attitude helps when you have real-world challenges.
Master your tools and how they work under the hood.
Do you think a university degree is required to become iOS developer?
Kateryna.
I think a university degree helps you to become a good engineer, because it gives you a wide range of tech knowledge in different aspects. Besides, it’s useful to have it, as it is required for official employment in most countries. Post-USSR universities focus a lot on foundational knowledge. Programming experience helped me to solve practical tasks in the university as well as the other way around: my math professor helped me to solve one task at work about quaternions usage and then included it in the course as a practical task for students.
Diego.
I don’t believe it is necessary to be a developer. But I think if you study CS you get knowledge that will be useful to you. Although, having said that, I don’t believe in titles. You can learn on your own or do some courses and as long as you get the knowledge and skills, you are as valid as anyone else for a developer position.
Victor.
I can’t say this about the university that I graduated from, but I believe there are better universities that might provide you with good academic knowledge (in Computer Science) which I had to catch up later on my own.
Bohdan.
Not at all, but for me, the first two years in the university were enough to get a gist of what writing code is (not what commercial programming is, though). I started to work full time in my third year, but I didn’t leave the university and a got Masters diploma eventually.
It is worth attending university if you are in doubt.
Is there any advice you could give to those who want to become an iOS developer?
Kateryna.
The primary principle of choosing a job should be passion. You should love it, and a job should drive you! IT is great because it contains so many aspects and technologies — you just need to find yours. Regarding iOS, I suggest that you should code a lot and see if you love it or not. If you do — just continue to code xD If you like what you do — a job will find you eventually. Another good practice is trying to explain some technical stuff to a nontechnical person (e.g. your mom).
Diego.
Read some good books and articles with a critical perspective. Having a pet project or playground to experiment with new things can bring a productivity boost into your daily job.
Victor.
Before you start using some framework or class, I’d recommend reading all of its documentation first. I used to just quickly look at methods’ descriptions and started quickly writing code, which in most cases meant spending a lot of time later figuring out why it didn’t work. Life gets so much easier when you see the whole picture. Plus Apple’s docs and programming guides are very enjoyable to read.
Bohdan.
There is only one thing required to become an iOS developer — desire. Everything comes to you at a very fast pace, as long as you don’t become ignorant. I saw people who thought that they “know enough” and they can stop learning. As soon as you have similar thoughts go and challenge yourself in an interview.
Learning and trying it out in practice is the way to grow.
Do you have a pet project? Is it important to have one?
Kateryna.
I’ve tried a few times, and ended up with good prototypes, but not finished products. I think if you enjoy it and you’re able to do at least one commit per day, then you should do it.
Diego.
Not now, but when I was young I had an application for sending text messages. It was quite successful in Spain. It was a long time ago: I was 13 years old. It was written in VB and distribution was cumbersome, so I migrated it to Delphi, which was very childish but I learned the new language. Also, I spent a lot of time on a Swift framework for chat applications — Chatto; I’m happy that a lot of people find it useful. It’s important to have a pet project so that you have a playground to experiment with new technologies since you don’t want to test new approaches in production code. But it’s difficult to find time for that =)
Victor.
I have Future/Promises open source library and an Xcode plugin. The first one I made just because I was bored. And the second one came about due to lack of any decent navigation shortcuts in Xcode.
Bohdan.
I had a few tiny ones. It shows that you love your craft if you spend free time on it, and besides you can do something very challenging. My favorite side project was a mining bot for EVE online, and that was probably the first time I was proud to be a developer. I wish I was not that lazy and could spend more time on side projects.
Use side projects to validate your ideas.
Lifestyle
Are you volunteering in any way?
Kateryna.
No. I do report issues to open source projects from time to time.
Diego.
No. I reported a couple of issues in YapDatabase and Swift Compiler. I did try to get those fixed by myself — but found that I didn’t have enough understanding of the project, nor the time for it, and so I gave up and let the experts do the work.
Victor.
Not really. Just a few contributions to open source projects.
Bohdan.
No. But I think it is healthy to help other people for free. For example, I could help people to get into the industry by writing articles more frequently.
We are greedy bastards, what can I say?¯\_(ツ)_/¯
Do you have a book to recommend?
Kateryna.
Stack Overflow xD, or articles — so you can practise right away. Mailing lists are the best option to get fresh interesting news: http://swiftweekly.com/, https://iosdevweekly.com/ for example.
Diego.
The Pragmatic Programmer (Andy Hunt and Dave Thomas) and Clean Code (Robert Martin). Those are good to get a good attitude towards code. The ideas in those books might feel like common sense, but still, reading them and following those guidelines helps a lot.
Victor.
Clean Code (Robert Martin), Structure and Interpretation of Computer Programs (Gerald Jay Sussman and Hal Abelson).
Bohdan.
Effective Objective-C 2.0 (Matt Galloway) is a book which can help you get your junior-middle iOS position.
Newsletters — for being up to date, classic programming books — for developing a healthy attitude.
How many cups of coffee do you drink a day?
Kateryna.
I don’t drink coffee. But 3 big cups of a good English tea keeps me raring to go.
Diego.
Two double espressos a day. Energy drinks for critical moments, like a hangover or a hard deadline to meet.
Victor.
Starting at four a day + some Red Bulls.
Bohdan.
Three a day + sugar-free Red Bulls.
Do you like to travel?
Kateryna.
Yes. I have three trips planned so far, two of them involve snowboarding.
Diego.
Once every two months, I join my friends to travel somewhere within Europe.
Victor.
I’ve been abroad only twice so far, but plan to travel more.
Bohdan.
I’ve travelled a lot since moving to London. Iceland is the best place I’ve visited so far.
Do you have anything to add?
Kateryna.
You have to find a technology you love. Always learn new things because the most exciting discoveries are happening on edges between technologies.
Diego.
Write simple, clean and reusable code. Don’t get crazy about latest articles you read, but try to reason about their ideas. Grab good blogs to read and follow. Try to not experiment at work but do that in your sandbox and bring into the office what you’ve learned at home.
Bohdan.
A lot of people underestimate what they already know, and think others already know it. I encourage you to share your knowledge by default, instead of assuming that your knowledge is common sense. Help others to achieve what you’ve achieved!
I want to say thank you to Kateryna, Victor, and Diego who made this article possible!
Also, I can’t be grateful enough to my first boss and employer Max Drogobitskiy who believed in me, and with whom I gained most of my experience.
Thank you for reading! If you liked this article, please hit ‘Recommend’ (the ❤ button) so that other people can read it too :)
P.S. How did you start as an iOS developer? Please share your story by replying!