February 28, 2018
Almost 15 years ago I started a blog call FourM. The name of the blog was based on an article I wrote where I give a brief historical survey of software development methods, culminating in agile methods. Even though the article is 15 years old, it still has many interesting things to say.
Knowing that you likely are not going to read it, here is a quote from the introduction which summarizes my thinking on our craft:
It is fitting that this white paper is being written a few weeks after Professor Edsger Dijkstra passed on. In March, 1968 Dr. Dijkstra published an influential letter to the editor of the Communications of the Association for Computing Machinery (CACM) called Go To Statement Considered Harmful. The impact of this letter was analogous in some ways to Martin Luther’s posting of his 95 Theses on the church door in Wittenberg. Like the latter, Dijkstra’s letter inaugurated a religious war which continues to this day.
I don’t mean to be either sacrilegious or flippant by this statement. While software development may not be as important an activity as looking after one’s soul, it does have enormous impact on everyone’s material life — but not just. Every time I board a plane, which is quite often, I think to myself how much my safety depends on some programmer getting it right. This is not a very comforting thought to anyone who is even slightly involved in this industry.
How we develop software matters: doing it properly reduces the risk of economic failure, of personal failure in one’s career (if you are in the field), and, most importantly, for some systems it reduces the risk of lives being lost.
Origin of FourM
The article advocates that Fred Brooks’ The Mythical Man Month is a must read book for all software developers and managers. Despite its anachronistic title and it being written decades ago, the book is hardly outdated. If you haven’t yet, stop now and go read it. Or at the very least, read my distillation of the book in the above-mentioned article. This distillation leads to what I call the Mythical Man Month Method(ology). Hence the etymology of FourM, a wonderful neologism which I refuse to change to MPMM.
The key point of FourM is that software development is not only a technical craft, but like all creative endeavors, is human-centric. It is precisely the complexity of human behavior that makes software development such a complex endeavor. Success can be defined as working code that meets customer needs. Brook stresses there is no magical “silver bullet” to make software development easy or help us achieve success. Technology can lead us only so far.
Nonetheless, much of importance had happened in the software development world over the years since Brooks wrote the book. Perhaps the most important of these was the rise of the FOSS (free and open source software) movement. One key reason FOSS is so successful and important, is precisely because it embodies FourM in many ways. The purpose of the blog was to elaborate and provide examples of that.
FourM - TNG
15 years on, there is still no “silver bullet.” But many, many, new, important and useful tools and techniques have been developed. In particular, the rise of the Internet has given birth to a cadre of software giants along with software startups. These are building ever more capable and useful tools and techniques that are being shared via FOSS and the Internet itself. The craft of software development has never been easier, or more fun and interesting.
My renewed interest in creating a “blog” came about because I am learning many of these new technologies, and I know the best way to learn is to teach. To keep up with modern times, the “blog” is actually a collection of resources based around a Github site .
In the previous incarnation of FourM.info, I was a big proponent of Python, and the blog was built on Plone. Over the past couple of years I have become a huge fan of Scala and functional programming. Those are a big focus of this FourM site.
Another big focus is “the cloud” which is one of the most radical and productive changes in software development in the past few years. Related to this is a fascinating change that has happened to Microsoft. Not many likely remember how Bill Gates compared FOSS to communism! Today, Microsoft has joined IBM as one of the biggest proponents of and contributor to FOSS. Azure is an amazing set of products, and I hope to cover it extensively. If any company can be seen as the new “Microsoft” of the software world, it’s Amazon. Sadly, AWS has way too much of the bad old concept of customer lock-in. Nonetheless, since it is widely used, it will be covered as well.
Over the years I have filled many roles in companies, my own and others. In terms of my technical roles, programming has always been a tool I use, but I would define myself more as a plumbing person. That means I am best at defining and building the architecture and infrastructure that holds software projects together, rather than coming up with nifty new algorithms. The building part of those activities fall under what is known today as DevOps, and that is another key focal point for the site.
FourM Site Components
The site itself consists of several parts. First there is this Github Pages, which allows me to write “long form” commentary on topics of interest. Then there is twitter for micro-blogging interesting articles and short commentary. Besides writing commentary, I hope to also add some video courses, but time will tell if that works out.
On the hosting Github site there are wikis with more practical, hands-on guides. There are also some small open source projects I use in my own company, along with other code and code snippets.
Useful External Resources
The technology behind this Github Pages blog, is itself a great example of some of the new tools and techniques. It is created using the Hugo static site generator. I’ll explain why I chose Hugo in a future post.