The Politics of Software

Hi everyone,

Today is election day in the United States, and while I can generally assure you that everyone is exhausted by the nearly two-year campaign, it's a good reminder that politics exist in every aspect of life, including software. And just as in governmental politics, the politics of software tend to fall into two camps: those who want to change things and those who want to keep things the same.

Those who want to changes things are those who are constantly proposing rewriting from scratch, evaluating new tools and frameworks, and pushing for to use different technologies. These developers favor learning and rely on the excitement and interest to keep them motivated at work. They are willing to take on more risk, especially when they perceive a big payoff for being right (and tend to downplay the negative effects if they are wrong). While most young and inexperienced developers fall into this category, age and experience are not the primary drivers -- it's much more about personality.

On the other side, you have those who want to keep things the same. These developers favor stability and predictibility so that they won't feel stressed in their day-to-day working lives. They are less willing to take risks when they know an approach that already works, and as such, are more likely to make incremental progress rather than large changes. While you find this approach more frequently in older, more experienced developers, it can also be found in younger, less experienced developers.

So which side is right? As with governmental politics, it's a mixture of both. If things are constantly changing, people feel unsettled and get burned out quickly; if things aren't changing, people grow frustrated at a lack of progress on solving everyday problems and inability to take advantage of new and emerging techniques and technologies. Every software development team (and other types of teams, as well) need a good mix of both personality types to succeed. It's the back and forth of debating of advantages and disadvantages of approaches that leads to a higher quality of solution.

Be well.

-N

Missed Past Newsletters? Catch up!

I've received a lot of great feedback about the newsletter since it began, and a lot of you have mentioned really enjoying the essays, but it's hard to find them after a newsletter has been sent. To help with that, I've created an ebook called NCZOnline Newsletter Year One that contains all of the content from the first 12 months of the newsletter in an easy-to-read format. Each purchase helps pay for the costs of providing this newsletter, so your support is greatly appreciated.

Recommended Links

Web fonts, boy, I don't know (article)
If you've spent anytime using web fonts, you've probably run into the trouble of slow-loading fonts preventing text from being rendered on the page. While there's no perfect solution to this problem, there are a couple of simple approaches that can help you lazy load web fonts to avoid flash-of-invisible content problems.

Conditions for CSS Variables (article)
CSS has no concept of conditional statements, but this article explores an interesting way of mimicking conditional statements using CSS variables. Because different patterns can assign different values to CSS variables, it's possible to use variables with calc() to simulate certain conditions.

Post-mortem debugging and promises (article)
Figuring out why a Node.js process crashed can be difficult, and promises have added another piece of confusion to the mix. Using promises changes the stack trace information and also the data available in a core dump, both of which make debugging promises more difficult. This article walks through a callback example and a promise example to show the differences in debugging problems and how to make progress in each case.

Moment of Zen

"True wisdom comes to each of us when we realize how little we understand about life, ourselves, and the world around us."

- Socrates

Recommended Book

One thing you're never taught in school is how to have difficult conversations with other people. That, of course, is the point of Difficult Conversations, to give you the tools necessary to talk through disagreements and other difficult situations successfully. There are plenty of example conversations and techniques for identifying why some conversations are more difficult than others. You'll find advice for how to keep your emotions (including fear) in check and how to speak so as not to cause defensiveness in others. This is one of those books that can read once a year and feel like it's a good use of time because we can all use a reminder about how to communicate more effectively.

Recently on NCZOnline

The ECMAScript 2016 change you probably don't know
Compared to ECMAScript 6 (also known as ECMAScript 2015), ECMAScript 2016 was a minor update to the language specification for JavaScript. This was due to the decision that ECMAScript editions would now move to a yearly release cycle, effectively just a snapshot of all the features that were ready. As such, most resources list only...

ES6 module loading: More complicated than you think
One of the most long-awaited features of ECMAScript 6 is the formal definition of modules as part of the language. For years, JavaScript developers have struggled with organizing their code and needing to decide between alternate ad-hoc module formats like RequireJS, AMD, and CommonJS. Formally defining modules as part of JavaScript will eliminate a lot...

Mimicking npm script in Node.js
I'm a big fan of npm scripts[1] and have been using them in all of my projects instead of a standalone build system. The feature I like the most from npm scripts is the ability to run command line executables that are installed in your project's node_modules/.bin directory. That allows you to, for example, install...

Books I've Written

Feedback

Love this newsletter? Hate it? Have suggestions for how to make it better? When you subscribe to the newsletter, you can just reply to send in feedback.

Ready to subscribe?

Join over 2,000 others and subscribe to get the newsletter delivered to your inbox every other Tuesday.

If you enjoy this newsletter and would like to support my work (including the newsletter, my blog, my books, and ESLint), please consider becoming a patron. I provide a lot of free content and your support allows me to spend more time doing so, and there are great rewards for patrons.