Landing Your First iOS Developer Job: My Journey Changing Careers
Landing Your First iOS Developer Job
Coding is something that I became interested in when I was only about 7 or 8 years old. My dad was working for Microsoft at the time, and brought home some Basic (the language) programming books for kids. I can't even express in words the first time I learned how to use Boolean logic that executed a goto statement. It was like creating my own Choose Your Own Adventure book. I could get lost inside a world of integers, strings, and goto's for hours.
As I got older, coding started becoming a background hobby, as I was introduced to memory management, arrays, and command line arguments in C, and setting up UI in Visual Basic. I didn't really connect coding with making money until I felt like it was too late. Object Oriented Programming seemed kind of overwhelming since I had learned procedural programming so early on.
One day a friend of mine gave me his old Mac, loaded up X-Code and pointed me toward some O'Rielly books to get me headed down the path of learning OOP. I dabbled at it, and started to learn some of the basics of Objective-C.
The real turning point for me was some Python and Java classes I took at my local college. The missing pieces for OOP had fallen into place, and I started to feel like I could actually call myself an amateur developer. My passion for coding was rekindled like throwing a match on gasoline. I started consuming as much coding instruction as I could get my hands on. I took an intro to Objective-C course, and managed to create some pretty cool applications, including a pirate choose your own adventure game.
When Apple introduced Swift, I immediately began to learn the language. It was everything I had wanted in a programming language, and it quickly began to be the language I wrote in for everything. I decided it was time to be happy with my career, so I left my job and took an iOS Developer degree course from Udacity.
I finished in June, and have been looking for work ever since. In this article, I thought I would share my experiences, and tips that may help in your job search.
|Your application materials will be the first impression you make on a prospective employer|
This is a step that tends to be overlooked. It's hard to remember that a glance at your resume and application materials is all a prospective employer knows about you. You could be the best at what you do, but never find a job, because your resume is a jumbled mess.
Here are a few tips to keep in mind (you can look at my resume here):
Keep it clean and simple. Employers skim a resume, and only take a closer look if they like what they see. Ask a graphic designer friend to help you draw the eye to key areas of your resume. Better yet, use a professional resume service. The money you spend will be more than worth it.
Think of your resume as cliff notes, not as a novel. Most of us try to fit in every little detail into a resume, but it is far more important to keep it clean and simple than to keep it descriptive.
Try to tailor your resume for each job you are applying for. Focus on the skills you have that the position is asking for. It takes a little more time, but if you send a resume tailored for each job you apply for you are far more likely to get responses. In fact, I have found that when I spend more time getting five resumes out in a week, tailoring my resume to each specific job I have about a 20% response rate, versus a 2%-5% response rate if I spam to every job posting I can find.
Only apply to jobs you really want. It seems like volume will get you better results, but it really is better to go for jobs you really want. You are more likely to spend extra time applying to jobs you really want, which will in turn provide you with higher response rates. And anyway, wouldn't you rather end up in the job you want, rather than just taking the job you can get?
Be honest. It may seem like you need to make yourself sound better than you really are. You might think to yourself that so many people lie on resumes, so you have to lie just to compete. That's totally untrue. As someone who has been on the hiring end of looking at resumes, I can tell you that finding lies on resumes gets to be pretty easy. If someone looks too good to be true, they usually are. If lying on a resume actually lands you an interview, you have to be able to back it up. You will never get a job that you get caught misrepresenting yourself for.
Write a short, cover letter. Be human and personable. Remember, the person hiring you is also a real human being. We tend to be overly professional when applying to jobs, being human makes you stand out.
Share something different about yourself. Adding that you love to make your co-workers laugh isn't a bad thing on application materials. Many companies will do pre-interviews online, and may ask you what makes you special, or something unique about you. Be honest, and above all be human. I can't state this enough, being human will make you stand out.
Get Yourself Out There
|Be unique, get seen, get hired!|
Finding your first job in a new field is probably the hardest job to find. You need to find someone to take a chance on you. The very best way to do that is to demonstrate you love coding, and that it is something you do, even when you don't have to.
Have some apps on the App Store. I have been told in at least half a dozen interviews that my having apps on the App Store was the reason I got an interview. Startup companies in particular tend to be especially impressed if they are apps you have built from the ground up, with zero outside help. It shows that you know how to plan, develop, create assets, debug, deploy, and support an app. Many developers only want to code, and don't much care for everything else that goes into creating software. Having apps on the App Store will go a long way in landing you interviews.
Use GitHub on a regular basis. Having your code on GitHub not only makes it easier for prospective employers to evaluate your work, but since they can see how often you contribute to code on GitHub, it can also show that you are passionate about coding. As an added bonus, doing a lot of GitHub will demonstrate that you are familiar with Git. Udacity has a free course on using Git & GitHub that I highly recommend. It shouldn't take too long to complete, and you will be a GitHub Jedi by the end of it.
Make sure that your LinkedIn profile is polished, and up to date. Establish as many connections as you can, and don't be afraid to reach out to people you don't know. Over 40% of jobs are filled by people who have had a referral from an employee. You never know when a connection will turn into a job, so make sure you don't forget about this crucial piece of the puzzle. You can take a look at my LinkedIn profile here.
Create a website or blog. I have had recruiters tell me that my website was what prompted them to reach out to me. You never know where an offer might come from, and having a website can turn Google searches into job offers.
Be active on coding sites, like GitHub, and StackOverflow. StackOverflow also has job boards, and you can flag your profile to recruiters to receive job opportunities from companies who are looking to add talent.
Common Interview Questions
|Studying for your technical interview is a must, no matter what your skill level as a developer|
One of the most important things to realize about an interview is that it is a conversation. Many professionals will recommend against treating it like having a coffee with a new acquaintance, but that's exactly what it is. You aren't interviewing with a robot, you are interviewing with a person. Be personable, be relatable. You are far more likely to be hired if you are likable, after all, you will have to work with other people. A good interviewer knows that it's more important to productivity if you have a team that works well together, rather than a team made up of jerks who are the best at what they do.
Generally the first couple of interviews will be with HR, or a recruiter to see if you are a good fit for the company. It's important to just be yourself in these interviews. If they don't ask you to move on, they probably weren't a good fit for you anyway. It's more important to be happy in your job, than to just be in a job.
You may be asked to do a coding challenge before doing a technical interview, other times you will do a coding challenge after a technical interview, and some companies won't have you do a coding challenge at all. These aren't anything to worry about. None of the coding challenges I have done were taxing at all, and are generally very basic. The common themes I have seen are UITableViews and basic GCD (Grand Central Dispatch, aka threading) stuff.
Technical interviews can vary considerably, based on what the employer is looking for. Below are a list of subjects I have been asked questions about in nearly every single technical interview, so it would be a good idea to study up on these.
- What is a storyboard?
- Do you have experience with any programming architectures like MVC, or MVVM?
- Do you have experience with unit testing in XCode (XCTests)?
- How do you implement a UITableView, and what are the required methods for UITableViewDataSource, and UITableViewDelegate?
Some of the less common questions that I get on occasion are:
- Describe the iOS view or application lifecycle (i.e. ViewDidLoad, ApplicationDidFinishLaunching with options . . .)
- What is automatic garbage collection / ARC
- What is the difference between strong, weak, and unowned?
- Explain the difference between the protocol delegate pattern, and NSNotificationCenter
It's important to say that you don't know, if you don't know the answer to a question that they ask. It would be virtually impossible for a single developer to have all the answers to everything. Interviewers want to make sure you know the basics, and that you know how to find the answer when you don't have it. Also, when you don't have an answer, saying I don't know sounds much better than if you try to stumble through a made up response.
I may write some more job hunt articles, as time goes on. My job hunt continues, but I hope you benefit from what I have learned so far.