|
I will agree here. Formal training is needed, but can only take you so far. Self taught to me would be hands on, combined with formal training would be the way to go. Both are needed.
|
|
|
|
|
Not to be down on this, but who cares who's better. I'm always going to hire the one (out of the current pool) that has the best skills and experience.
Hogan
|
|
|
|
|
Or, failing that, the guys that have to work with whatever HR put in the next cubicle.
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP blog: TDD - the Aha! | Linkify!| FoldWithUs! | sighist
|
|
|
|
|
I've been going for close to 30 years, most of it self taught. The times when I have had formal traning it has been very focused to the trainers point of view or desired out come. Training etc I think is very good to get you started or give you a fresh look but experience and raw talent can only leed you forward to expanded those ideas.
I'm am now I need of a new kick start so I sould be in time for a training course. Like a car a programmer needs a service every 10-20000 lines of code.
Why is it when you are busy everyone whats it yesterday, But when your not no-one has any work for you?
|
|
|
|
|
Hi!
What really makes a good programmer good, is not where he/she got their education/experience. Rather, it is their desire to BE good!
A self-taught programmer has already gotten to know the environment they are working in, however, if that programmer needs to work in another area/expertise, how much will he know about it? How long will it take to learn and adjust to the new environment?
A formally taught programmer, while (perhaps) having a lot of knowledge of the available resources (e.g. a .NET programmer will know more about the .NET Framework), will struggle to use the objects available, if the only interaction they have had is exercises done during training. Furthermore, formal training may not even cover many aspects of the environment, only those that are necessary to get the current job done.
However, a programmer who has a passion for what he/she does, who knows his/her own limitations and desires to overcome them, will use any options made available to them: if there is formal training* available for the subject at hand, they take that class; if not, they figure it out on their own.
Additionally, a good programmer doesn't wait until a problem comes up to start figuring it out. They are always on the lookout for new developments in all areas, and when such arise, read up on it even though it is not currently relevant to them.
To summarize, a good programmer is one that utilizes all available opportunities that come up, whether formal or individual, to further advance their knowledge. Just one or the other is never going to be enough.
Of course, all this applies when comparing two programmers with equal experience; as in all things, the more experience one has the better a programmer is.
Schmuli.
* My understanding of formal training includes lectures at a university or programming school.
|
|
|
|
|
A formal education is the inspiration and the self learning is the perspiration that is needed to be a good programmer.
But nothing takes the place of common sense!
Mike
|
|
|
|
|
First I agree about the common sense!!
Second I also feel both self training and formal training is needed to become a good programmer. Many times it helps to try it yourself for a while and write a few projects. When you finally go to training sessions, the information is much more meaningful because you can see what mistakes you've made and understand better what the correct coding will be for future projects.
Lost in the vast sea of .NET
|
|
|
|
|
A good developer is constantly looking to improve their skills. That means digging into new technologies to stay with the trends, but it also means seeking to better understand established theories and practices.
Also there's no substitute for experience. Everyone's gotta start somewhere, but there's often things you'll never know until you face the problem.
I disagree that self-taught programmers (aka "Cowboys") are doomed to work on smaller projects where you've gotta have education if you want to work with large-scale applications.
My first real project came after just a year of experience and no education other than Barnes and Noble. My co-conspirator had only one more year than I did and was also self taught. We had some problems early on which wouldn't have happened if we'd had someone with more experience, but I've worked with plenty of college grads who we had to straighten out and show them the way.
Also, when we did run into problems we went to some more experienced developers and they had no idea what our problems were caused by. We ended up tracking it down and fixing it on our own on more than one occasion.
Before we brought on permenant help we had broken 1-million page views a day and we had tables with several million records. So you can't just drop either group in a category and call it good.
That's why I say, it's all about a desire to learn and improve. No matter where you start you can become a great developer if you put in the time and effort to learn.
|
|
|
|
|
There's a previous survey[^] that asked the question from that perspective. The results are... mixed:
University and post graduate education 3299 3.36 Offsite Training camps / seminars 2411 2.45 Formal on the job training 2789 2.84 Informal on-the-job training (keeping your eyes peeled and asking lots of questions) 3796 3.86 Self education (books, websites, newsgroups etc) 4482 4.56
Citizen 20.1.01 'The question is,' said Humpty Dumpty, 'which is to be master - that's all.'
|
|
|
|
|
In my first real job, the CS Major who was running security claimed that Chemists, Physicists, and Chess Players made the best programmers. It could have been said to make me feel good, but I've seen some by-the-book work of late:
My employer had a contractor who further contracted out some development to India. It came back perfectly by the book. Alas, that was its downfall. It was also totally without insight. It was relegated to a bad memory. Another project, with some of their reps here (yes - from India), is up and running: but not with an unbelievable hell-to-pay period for the users. If was not a matter of isolation. They did their interviews and wrote their code.
I don't mean to pick on Indian programmers per se with this They were just the live example that is most recent - and these were from a code-mill.
One could postulate that the self-taught programmers were very much involved with the concept of making-it-work from the start, and any elegance (gained through experience) was added with each new application. This latter concept applies to programmers from all walks of how they got started.
Is programming so unique in this regard? How about a car mechanic, for example. For that matter, as a hybrid of the concept: in grad school, a rather well know professor (who assumed we all wanted to be professors) started teaching his course with the following observation: 'If you continue your graduate research on your own, after you graduate, you'll be doomed to oblivion.'
Another example that only those willing to reach out beyond their current limits can truly succeed.
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"How do you find out if you're unwanted if everyone you try to ask tells you to go away?" - Balboos HaGadol
|
|
|
|
|
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
|
|
|
|
|