Is the software industry a shaky building?

09. July 2014 Uncategorized 2

I was reading a biography written by a former professor about one of my favorite Baptist preachers, Charles Spurgeon.  In this biography is a quote from Spurgeon talking about preaching and a conversation he had with a fellow preacher. In this conversation, the other preacher said

That is not my case, I revise my creed from week to week. It is with me constant change and progress

Spurgeon says he did not respond, but rather thought, and realized “If the foundation is constantly being altered, the building will be rather shaky.”

Now, to be fair, the context here is preaching and sermons and doctrine and theology. But as I read it, I thought about programming. I thought about there is so much constant change in the programming field. Before nodejs has really taken off, it’s already lost a big contributor.

A few years ago, all the “cool kids” were ditching traditional RDBMS systems for NoSQL, specifically MongoDB. Then, it wasn’t long before Hacker News was starting to fill up with “Why I’ll never use Mongo Again!” posts.

There are changes happening all the time, from server rendered HTML pages (e.g. RazorViews in ASP.NET MVC land) to client side templates (e.g. Handlebars) and client side frameworks (Backbone/Marionette, Ember, Angular.)

The point is, software development is constantly changing. What is trendy and cool today, is not what will be trendy and cool next year. There’s a lot of focus on SIngle Page Apps, which is really not much more than reimagining the traditional client-server approach to software.

All of this made me think. Is software as an industry falling prey to what Spurgeon referred to as a rather shaky building? I think the answer, as it often is, is both yes and no.

For some people, maybe even a majority of developers, it is hard to shift focus and approach problems in new ways. How many times have you seen JavaScript written as if it was C# or Java? In fact, how many times have you seen a C# or Java developer switch to the other platform and write code the same way? Sure, they’re similar, but not identical. And writing C# with Java syntax is ineffective at best, and buggy at worst.

Or have you ever talked to do a developer who has made the switch from one language to another and is now thoroughly convinced that the old language is horrible and the new language is the only way to go. In fact, in some cases, they often wonder how they were ever able to write code in the original language with all its short-comings.

I would say people that fall into this category have a shaky building. They are rooted in nothing else than what the most recent language is, what’s the newest approach, or how some big named company (e.g. Facebook) does things.

However, I think there is also a group in software, and this might be a minority, that aren’t that way. They don’t have a shaky building. Instead of changing their creed week after week as the man in Spurgeon’s dialogue did, they have a set of principles they follow.

This doesn’t mean they don’t try new things. In fact, they might have even been on the forefront of the NoSQL database movement. They can often be early adopters. They have probably used several languages in their career. But they recognize that different languages have different strengths. Their foundation is not the .NET framework, nor is it Ruby on Rails. Instead, the focus on things like writing clean code, testing their code, separating concerns, modularity etc.

They recognize that the language they use is nothing more than a tool. To those people, their buildings are not shaky but strong and secure.

We need to strive to be the type of developers that have secure buildings. Develop a set of foundational principles that you can apply whether you’re writing SQL, Ruby or JavaScript. It’s actually a lot easier than it sounds.