How to Reduce Stress and Achieve Development Nirvana
Nirvana, in this plane of existence at least, is a state of contentment, according to Corey A. Butler, creator of the Fenix Web Server and Author.io, a venture that provides software and services for developers. In his talk at Node.js Interactive, Butler said there are two things that stand in the way of achieving a state of development nirvana: one is the time spent coding and thinking about code, and the other is stress. Of course, you can never reach a state of perfect contentment, because you will always have to spend some time coding, and there will always be a certain degree of stress in your work.
Butler, however, says that you can control your workflow to such an extent as to make your time spent coding at least a little more enjoyable. However, there are also forces that oppose changes in workflow, too. For one thing, workflows tend to become invisible over time, turning into something few people think about and never think of changing. Additionally, as creatures of habit, humans tend to oppose change per se. And, many think people developers are smart. Developers tend to think so, too, and it may be true, but that doesn't mean the workflows they have devised are smart.
Butler advises developers to "target continual change" to overcome these problems. By experimenting with different workflows, and then experimenting some more, you are less likely to fall into the rut of a suboptimal workflow.
This became apparent to Butler while creating NVM for Windows. NVM for Windows is a Node Version Manager for... well, Windows. Because the Node environment is constantly changing, Butler set himself the task of creating something that could handle that.
Butler's expectations for the NVM, as with any other version manager, were that he would be able to save time -- that is, reduce the time spent coding. This characteristic is what gave NVM use and value, but, he says, it is not what made it popular. Instead, NVM for Windows' popularity, Butler reckons, stemmed from the fact that, because it included a graphical installer, it reduced stress.
The lesson that Butler learned from this is that it is often a small, nitpicky thing that contributes most to your overall stress. You should always look for the small annoying things and try and solve those, he says.
This idea is related to why people choose certain technology. The main motivator in preferring one tool or technology over another, says Butler, is trust. This means people don't necessarily use the best technology, but will use the one they think they can rely on. Butler recommends piggybacking your own products off of technologies that people already trust. This approach led him to develop the node-windows, node-mac, and node-linux.
Because different developers trust different operating systems, each of the three projects allows developers to set up background daemons and services to run native Node scripts. Butler says this approach combines the trust a developer has in their operating system of choice, with the trust they have in their ability to code in Node. It also alleviates the stress of having to understand the intricacies of how each of these operating systems work.
However, Butler attributes his most recent steps toward contentment to Fenix, a visual web server he developed for setting up and deploying static websites on Windows and Mac. For one thing, Fenix allows you to deploy websites simply, quickly and visually. And, because Fenix also comes with a sharing system, it has allowed Butler to create libraries and projects alongside other developers by sharing quick links to websites running the code. Fenix afforded an instant infrastructure and sharing. It gave the team faster feedback loops and was much more intuitive for people who were not back-end developers. This reduced time and stress and boosted trust. Because Butler and his team spent less time on infrastructure and administration, they were able to spend more time on unit testing and documentation.
In other words, it brought them closer to development nirvana.
Learn more in the complete presentation below:
If you're interested in speaking at or attending Node.js Interactive North America 2017 - happening October 4-6 in Vancouver, Canada - please subscribe to the Node.js community newsletter to keep abreast of dates and deadlines.