|
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
|
|
|
|
|
|
Some of the best programmers I've met did not work at large shops.
I don't think learning on the job is the worst, but better than formal training. Formal Training teaches a few basic concepts. Though those basic concepts are important.
Most programming is a balance of development time, and application performance. In most places of business you have to consider programming cost and time in relation to customer demand. No formal training can teach that balance. You have to know when to break the rules to be successful.
If I didn't have the it's not black and white option and had to only pick one or the other, I'd have to pick self taught, assuming the self taught person would be reading books, articles and samples where more experienced programmers include the basics taught by formal training
DH of KC
|
|
|
|
|
I have worked in small and large shops and the best places by far are the small shops because they force you to learn alot of things and think out-of-the-box. But the only disadvantage of working on a small shop is that you tend to always do things the wrong way for the sake of time. And most of the time you do not have time to go back and fix anything you previously did once you learn the correct way. This is why I think formal training is needed so you can learn how to do things the right way from the beginning.
|
|
|
|
|
i'm in agreement with your comment.
void izmoto(char* szKwazi);
|
|
|
|
|
What's the right way and wrong way? What determines this? There isn't a text book example that holds true for all cases.
I think formal training, teaches guidlines we strive to adhere to given the constraints we're given for any individual project.
Experience (aka self teaching) gives you the ability to make the determination for what the definition is for that project as to the right way to program it. Formal training cannot do that, it teaches a best case senario / solution.
I think the right way to program is determined by the time you are given, the flexibility of that time, the required functionality, and the existing environment and tools you have available, and completing the project within those limits.
I'd also like to ask, how many of us can say when we look back at programs we've written and not seen a better way to have done it? I don't know of anyone who chooses a lesser way to program something unless there are conditions that merit the decision at the time.
DH of KC
|
|
|
|
|
What I meant by right and wrong way is the inefficent way and the efficent way. Without formal training you will tend to do thing inefficently. Like using ADO.NET controls instead of writing the code manually to do the same thing. Using old ways of doing things just because someone on Google said it the way to do it. Not use OOP methods and so on.
|
|
|
|
|
I think that if a developer is not self taught it means he is not too interested in what he is doing, Somebody will have to push him in order for him to improve his skills. Formal training is verry good but only when self taught exists.
Turning back to your question you are right there is no right or wrong way BUT there are alternatives that can and should be taken into consideration under all situations (trade quality for dev speed etc) and in general the programmers that only know what they've learned trough a formal training will always try to apply the same resolutions.
So even if you choose 'a lesser way to program something' you should have in your mind another possibility of doing it.
|
|
|
|
|
I disagree. Who says that you have to do something the same way as the programmers around you unless they force you into their set of made up standards? I have been a contractor for most of the 13 years I have been a programmer and I have never been at any location where a standard of programming existed based upon one idiots idea. Most standards by far were the result of learned information, a consensus of all of the programmers there... but mostly, they were the normal standards... with that said, though, some idiotict things have existed... those were the places where guess I didn't last long, I have very little patience for idoicy in programming.
Your background and how you learned matters... like starting from the ground up and counting in martian, as peter Norton would say is a better start than learning how to say "Hello World!" with VB.
Some formal training centered on systems rather than programming itself is best, I believe. learning about a network and how and why it functions... knowing for what WAN stands, how a database transfers information through the network makes it natural to consider throughput, security and database stress off of the top of the development cycle of the project.
Learning multiple languages also help as well as being humble enough to learn from anyone helps as well. Also, a tip for the unwary: wait for a new latest and greatest technology to be proven before jumping on the bandwagon... also, never buy version A, always wait to at least version C, all of you rush to stores on release day idiots...
version A is the one with the most bugs).
So, my belief is that most self taught programmers have taught themselves more than just programming hence their overall systems knowledge is greater than SOME formally trained people who are taught based upon a narrow curriculum of some language and not the system. If you have been trained in VB alone, you have been trained in how to use macros to program and know nothing about the underlying code, object oriented programming and whether or not you use GoTos, your code is going to become someone else's nightmare. Now there are some University trained budding young geniuses who's first program was not a hello World VB program; but an operating system and who has a laptop connected to some dinosaur PC in their dorms is a different story. However, living in the real world has little disadvantages and just like a star LB is still a rookie in the NFL so are you... but some of you will be stars at the next level very quickly.
Building your own stuff like servers and routers from router software and a hub is a challenge that also puckers you up a bit, but teaches you a lot. You'll find that when you go to work to build software you are prepared with a whole lot more low level information about the 1's and 0's than most of your counter parts...
I am a mix but am more self taught. Some formal training, but mostly self taught from the old school of programming... and that's my story and I'm sticking to it... in conclusion ... uh, hello?
**cricket**
**cricket**
**cricket**
Well, so what... it's my opinion!
Clarence Tunstall
modified on Thursday, April 3, 2008 3:41 PM
|
|
|
|
|
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.
|
|
|
|
|