|
It vary as per guy.
Truth Can'nt be changed
|
|
|
|
|
In my (limited) experience, I've seen a total messy app created (just about worked) by a self taught and a elegant, structured, well defined but crucially over engineered app created by someone whom I regarded as very accademic, this one didn't work as it consumed all the memory in the machine and fell over.
|
|
|
|
|
I have worked with over 100 programmers in the last 26 years and I have to say that the ones who truly excelled at their craft were those who were formally trained.
Having said that, I would not state that you have to be formally trained in a classroom. There are a great number of text books out there (just found one the other day that was written for C# in particular) that will teach you the fundamentals of programming. Things like lists, loops, queues, stacks, data structures, etc. [Data Structures & Algorithms using C#]
You can learn programming picking up a <fill language="" in="" here=""> for dummies book and be up and running in a month. Will that make you a great programmer? Doubtful. It will make you a productive programmer, but it won't push you to the next level.
I look back at all of the work I did in college, which at the time I thought was just a waste of time, but now I see how much of what I learned is being applied in practicle use. If I hadn't had that training, I might never have learned some of the ins and outs of good programming practices and would still be doing things the hard way. Or coming across the ideas on my own with difficulty.
The other thing is practice, just like the road to Carnegie Hall, you need to practice, practice, practice. But, just like playing an instrument, you have to be playing correctly to start.
|
|
|
|
|
If you've been in this business more than a few years and you're still coding, then you're self-taught. People who push themselves to learn will keep their skill, others waiting for classes will fall behind.
|
|
|
|
|
The result of this survey will reflect the qualifications of the respondents, because most people will want to reinforce the belief that they’re aptly qualified.
Formally trained people will say (depending on what degree – IT, CS, EE etc): I spent years getting a degree; I have a greater understanding than others.
Individuals with no formal training will say: I learned via the school of hard knocks… I know how to get the job done.
Those with a combination will see the value in both.
|
|
|
|
|
best is self taught when young, followed by double major in CS & EE, followed by a few years of making mistakes.
|
|
|
|
|
In this market of six-figure salaries for developers, during the interview process I determine the extent to which the applicant is self-taught and compare this to the applicant's prior accomplishments and demonstrable talent. The other business owners with whom I associate are migrating in this direction.
My past experiences and reading have created an internal filter wherein the resumes featuring a plethora of academic experience and the Comp-Sci Master's are tossed aside; I have no interest. These applicants tend to be the worst choices I have made. Their sense of entitlement and lack of innovation annoys me.
Before I am trolled by a herd of Comp-Sci with Master's degrees, history supports me. In business, the most successful businessmen have been they without a college degree at all: Gates. Ellison, Dell, Jobs, Branson...
It comes down to innate talent and motivation.
- Nicholas
|
|
|
|
|
Formal understanding of concepts like O(N^2) vs. O(NlgN) need not come from a classroom, but a programmer who doesn't understand such things will generally produce bad code for anything but the most trivial tasks.
Also, I would suggest that a good programmer must be able to strike a balance between trying to do things the perfectly 'right' way, versus doing things the easiest way that seems to work. To investing many hours perfecting something that really is good enough would likely be a waste of effort, but to continuously tweak designs that are fundamentally unsound but more-or-less work will also often represent a waste of effort as well. The ability to judge what really is good enough is an important one, probably best gained through experience.
|
|
|
|
|
How do you determine how self-taught a programmer is, based on a Resume?
I mean some self-taught programmers (including myself) are pursuing degrees in Computer Science, despite most of their education coming from outside of the classroom.
Basically, any suggestions for showing this more in a resume?
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[ ^]
|
|
|
|
|
You may generally capture the better people, but it will be at the cost of missing the best people.
|
|
|
|
|
From what I have seen, the programmers that are self taught can think out of the box and provide creative solutions for problems. Some of the book taught developers are very good workers but lack the ability to be creative.
Just because they have paper saying they know what they are doing, it does not mean they know how to apply it in a real world environment under the preasure of deadlines.
|
|
|
|
|
Hi All,
My opinion is that formal training helps you stop re-inventing the wheel. What is formal training and education anyway? It is only learning from a pre-compiled collection of experiences from methods that gave desired results. At one point of time these methods were also tried out by somebody and when found to be working, was documented. Thus we get readymade data or information. But what when there is no resource available. You have to struggle to dig out facts and learn the truth. That is nothing but the process of self learning. And no doubt you have to have a "GURU" (Teacher in sanskrit) for everything. Only thing is that the guru always need not be a person. Even nature is a guru. But the combination of self taught knowledge validated by a Master is THE BEST. Anyway who taught the teacher and who taught the teacher's teacher and so on...
Regards
N. Sharjith
|
|
|
|
|
Sharjith wrote: Who taught the Teacher?
I believe Knuth's PhD is in Mathematics, so it appears he is self taught...
|
|
|
|
|
Who makes a better...
Physicist? I made this railgun in my basement...
Astronomer? I swear the everything goes around the earth. Look at my observations!
Civil Engineer? I like my bridges uncollapsed.
Pilot? Like to fly?
Computer Scientist? Name a famous programmer who wasn't.
Martial Artist? I wouldn't try it.
Soldier? But Captain... I have to fight MY way.
Politician? Maybe this is a bad example.
I worked with a self-taught programmer. VB. QB. I've never seen such misuse of the goto statement in my life. The programming was an unimaginable wreck of tangled control with everything you'd ever need put right in the Form_Load event. OOF.. I mean it was a monolithic testament to the ability to creatively solve problems... with the goto statement and brilliant use of the cut-paste-modify paradigm.
"Run for your life from any man who tells you that money is evil. That sentence is the leper's bell of an approaching looter." --Ayn Rand
|
|
|
|
|
I think it depends on the person and which works best for them.
IMO formal training might give more context and expose you to more, especially if the self taught person is choosing topics he or she finds the most interesting, and why wouldn't you?
For that same reason, I think there's more motivation in self taught people.
Of course there are exceptions on both sides, and it never hurts to see the other side.
|
|
|
|
|
It's all down to having the aptitude, out of all the millions of people trying to learn programming few have aptitude to actually make good programmers.
Aptitude[^]
|
|
|
|
|
I think what capability one have largly depends on what experence he has had. Good education, enough training and reading lots of books may make a good armchair theorist. But I think the practical capabity, such as the ability to develop a reliable 'product', can only be acquired after having been involved in ralated projects and enough coding. So I should make efforts to being invloved in the practical projects to accumulate both domain and software experience. In my opinion, a doer is a good programmer, not a self-teacher or a formal learner. To be a skilled lover,
try to experience relationship with girls first .
modified on Wednesday, April 2, 2008 2:44 AM
|
|
|
|
|
Self taught used to be the best when books actually had some real meat to them. Nowadays the books are crap and therefore the formally taught (on the prof's even crappier books) are in an even worse position.
I no longer measure programming skill by what you claim to know, I measure programming skill by what you do. And not just the resume fodder like Utilized UML object, state, and sequence diagrams (Visio and Enterprise Architect) to document the architecture and investigate the design issues for an n-tier client/server application intended to support the merging of domain-specific business rules, UI layout and report customization with a baseline application domain template. (yeah, that's off my resume, in fact).
Doing, IMO, nowadays means publishing--articles, blogs, websites, primarily. The people I want to work with are the people that set themselves apart from the crowd by doing.
Marc
|
|
|
|
|
I agree with the idea that what you do is agood measure..
However I disagree with the statement "Doing, IMO, nowadays means publishing--articles, blogs, websites, primarily.".
To put it simply, the time I spend blogging, writing, articles, etc is time spent not coding. I find it a valuable exercise anyhow, so I do it.. But I don't think that is an indicator of a persons level of "doing-ness".
There's an old quote.. "Those who can do, those who can't teach.".. Writing articles/blogs/what not is akin to teaching (though not the same). I personally find it useful as a way of documenting my knowledge, and as a form of self-stabilization[^] for the software development commuity as a whole. I benefit greatly from other's publications, and so I feel the need to feed back into that system to help it stabilize.
That said, I have very little extra time to do that sort of thing, as most of my time is spent either writing code or spending time with my family.
Anyhow, my point is that there are probably lots of excellent developers out there who don't have blogs, have never published an article or book, and don't really feel the need to spend thier time that way, OR are not skilled in that form expression, despite thier skills with programming.
Now if I could get paid to blog... hmm..
-----
"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
|
|
|
|
|
illium wrote: Now if I could get paid to blog... hmm..
Ah ha! that is the question, you do have the time but want to be paid for it!
I do believe sharing what you know is an excellent skill to develop.
Happy coding...
God bless,
Ernest Laurentin
|
|
|
|
|
as explained in The Hackers's Bible (who's read it?) a programmer advances thru a series of metamorphoses, like an insect: from the 'larval stage' to fully fledged 'guru'.
the larval stage is characterised by obsessive interest rather than clinical careerism, and I believe the self motivating factor of intellectual curiosity is fundamental to being a good developer. every good programmer needs to spend a year or two in which his/her bedside table is stacked with a teetering pile of manuals and code listings.
having said that, it is difficult to be a really good programmer without having a rigorous understanding of theory and technique. all programmers worth their spurs should know things like how to write a recursive descent parser, what lambda calculus and functional programming are, what predicate logic is, what SQL does, how to find the computational complexity of a function, what a discrete cosine transform is, how to do linear algebra using C++ and so on.
its possible to accumulate some of this knowledge ad hoc, through reading and experimenting, or by being thrown in at the deep end on a project, but by far the most efficient and exact way to do it is thru formal instruction.
so i think its more than a case of 'the best of both worlds'. i think a programmer who is not self taught AND formally trained will always be inferior to one who is both.
|
|
|
|
|
This is the good old problem of experience vs. theory
Of course, both are needed. Being self-taught, I have never felt that my lack of formal training has been a problem at all. I have worked with both types of programmers and find that the formally trained programmers are more or less "all the same". They use the same terminology, think pretty much the same way, etc. The self-taught programmers typically think in their own way and sometimes have their own terminology.
When it comes to solving problems or inventing something new, the self-taught guys typically know everything that the formally trained do not and vice versa.
Self-taught and formally trained programmers collaborating is the only thing that seems to make sense. Typically, you should let the self-taught guys do the coding and the innovations. The documentation, planning, and more organizational matters should be left to the formally trained.
BTW, remember to pay the coder more money than the manager.
Ask not whether it is useful. Ask what it is useful for.
|
|
|
|
|
Learning on the job is the worst by far because you will only be as good as the best developer you work with and if he/she is crappy than you will be. This is why formal training is needed and it helps for a newbie to work at either a leading SW Dev. shop or a big consultant company, than they will learn how to do things the correct way starting off.
If you start with bad habits, you will have a hard time getting away from them later.
My two cents
|
|
|
|
|
By the same token, formal training is only as good as the trainer... It is best to keep learning from any source!
Once you stop learning, you're a manager!
Hogan
|
|
|
|
|
|