jump to navigation

Friday Philosophy – Are Good IT People Just Lucky Starters? April 22, 2022

Posted by mwidlake in database design, Friday Philosophy.
Tags: ,
4 comments

There is a tradition in IT that older members of the community complain that “the youngsters of today” don’t really understand how to design systems, develop code, and test applications properly. It was like this in the late 80’s when I started. It was a common theme of discussion at the end of the 90’s. The 2000’s seemed to me to be endless carping about development frameworks that simplified things to the lowest common (poorly performing) denominators. And it seems to be a big part of what us oldies do on the likes of twitter or at conferences now – or at least did when we had proper conferences pre-plague.

One aspect of IT certainly has changed over the decades and that has been a shift in the layer(s) where most professional IT people need to concentrate to get the best out of a system. Back in the late 80’s the oldsters were saying you had to understand registers, memory pointers, the physical constraints of the hardware to get decent performance, and use a low-level programming language like C or even assembler. As time has gone on the move has been up the technology stack, leaving the lower levels like memory management and how interpreters work as either solved or looked after by a tiny set of people.

By the end of the 90’s it was all Middleware and application servers took most systems and thus development off the database servers or mainframes. software architecture and frameworks were supposed to remove the need to worry about *how* the data was got, and more modern languages meant you did not have to worry about memory maintenance, freeing resources etc.

One thing that has not changed (IMHO) but is now often overlooked is the physical placement of data, data structures, and how the storage works. I can often vastly improve the performance of applications or specific pieces of SQL by doing what we used to do in the 1990’s – storing data in a manner that makes accessing it require less IO, putting related data together. Some of us old database types moan endlessly about places not doing proper database design anymore.

But sometimes I wonder if the actual areas of focus moaned about by the old guard are not that significant. The thing they (and now I and many of my friends) also complain about is actually more significant – and that is our attitude towards the process of designing and building systems.

I was not trained in IT at college, I studied biology. But I was trained when I came into the industry, in SSADM, database design, structured testing methodologies, even logical problem solving. And I was lucky to work with people, mostly those bitter old people, who spent as much time teaching me why you do things in a certain way and not just the syntax of a language or which framework to use or which source control repository was flavour of the year.

Looking back over my whole career I’ve encountered a huge number of very average or even poor developers/DBAs/analysts/system designers. And yet some people from every generation are much better than their compatriots, even though they have similar backgrounds and experience. And often these very good people are not apparently any more generally intelligent than the not good ones. Thinking of those good people, I believe a common trait across them is that they listened to the old people complaining and, though they ignored a lot of it, they learnt to ask why things work the way they do and to try and understand the overall technical architecture of computer systems – and not just their little bit. They learnt to consider the whole system, even if some of it was only understood at a simplistic level.

I’m not sure that this curiosity about how things work and the need to look at the wider picture is taught at college (and these days most people coming into IT have come from a college course that either focuses on computing or is a main component of it). If it was taught, wouldn’t it be more common?

I think we learn how to solve problems and design systems from those around us who have done it for real, many times. And that’s those moaning old buggers. But it’s not understanding a layer of technology that is important but actually the total opposite – understanding the wider picture.

I think most people who are good at IT, no matter what their age, were blessed by early exposure to talented (but miserable, complaining) people who simply did things in a sensible, holistic way and asked “why?” a lot. We were lucky.

If you think this whole article is just a plea to listen to me when I complain about the youth of today, you may have a point. But, if you do listen, I might (probably by accident) teach you something that helps your career for years to come. It’s not so much how smart you are but your attitude which makes what you work on a success.