Advice for junior software developers
Tags: programming, beginners, junior, career
Published: 2023-04-23 13:22:44

![A funny image about men giving advice](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9b9en3usq8m2oehri0cr.png)

## We all were juniors once

We all were juniors once, no matter which profession we have chosen for our lives. I, just like you, decided to be a software developer. It was long time ago when I was 13, playing MMORPG online games, creating my first game servers and websites for it. I remember very well my very first professional working day with a very proud title 'Junior Full-Stack Developer' at the age of 19. I also remember the first professional projects I worked on and the quality of the code that I deployed to production, and you can guess how bad it smelled. And here I'm now, almost 6 years later, writing 'Top 5 things I wish I knew when I was younger' kind of posts.

By writing this post, I wanna fulfill my duty (or at least to try) to the software world that I'm part of. I decided to do that by sharing my thoughts about the things that I think people new to the software field have to pay attention to.

## Mentorship is important

The best advice to start with is mentorship. I have no idea how you got to software development. You finished university, you completed some courses on YouTube or other platforms, it doesn't matter. You always need a mentor who will guide you through your career, and at the beginning it's extremely important. Later on, when you become a middle developer, you'll need a mentor who will guide you through that part of your career, and this process never ends — you will always need a mentor. Even when you become a mentor yourself (and if you wanna be a professional developer, you should), you'll need a mentor who will teach you how to be a mentor.

Even though our field is still relatively young, it already has an enormous amount of information, and every month there are even new learnings that will sooner or later become new patterns or 'best practices' that you'll have to learn. It's generally hard, but even harder for the beginner to understand which things it's better to learn first. It's hard to understand if some new technologies that just entered the field is the future of programming that it's better start learning now, or it's simply another hype, the old thing that people forgot and try to represent it as an evolution. Well, a **good** mentor is there for you to help and to make the beginning of your journey smoother and better. 

Of course, during my junior years I had a couple of mentors. They were more or less good and experienced developers, knew how to run big projects, but were they actually **good** mentors? If some of them are reading this post (and I hope they are), the answer I have to give here is _boolean_-ish and, regardless of all the amazing things you taught me, it's **no**. I got my first **good** mentor closer to the point of being a middle developer. Before that, I was trying different, sometimes random and useless methods to improve my programming skills and gain more seniority. One of the very few good skills I have is that I'm not afraid of asking for help from people who are willing and actually can help (advise you to do the same). 

A **good** mentor:
— will tell you about the problems you have and how to solve them early on
— will tell you which books to read, when to read and why to read them
— will have regular sessions with you to talk about your career plan, about your strengths and weaknesses
— will do pair programming with you to give you the sense of a good code and how to do stuff
— will give you some responsibilities when you're ready
— will inspire you and keep you motivated

So, the first and, probably, most important thing I want you to remember from this post is to find a **good** mentor. It may not be an easy task, but there are plenty of platforms online that can help you to achieve it.


### Start learning Clean Code as early as possible

At the beginning, it's hard to find a balance between simplicity and learning enterprise standards. Junior developers usually don't think about code simplicity, readability, testability, maintainability, patterns, etc. And it's not a surprise at all, because that's not something that you'll find in the beginner courses, but it's something that you need to know, and it's better to start building **good habits** early on.

[Uncle Bob's Clean Code](https://www.amazon.de/-/en/Robert-Martin/dp/0132350882) is a book that every software developer who wants to be called a professional *must* read. No exceptions here. But as I said, it's hard to find a balance between simplicity and learning enterprise standards, and you need to be careful when learning Clean Code as a junior developer. At the beginning, when you just start learning new things, you get overloaded by lots of information, and adding Clean Code on top may blow your mind completely, so you'll have to find a balance here. It's important to start with the basics and gradually work your way up to more advanced concepts. If at some point you find it difficult to understand something in the book, try to find the information about that topic in other resources. There are plenty of blogs and videos about clean code, so it shouldn't be so difficult.

### Do not rush for money

As a junior software developer, it's natural to focus on finding a job that pays well. However, rushing to make money at the beginning of your career may not be the best decision in the long run. A good money eventually will come on later stages of your career if you focus on building your hard skills; soft skills such as communication, problem-solving, teamwork; social networking; public speaking skills, etc. Do not accept a first offer if you see it won't give you opportunities for growth and mentorship, even if the starting salary is higher comparing to other offers. It's essential to research the company culture and values to ensure that they align with your own. Additionally, consider the size and type of the company and the projects they work on, as these can impact your learning and development opportunities.

If you decide to go for skills over money at the beginning of your career, it will pay off very quickly in the next couple of years, because you're paid for what and how quickly you can contribute to the project. Take your time and choose wisely.


### Pet project is your best friend

Fred Brooks once said: “How do we get great designers? Great designers design, of course.” So how do you build your hard skills at the beginning of your career? Ideally, you build them at your job by working on different projects, but I doubt the variety of your projects & tasks would change much. By working on your pet projects outside of work, you can gain experience in areas that you may not have the opportunity to explore in your daily tasks. Also, working on projects from scratch would allow you to explore the whole cycle of software development – setting up and configuring framework, local and production environment, tests and much more. It will also look good on your resume ;) I would also like to make a point that it's important to work on projects that are interesting and challenging to you, rather than just trying to build something because you think it will look good on your resume. When you're passionate about what you're working on, you'll be more motivated to learn and improve.

### Googling is OK

When I'm running job interviews in my company, I always allow people to Google whatever they want. That's what developers of all ranks do every day at their job, and it should be also OK for you to do the same. Googling can help you find answers quickly and efficiently, saving time and improving productivity. Instead of reinventing the wheel, developers can use existing solutions and build on them to create better products. While it seems so good, it's not that easy, and it's something that you would also need to learn. It's important to develop good research skills and learn how to evaluate the information you find online. Not everything you read on the internet is accurate or up-to-date, so it's *essential* to verify your sources and be skeptical of information that seems too good to be true.

## To sum it up

Being a junior software developer can be a challenging journey, but it is also a very rewarding one. Remember that everyone started as a junior at some point, and that it is important to find a good mentor to guide you through your career. Starting to learn Clean Code as early as possible will help you develop good habits and prevent bad ones. Finally, do not rush for money, and focus on building your skills and finding opportunities for growth and mentorship. By following these tips, you can increase your chances of becoming a successful software developer and enjoy the journey along the way.

If you have any questions, do not hesitate to contact me directly or ping me it in the comments.