
Reflections on two years on the industry.
I have been working as a software engineer for a little more than two years now. Having worked at two different places, I think the following summarize what I have learnt so far. I can’t say that I have folllowed these, but I have tried to keep them in mind lately, and arranged my thoughts to put these down. Caring just enough Right after graduating, I started working at a startup. It was fun, but there were times when it was just too much. I felt like I was always busy with something but not really doing things that mattered. The spotlight for the startup is someone else. Anything you do not is the spotlight is not appreciated. The tasks will always seem endless, and the light at the end of the tunnel is important, even if its a fake one. The trick to be able to working for someone not yourself is to care just enough. Not too much that you are frustrated at the situation, but not too little that you don’t yourself improve. Care too much and you burn out, feel just hatred for the job, the team, their shortcomings, their management, all the things. Care too little and you are not enjoying, you’re bored, you’re underperforming, and you risk getting fired, and no one likes that. Having grit Over the last two years, I have found that having grit is the one thing that actually gets some work done. There are countless things that are fun to do, that seem productive, that will teach you something new, something you like, but these are things that only you know. Only you know that you’ve read all those articles about eBPF, or Elixir, or Gleam or Terraform or anything else. And you surely learned something new in those articles. But the only thing you can do now is forget. You need to be doing something, you can’t just pretend to learn. You need proof for it to mean something. So, have grit, let go of the fun articles, that new language, that awesome technology, and build something. It is difficult, but it will seem awesome when you’re done later. Investing in tools It took me way too long to realize this. The tools you learn are yours to keep, forever(at least if you pick your tools carefully). So, master your tools. No one cares how much time you spent on doing a task, so might as well use the tools that make you faster, or make it easier. I have completely shifted to vim and tmux for my terminal needs, and I can’t imagine going back. Along with a host of other tools, docker, ffmpeg, or just git. Can’t imagine how much time I have saved by using simple tools. Your knowledge also keeps accumulating. That library you build today will save you a lot of time some day. I love how people taking part in gamejams create breathtaking games in just a few days. And their secret is that they have stashed their knowledge from regularly tinkering with so many ideas, and their prefabs, libraries that they built over the time they have been learning. So, when its time to build something, they have a solid system. Build systems, not just projects. Build libraries, not just scripts. Build tools, not just code. Having freedom of thought This one’s pretty simple, have time for reflections. Autopilot is not the way to go. You need to be able to try out things, meet new people or do whatever you find interesting. Plan out what you want to do. Don’t be so invested in someone else’s dream that you forget yours. Life is but an optimization problem, re-adjust your strategy from time to time.