I’ve been interviewing a lot of candidates recently for AMS Pilot. And I’m getting repeatedly amazed by how much programmer’s beliefs are rooted not in reality. This is not good.
Programming feels like medicine 500 years ago.
One example was yesterday, I asked a Typescript question about classes. Why use classes? And I heard reasons like modularity, ability to keep things separate.
Well, what about files? Why don’t keep separate functions in a file? And the candidate couldn’t answer this simple question.
And I know of course, there are clear benefits to classes in some cases, and in others just putting a bunch of functions in a .ts file will suffice.
This was a middle-level programmer, but it amazes me that the whole generation of programmers has been taught ideas that they never actually understood deeply why those exist and what specific problems they solve.
Modularity existed way before classes were invented. And in fact, a lot of times just grouping a bunch of functions in a file is the simplest yet effective way of achieving modularity. Unless you need to keep some state or inherit something, you don’t actually need classes.
This approach, when people code the way they been taught, without critically analysing the why, shows up in the actual programs, where there is 5x more code than it should be. And you jump around trying to figure out what the code is doing. Fighting the layers of abstractions when they are not necessary. Paying the cost without getting the benefit.
What to do about it?
The simplest thing that I found was, building a more-or-less sophisticated project on your own and with restricted amount of resources will force you to forget about things you been told and focusing on getting stuff done.
Becoming a business problem solver, instead of programming tools-user. Of course, you will use programming tools and concepts, but the focus is on the outcome, not the tools themselves.
While I agree that most programmers are like this I do not agree that it's a generational problem. It's people problem. Most people want to learn just enough to do their job somehow OK. People have been like this since the beginning of the world. You're just seeing the manifestation of this mindset in the programmers population. Most people think programmers are smarter. Well maybe programmers have higher IQ but this does not make them "people who want to understand the world" nor does it make them -curious- people automatically. It doesn't make them hard working or goal oriented either! Programmers are just people who found out they can do programming for a living (and maybe applied some effort to start doing it). Then we can proceed to find out the other qualities they have.
So basically you're looking for a subset of experienced people who are able and willing to think for themselves in the direction of their work. That's rare, actually. Quite rare.