Working with Java as a junior developer
In my second year of university, we studied Java and used it for every major project in the curriculum. I constantly heard how great Java was and what great things you could accomplish with it. Additionally, a lot of the companies in Cluj-Napoca, my hometown, had positions for Java developers. That’s why it felt right for my career to evolve around this ecosystem. It was the language I was most familiar with and there were many job opportunities around me.
At my first job as a Java developer at a local Fintech company, I had the privilege to work with some really talented engineers, and they all shared a love for the language. As a junior dev looking to learn, I followed their interests and passion for Java. The future looked bright from this perspective. I had a tool to master and lots of possibilities to use it.
However, something was still missing. I only worked with the core features of Java: built-in data structures and threads – features included in the standard development environment. I didn’t work with any reactive web frameworks, like Spring or Android development, and it felt like I had an old tool in a modern world.
I wanted something else, a more reactive language that would allow me to work quickly. At the same time, I wanted to learn to build User Interfaces (UIs) for web and desktop, and Java was not the right tool for this.
I realised that Java and the industry I was working in, financial tooling, were really slow, because stability is more important than innovation in the banking industry. Because our software was used to make money, no one wanted to take any risks.
- The number of questions and answers for CSS versus Swing (or even JavaFX) on Stack Overflow alone shows that the JS community is much bigger and more innovative than the Java community.
- I’d be able to run projects on the web, in the browser, as opposed to the desktop only. This would mean that the page could be accessed from anywhere with an internet connection.
This showed me that JS could open up more possibilities for my career.
Learning to become a frontend developer
After going to a few JS meetups and seeing the potential JS offered me, I got the chance to work as a React developer at a company that was looking for developers with good data structures and algorithms experience. I decided to take the plunge. For two months before starting, I used React in my free time so I could better understand it, but as a backend Java developer transitioning to a frontend React job, I now had a lot of questions, like: How to manage state? What is Redux? What is ECMAScript?
The concepts that were vastly different to me and that I found helpful to study in the beginning were:
To take my knowledge to the next level, I signed up for a React course. There are a lot of good courses on trusted platforms like Coursera or Udemy, and you should pick the course that best matches your abilities and knowledge. I picked this one because I needed to understand the basics.
One insight that I wished someone told me before is: Do not waste time trying to fully understand a concept or a technology before playing with it in a small project.
Playing with new tech in small projects
The learning method that worked best for me was a combination of reading the documentation and using it in small projects. Using this method, whenever I encountered an unfamiliar concept, I googled it and tried to use it in a project. This helped me build my React knowledge and establish the foundation for using it in projects at work.
It doesn’t matter how insignificant the project seems, just make sure you have one. For example, this burger-builder was my first project deployed on Netlify. Having a project helped me to understand the data flow, and how to put together all the blocks to have a working app. This was something I couldn’t learn through a course or reading a guide.
Tip for React beginners: When working with React, you can quickly open dev tools in the browser and update the colour or font size, check how it looks and then update the code. For a beginner this is really a game changer. The results are visible faster which really helps with the trial and error at the beginning.
Of course, learning a new language takes time. I used to read and study during work hours as this was part of the induction process, but I needed to continue studying at home in my free time. This was the only way I could become proficient within a year.
How to make a career change worthwhile
For me, moving towards the frontend and all it has to offer was a great decision, but of course it wasn’t easy. There were a lot of times when I just wanted to go back to what I was used to, but I kept working and learning. Most of my colleagues were really good at React, and I truly felt the impostor syndrome.
I had to put aside my Java knowledge and career, something I had built over many years. Of course, my basic algorithms and overall programming skills were really helpful, but I had to start learning something from scratch. I also received a lower salary for a short period, because of my lack of experience.
The only way to overcome this is through hard work and patience - there are no magic formulas or quick steps.
Sticking with JS and slowly learning was worth it. After three and a half years of working with React, I now feel more comfortable with it and less like an impostor. A bit of work also helped me get back on track with my salary.
My advice to developers making the change from backend to frontend:
- Be open to new possibilities and ideas, even if they seem vastly different from your own experience.
- Join meetups and meet people who work with different languages to actually see how they work and what you could do with them.
- Do your research. It helps to have some background information about future career growth to guide your decision-making.
- Take a course: Coursera and Udemy are great places to start.
- Start projects: Working on things and learning from trial and error helped me pick up things quicker than simply reading.
- Find a mentor or mentors. I was lucky in that my colleagues had lots of React experience, so they were able to give me tips and suggestions that would have taken me much longer to figure out without their help.
- Have a career goal and work towards it. To establish a good goal, try answering the question: “Where would I like to be in 5 years?”. Then, start working in that direction.
Recently, I watched a debate on which is better in the movie industry - practical effects or computer generated effects. The conclusion was really nice: The things that matter are the stories and emotions they evoke, not the tools you use. The same applies to the software engineering world. We need to understand the bigger picture and solve the real problems. How we choose to do that depends on the individual.
We as software engineers can pick what to play with and how to build our solutions. I needed to change what I played with and how I built solutions to feel more inspired and I hope my experience doing this is helpful to anyone in a similar position.