From Subject to Object

In my 30 odd years of programming I’ve crossed quite a few industries. From simple payroll, billing and GST-equivalent processing software to production control systems for abattoirs and meat processing factories; from data collection systems for poker machines to POS systems for a supermarket chain; from a unit registry of a superannuation provider to a general insurance solution; and various distribution, manufacturing and civil/mining contractors as a JDE developer.

I’ve quite enjoyed crossing industries and the challenge of picking up their lingo. For a programmer, every business is essentially the same. You’re collecting a piece of data, manipulating it into comprehending data structures and reporting on it. The hardest part is always to understand the requirements, what is it that the user is after? And you’ll never get it without first understanding the industry’s terminology.

I think every seasoned programmer follows this simple rule when solving a problem:

If it’s complex, then break it up!

You basically break a complex problem into multiple simple problems that have simple solutions.

This brings us to the first part of this post’s title. Instead of thinking of software as a solution to a problem, I prefer to see it as (I just came up with this):

Software’s purpose is to manage subjects

So for example a contact-list software’s purpose is simply to manage your contacts, instead of being a solution to the problem of forgetting names and phone numbers.

The second part of the post’s title, the object, is the software’s runtime.
We can therefore say that software is subjective – you can’t use the general insurance solution to control the meat processing factory floor for example. And the runtime is objective, it doesn’t care what software it’s asked to run.

So where am I going with this, I hear myself question this ramblings?

I find the subject/object dichotomy extremely useful (and I’ve been waiting for the right context to use ‘dichotomy’).
A subject can only be discussed in context and the value of one’s input is relevant to his or her expertise of that context.
Discussion about an object is however anyones game and people can be surprisingly opinionated about mundane things like Apple vs. Microsoft for example.

So in the context of software solution, subject discussion requires knowledge while object one is opinionated. And knowledge demands effort while opinion is effort-less.

The reason for writing these thoughts is that I believe the objective has completely drowned out the subjective when it comes to presentations or discussions about software solutions. There is all this talk about AI, Block-chain, SaaS, PaaS, Cloud, Big Data, etc., which are all objective, while there is very little about their subject use. Can any of these objects for example help with my BAS statement – now that would peak my interest.

I sat in on a presentation on Oracle’s cloud offering last year which was very much focused on differentiating them from other cloud providers. One of their offering is ‘Cloud at Customer’ which means that you get your own cloud in your data-centre. So we can get into very productive debate about whether to have my own cloud, or use Oracle’s? Pros and cons anyone?

Now luckily the IT industry is always on the move and I don’t remember anyone being able to predict it with any accuracy in the last 30 years. Nobody foresaw the smart-phone revolution for example, not even sci-fi authors. And if you think about it, it’s actually absurd. If anyone had predicted 20 years ago that everyone carries a mobile phone that will also be a video-camera – I think he would have been laughed at. Maybe that’s the reason why nobody can claim to have predicted this, fear of ridicule.

So my prediction, or actually what I would like to see in the new year, is focus shifting back to the subject. What impressed me most last year is the NPM library. At the time of this writing, it has 633,388 packages that are mostly open source. Knowledge sharing amongst programmers has never been greater with subsequent explosion of creativity. So while the objective part of the industry debates where the cloud should be, is SaaS better than PaaS, is block-chain the future and whether AI is evil or benign; I’m keeping my eyes on what subjects the programmers are working on.