|
To ask if one black-or-white factor can make a good developer is borderline silly.
There are so many factors that go into making a good developer, just as there are so many niches that a developer can fill. Are you talking about a "coder" or an "architect" or something else.
There are a number of things a good developer needs to do long before hitting the keys. First, you need to understand the problem you're trying to solve, so that also means you need to be a good analyst.
If someone's doing a solo effort, they must have many hats. If they're part of a team, they need a good amount of skill and expertise in their part as well as having good teamwork skills.
When I interview people, I neither look for nor shy away from formal education (and credentials!), but rather I look for demonstrated success and specific skills.
From my formal education, I learned valuable skills that help me to understand better how computers process through low-level things like Turing Machines and other finite state machines. In the real world, I've learned business processes. The two areas are very different, but have to be merged for successful solutions.
|
|
|
|
|
Seriously, I've noticed that a lot of really good programmers are self taught *and* have music backgrounds and particularly classical music/conservatory training.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
VCF Blog
|
|
|
|
|
Does six years of choir in school count?
I may have a lousy sense of pitch , but I've got that diaghramatic breathing thing down pat.
Software Zen: delete this;
|
|
|
|
|
Sure if you learned music theory and analysis and then used those techniques on pieces that you performed.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
VCF Blog
|
|
|
|
|
Actually, I did. In addition to choir, I took music theory my junior year. Our final project in the class was an original composition that had to be two minutes in length. Fortunately, I had a friend who played piano who could play what I wrote down and then help me revise it to something that didn't sound like mating bulldozers.
Software Zen: delete this;
|
|
|
|
|
Maybe you should restate the "classical" part then. I went to the College-Conservatory of Music at the University of Cincinnati, but Jazz was my specialty. Composition and Theory were not only mandatory classes, but instrumental in understanding and perfecting the art of jazz improvisation. So much so that we were required more classes than the typical symphony or orchestra musician.
So, you should really adjust this to say "formally trained" instead of "classically trained."
Draugnar
|
|
|
|
|
Wow a fellow CCM'er! When were you there? I graduated in '96.
Draugnar wrote: So, you should really adjust this to say "formally trained" instead of "classically trained."
Fair enough.
¡El diablo está en mis pantalones! ¡Mire, mire!
Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)!
SELECT * FROM User WHERE Clue > 0
0 rows returned
Save an Orange - Use the VCF!
VCF Blog
|
|
|
|
|
Long before then. I was there during the summers of '83 and '84. They had a program called the Summer Music Institute for Advanced High School Students, which included alot of the SCPA kids as well as a some of the better ones from throughout the greater Cinci region. I know that it PO'd one of the SCPA kids that he got third Bone in the jazz band while a non-SCPA kid (me) was lead.
I went to college for IT (math and computers being my other skills), but still taught private lessons to make some extra cash. I still play in church, but it's not exactly big band, swing, or the blues but I do get to arrange a lot of pieces for our brass quintet from hymnals and piano sheet music.
|
|
|
|
|
You know, that is scary...!!!! I love Mozart and play, well used to, the Bassoon. My first formal education to the C-Programming Language was, "...Here is the book - The Original Kernighan/Ritchie...", now develop the code.
HOwever, I did have formal training later, about 5 years later....
".... We will add your biological and technological distinctiveness to our own . . . . Resistance is Futile . . . . You will be Assimilated . . . . . ."
|
|
|
|
|
As a self-taught programmer (HTML, then ColdFusion, then VB.NET plus some JavaScript along the way) with a BA in Music Education, I'd have to agree! Actually some of the things I learned as a classically trained singer DO port over to my current life as a programmer...I had to learn bits and pieces of different languages - Italian, German, French, Spanish, Latin - and to be able to think in those different languages (albeit on a very limited basis!) to correctly communicate the song I was singing at the moment. I've often mentioned to non-technical people who've said, "I could NEVER do what you do" that programming is really largely learning another language. Sure there's a big problem-solving component to it, but there's also a lot of creativity required, especially if you do any web design work.
Honestly, I think I probably have got some holes in my knowledge because I am primarily self-taught, but because I can teach myself, I can always fill in the gaps as needed.
|
|
|
|
|
My current position involves working with both types. Although the shop was started by self-taught developers, they've realized the need to move toward developers with more formalized training. There is only so far hacking will get you when needing to build strong, reliable enterprise applications or heavily used websites and million+ record databases.
only two letters away from being an asset
|
|
|
|
|
Formally trained developers who are able to teach themselves new skills
|
|
|
|
|
If that would be one of the options, I'm pretty sure it would get near 100% of the votes and that would ruin the entire poll.
[Imagine Cool Inspiring Stuff Here :P]
|
|
|
|
|
Unfortunately, there's probably only ten of those guys in the world and they are all busy writing books, or working in research labs...
-----
"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
|
|
|
|
|
Yes, the better programmer is who always keeps learning, whether he is a self taught or formaly trained.
-------------
commander
|
|
|
|
|
The value of formal training is that the programmer has a wider variety of tools to use in attacking a problem. The self-taught programmer tends to have a favorite 'wrench' for every problem.
Self-taught programmers have something that the other programmers don't: the ability and motivation to learn on their own. They're the ones to dive in and try things. The best ones are often early adopters.
If a self-taught programmer isn't flexible and willing to adapt, they tend to stagnate at one level of skill. If the formally-trained programmer stops learning when the training is over, the same thing happens. The key is to continue learning, regardless of how you got your start.
Software Zen: delete this;
|
|
|
|
|
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
|
|
|
|
|
I voted "Self taught programmers generally make better developers" but that depends in what area you end up programming. I know some jobs where I'd prefer a systematic, formal programmer to a genius cowboy (and vice versa.)
regards,
Paul Watson
Ireland & South Africa
Fernando A. Gomez F. wrote: At least he achieved immortality for a few years.
|
|
|
|
|
I've worked with both. The systematic programmer works best in a group on large projects, whereas the cowboy is best on his own with smaller work. Cowboys don't seem to get the 'big picture', and will make sweeping changes without regard for the global implications of what they're doing. The formal programmers are good at coloring within the lines, but they're not always innovative in the crunch.
Software Zen: delete this;
|
|
|
|
|
I'd have to disagree with this conclusion.
I think of myself as a cowboy. I work on a team, but often work on projects that are a solo effort. I'm fortunate that I can turn out excellent solutions that are well received by the customer. Some of my projects are quite big both in functionality and reach throughout the organization, and one of my biggest strengths is understanding business processes and the "big picture."
Not to be all about me, either. I know of a few other people that I think fit this category as well. Not many - but a few.
|
|
|
|
|
I was generalizing based on my experience.
I've seen cowboys that could work well in a large effort with a team, and I've seen more formal types that were good self-starters. My feeling is that programmers like this are simply good at adapting to the work environment, which strikes me as the ideal.
Software Zen: delete this;
|
|
|
|
|
Self taught doesn't mean that you don't use formal techniques, it just means that you didn't attend an offical programming coarse
|
|
|
|
|
|
It is asking more about how you got the "formal" techniques. Through formal training or through trial and-error/self-taught. And which of those results in the fundamentally better programmer.
regards,
Paul Watson
Ireland & South Africa
Fernando A. Gomez F. wrote: At least he achieved immortality for a few years.
|
|
|
|
|
I would say the contrary. I am a high school student and I consider myself self-taught. I started programming before I took a programming course, here is quick chronological order of my education: (I still consider myself self-taught).
- Self-taught programming begins 8th grade
- Intro/Intermediate Programming HS Sophomore year - C++ Programming; I knew more than the instructor
- AP Computer Programming HS Junior year - Java Programming; Same instructor as Intro/Intermediate, towards the end of the class I was teaching the rest of the students
- 2008 - Intro to VB dual-enrollment college class in HS senior year - I knew everything taught by the instructor; some information was knew and my programming adapted
- 2008 - Adv. VB dual-enrollment college class in HS senior year - I still knew most information; easily catches on to new concepts
I guess for the most part, I consider myself self-taught. This is not because I use formal techniques, it is just that all of the formal programming classes I have been in I already knew all the information for.
Regards,
Thomas Stockwell
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Visit my homepage Oracle Studios[ ^]
|
|
|
|
|