I am advising my kids to have good technical skills but also great people skills.
However, programming any major system today does require extensive knowledge and I dare say a CS degree as well. It's becoming more and more like an engineering discipline, and as such I think we're going to see a shift towards programming being something you need a college degree to perform.
I know and have worked with programmers with and without a CS degree (I'm one of the ones without).
As far as I can tell it's no indicator of programmer skill at all.
With that being said, how can colleges REALLY train? I got trained at my local community college a few years back (2008-2010) in VB and Cobol. How fast can most places REALLY respond to a moving target like this?
Also, a degree is no indication of programming skill... but neither is having a job. You can churn out code, hopping from one place to another, and still be a shitty programmer.
That's one of the biggest issues... How can you REALLY tell what someone is going to produce? There are no consistent certification processes and no consistent measure of what makes a good programmer.
There is a lot of knowledge to be gained by experience, but sometimes it's useful to have knowledge gained from books, and in particular from books you had no interest reading in the first place (which is the real value of a degree: forcing you to go through a process that includes stuff you like and stuff you dislike).
I occasionally come across situations where those useless subjects suddenly contribute something useful for the problem at hand. I would never have studied them by myself unless forced by the goal of finishing college. At the very least, I would have never studied them to any sufficient depth to make them useful.
Sorry, is mee too dumb-dumb to read bookie wookie?
Does that mean that you cannot program of design programs? No, but there are people out there with more education better suited to design, say, a large scale medical system where certain guarantees must be given.
But we need the tools to get there. Easy languages, technologies that are immune to basic security risks, and that provide safe ways to do multi-threading easily. Right now we are in the unsustainable position where the tools require skills that too many developers lack. And the result is regular data leaks, corporate systems full of bugs, etc.
A profession can't rely on all of its members to be very smart to deliver quality. But it will be an intellectual profession nevertheless.
When I started working, it took a team of testers, a team of dba, and a team of sysops in addition of the developers to build anything. Nowadays, no only the development team is smaller, but the sysops, dba and testing are the responsibility of those developers too through automated tools. On the client side, there used to be BA and Testers, but nowadays, BA and Testers are often the same persons.
The tshirt from several years ago "I will replace you by a tiny script" has proven quite true. Old job that required qualified people before have been replaced by scripts, not "blue collar" worker. A huge amount a developer entering the market could lower the salaries, but any simplification to the developer role is going to be handled by automated tools, not human.