Well, a post that is no longer available really got things going in blog-o-sphere. Shoot! Even Joel Spolsky got involved. I saw another post, but I’m sorry to say, I can’t find it right now.
The original article put forth the idea that we are teaching the right stuff in our undergraduate Computer science degree programs.
Joel’s article suggested that what we really need is a bachelor of fine arts program for programmers. That programming, and computer science are really two entirely different disciplines.
I think Joel’s onto something and his solution is probably the closest to what our current educational system can handle. But, I have another solution to the problem that goes further.
Why get a degree at all. Most of you reading this post know as well as I do that a good 80% of what most programmers learn, they didn’t learn from college. Let’s face reality here. First, any degree program is, at best, 20 years behind. It’s just a fact. Ours is not the only industry facing this reality. Second, the really good programmers are already doing what these schools are trying to teach.
Joel suggest that we have people from the industry come in and teach this BA course work he’s suggesting. There are several major problem with this. First, most (not all) of the really good programmers can’t teach. Some could with some training, but the school isn’t going to train them. And those who can teach, probably don’t know the recent material. There ARE exceptions. My point here is that the exceptions won’t fill the need.
But, what would happen if we went back to a really old way of doing things? It worked. We are almost doing some form of this already, mostly after graduation. What if we just skipped the programming degree completely.
I’ve been in this field long enough (20+ years) to know that most of the really good programmers got into our field through some back door. I was a camp and recreation major that converted to programming via DePaul’s career change program. A hoop I jumped through simply so I could get the first job. At least 80% of what I was taught I was already doing as I had experimented with Basic, Pascal, and C.
I know another guy who dropped out of school his sophomore year because he already had the job he was going to school to get.
And don’t even get me started on certifications. Let’s say we stop testing knowledge and start testing aptitude. The aptitude test I took nearly knocked me out of the DuPaul program. At the end of the program, the main prof told me I was the best natural talent he’d seen come through the program. I wonder if he knows he almost never saw me?
Let’s face it, what we as programmers need to know to do our jobs effectively can’t be taught. And most of what can be taught could be taught on the job.
So, here’s my recommendation. Why don’t we go back to using the apprentice system? This allows a good senior programmer to get a feel for what kind of programmer the new guy is going to be. It would help the new programmer find out really quickly if this is what he really wants to do with his life. He gives the formal training the new programmer needs.
Unless you’re just starting out, you know that most of what you learn, you learn from experience. Why not just admit that and stop trying to fit programming into a degreed program that largely doesn’t work for our industry?