Starting to work on a real commercial project is without a doubt the most popular goal for junior developers. But getting there is not that obvious. Last year I was fortunate enough to join the team at Liki Mobile Solutions in a role of a Junior Frontend Developer after a great internship program, which gave me an opportunity to learn how the whole project lifecycle looks.
- freecodecamp.org - a non-profit organization with interactive courses ranging from basics of HTML, CSS and JS to using frontend frameworks and using APIs. I think that it’s a perfect place to begin with for self-taught developers as the courses teach and later verify your knowledge. Each next level has incrementally higher difficulty and relies on knowledge based in previous lessons.
- developer.mozilla.org - great addition for freecodecamp. This site contains documentation about HTML, CSS and JS so it’s a great place to supplement the knowledge gained from online courses.
- Video courses on YouTube - especially Traversy Media and TheNetNinja channels - both of them are great compendiums of video courses about various programming languages, frameworks and tools. The courses range from teaching basics of different technologies to building projects using them.
The most important part of becoming a React Developer for me, was making small but complete projects using React (remaking vanilla JS apps from the previous step could be a good option). Building these microapps from scratch is a great way to familiarize yourself with correct project architecture and all the configuration needed to get your app running. It can be a little overwhelming at the beginning and it could require you to do some additional research but with every next project this process becomes easier and easier.
The biggest drawback of this approach is that there’s a good chance that you won’t need to use some of the more advanced React features during the development, so it would be a good idea for you to dive deeper into the documentation and try to implement some of those features into your apps just to know that they exist and how they work.
This is a good point to start looking for internship offers or to find some small commercial project to work on as a freelancer but in my opinion joining an internship programme at a software house is a much better choice. Here’s some of the best benefits of doing so.
Being surrounded by experienced developers who are eager to pass their knowledge and answer your questions results in a huge experience boost in a short period of time. You may think that you ask too much questions or the things that you want to ask about are obvious but remember - there’s no stupid questions.
Before asking a question try searching for some possible answers. It will allow you to propose multiple possible solutions and ask which of them is the best for a specific situation. Doing so not only answers your question but also gives knowledge about good practices for a specified circumstances. Also you should avoid bombarding other developers with questions when you see that they’re busy. You could write the questions down and ask when they have some spare free time.
Another great part of working with other programmers is the code review - a process of taking a critical look at code made by other developers. Seeing solutions made by people with different experiences provides a great opportunity to see other perspectives and thought processes, which results in having a broader look at how to solve various problems.
Doing code review also changes the way you analyze your own code - it helps to look at it in a more objective way without getting your ego involved.
- First of all - check your code by yourself before asking for a review. It will allow you to catch the typos and missed console logs. Next thing that helps immensely is using a linter and should be used in every project as it’s a automated way to check if your code follows specific guideline and if it follows language good practices - amount of new lines between function declarations and variables, single quotes vs double quotes, remove unnecessary semicolons and bunch of other rules. Linter allows to find syntax specific errors and lets other developers focus on the code logic while performing the code review.
- The second tip is about psychological aspects of code review in which beginners may struggle with. After pushing your first commit and making a pull request you may feel sort of connected to your code and treat the received comments too personally. Just remember that you’re working as a part of a team and the main goal of everyone involved is to make good software. The code that you write doesn’t represent who you are as a person and the comments you receive are meant to help in your personal growth.
Being a part of a full team also familiarizes with other - not technical aspects of working on a project. Learning how to properly communicate with designers, getting to know one of agile work frameworks like Scrum or Kanban, gaining knowledge on how to properly prepare for a demo and so on. All of this results in growth of soft skills which are as important as technical knowledge and will greatly benefit in the next steps of your career.
At first you should learn who is responsible for what in your project and in the whole company. It will make life easier as you will know who to ask depending on what you need - from asking for a day off to asking for a raise or new hardware.
The next thing worth noting is that you should know how to clearly explain technical topics about the project to people who may not have much knowledge about programming.
Last but not least - learn core concepts about work methodology that the project is carried by. For example at the beginning of working in the Scrum methodology you always should prepare a short list of things that you want to talk about at each project meeting. That preparation will require less and less preparation with each meeting as you will increasingly gain knowledge which topics are worth talking about and which can be skipped.
These are only the three benefits of working in a software house selected by me but the list of valuable experiences of working in such an environment is much longer. The only way for you to witness all of them is selecting a similar career route which I strongly recommend. Remember - it’s never too late to start in IT.