Learning to read is that beautiful first step young children take in their early school years, there is though a natural barrier to writing in the form of dexterity, or the lack thereof, that requires a child to spend months and even years absorbing the rudiments of reading its language before they are given any genuine opportunity to create meaningful or new text. This does not seem to be the case for computer science.

I am starting to believe our obsession with new frameworks is connected to how we learn about software development and how easy it is to create a new framework. It cost nothing to just start over. Take for comparison if our city roads had generally reached its capacity and all the main express ways needed to add a lane, city engineers would start looking at costs, planning, timing, etc. What you would not do is start looking for new locations for your city, it would be simply impractical. Software engineering seems to make it practical just to move the entire city rather than fixing existing roads, our discipline feels capricious and unstable.

Or consider the STEM behind bridge building it is has developed over time, making huge strides in one era or another, but always showing a progression of coherent practices which ultimately enrich the entire field. Materials, cost, geography, safety all these factors change but the underlying concepts of developing a bridge have been around and being refined for hundreds of years.

To be sure I would not want to make it artificially difficult to write but making it easy to read should be a goal. Or making read first the mode the default mode for teaching in computer science and software engineering. We want it to be an order of magnitude easier to read than write. Maybe then we would stop having to relocate our knowledge every few years when a new framework arrives. I am just hoping that we can settle into a genuine engineering discipline, one that our successors can build upon.

We have a write first attitude in society and our social networks encourage an abundance of myopic contributions without any requisite reading. This may be why we have to wade through so much noise before we get any meaningful information. Social networks often feel like swimming upstream in a sewer with your mouth open in the hope that something nourishing may come along.

One assumption that I hold (tentatively) is that somehow the arc of our coding practices bends naturally towards some idealized conclusion. That given enough time our collective contributions will direct us to some point where we have a series of programming languages and platforms that accurately and uniformly relates our programming intent. This idea is probably only possible if we build on existing work rather than constantly redefining existing platforms.

The creation and recreation of software frameworks seems, in my mind, to more resembles the history of art, where its very best artisans are compelled to have a technical renaissance every few years and then have the observing world treat that rebirth like a radical shift in approach.

Our industry needs more science not art.



Comment Section

Comments are closed.