Who is this article for?
This article is for a student who is looking for a part time job, or a graduated student who
is looking for his first job as a Junior software developer. Not every first position has a prefix “Junior” but each position in this context understands that its participants might not have any actual work experiences.
Junior developers tend to be afraid before their first job which is totally normal.
They don’t know what to expect and more importantly what others expect from them.
They can hardly imagine what their first tasks will look like. A student without any experience may feel like they can’t contribute to the company in any way.
I would like to say, that most companies realize, that these students (or graduates) are “new” in this field and that implies, that they don’t have any experience. Companies won’t try to overwhelm you with hard tasks and then leave you alone to drown in them. They are usually prepared for this scenarios. They might have some learning path for their new developers – a routine which every new personnel has to pass.
As a Junior developer, you will be informed about processes, customs and architecture
of the application the company has.
They may even buy a premium account in a learning site where they want you to pass some challenges and courses. For example if your new job is a junior Java developer and a company uses the Spring framework in their project, they might want you to take a Java online course and a Spring course as well. Not because you haven’t seen Java before, but because they want you to gain some deeper insight and therefore be more prepared for the tasks.
Or if your first job is as a Web developer and the company uses React or Angular framework they will want you to take course on that. You usually must have some experiences from school with HTML, CSS or JavaScript, but most companies don’t except the junior developer to have knowledge about a specific framework they are using (if they are using any).
Then there are mentors. It is common for companies to provide a mentor for their incoming staff. They might be called buddies or something like that. However, they are someone who can lead other people with some of the first challenges and tasks. This people might not always be sitting next to you and check everything you do, but they are there for you to ask any questions you might have.
It is very important for you, as a Junior developer, to ask about anything which is not clear to you. Companies can’t possibly know what is not clear for you and therefore you have to ask. Although asking too much questions can make the impression that you are not ready to tackle the challenges on your own, so it is important to find a right balance between asking too much questions and trying to solve one small problem for a whole day.
My advice is to try to figure out something on your own for at least one or two hours and then, if you think that you are not any closer to the solution, ask someone to help you. Be proactive and reasonable. Maybe write down multiple questions throughout the day and then ask them all at once. It also depends on the environment. If you and your buddy or mentor are sitting next to each other and he or she doesn’t have earphones on, maybe it is fine to ask questions more often. So try to be thoughtful and wise.
I.e In agile teams, it is common for a new member in a team to not do any tasks in the first sprint. They want you to take a glimpse on the applications and prepare your work environment.
On your first day you will probable be introduced to your team and other colleagues. You will receive your hardware like a PC or a notebook. Your PC will have a freshly installed OS (or maybe even the operating system will be your choice as well) but nothing else. You will need to install the necessary software for you to be able to work. Your company might have some manual, which you will need to read and do some required steps (installations, configuration, etc.). This might not be the case if the company is a small startup for example, where they didn’t find time for this or didn’t find it important. However I believe, that there will always be someone who will tell you what you should do so you won’t be totally lost.
The next few days you will probably be looking into code. There might be one big project with tens of thousands of lines, or many small ones with thousands of lines of code in each one. Nobody expects that you will carefully read every line of code and understand it. That would be foolish. But you are expected to get familiar with the projects the company has, their coding style and the problems the company is trying to solve. You may also be required to pass some courses (mentioned in the first paragraph).
If you will be working on a new project from the beginning, this process might look different. There might be still some courses and manuals you will need to read, but there may not be an existing codebase for you to get familiar with.
Scenario 1 : Junior Frontend Developer
Change the color of a button on the edit-users-profile page. Use green color from the users palette.
This should be easy right? But wait, where do I find the edit-users-profile file? And which button should I change? You are going to look for the right place to write your code for the next few hours. Finally, you think you found it, so you start looking for the users palette. Where the hack is the users palette? You try to find word ‘palette’ in the project and you find some occurrences of this word so you are looking for the users palette. Then you try to figure out how to use that palette and how to use the color green. But luckily you can find inspiration in another file so you have some idea.
Next you edit the color of a button to the right color. After saving and rebuilding the project you can’t see any change in the page. You wonder why? You then check browser console and see a red line, which says that you are missing a semicolon. So you add a semicolon, save and refresh page and YuhUuu you did it!
A whole day to change the color of a button. Am I the worst programmer ever? Not at all. Familiarize yourself with the project, with placement of files, the whole system of developing and nuances of project is a part of the next few tasks you will need to solve. In a few months you will be able to do this easy task in an hour or less. So don’t worry, everything will be okay.
Scenario 2: Junior Backend Developer
Add a feature to the product service of saving and loading a product description.
Save part: input is String and it doesn’t return anything (void)
Get part: input is long (product_id) and output is String (description)
Use a product database service, which already has functionality for this feature.
You read the description of the task carefully and understand what you have to do. Then you can open the project and start looking around for product service. Where can I find this service? Maybe finding a text occurrence of ‘ProductService’ or just ‘Product’ in IDE (i.e. intelliJ IDEA) could help. 147 mentions of this keyword is found. This isn’t very helpful so you start looking how this project is divided into many packages and you find a service package. In this package there are many services including ProductService. BINGO!
Now that you have found the right class in which you can modify the code, you can start looking in other service calls for inspiration. You found setProductType and getProductType methods, which look like something you need to do. BTW at least 3 hours already passed without including lunch and coffee break.
You start writing new methods: setProductDescription and getProductDescription. You know from the task what the input and output of the functions should be. Inside the methods you can use the database service so you just need to find the right function inside the service which is fine.
After you wrote the functions, you start to write some integration tests. Once again, you find inspiration in already existing integration tests for the product service, so adding one or two for your methods is not a big deal. You run your tests and everything is working. It’s nice when you can find very similar code which you can just copy and modify to suit your needs. You worry if one day you will have to create an entirely new service without already existing code as inspiration. That is not going to be easy.
This easy task took you almost a whole day although you just added 12 new lines of code. First tasks are not easy, because you need to get familiar with the code and understand how everything is glued together. Anyway, after a few days you learn a great shortcut in IDEA (ctrl+n) which finds classes (instead of text occurrences).
I personally don’t know anyone who had to work right away before some introduction to the codebase. Someone, who would be left alone and absolutely didn’t know what to do. Companies know that you don’t have experience, so don’t be afraid. Keep it positive and if you don’t know something, it is not end of the world. Nobody was born with all the knowledge.