I started coding at the age of 19, right after high school. I was about to start my Computer Science degree and I was convinced that I would be the only person in the year who hadn’t been coding since childhood. Of course, that belief was completely wrong but I needed to wait a few years to realise how many amazing developers only learned how to code after 25, 35, or even 45. That said, my fear of sticking out (along with the newly found passion I found in coding) pushed me to learn a lot in quite a short time. This allowed me to land an intern role at a promising startup for my placement year, which turned into me dropping out of university to take the lead of the mobile team at the same company a year later. In that role, I interviewed many candidates who were in the same position I was not so long ago. Remembering how anxious I was when being evaluated by strangers, I didn’t want to make any mistakes or misjudge people. I spent a lot of time thinking and discussing what to look for in someone applying for that junior role. Now I want to share my thoughts with you.
In the UK, we get to pause our studies for a year to do the industrial placement. This typically happens after the second year of university and allows the student to come back and finish their studies having gained important technical knowledge. All in all, it’s a great initiative that can really boost one’s career. However, being on the other side of the fence allowed me to see the weaknesses of certain universities in terms of preparing their students for this new chapter. Most of the applications I’d received were almost the same, with the same subjects learned, the same projects created and the same problems solved. Nobody had told them the importance of having a portfolio with their own work. As a result, all their work and knowledge were based on the exact same coursework their peers did. Even the top students very often had not much else to show apart from what they learned in class. None of those applications were successful.
What I said might sound harsh. However, I want you to realise that relying purely on your course or degree to get the job of your dreams is probably not the way to go. You will be just like tens of other students on your course. Even with top grades, if you don’t go beyond your curriculum, your application will be just like many others. Without initiative, passion, and willingness to put some hard work in, it will be difficult to convince anyone that programming is truly what you want to do. Think of your course material as the foundation. It’s up to you what and how to build on it.
One person I had the pleasure of working with did not even come from a computer science degree. He was doing a music course and learning programming in his own time. His portfolio and knowledge were much more impressive than many of the applications from students of one of the top universities in the country.
Forget your grades. Make some awesome stuff.
When I was hired, my boss told me the reason he offered me the job was not because I was the best candidate. He said my knowledge and experience were actually far from it. However, he decided to give me a chance because he saw how fast I’d learned what I knew and how excited I was about it all. During the interview, even when I didn’t know something, I would ask him what the correct answer was and why. We took much longer than expected because we ended up discussing many programming concepts and I was soaking in every piece of information he shared.
He knew I loved what I was doing and this is why he took a chance on me. He bet that I would catch up to everyone else in no time and that I would keep growing within the team. He wasn’t wrong.
This is the same kind of attitude I would look for when building my team. Extra projects, game jams, blogs, personal websites, active git profile, open-source work, YouTube channel, pretty much anything that shows that you love what you’re doing. Of course, you don’t need to do all of those things. Find what works for you, what brings you the most joy. Make sure those things stand out in your application. Show them your passion.
I strongly believe that the single best thing you can do to boost your career is to have a solid portfolio. That said, you need to be smart about how to structure it, what to put on it, and how to present your work.
I’m not sure who said it first as I see this rule pop up in various places very often and for a good reason. When it comes to your portfolio, always aim for quality over quantity. Three highly polished projects are much more impressive than ten unfinished prototypes. Only showcase the work you’re really proud of and skip the rest. You can always mention it during the interview if they ask for more examples of your work.
If you’ve been coding for a while you have most likely built a to-do list application. If not, you surely must have at least heard of it as a beginner’s project idea. I can certainly understand why it’s a good one to make, as it offers a way to practice a few very important programming concepts without being overly complicated. However, I would advise against putting it on your portfolio or at least against highlighting it as one of your most important projects. Why? Because you want to stand out. Showcasing a simple project most of the other programmers have done as well will not ‘wow’ anyone. Think about how to make this project unique by adding some unusual features or visuals. Or work on something completely different, something that only you would have thought of. You want to show that you’re creative and that you can think outside the box. Both of these are very important aspects of being a developer and can give you the edge many people tend to forget about.
Following your passion and creating what you love is most often a great piece of advice to anyone creating a portfolio. After all, you want it to reflect your character and interests. Also, nobody likes to work on things they’re not interested in. However, you should make sure the projects are varied and clearly show your learning progression. For example, if you love memes, creating a meme generator app can be a fun project, but creating 14 more with just different themes doesn’t necessarily show your creativity and a focused approach to learning.
I think it’s a very good idea to work on small projects which let you practice a specific tool, a programming concept, or simply prototype a feature of a much bigger project. Approaching it in this way will let you keep things interesting with a variety of projects to work on. It will also show the company you‘re applying to that you are independent and can successfully navigate your learning path.
A great portfolio project I once saw was a small website where you could specify a challenge you wanted to take, such as exercising every day for a month. You would then pay a small fee to show your seriousness. You could only get your money back if you completed the challenge (a person of your choice vouched for you). The project was very small in terms of the number of screens and interaction, so it was a very good way to practice the basics of React. The payments were handled with Stripe, so it showed that the person was not only familiar with that service but also that they can integrate a 3rd party product into their project. Moreover, it showed a bit of humour and was a fun thing to discuss during the interview, which allowed us to see if we would enjoy working together or not.
From my experience, working as a software developer doesn’t mean you will be coding 8h a day. Your job will involve many different things, and as you progress in your career, programming itself will most likely become a smaller and smaller aspect of your work. First of all, you will have to work with a team of different people, front-end and back-end developers, designers, managers, QA testers etc. To work well within such a team it’s important to be able to communicate well and what certainly helps with that is having at least a bit of understanding of their jobs. That said, I would encourage you to explore different areas around your speciality. Show your potential employer that you’re flexible, willing to learn and that you will be a great team player. If your focus is on front-end development, create at least one full-stack project with a simple API. As you will be working very closely with designers, familiarize yourself with some more popular design systems and design tools (Adobe XD, Figma, etc.). Having a small project based on designs you created would be something very few people have on their portfolio and shows that you understand the importance of other roles within the business (and the importance of good design).
To be clear, you certainly don’t need to become a full-stack developer before applying for your first job, but simply having an understanding and appreciation of other fields will be very helpful and shows your flexibility and willingness to learn. These characteristics are especially critical when applying to small companies and/or start-ups, where you will often have to go beyond your comfort zone and ‘get your hands dirty’ doing various new things. Don’t be afraid of this. This is how we grow.
Getting a software development job can be stressful, even after a few years in the industry. I certainly wouldn’t want to go back to that time where I was sending out dozens of applications only to be rejected before even getting a chance to talk to anyone. It can be depressing and demotivating and that’s normal. You need to remember that there are hundreds of other candidates and that it simply just is very difficult. That said, it’s not impossible so if you ever feel discouraged, just remember that it sometimes takes dozens of applications to get that dream job, so just keep going. Show them your passion, show them your work, be creative, focused, flexible and willing to learn. Keep growing as a developer and keep making awesome things. I hope 2021 will bring you that dream job!
Cover photo by Tim Gouw