How to stand out as a Junior Developer to get your first developer job?
There is no denying that the expectations from a developer is much higher nowadays than what it was 10 years ago. There are a lot of different languages, different databases, different frameworks, continuous integration or delivery, agile methodologies and so on. So if you want to become a developer, how do you standout from the crowd to get your first Junior Developer role in an amazing company?
In this blog post, I am going to talk about my experiences in what made me stood out from the crowd to get 3 job offers, 1 week after I graduated from Makers Academy. If you are teaching yourself how to code, and do not want to go through a bootcamp (because lets be honest, it can be quite expensive), I think this post can be very useful to you, as sometimes you don’t know what is expected of you in your first role, and as a result you don’t know where to start. Before we begin, full disclosure, I am afraid some of the advice here (like only a tiny section) applies to backend development but I believe you will still find this blog post useful even if you are interested in frontend development.
Okay, so let’s begin!
So is there a list on what I should know, you say?
I will list all the things here that I think you should be comfortable with before applying for your first role, and if you have nailed these already don’t bother reading this blog post and send your CV to that company you want to work for — like right NOW!
I will get in to more detail for each of the items on this list later on. So here it is:
- Version control, specifically using Github (or similar platforms) effectively.
- Build applications using TDD (test-driven development).
- Embrace frameworks.
- Understanding agile methodologies.
- Knowing how to search the sea of information on the internet and when to ask for help.
- Not having full trust to every library or code base you see.
- BUILD things, like, ALL THE TIME. There is so much you can learn from online courses, and books. Experiment to understand.
1- Version control
The idea here is basically allowing you and your team to be able to work on your code base without altering the current state of your application. In basic terms, you have a master which is probably in production, and then you can branch out from master, and apply your changes, and then merge it back in after everyone is happy with your code. I think GitHub guide is probably a good place to start if you never used version control before: https://guides.github.com/ and also the git codecademy course: https://www.codecademy.com/learn/learn-git
If you are familiar with GitHub, then have a look into how to use it (or a similar platform) as efficiently as you can, such as how to change your commit messages when you want to, or delete commits or if you notice a bug that wasn’t there before how to do an investigation on what commit potentially broke your code, and so on.
2- Being confident in building an application at least in one language
3- Build applications using TDD
If you have been reading my previous blog posts you probably notice that I am sort of obsessed with TDD. So what is TDD and what makes it magical, and why do you have to know this to get a job?
TDD is test-driven development and as the name suggests, you write a test for the code you want to have, then you see your test fail, you write the code, and you see your test pass. There are couple of reasons why this is super helpful when you are just starting out as a developer:
- Helps with the design of your code. Sometimes when you start writing tests for how you initially planned out your application, you can realise it might not be the best way to go and change your design.
- Helps writing clean and refactorable code. Your code is testable from beginning, and when you test sections bit by bit, you build your application in manageable chunks rather than a massive chunk in one go. You can also refactor your code without worrying about breaking your application.
If are using Ruby, Thoughbot course I mentioned in the previous section should help you get started with TDD :) Otherwise, if you search on how to TDD in the language you are interested in, I am sure you will find a lot of resources.
This is important to get your foot through the door for your first job because TDD is a widely accepted practice in the tech community. It is not an easy thing to master, so starting out early and understanding why it is good, and how it is helping you develop your application will be to your advantage.
4- Embrace frameworks
When you initially start building applications in a language you are just learning, it can be quite challenging to figure out how to connect the dots to have a functional application. And in comes the frameworks!
5- Understanding agile methodologies
What is this agile I keep talking about? The dictionary meaning is being able to do something quickly and clearly. So what is Agile Software Development? Probably you guessed it; developing applications fast with clear feedback. Before agile development was introduced, companies used to be ‘waterfall’ which is building an application until it is perfect, release it to the world and potentially realise no one wants to use it. Agile helps overcoming this issue, and builds its theory on MVP (minimum viable product). You build an application as simple as possible, release it to the world, get feedback, and then improve it or change it. So you don’t spend all of your resources and time on an application that people don’t need or want.
There are several agile methodologies that have been developed for tech teams to help with the agile software development. I am not going to get into details about this but here is a good read on some methodologies and what Agile is: http://agilemethodology.org/
6- Knowing how to search the internet and when to ask for help
When I first started out programming, I wanted to solve all the challenges I faced myself. There is no need to say that this is not great. You get tunnel-visioned and demotivated. When you face a problem you cannot solve, search for solutions on the internet, try to figure it out yourself for maximum an hour or two. And then ask someone, whether it is a friend, or through a post on somewhere like Stack Overflow — get help. It is quite likely that you are missing something small like a semicolon. Of course it can be more complicated, but regardless don’t be afraid to ask for help. Everyone goes through the same challenges, and tech community loves to help.
I mentioned knowing how to search the internet so how is this relevant? Well, it is kind of important. If you don’t ask the right questions, you will not get the right answers. Knowing what to ask usually comes with building applications. The more you build, and the more you understand, the better you will become in searching solutions on the internet. This is quite important to your prospective employer. They don’t want to hire someone who they need to baby sit all the time, and spoon feed answers to. Of course they will help you when you are stuck, but you need to show initiative, and explain what you tried before, and what you searched for to make the process easier. Be confident in looking for solutions.
7- Not having full trust in every library or code base you see
With anything you just start to learn, you usually trust all the resources you use. Well, you shouldn’t. We are all human, and no one is perfect. I have came across a lot of libraries, or applications that were not written as good as they could be, and I soon realised that it is best to read, research and experiment more to find what is good and clean code. Why is this important? You don’t want to trust a third party company which has 500 dependencies, or written in 100 lines when you can do the same thing more effectively in 10. Think about how this code can affect your application — it might slow it down, it might break it, it might not be safe. Don’t trust every code snippet or library you see out there. Getting your code on the internet or creating a library doesn’t cost anything.
8- Build things, all the time
As I mentioned there is so much you can learn with reading books, and going through online courses or even attending workshops. You need to get your hands dirty. Don’t be afraid to build applications that no one will use. Use these to learn how things work. Even if you don’t end up finishing your application just think about the things you have learned that you did not know before. Every little knowledge you gain from experimenting is a massive gain towards your first developer role.
One last note
I wanted to finish this blog post with some great advice from my amazing mentor, Stephen Best:
“Don’t worry about how experienced people would build an application. Focus on how you would build it and then get feedback. Consume less, and produce more.”
Thank you for taking the time to read! If you think it was helpful to you please share this blog post with people who might benefit :)