We each have memories of our best times reading. The great book with the fascinating characters. The couch with the perfect cushions to rest our heads. A time when we were lost in the story while being supported comfortably by the world around us.
This sort of literary paradise is a wonderful thing. Our coding experience can, and should, be similar. To me, this is coding nirvana.
That may strike you as idealistic, but hang on. Codebases can read like a great book and be just as fascinating. The tools we use to interact with the code should be as seamless as possible. The space we work in, and the desk we work on should not just support, but coax the creativity from our fingers.
The entire experience should approach something more like reading a great book than writing code in a stereotypical sense. It should approach this nirvana.
So how do we reach this hypothetical state of coding? It starts with investing the time to optimize every layer between you and the software you create. Here are some ways you can improve each and bring yourself closer to the technical promised land.
Improve your editor
The best place to start improving your coding world is your editor. Regularly invest time improving your editor styles and efficiency. Learn some snippets and keybindings you have never used. Spend time with the editor or shell you have read about but never tried. Remember that there are a huge variety of tools available because everyone has their own style. Find the one that best fits you and then customize it to become exactly what you want.
Personally, my biggest gains in this area are visual. I have spent hours over the years picking the right font, syntax coloring and window transparency for my editor. I am not embarrassed by it. As i see it, how often does an artist spend trying new brushes, paints or canvas? Far longer than i have spent on my editor and with similar benefits.
Improve your code
The next, and perhaps most obvious area to improve is the codebases we spend our time in. No one wants to work in the codebase marred by bad architecture and drowning in technical debt.
We all understand the value of coding well for quality sake. Few put enough weight in the value of creating maintainable code. However, the most underserved trait in a codebase is that it should elicit joy from its developers. The best codebases i have worked in made me happy and proud. These codebases were unique either through style, or architecture or technologies. All of them are eloquent in their own way. Strive for that.
Improve your hardware
Find the right mouse and keyboard. More importantly, find a pair of monitors you like. It really is that simple. We spend roughly 100% of our coding time staring at a screen and interacting with our computer through a few devices. If you have been going along with some budget options and you can afford upgrades, pull the trigger on them.
Improve your space
Finally, and perhaps more important of all is the physical area we code in. Eliminating the distractions on a desk is a great way to reduce some passive stress levels when you are looking get into the zone. Posture is also a big deal, so a chair that doesn't suck can be a huge quality of life improvement. You'd be amazed at the price of Herman Miller Aerons on craigslist. If you can afford it, or if your company is particularly badass, a motorized standing desk is about as good as it gets these days.
Treat yourself right
While some areas of improvement involve financial investments, many, like code quality and editor improvement are on the house. Free or not, i consider all of the above to be investments. By investing in your work environment and your codebase, you can improve your experience when you sit down at the codebase you call home. Remember that the aim here is joy. Coders are some of the people most satisfied with their jobs that i know of.
tl;dr: Take time to improve the little things with your tools, codebase and desk area. You will be happier and more productive.