People First, Technology Second
I envy people who say “I want to work with Rust”, “I'm a Python guy” or “I accepted the offer because the company uses Haskell”.
You could have heard the same from me in the beginning. I wanted to work with functional languages, ideally Haskell. I settled on Scala because there were more jobs. Scala was okay, but then the companies I worked for went down one after another, and I had to search for a job again and again. The last startup not only went belly-up, but it also owed me money. My kid was just born, my wife was taking care of her, and I felt stressed and pressed to find a new job quickly.
And I found one, thanks to my former colleague. The project did not employ complex algorithms or have a Google-high load. We wrote in Ruby and Go instead of Scala, and it worked fine. The company paid well, and the team was nice and friendly, but I felt upset. I wanted to build something challenging and apply cutting-edge technology. More importantly, I wanted to get into a big corporation and grow in rank there because I was tired of failing startups.
My wish was granted. I ignored many red flags during interviews, had to wait months for a decision, and finally got approved, only to exhaust myself, burn out, and resign six months later.
Then it finally clicked: technology is not enough. What really gives me the energy to work are the people around me and the sense of doing something worthy.
Nowadays, when looking for a new job, I mainly evaluate companies on these two merits. I still hold opinions about particular technologies and prefer some to others, mostly because of my previous experience. I firmly believe that no single programming language or framework is ideal; after all, the tech world is quirky because our real world is. My views, however, impact neither my morale nor my productivity.