There comes a point in nearly everyone’s career where they feel that it’s time to make a switch. At times, the feeling comes out of the blue - completely unprompted. On the other hand, you could spend years considering whether to change your specialization without making a move. Today, you’ll get some insight from Tomasz, who switched from Java to become a senior Node.js developer when he joined our team at Bitnoise. The jump seemed risky at first, but in the end, Tomasz settled in beautifully. Here’s what he learned.
My technical and educational background are quite intertwined. While I always wanted to work with computers, my story didn’t really start until I attended the Poznań University of Technology. I graduated from there with a Master’s degree in Computer Science. During this time, I completed a successful stint as an analyst and research programmer at the university, which helped me grow a lot as a programmer.
Most of my studies focused on C#, which was the programming language preferred by the majority of universities at this time. That said, I also took a course that covered Java. From that point onward, my career centered around Java development.
By the time I graduated University, I knew I wanted to be a software architect. However, I was still pretty naive. I didn’t realize that before becoming a software architect, you must spend significant time in the trenches as a developer first.
I scoured the internet for architect job postings. There were a few, but none that I was qualified for. Meanwhile, I found dozens of good job offers for Java developers. I quickly realized that I had no choice but to work as a developer first. I thought to myself “why not?” as I accepted my first job working for PayU.
I took my first steps during my university years. PayU was also pretty active in hiring junior developers at my university. I cut my teeth on my first commercial software projects there. These projects weren’t simple. If you weren’t aware, PayU is a major online payment platform. Nowadays, Naspers Corporation owns it. As employees, our project managers held us to a high standard. And the company was extremely well organized, which I appreciated.
In my three years working for PayU, I evolved into a full-fledged developer. I credit the company and the people who worked there for much of my growth as a developer.
While working at PayU, I became a little restless and decided it was time for a change. I had a friend who worked at a small local company, so I decided to take my talents there. One of the advantages of working at this company was that they gave me a lot of freedom. My natural curiosity prompted me to learn Node.js. This was a boon to my growth as a developer.
Coincidentally, one of my tasks at this company was to build an API gateway. We decided to use Node.js for this purpose because it was far simpler and quicker to implement than Java.
No doubt. It’s one thing for you to play around with new programming languages all day, but necessity is the mother of all invention. If one of your higher-ups at your job has the open-mindedness to try a new technology, the world is your oyster. You can begin taking on bigger and bigger challenges with new approaches each time.
I think it’s always fun to challenge yourself. However, not everyone dares to leave their comfort zone. In this case, their tech stack. You could spend years using the same language and never truly grow as a programmer. In this industry, it’s important to constantly try new things and take the opportunities that present themselves. That’s how you get an edge both at your current job and when you’re trying to find a new one.
After working for this smaller company, I transferred to a software development company named Espeo. Once again, I was happy that my superiors at Espeo were technologically agnostic. When we worked on projects, we wanted to use the right tool for the job, rather than choosing the same one because we always used it.
I worked with Java, Python, PHP, and Node.js. Not to mention, I did a bit of work with blockchain technology as well. Given that Node.js has one of the most extensive Ethereum libraries around, it only reinforced my positive impression of it.
At this point, I had built up 7 years of programming experience working with a variety of programming languages. I would say that Java still dominated my work, but Node.js was probably second. If you asked me what kind of developer I was back then, I would have told you I was a Java developer for sure.
Indeed. The pitch got me pretty excited. Most companies have clients, but they don’t get to be nearly as hands-on with projects as Bitnoise is. Not to mention, I appreciate that Bitnoise prizes experienced senior-level employees. As a result, they offered me a role as a senior Node.js developer. I thought this was quite a coup, considering that Node.js wasn’t even the main technology I worked with.
One of my first projects at Bitnoise involved an HR Tech startup called JOIN. Working with such a fast-growing firm is incredible. The best part was, JOIN’s CTO is extremely open-minded too. As a result, he accommodated the fact that I’m not a Node.js specialist.
I’ve already been working with JOIN for three years, and I’m still as passionate about the project today as I was the day I started, if not more! Growing alongside Join and my colleagues at Bitnoise has been extremely rewarding. Watching a startup evolve into a major player is a bit like watching your nephew or niece grow up.
As I mentioned before, I was now designated as a senior developer in a programming language I didn’t specialize in. I certainly had reservations about starting from a lower level. It felt a bit like I was back at square one, I lost a lot of the confidence I built up during my 7 years in the industry. It forced me to work harder than I ever did before to prove myself.
Imagine moving from Manchester United to Real Madrid. You already know you’re a good player, but you still need to impress the new fans. In this case, I knew I was a good developer, but I still needed to impress my colleagues and our clients. This type of competitive mentality is rewarding; I learned lots of new things and emerged with newfound confidence. Switching to a new environment also changes your perspective.
A good developer understands that the programming language you use is merely a tool. As you gain experience, you realize that the same problem-solving skills underlie each language you use. Eventually, these tools become interchangeable. And you don’t need to worry that Node.js is a newer language. You can use it for the same purposes that you would for Java. I promise any developer that switching to Node.js won’t make you feel inadequate.
Of course, Java and Node.js are quite different. However, the difference is more comparable to playing for two different football teams than it is to the difference between playing football to basketball. Any developer worth their salt can make the switch if they put in the effort.
I’ve already covered the technology part, that’s really just about adding a new tool to your arsenal. I actually think that work culture is by far the most important determinant of a project’s success, so I look at that. Above all, I prefer working in a Test-Driven Development environment (TDD). Essentially, it means that we prioritize product quality above all else. We run lots of tests before we write the code.
There are other elements that some might consider superficial, but which I find quite relevant. For instance, you need to have a degree of flexibility in all approaches, not just with coding. We recently switched from Scrum to Kanban to organize our JOIN project because we felt it would improve our efficiency in the long run.
I’ll share one last bit of philosophy with you. I’m not someone who thinks that software development is an art. Rather, it’s a means to an end. That end should be twofold: to increase your business’s value and to provide your users with the best possible experience when they use your products. That’s the great part about working with Bitnoise, we don’t try to glorify our tools. Rather, we aim to elevate our clients and the users that they support. I think it takes humility for a company to recognize what’s truly important.
You’re welcome. The pleasure is entirely mine!
During our interview with Tomasz, we discussed Java and Node.js at length. Let’s dive into some of the specifications of these two backend technologies. They’re both quite popular, but Java is quite a bit older. Java’s initial release was in 1995 while Node.js didn’t come out until 2009.
Java is one of the first languages that come to mind for any programmer. It’s been established as one of the best technologies for developing applications and is considered a heavyweight by almost everyone in the industry.
Originally, developers used Java to create desktop applications. However, Java has gained popularity for many other purposes. Many large and complex applications like social media platforms tend to appreciate Java. Not to mention, banking applications, metaverse games, ERP solutions, and CRM applications use the language for their backend too. Spotify, Twitter, and Minecraft are all examples of popular apps that were written in Java.
Advantages of Java
There’s a reason why Java has been widely trusted by developers since 1995. It has a rigid structure that stands the test of time. Consequently, Java helps you build extremely stable applications. Any software you create with Java will be durable and you’ll easily minimize the risk of errors.
Another advantage to Java is that it’s a statically-typed language. Once again, this reduces the chance of errors since every variable, object, and so on is well-defined. To achieve this level of definition in Node.js, you would need to use TypeScript in tandem with it, since TypeScript requires you to define the type of variable each time that you set one.
Advantages of Node.js
Even with Java’s reliability, Node.js possesses several important advantages of its own. The main one is speed of development - writing Java code is quite a bit slower than most native languages because it uses compilers.
Furthermore, Node.js employs an event loop mechanism that allows servers to respond to requests without blocking input and output operations. As a result, Node.js is extremely scalable, which makes it perfect for startups that need room to grow.
Of course, with all these advantages, many developers are eager to learn Node.js. Some, like Tomasz, have already learned the language at work. There are others that have spent years working with the technology already. Due to its popularity, it shouldn’t be hard to find a quality developer willing to make the switch to Node.js.
When you first found your startup, you have some serious decisions to make. Your initial choice of technology could be the most important of them all. Choosing between Java and Node.js will have a major impact on the success of your application or SaaS. Choose wisely.
As a result, recruiting Java developers becomes a bit of a pain. The difficulty of the language means that there is a deficit of Java developers available on the job market. We mentioned that quite a few largescale applications use Java. Guess who you’ll be competing against when recruiting Java developers? The likes of Spotify and Twitter will be in on the action, as will be larg banks and insurance companies. For most startups, this is a rather intimidating proposition.
Based on our experience at Bitnoise, we encourage founders and CTOs to use Node.js for their backend. Node.js will help you get the job done just as well as Java in 99.9% of cases. And even if you’re already a Java developer, building a solid team of Java developers around you will be arduous and expensive.
As Tomasz proved, it’s not too challenging for a Java developer to switch to Node.js. Many are eager to make the jump. Given an enticing opportunity at your startup, you’ll have few problems attracting Node.js developers, even at the senior level.
It’s relatively easy to switch if you already know other backend technologies
Node.js is growing in popularity and many startups use it as their primary technology
It can achieve almost the same results as other languages
Using Node.js helps see results faster than Java, among others