|
If a person needs formal training to get motivation or learn where to look then they shouldn't be in the field in the first place and should choose something else that interests them enough to learn all about it on their own.
Cyrilix wrote: Why would that be an issue?
Time *and* money. Going the university route you spend years and a lot of money to get to the point where you're barely employable in the real world and have outdated skills and opinions molded into you by professors that generally are riding some hobby horse and don't really give a crap about real world employment and conditions.
Self learning and apprenticing actually pays you, you're ideally suited for a well paying job a few years into it and you're not left with a crushing debt and skills and knowledge that are years out of date.
This is an argument that will rage on forever with no one on either side giving in so it's a bit pointless to debate it but I think it's important for potential university students to have a big think about it. Ideally *not* go directly to university or college from high school but rather take a couple of years to get seasoned in the real world before they make that decision. If they don't they end up being in their 20's or even 30's but really being children still in all the most important areas of life.
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying."
- David Ogilvy
|
|
|
|
|
I find this thread and question very interesting, since I'm a person who has had a little formal training, and then a lot of self-teaching. I also have degrees in other subjects entirely and have actually taught college in the past so I certainly value formal education...
Anyway, the situation I find myself in is this: I know some of the more difficult areas of programming quite well (like multi-threading and real-time systems), but there are other areas where I have huge gaps in my knowledge (DBMSs and html for example). I also lack some very very basic pieces of knowledge like 'how to get VS to do x?' and it's not always possible to find current, up-to-date, answers to my questions. So the end result is that I plan to go back and finish up the CS degree that I started many years ago in order to help fill in the gaps.
Btw, self-taught != cowboy...which some people might tend to think.
BW
|
|
|
|
|
It is neither formal training, nor self teaching that is the real issue with a 'good' programmer. It is conformity to the body of experience that has already been acquired by the community.
Formally trained people tend to conform to what has been learned by the 'thought collective'. Those self-taught, which can be taken to mean randomly taught as someone learning on their own from a standard course can be deemed formally trained, tend not to conform.
This underlies the previous comments about the differences in approach to problem solving.
So I agree with you; as someone with both types of training is more likely to be free-er to think separately from the corpus of prior knowledge and methods, whilst also understanding the relevance and application of the existing methods.
|
|
|
|
|
Correct! I use a number of sub contractors. But in general I use two.
The first is formally trained with a Degree in Computer Science and some further quals (Masters/PHD .. can't remember which) where his central area of study was compiler design. He's a great resource for elegant algorithm design for tricky problems.
The second is completely self taught and I often end up cleaning up after him, BUT, he has a really unique way of looking at things and often comes up with really great alternatives to a solution that I would never have thought of.
I suppose it comes down to that programming is half science, half and art form. Neither is dominant over the other.
The only thing unpredictable about me is just how predictable I'm going to be.
|
|
|
|