Software Engineering is hard

Recently I started a new job, it’s great but it’s quite different, mentally, from my old job.

As I’m new I spend a large amount of my time roaming the code base looking for how to get hold of some information, which in turn means I get to read a lot of other people’s code.

Reading other people’s code is always a pain, the smarter they are the less comments they write and the more insane the conceptual model.

Or at least it seems that way. 

People often draw comparisons between building software and building houses.  There are obvious failings with this, mostly due to buildings being tangible and software bring intangible, but what if it were actually more accurate than initially thought.

Buildings are made by builders, right? But they aren’t really, bricklayers make the foundations and walls, plumbers put in water fixings, electricians put in electrical fittings, carpenters put in wood fixings, tilers put up tiles, I could go on.

But in software land we don’t really have these specialities, all programmers are expected to be able to do all things, or at least experienced ones are. If you can write python, there’s no distinction between someone who can write a messaging backbone and someone who can write a Fourier transform.

This has slight parallels with the notion that a keen DIY enthusiast could build a house, but it would probably not be as well built as one done by the experts.

The other element here is that we’ve been building houses for a long old time and software has only very recently become a mainstream (even DIY) activity.

I wonder if in the future we will have more specific roles for software engineers so that we do the things we are good well, at rather then do the things we can’t do badly :/