I'm not sure why I use Linux. This blog post is me figuring out why.
I want to be a better developer
In MacOs, and to a lesser extent Windows, everything "just works" out of the box. This is not true in Linux, even with popular distros like Ubunutu or Fedora. In Linux, sometimes things just don't work and I am becoming a better developer because of it. On a fresh install of Linux I often can't connect to Wi-Fi. I have to find some other way of connecting to the internet and downloading the drivers I need. This is a pain, but it makes me feel good when I solve the problem. I learn something. The machine gets less mysterious.
It's a weakness as a developer to be scared of breaking your computer. If my Wi-Fi won't connect, it's a chance to learn why. If I can play videos on YouTube, but not on Vimeo, I've learned that there's something different about the platforms. So many things break on Linux that I really get the chance to think about how my computer actually works.
And all the servers I interact with day to day are running some version of Linux. It's nice to SSH into a box and feel right at home. I know how the users work and where to find the configuration files. I know that the SSH daemon works the same way it does on my computer. Or, close enough.
I want other developers to think I'm a good developer
Whether or not we admit it openly, developers make assumptions about other developers' skill levels by looking at what tools they use. Someone who feels comfortable using Linux every day must know what they are doing! Below is a list of tools that we judge people on.
Tools that make you look like a lousy developer:
- Windows. The assumption is that you don't know enough to know how bad your OS is.
- Graphical git client. The assumption is that you don't understand git, so you need some pretty pictures to help you out.
- Light colour theme in your code editor. Yuck.
- JQuery. What year is it?
Tools that make you look like an exceptional developer.
- Vim. Regular editors are too slow for you.
- Linux. You know how things work under the hood and aren't afraid to get dirty.
- No mouse. You have no time to waste pushing an arrow around the screen.
- Multiple terminal windows. Obviously.
- Elm. Obviously.
I want to be different, but only a little
When I look around and see that I'm doing exactly what everyone else is doing, it makes me unhappy. I want to be doing things that are different. I want my life to be something more than long. But I don't want to be too different. Being too different means your whole life is friction and you can't relate to other people. I don't want that.
Linux is just different enough that it makes me happy without being so different that it's annoying. It's a unix-like system, it runs Firefox and Slack, but it's not what everyone else is using.