The first programming language I learned was Basic. It was sometime ago, and my first computing beast at the time was ZX Spectrum.
I was in school, then another school, then college, then another college, etc. All that time application configuration was not really a thing I cared about. Who needs to create programs for different environments? Who needs pluggable resources? Why would you ever care about it?
A program that plays checkers, I wrote in Pascal in 1993, certainly did not need it. A text editor written in C a couple years after did not need it. A program in AI class in college, that created travel plans for robots with various sensors did not care about
prod, since it was always “just prod”.
Then I suddenly started to make money creating programs. Well, not that suddenly, but it was a really strange feeling at first:
I can just do what I love, and also get paid?
All these people, so much care
But something did change in the way I approached creating software. All of a sudden it wasn’t just me who cared about programs I create, but other people too. In fact they cared so much that they were ready to give me their money.
But not just people, businesses too. Which meant I could no longer empower those businesses with my daily brain dumps the way I created programs before. At this point I should have had organized my thoughts in these polished blocks of software that had to be confirmed by other people before these blocks see the light.
Creating vs. Nurturing
Usually developers do not take configuration seriously. A large number of developers “are here to create software not to nurture it”. Some people prefer one set of patterns, others another set. We jam our ideas in one of those sets, and then “have to go” through this “bleak” DevOps phase to make sure our creation can survive. Sure Docker made it more fun, Consul made it more convenient, Ansible made it saner, but it is still “so far remote” from what developers love the most:
Since besides programming I’ve always liked hardware and operating systems, DevOps intrigues me not a bit less than programming. But most of the software developers I’ve interacted with prefer others, specially dedicated, people to do DevOps work for them. Not just developers, all the larger organizations I’ve worked at, in addition to development, have build, test and operations teams.
Configuration. Connecting People.
It is interesting that the only true common ground that technically connects developers to build, test and operations people is
configuration. Great documentation and communication help, but configuration connects.
The strength, quality and flexibility of this connection amplifies happiness of all the people involved in this enthralling journey from inception to production.
Since I am lucky to be one of the happiest developers on the planet 🙂 I have “experience to believe” that happiness naturally navigates to quality.
That’s why I see application configuration as a first class citizen in the world of software development. That’s why I try to make it better where I can.