Does programming really suck?

Maciek Rząsa
4 min readJan 19, 2016

Article I am referring to: https://medium.com/@luisobo/why-does-programming-suck-6b253ebfc607#.douhh888z. Just a few questions and thoughts.

Pigs or lego?

I spend most of my time developing features (business logic) and resolving clients’ problems. Most of the time I use libraries and frameworks that solves all the accidental complexity. It allows me to focus on providing business value and therefore spares my clients’ funds. I find it rewarding to help other people by solving their problems with software. Still I think that the most interesting part of CS is not preparing features, but tools. The most noble part of programming is dealing with the incidental complexity: threads, networking, memory, etc.
Programming is hard, it is not a solved problem and that is the best part of it. It is right:

developers secretly love all the mess they are in, we are like pigs in the mud. We won’t tell you, but all these complex, yet uninteresting puzzles where we spend most of our time? Those are a lot of fun to solve!

Yet I would rather use quote from DHH We get paid to play legos in our mind and text editor. (http://7php.com/happy-newyear2015-dhh/)

Maths&ideas

we started the business of trying to find the underlying mathematical representation of things, even though some things do not have a clear math representation. I believe this is the tipping point. From this point on we were not going from problem to solution anymore. We flipped this relationship. We started going from solution to problem.

Before we got computers people used to search for representation of different things in maths. Isn’t it like the modern physics is build: we try to describe our world using tools provided by maths?

The computer shifted the complexity of our solutions from the world of atoms to the world of ideas. Building solutions was not longer about of assembling devices, it was about assembling ideas.

I think that we used to build solutions to our problems using ideas long before we had computers. It might not have been so popular in engineering, but should we forget about maths, or philosophy?

What are we standing at?

We kept stacking sloppy solutions on top of each other but that only created more complexity and problems. (…) Every time we see an imperfection with the poker chip right below our feet we put a new chip on top of it trying to cover the problem and hoping that it will be the last poker chip we will ever add to the stack, even though we subconsciously know we are lying to ourselves.

At first sight it is hard to deny it :). Still I believe that it is no fully true. Yes, we keep stacking leaky abstractions. At the same time, we improve existing solutions. Good examples of continuous improvement are RDBMS, OS kernels, TCP. There are people dedicated to improve poker chips hidden deep below the current top of the stack. Some parts of the stack are built with poker chips, but I believe we are standing on the shoulders of giants.

Competing standards

It seems to be solved now by UTF-8. We used to have different methods of representing the same idea, vide different integral definitions (https://en.wikipedia.org/wiki/Integral#Formal_definitions). I think it is a result of the decentralization of the CS. People devise different solutions, sometimes as competing standards. Quite often one of them wins. When it does only a few remember that there were competing standards (e.g. VHS vs Betamax). There are cases with multiple standards coexisting — maybe one will win, maybe not. Nothing is perfect in this world.

How to choose the global goal?

Truth is, defining a goal for the progress of programming would be liberating — every programmer out there would have something to shoot for and a frame of reference for whether his or her ad-hoc solutions, libraries, frameworks, languages or tools were inline with that end goal.

Interesting idea. How should we do it? Who should do it? Should we elect The Elders of The Programming to prepare the goal?

It’s time to kill the aimless, bottom-up, ad-hoc incrementalism in programming in favor of purposeful, top-bottom and planned innovation. We need something to shoot for, so I’ll ask again…

What would programming be to you in an ideal world?

Is it possible to achieve? I am not sure. I doubt if we can define the greater goal and if we can convince ourselves it is what we want. And without defining it we may get lost in the fight with incrementalism and bottom-up, killing our developers’ curiosity and resourcefullness.

How should we decide how programming should be? My nature of developer whispers: we should try various solutions and look what works; we should prototype. But to check as many solutions as possible, we need to do it concurrently. And it gives us the current state that is described as aimless, bottom-up, ad-hoc incrementalism. I believe it is the better way to develop the CS, but maybe I just cannot imagine anything better.

--

--

Maciek Rząsa

Thoughts and questions of curious developer with passion for reading.