This is the second post in a series on how economics helps explain the decisions we make when developing software. It is a response to “Summer School”, a series from NPR’s Planet Money.
This week’s episode from Planet Money’s “Summer School” was about markets: where supply and demand come together. It’s where those decisions that Economists love so much get made.
Sometimes a marketplace is like a bazaar (which I tend to picture), but other times it looks more like the results page when searching for an NPM package. With that in mind, it’s easy to see markets everywhere.
Markets can be freeing, if you’re the one making the decisions. But if you aren’t in the driver’s chair, you might not even know they exist.
In general, we want as many decisions as possible to be made by the people who will be most affected by the decision. I’ll add the caveat: “provided they affected have the information necessary to make that decision.”
This is the ideal, but it isn’t the only option.
Suffering in a “central market”
An alternative to individuals deciding is central planning. This is when a higher authority makes the decisions that affect everyone else.
At tech companies, you can see this in service contracts. In some organizations, the decision of what SaaS to use comes from the top, and the repercussions trickle their way down.
I worked at a large company that had a contract with Microsoft for all of their office software services. As a result, everyone at the company had to use Skype and an ancient program called Lync for all of our messaging needs. Both had significant shortcomings, and neither served the needs of the tech team well.
Instead of letting the market decide which messaging app to use, we were forced to struggle with the inefficiencies of central planning.
Rather than mandating a solution from the top, organizations should work hard to give teams and individuals the freedom to gather information and agency to make those decisions for themselves.
As developers, we want to structure as much of our infrastructure and processes to encourage a marketplace of ideas.
If you have a micro-service architecture, teams are free to choose whatever language and framework will work best for them. By using CSS for your design system, each project can pick the JS framework fits their needs.
Once you have an open marketplace, it’s now on the individuals to make rational decisions. Now if only we would actually do that!