Click here to Skip to main content
15,918,668 members

Survey Results

Self taught or by the book: Who generally is a better programmer?   [Edit]

Survey period: 31 Mar 2008 to 7 Apr 2008

A self-taught programmer may say they have more insight by solving problems the hard way, while a formally trained dev may counter that there's the hard way and there's the correct way. What's your call?

OptionVotes% 
Self taught programmers generally make better developers38416.52
Formally taught programmers generally make better developers1596.84
A self taught programmer with an equal amount of formal training makes the best programmer1,14749.33
It depends / I don't know / It's not black and white63527.31



 
GeneralRe: Self taught classically trained musicians! Pin
LingonberryTart1-Apr-08 4:05
LingonberryTart1-Apr-08 4:05 
GeneralWorking with both types now Pin
Not Active31-Mar-08 2:46
mentorNot Active31-Mar-08 2:46 
GeneralNeeds another option Pin
Klempie31-Mar-08 1:29
Klempie31-Mar-08 1:29 
GeneralRe: Needs another option Pin
Christiaan Rakowski31-Mar-08 2:09
professionalChristiaan Rakowski31-Mar-08 2:09 
GeneralRe: Needs another option Pin
illium31-Mar-08 8:46
illium31-Mar-08 8:46 
GeneralRe: Needs another option Pin
Ashish Sheth1-Apr-08 23:10
Ashish Sheth1-Apr-08 23:10 
GeneralValue in each Pin
Gary Wheeler31-Mar-08 0:47
Gary Wheeler31-Mar-08 0:47 
GeneralRe: Value in each Pin
illium31-Mar-08 9:25
illium31-Mar-08 9:25 
I agree with the sentiment that continual learning is the key to success in the world of programming.

I am a self-taught programmer, that has had a lot of exposure to "formal" concepts via interaction with formally trained people, and a lot of reading.

I have to say, that without that exposure, I would not have been able to advance beyond a certain level of skill, but I disagree with the idea that where or how you learn these ideas is relevant to your ability to use them.

The biggest difference that I see between self-taught and school-trained people (in any field) is that self-taught people tend to be bigger risk-takers, take action earlier, and thus yield results earlier. They also tend to be the innovators in the technology field.

I disagree with the "favourite wrench" example. In fact, I think the opposite. A school-trained programmer is likely to view their education as a static collection of different "right ways" of doing things, and then look at the problem, and choose what they think is the "right tool for the job". Often, they tend to be biased toward a methodology that they find more interesting than some other methodology, and apply it where it doesn't belong. In more abstract terms, they are living in the solution domain, not the problem domain. They are more likely to change the nature of a problem to suit a particular solution than to change the solution to fit the problem.

The self-taught programmer, coming from an attitude of "find a way to make it work", lives more in the problem domain, rather than the solution domain. They look at the problem, and follow this process until success:

1) Use a solution they have used before that worked for a similar problem
2) Do some research by asking others, reading websites, books, etc, until they find a solution for this type of problem
3) Invent a totally new solution that suits the unique problem.

I find that school-taught programmers *rarely* make it to step three. They have greater success at step one, because they have more solutions under their belt to work from.

Impatient self-taught programmers will often never make it past step one, since they are always able to find some way to twist their limited abilities to "make it work" (though not in a "good" way). They tend to have a harder time during step two than school taught programmers, because they have to get over their own egos, and admit they don't know something. A lot of self-taught programmers are very proud of being self-taught, and dislike admitting that there is something they don't know already.

This has an interesting effect, in that a self-taught programmer will often skip step two completely, or just do a minimal job of it, and assume "there is no existing solution to this problem", and move on to mode three.. They will work hard to invent something, and then afterward talk about it as if they did something really amazing that other people can benefit from. To thier surprise, they find out that if they had spent more time during step two, that the solution already existed, and in fact is more formalized and mature than their "invented" version of it. It's only then that the self-taught programmer realizes that they shoudl have done better research, and then they will go and learn the formal version of the idea, while munching unhappily on the foot in thier mouth.

In rare cases though, the self-taught programmer will be very good at step two, and still find themselves in situations where they need to progress to step three... and that's how a lot of advances in software technology happen.

Without that do-it-yourself spirit, and without the ability to focus on the problem-domain, it's extremely hard to advance past the second step.

Anyhow, these are just general observations. I personally fall into the self-taught category, and I find I spend most of my time in "step two". In fact, these days I start there. With technology changing so quickly, the solution I used last year, may no longer make sense to use... So the first thing I do, (even for things I think I already have a solid solution for) is go out and see how other people are solving the problem with the latest technology. If there is no new method, I use my known method. If there is a new method, I implement it both ways, test the results, and try to figure out which is a better way to go.

I almost never have gone to the third step, and the few times I have, I end up with my foot in my mouth... Someday I might actually need to invent something new, but I doubt it.

Thanks,
Troy

-----
"Be liberal in what you accept, and conservative in what you send."
- Jon Postel, First Law of Internet Communications

"It's 5:50 a.m., Do you know where your stack pointer is?"

"If at first you don't succeed, you must be a programmer."

http://vanguard-against-confusion.blogspot.com

GeneralCowboys Pin
Paul Watson31-Mar-08 0:39
sitebuilderPaul Watson31-Mar-08 0:39 
GeneralRe: Cowboys Pin
Gary Wheeler31-Mar-08 0:52
Gary Wheeler31-Mar-08 0:52 
GeneralRe: Cowboys Pin
Lebear-0131-Mar-08 4:00
Lebear-0131-Mar-08 4:00 
GeneralRe: Cowboys Pin
Gary Wheeler31-Mar-08 4:13
Gary Wheeler31-Mar-08 4:13 
GeneralThis survery is mixed up Pin
ed welch30-Mar-08 23:49
ed welch30-Mar-08 23:49 
GeneralRe: This survery is mixed up Pin
Jan W.31-Mar-08 0:16
Jan W.31-Mar-08 0:16 
GeneralRe: This survery is mixed up Pin
Paul Watson31-Mar-08 0:33
sitebuilderPaul Watson31-Mar-08 0:33 
GeneralRe: This survery is mixed up Pin
Thomas Stockwell1-Apr-08 16:03
professionalThomas Stockwell1-Apr-08 16:03 
GeneralA bit of both Pin
Colin Angus Mackay30-Mar-08 23:07
Colin Angus Mackay30-Mar-08 23:07 
GeneralRe: A bit of both Pin
Barnum00431-Mar-08 4:20
Barnum00431-Mar-08 4:20 
GeneralRe: A bit of both [modified] Pin
Old Ed31-Mar-08 5:16
Old Ed31-Mar-08 5:16 
GeneralExperience Pin
MRLacey30-Mar-08 22:18
MRLacey30-Mar-08 22:18 
QuestionRe: Experience Pin
ghle31-Mar-08 4:02
ghle31-Mar-08 4:02 
GeneralRe: Experience Pin
John M. Drescher31-Mar-08 4:24
John M. Drescher31-Mar-08 4:24 
GeneralRe: Experience Pin
John M. Drescher31-Mar-08 4:19
John M. Drescher31-Mar-08 4:19 
Generalcommon sense ! Pin
ThatsAlok30-Mar-08 21:16
ThatsAlok30-Mar-08 21:16 
GeneralRe: common sense ! Pin
MRLacey30-Mar-08 22:16
MRLacey30-Mar-08 22:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.