Ricing your developer environment to your taste is a constant process of tweaking and, at times, improving the workflow. Fortunately, there are various options now that accomodate different preferences. Finding the right combination definitely leads to a more enjoyable experience.
Here are the tools that I daily drive, at least for now. I'll be going through some of my choices one-by-one, but you can skip to the whole list by clicking here.
Editor
The primary tool for any developer would be their editor of choice. I've tried multiple options over the past years, from Sublime to Atom to VS Code, to name a few.
For the last couple of months, I've made the switch to Neovim - something that always excited me. Starting off with a VIM-based editor can be difficult, and it certainly does not attract everyone. It's a niche area.
However, once you get used to the motions and overall feel of Neovim, it's hard to let go.
For my Neovim setup, I've been using LazyVim, but I'm sure to make a config from scratch one of these days, other than customizing LazyVim.
Terminal
Since Neovim, the Terminal has become a crucial part of my workflow. This led to finding the right one for me paired with a convenient shell. This wouldn't be much of a hassle on other operating systems, but on Windows, your options are limited.
To get a UNIXX-like experience on Windows (I've used Arch and other distros in the past), I had to replace Powershell with something else. Luckily, Git comes with the bash shell binary for Windows, and my problem was solved. (I switched to Arch Linux)
With the shell sorted, I had to find the right terminal. The native Windows Terminal didn't cut it, it felt off and slow, even though I tried to make it work. Hyper felt good, and I actually liked it, but I didn't actually stop there. Wezterm felt clunky and slow for some reason.
Lo and behold, I eventually stumbled upon Kitty and with a few minor customizations, I had filled the Terminal hole.
Neovim Configuration & Plugins
Since I've been using LazyVim, there hasn't been much configuration needed, except enabling a few plugins, installing some LSPs via Mason, and tweaking the default behavior a little.
Some of the plugins I personally like, in no particular order:
- Oil.nvim (tbh, the best choice I've made so far)
- Night Owl as the color scheme
- Mini.surround, Mini.pair and the rest
- gitui
- multicursors.nvim (even though there are macros)
- trouble.nvim (just the best)
I didn't mention Treesitter, Telescope, etc. since they're no brainers, standard stuff.
Product/Project Management
I've grown fond of Linear, and it really works great for me. Using Linear made me realize I can be more efficient by breaking down a task into smaller steps, even though we have all heard of this strategy before.
So I use Linear now for all of my personal projects, make issues for every task and keep track of what needs to be done. This is always a sense of achievement from moving an issue to the Done column.
Frameworks
When it comes to programming, my goal is to become a better engineer. This mentality prevents me from being a framework-andy, so I don't associate myself with a specific library or framework.
I'm currently using React, and Next.js, but I intend to try out other options, like Remix, Astro. Even other libraries like Svelte, and Solid, something that I'm excited about.
Jack of all trades, master of none? This is a question that often comes to mind. I believe it's more a matter of curiosity than "mastering" something. And so, I'm not really sure how much that weights into this. For example, let's say I use Next.js for quite some time, and become familiar with the ins and outs of the framework.
At some point, I'll have accumulated enough knowledge to work with the framework quite comfortably. And so, what now? Am I a loyalist? It's not a cult. Would I stay and overlook other ideas? I don't think so.
The curiosity within me will be eager to explore how other ecosystems tackle a similar problem, to broaden my horizon and ultimately, improve my mental capacity for said problem.
I would say curiosity is an important factor for any great programmer. The urge to know more, understand more, learn more is key.
Hosting
Cloudflare. I would love to learn about SST and actually use it for a project some time, but that is not now.
I didn't intend for this article to be long, but I got carried away. This is some of the stuff I use, and I've probably missed on a some things, I'll be sure to update it then.
Here's the final list:
- Terminal: Kitty
- Shell: Zsh
- OS: Arch Linux (Windows for gaming)
- Editor: Neovim
- Theme: Night Owl
- Font: Dank Mono
- Git: Lazygit
- Hosting: Cloudflare
- Frameworks: I would recommend skimming the Framework section, to be honest.
Dotfiles: GitHub
This is a pretty short list, and that's because I don't want to include arbitrary stuff. Stuff like browsers, or other equipment don't really make that much of a difference to me personally.