Lessons learned from changing my tech stack
--
At the end of the last year, I had this feeling that I need to step up and go to the next level of my career path. I wanted to have new challenges, solve new problems and work on something completely different from my past experiences. I started to search for a new role; then, I found Pitch.
Pitch provides a place for every team’s best thinking by building the world’s first complete platform for presentations.
I decided to join Pitch and make a big move, so I dove into an unknown world. I said unknown not only because of the product but also because of their tech stack. At Pitch, we’re using ClojureScript, which is a Lisp-based programming language. As a developer who spent most of his time on JavaScript and C family programming languages, it was a big and probably insane decision to make and getting out of my comfort zone. Here is what I’ve learnt so far.
You are a senior who is junior!
It doesn’t matter how much seniority you have. You are more senior in your tech stack, obviously, but it doesn’t mean that you should start from the beginning. Despite working on different tech stacks, software engineers think the same way in each level of experience. They care about the same things and know the same concepts in software engineering. Once you learn how to talk in a new language, you can bring your expertise to another stack. Of course, the more experience you have, the faster you can get a new stack off the ground. Be patient and try to gather more information as much as you can. Don’t be shy and ask questions even if they’re very obvious. Nobody judges you based on your questions (and it doesn’t matter if they do). Forget about those days when your colleagues were asking lots of questions from you. Now it’s your turn to do that.
The goal is to be a tenant of the new world but not a guest.
You’ll lose your self confidence for the first couple of months
It is again related to how much experience you have, but you can expect to be in this situation.
Each task can reveal new things for you. Even those easygoing tasks can grab your neck and block you for a while or imagine that you attended the team meeting and they’re talking about a deep technical topic, and you can’t understand almost anything!
These are the situations that you will face and can probably affect your self-confidence. It’s important to remind yourself that all these things expected to happen. It doesn’t mean that you are not good enough or any other self-judgment that you can imagine. Instead, you can use these situations as an opportunity to learn new things.
If you stuck in a task, you have to explore multiple places and ask lots of questions. It helps you to understand other things along the way. If you were an expert in that area, you would go to the right place, make some changes and get the task done. As a result, you’ll miss all those interactions with other engineers/areas of the codebase.
You are blind
This is the most exciting yet weird thing about changing your tech stack.
Since you are working on new tools and language, your brain shifts its focus to tackle all those new things, and there would be situations where you will forget to pay attention to what you had already known. Let me give you an example.
Every React developer knows that it’s essential to handle it properly if we have a side effect for a component. One common way to do that is using useEffect
. In one of my PRs, I made this undeniable mistake and put that side effect inside the component without useEffect
! I knew about all these concepts and the benefit of using useEffect
, but the thing is, I was blind. My brain was 100% focused on new things and trying to deliver the best possible implementation in new tools, so it ignored some fundamental things.
Another example is reviewing your peers PRs. Over the years of working with your tech stack, you’ve seen lots of codes, different best practices and code styles. When you see some codes in your tech stack, you can understand whether that’s a good one or not, but what about the new programming language you started two weeks ago? Of course, you can’t have the same expectation from yourself, and you’ll be blind for “a good amount of time”, I would say.
One thing that you can do to help your brain with this is checking all PRs as much as you can. Even closed PRs and conversations around them can help you bring some context to your brain (I did it a bit late, so please do it from the beginning).
Conclusion
As software engineers, we shouldn’t rely on tools, programming languages, frameworks and other temporary things. Instead, we should only focus on the central concept of building software. Building software is the basement of our career which is not changing a lot over time. On the other hand, the answer to how to build software is more than one, and it’s changing rapidly.
Companies also have a role to play in this topic. As we go further and technology is changing almost every day, companies should consider paying more attention to hiring people and training them. Otherwise, we always have many companies out there looking for someone and developers who don’t have any experience in some new tools or tech stack.
In the end, I wanted to emphasise that after all, I’m still learning and adapting myself to this new tech stack, and this process will never end, but you’ll get better and better every day. Also, it doesn’t mean that I’ll never go back to JS/TS world, but I put all these in my toolbox and will use each of them at the right time and right place.
If you’re looking for a new adventure and would like to have this opportunity to explore the world that I’m exploring at the moment, Pitch is hiring. You’ll enjoy it a lot! ;)