5 ms·
Programming is a lot less science and a lot more art. You're trying to describe a problem in a way that can be easily interpreted by both an irrational human,
by ohyes 7y ago
Programming is a lot less science and a lot more art.
You're trying to describe a problem in a way that can be easily interpreted by both an irrational human, and a computer, a creature of pure logic.
If you write for just the computer, you've got an un-maintainable mess. If you write for just the human, it doesn't work properly.
We really play up the importance of "computer science" skills when hiring software engineers because that's what's taught in schools, and it is the basic requirement to write a piece of software that at least works as intended.
But in reality, you need both. You need good human communication skills (personal and written) as well as an understanding of the computer.
And things are just getting more complicated. In the late 80s to mid 90s, there was a hell of a lot you could do with a single developer. Applications were simpler, you could write that single threaded application to run on a desktop, and it would be acceptable. One person hacking away in a dark room on a CRT could get the job done. The communication wasn't as important.
But now (and by 'now' I mean the last 15-20 years), most applications involve multiple servers communicating, almost anything involves at least a small team of developers, (and at bigger companies large teams of devs have been the case for a long time).
So the human communication is also becoming more important. You can't get away with hacking away at something and throwing it over the wall as much anymore. This is fine.
But the two skill-sets are diametrically opposed and people who can't do either type of communication eventually wash out. People who can do both of these things are incredibly rare, and our education system hasn't even explored what it takes to produce this type of person. (How many engineers have you worked with who couldn't write or spell to save their lives? Single letter variable names?)
Anecdotally, hiring someone competent is actually very difficult. You do a screen (to weed out the candidates who know absolutely nothing), and they come in and they still can't do basic stuff like recursion and loops. Or they can't explain what they did.