Picture by me, yay!

The hardest problem in software

Focus

Divan Visagie
From The Couch
Published in
3 min readAug 23, 2017

--

It’s said that the hardest two things in computer science are cache invalidation, naming things, and off by one errors.

Well, at least that’s according to a man who named his website after an error, that’s a +1 for the naming things claim I guess.

To be honest, I’m not sure if what I do can be called a science. In fact, if science is anything like software development, we need to shut down all the nuclear reactors right now.

They’re probably held together by some duct tape because an intern got put on the repair job so that the senior scientist could go play with an experimental fusion reactor. “One day in the future all reactors will be fusion and we need to be ready.”

I have learned to deal with both cache invalidation, naming things and off by one errors, but one of the hardest problems to deal with as a curious person is focus.

Curiosity is a double edged sword, It’s the core that makes a programmer what they are. It helps them be good at what they do. Have a problem? Cool lets hit a search engine, lets pull out a book if we have to, we can always deal with new problems because we aren’t uncomfortable when we don’t know something. A curious mind however is a wondering one, uncomfortable with comfort, it gets bored easily and likes to try shiny new things, and that can hurt productivity.

Almost every large side project I have started has ended in failure, because I got bored or because it got too hard because I was trying too many new technologies instead of solving the actual problem. I seem to get so wrapped up in the how of the whole thing, that I forget about what it is I am trying to achieve.

Yes the experimentation has helped when working as a consultant, but not so much because of the the tech I chose to learn , but the fact that I know how to learn a new technology pretty quickly. I’ve learned what to look for , how to dig through documentation, how to spot a bad tutorial, but thinking that the tech you are playing with because you love it is going to be the one that you end up working on with a client is a gamble you don’t even have to take.

I have made decisions to learn things in the past because I liked them, but I like a lot of things. That gets distracting after a while. I can probably write you a “Hello World” in 15 languages. But it would take me the same amount of time to build you an entire web application in about 10 of them, that it would for me to write it in something completely new that I haven’t seen before. I know because I have tried building entire web-apps in languages I never knew, way too many times.

I know I’m not alone. I know a lot of programmers who love playing with new things, and that’s great. But I worry that by not controlling it, we are spinning out of control and substituting solving the problems we actually have with toying with languages and tools that we never push to production. Not only this but we evangelizing them like a charismatic religion, all the while striking confusion and worry into those coming into the industry.

We make it sound like the fact that we write different code on the weekend and have no work-life balance is by necessity and not by choice. If Golang, Rust or Kotlin suddenly become the de facto language for all the things, there will probably be enough time to learn it before your company ports their entire system to it. And, if you are learning Golang right now, then there is a 90% chance it’s gonna be Rust, or vice versa.

I am still going to be distracted, I’ll admit that. I’ll continue to switch language on a whim, but I will keep in mind that this is just a hobby. I’m not going to try convince others that these things I play with are the future. Just like I won’t tell Junior Developers to go and play guitar. It’s my hobby not theirs and they shouldn’t feel like they won’t succeed because of my inability to control my curiosity.

--

--

Divan Visagie
From The Couch

I write about tech and anything else I find interesting