Getting your first job as a junior developer
My journey to becoming a developer is a bit different. Not everyone goes back to University after already having a degree. I've decided to get a Computer Science degree to get some basic knowledge about computers and the science behind it. While I did learn about web development, databases, algorithms and too much math, I didn't really learn how to code.
Sometime during my third year, I decided I wanted to learn Swift and become an iOS developer. After graduating, I started watching tutorials and coding along. I built a few basic apps; a weather app, a to-do app and a social media app. I created a portfolio website, linked all projects on my GitHub profile and started looking for my first job.
When should you start looking for a job? Today! I started interviewing while I was still learning how to correctly parse a JSON. Maybe not the best idea. But there's really no best time to start applying. You'll never feel ready. If the job application opens for a company that really interest you, apply even if you don't feel like you're ready. If you know someone from the company and that person knows you, you can reach out and ask for a referral.
The first thing you need when applying for a job, is a resume. I like to keep mine up to one page long. You can go for more. You'll surely have two page resumes once you gain more experience. But keep in mind a resume is not a CV. It's a short overview of your most important experience, skills, education and other skills worth mentioning. Keep it short and on point.
Also, it's better to have a simpler than a flashy full-of-graphics resume. Some companies use the automated software to screen through resumes and you want to make sure your passes. They also look for certain keywords. Take keywords from the job post and find place for it in your resume.
I took an entire week to research how to create a good resume that stands out and can get the attention of a recruiter. It all comes down to a few important things.
Since you're applying for your first job, you probably have no experience. If you have any internships, that's amazing. That will definitely set you apart from everyone. If you're like me and have no internships, maybe you've worked other jobs that are not strictly related to programming. Choose a few that are worth mentioning and add them to the experience section. You might have not done any programming, but maybe in your previous career you were an engineer and did some other cool stuff you can mention? Or you worked in a call-centre or as a bartender and know how to deal with customers.
On different jobs you learn different skills. It's not all about coding. If you've worked on any customer facing jobs, you gained the most important skill to have as a developer - how to communicate.
You can add any volunteer work under experience or add it as a separate section. You did some work to help someone out but weren't paid for it? No shame in that. You organized a meetup or a conference? Awesome, you probably picked a few organizational skills! You lead summer guitar workshops in your local community? Cool, it means you know how to approach teaching others.
I learned English by playing video-games in high school and being a community manager for a guild on Aion MMORPG. Good times.
It's all about numbers or quantification. Try to quantify one or two points on each of your jobs on a list. I was a volunteer for a local association in my city for more than 10 years and one year I participated in organizing a summer camp for volunteers. I lead a small group of 5 volunteers and coordinated the activities. That's quantity! It also shows some management skills. I'm sure you can think of something like that to add to each of your jobs. No more than one or two bullet points.
A few years ago, I was using Linux. I even made my own Arch Linux once. But then I decided I don't have time for it. It's like a second job figuring out why it starts crashing after an update.
I was so into it I got an LE-1: Linux Essentials certificate from Linux Professional Institute. I studied hard for that one. I always show it off on my resume. If you have other certificates like that, add them all.
Add another section about your skills, but don't quantify anything. One thing I've seen developers do is say they know 95% of Swift. No one knows 95% of Swift. Not even people who wrote it! Don't do this. Have a list with some skills that you do have. Don't say you know Python if you once read a few lines of code. You should be able to demonstrate the skills you mentioned. Use this section to write those keywords we mentioned before. You probably know Swift, UIKit or SwiftUI and then maybe CoreData or some other frameworks you've worked with.
As a junior developer you need a way to show others you can code. You need a portfolio. Creating a personal website is a perfect way to do that. Not only does it show all your projects, but also that you can figure out how to create and host a website. You can go as simple as editing a Jekyll template and deploying it on GitHub Pages, or something completely custom. Or just show your GitHub profile and make sure your projects have nice READMEs with descriptions and screenshots of your apps.
If you wanted to really show off, you could create your website in Swift! It's simple enough and you already know the programming language. If you're interested. Check the How to create a personal website in Swift using Publish post.
It doesn't really matter what approach you take, as long as a potential hiring manager can check out your projects and read your code.
You might think your code is bad and you don't want to show it around. Everyone's been there. When you first start learning, your code might not be all structured and using best practices. But it's still your code. You made that app and it's working! You should be proud you have something to show off. Some companies like if developers have an app on the App Store. If you have that, even better! But if not, it's not a big deal. Having a structured GitHub profile with easy-to-find projects or a personal website is a way to go.
I had a simple website I hosted on GitHub Pages showing off a few of my projects. Some of them were incomplete so I put them as a work in progress. But I had tons of screenshots and each one describing the programming concepts I've learned while building it. During few of my interviews, I had an interviewer tell me about my website and mentioning my projects. Some of them even read my code. They all said it helped get their attention.
This is also how I got my first job. I talked with the interviewer about my projects on GitHub. He said I could code and I didn't need to do any coding sessions. So we casually talked about other things, programming concepts in general and my opinions on SwiftUI and 3rd party APIs. It was a fun interview.
Networking is a great way to meet other developers and possibly make new friends. As an introvert, I was always that awkward person who couldn't find courage to approach people and would stick to the corner of the room. But, I knew I had to do something about it so I slowly started to work on that. I needed to get out of my comfort zone.
The most important thing when meeting and interacting with others is to be respectful and genuine. Be yourself.
One day I came across a video by Sean Allen where he suggested developers should create a Twitter account. You could network and meet other developers by sharing your own experiences. I haven't had a Twitter account before that so I decided to give it a try. I started following other developers and accounts I found interesting. My entire feed is mostly about iOS development.
It can be a bit awkward to start interacting with people you've never met and just randomly pop-up in a conversation. But iOS development community on Twitter is the best community out there! I've never met so many amazing people at one place. Given that you act with respect towards others, of course.
Start by sharing your own journey and experience, ask for help and give help when you can. You'll meet other like-minded people and it's a great place to network online. Of course, take care of yourself first. It's just another social media platform. What I love about Twitter is you can make it your own and only follow people whose content you find interesting. You can mute keywords you don't want to see and only stay up-to-date with information that interests you.
Meetups and Conferences
Attending a conference is another great way to meet new people and learn something new. Not just by watching presentations, but just by being there and talking with other developers. SwiftLeeds was the first iOS conference I ever attended and it was my first conference as a speaker, thanks to the amazing Adam Rush who invited me to speak.
I've met a lot of people that day and learned a lot by listening to them. I overheard a few conversations and learned a few things I didn't know before. Developers talk about code. It's one thing we all have in common so you don't have to come up with topics to talk about. "Hi, my name is Danijela. Have you tried that new API...?" is an easy conversation starter :].
The downside is that conferences tend to be a bit expensive, especially if they are in-person and you need to fly to be there. But, you can still find some local meetups that are usually free to attend and are still a great way to meet people and learn something new. Or, you can apply to speak! Speakers get a free conference ticket and it's an amazing experience to share your knowledge with others. Think you have nothing to speak about or don't have enough experience? Check my Why speak at conferences and how to apply blog post. You have more to share than you know!
I found in-person conferences and meetups to be much more enjoyable. During pandemic, everything went online. While it's great to attend an online remote conference, I find it easier to talk to others in-person. But, it's a personal preference. Online talks, conferences and meetups are still a good way to meet others.
Have you heard about iOS Dev Happy Hour? I have to say it's definitely my favorite online meetup. The concept and the execution of it is amazing. iOS Developers all over the world come together and network once a month. After a few fellow colleagues share their career journeys, you're free to choose a breakout room and talk to other folks. I've heard a few people got their jobs just by attending and meeting other developers who were hiring for a role. Do check it out!
Interviewing could be another blog post on its own. I'm not going to deep dive into this topic. I've had different interviews while looking for a job as a junior. From take-home tests and whiteboarding algorithms to writing calculators. It all depends on the person who's interviewing you. Even different team within the same company could have different interviewing approaches.
The best advice I can give you is to come prepared and don't wing it. Interviewers will notice if you come unprepared.
Research the company as best as you can. Look for them on Glassdoor. It's an amazing resource to check what other employees have to say about the company. If you're lucky you might even find some iOS interview examples from other people.
Also, Reddit! People discuss companies and interviews on Reddit all the time. It doesn't really come up when you search online, so append reddit to your search query and voila!
And the first thing I should've mentioned is to check the company website. Find everything you can about the company and their values. They will likely ask you a few behavioral questions. They want to see whether you align with their values.
Ask a lot of questions! Prepare them ahead of time. If the interviewer doesn't leave enough time for you to ask them anything, let them know you have a few questions. Ask them if they could extend the interview or whether you should ask these question asynchonously by an email.
Meaningful questions show you've done your research and you genuinely care about the job. It's one thing that might set you apart from other candidates.
Interviews are two-way conversations.
We all dread algorithms and whiteboarding. In reality, they are not as hard as we make them. There's no other way to learn them then to sit down and code. The idea here is to show the way you approach problem solving. It also shows your communication skills. Can you present your approach clearly and do you understand the interviewer?
Ask a lot of questions to make sure you understand the problem and just go for it. Code the solution you think works well and then re-iterate on your solution and try to optimize it.
If you want to learn or brush up on your algorithms, I highly recommed Grokking Algorithms book. If you're like me and you're a visual learner, you'll love it! The solutions are so simple and well presented. You'll learn basic algorithms in no time and see how fun they actually are.
These are my favorite. You can show off your skills here any way you like. Some take-home projects can have a deadline as long as a week and some require you to complete a task in 4 hours. Whatever the length, give you best here!
If you end up not fully completing the assignment on time, send over what you have and then work on the rest for a day or two and then send it again. It will give you extra points for not giving up!
If you end up with more time, use it to your advantage and implement an additional feature. Maybe take an API that the company uses in their app?
Finally, enjoy the journey.
It took me 1 year to get my first job from the day I started learning Swift and iOS development. I thought I'd never get it. But then I watched a video where someone mentioned it's normal for your first job search to take anywhere from 6 months to 2 years. I felt much better.
Of course the end goal is to find the job and start your career. But don't skip the small accomplishments along the way. Passing a technical part of the interview and failing a system design is still an amazing accomplishment!
Learn from your mistakes and make it a point to do better next time.
Make friends along the way and develop deeper connections with people. Reach out to people you've met and ask them how they're doing.
As a junior developer, it's important to show you're willing to learn and you can communicate well. Show that you have opinions on topics like UIKit vs SwiftUI and native vs 3rd party frameworks.
It's not all about the code.
Please feel free to reach out on Twitter if you have any questions, comments, or feedback.
Thank you for reading and good luck in your job search!