The stifling limitation of Investments in Complexity

Complexity is a given. Complexity is also exponential. Throw enough considerations into a simple task and it quickly becomes unwieldy. How we deal with complexity in management is of course vital, but I want to highlight the limitations of delivering complexity for profit and the limitations on our potential it imposes.

I believe the software industry needs to collaborate and put their best simplicity foot forward.

Why simplicity fails

Business often has an investment in complexity. Consider that business creates certifications around their technologies and they are making profit from the complexity. Cynically, one could maintain a high level of complexity, ensuring the profit keeps rolling in year on year. Conferences all have investments in the new and exciting technologies after which the sales teams of the represented get into gear, selling books, courses and consultancy. Then comes the libraries, developer kits and other components and platforms.
The motivation to create ‘simple’ is not readily pushed from big business because complexity is like homeopathy, a profit from selling nothing but water.

Simplicity is also harder

Abstractions encapsulate complexity as a layer on which the next abstraction is built. You need to ensure the layer is solid before building on top of the previous sediment. Budgets are of course a primary factor, but so is the willingness to invest the correct design time.

Astractions are geared for making the layers above more complicated in their own domain without worrying about the complexity of the domain below.

Consider networking protocol stacks and TCP/IP, URI/URL, HTTP, WebSockets and on the very top some asynchronous JavaScript that makes are websites look more dynamic. If it wasn’t for the efforts of all the layers beneath, we could simply not be concerned with how a page gets snippets of data asynchronously, we’d be concerned with the protocol.

Consider our modus operandi

Take windows, our love to hate operating system. I find it remarkable that the user interface, the functionality offered to users is the same whether you are four years old, a non technical adult or a computer science professional. Nothing changes and one size fits all users. Remarkable.

Consider working with a photo in any software. Its either basic software or its complicated professional software. Software doesnt understand users and their skills, in fact, it doesn’t care. One size fits all, go and do a course if you want to learn it, or go watch youtube. Really?, thats where software is?

A new tomorrow

Blockchain is a technology that I have come to appreciate, but I am astounded by the technical details that the general business man is getting involved with. As a software user of a spreadsheet application, you don’t need to understand bubble sorting or graph theory, so why are people being taught merkel root and hashing?

It is completely irrelevant to the usage scenarios of the technology and is there for the technical people to invest time and effort in, even so, technical people, remain technical and can love their technical cloud they float on.

Software needs a revolution and as software developers, website designers, platform developers, product owners and architects we all need to think about this topic and do our bit.

  • know your audience
  • be critical of complexity
  • revel in time saving productivity gains
  • increase your code reuse percentage
  • look for abstractions

The pontential of our computing industry, when standing on giants is far greater than the little ventures we all throw together. oAuth should be abstracted away and included in every technology, done. Then we can concentrate on other things. In my time as a software developer, I have written around 11 separate login systems over the years. Ask your developers who has built custom login systems. If we add up the man hours of developers around the world working on the same things, we would all be stunned.

Build in layers
My call is not one of open source or closed source, it doesnt matter to me. What matters is that we keep building these vital abstractions with careful thought and design, so that we begin a new software legacy. Things have improved since the 90’s, but not as well in the area of platforms and abstractions. We need the TCP/IP of browser, of authentication, of auditing of whatever. We need to collaborate to create universal tools.

Let’s make it happen, even if its just inside your arena, make your software SIMPLY better.