Leadership

What is your preferred approach to learning programming skills?

When learning programming skills, Justin James prefers reading as his medium of choice. Take this poll to let us know your favorite approach for picking up new skills.

Over the last few years, the Internet and cheap bandwidth have enabled many types of learning that previously were not practical on a large scale basis. I've tried a number of methods for learning programming skills -- reading, video courses, in-person training, and podcasts -- and I find that reading works best because it allows me to digest information at my own pace. What education/training medium do you prefer?

J.Ja

About

Justin James is the Lead Architect for Conigent.

39 comments
sabinosurfer
sabinosurfer

I chose other because for me to truly learn a programming language quickly, I would: 1. Start with an challenging fast paced course with a well qualified instructor. 2. Concurrently develop applications on my own with as good reference material as I could find. 3. Then to become truly proficient, I (or any other programmer) should develop and/or support production applications in that language for at least six months to a year.

joshua.buhr
joshua.buhr

Nothing is better training than doing it yourself, and scripted training by any means is a poor substitute. Of course, working with developers skilled in the technology is a huge plus. The reasons should be obvious. First, developers who aren't antisocial (a good many, despite the stereotypes ;-) are usually willing to help -- after all, very few of us can say that we got to where we are without a good bit of assistance. Second, you avoid fumbling around and wandering confusedly in several directions, making yourself look stupid in front of your boss. This is the ideal situation. Hopefully it's an option. Save the training dollars for fun escapes or for new technologies or products when everyone is in the dark.

apotheon
apotheon

In-person instruction, as long as there's a good curriculum rather than an assembly line approach to education or some other such nonsense, gives you all the benefits of learning by reading (since there's going to be some reading materials) plus someone to whom you can take your questions when the text doesn't adequately cover things for your preferred learning style. Recorded video is basically just a "class" without the ability to speak to the instructor and, all too often, no quality texts, so you get the feeling of a class without the benefits. Recorded audio is the same as the video, but without visual aids. I don't get much value out of either approach. The above is just one man's opinion. Yours may differ.

ZevGriner
ZevGriner

I prefer to read, assuming the book is well-written, and doesn't fluff up its examples. I can do it at my own pace. I like classes, too, to jumpstart me. It helps to ask questions of a practitioner and get advice like paradigms and idioms.

wavingrass
wavingrass

I bet those of you who clicked "written material" have never seen a video tutorial.

bobpatch
bobpatch

It wasn't one of the options. I like a combination of Video and written materials. I watch the video first then read and analyse the information.

Sterling chip Camden
Sterling chip Camden

Give me a good, concise Getting Started tutorial and a full reference manual (online is great). I'll do the tutorial, then start programming using the reference.

jck
jck

where I have more than a day or two, so that there is time to thoroughly learn both syntax logic as well as concepts and all...plus time to have Q&As, which is the biggest issue with classroom training I've seen so far. Of course, I usually end up with a book. Heck, I have four with me in my office right now. :^0 I don't prefer books, but it's what's practical.

Osiyo53
Osiyo53

I voted Other because I prefer a mix of approaches. Reading is my first approach. I start with doing some quick reading, skipping around. Just to get a preview of what the language is all about, the philosophy of its design and purpose, etc. I don't read everything, nor in deep detail at this point. Then I start DOING. Start up the IDE if there is one, or my favorite text editor otherwise, and start plugging away creating some simple test apps. Might start doing simple sample apps presented by whoever wrote whatever it is that I'm reading, or might create my own. Plug away at it, reading more details as necessary to get the test apps up and running. And then I start to broaden and deepen the scope and abilities of my test apps, adding features and functions. Mostly I'll do my own apps, rather than examples provided in the reading material. Because I find it more informative, and easier to keep my attention focused and on task if I'm doing the type of programming that I'm actually interested in doing. i.e. I can remember learning one programming language where almost all the examples in the book I had were focused on creating games. I'm not a gamer, have virtually no interest in computer games, they tend to bore the cr*p out of me. Many of the skills, techniques, and methods employed in the examples were of no use, or only of minimal use, in the type of apps I was interested in producing. So I had a heck of a time staying focused, trying to maintain interest, etc. I'd virtually fall asleep at the keyboard. So I stopped trying ... the author's examples. Started creating my own. Made progress faster, learned easier and quicker, doing those things I actually wanted to do with that language. Of course, there are many many functions, facilities, special libraries, etc in that language that I still know little about (although I am aware of them and have a basic understanding of them) but it doesn't really matter as those are features I don't really have any use for in real life. Besides reading and doing, my next approach is user forums where one can ask questions and get answers or at least hints. Classrooms with a live instructor can be useful ... as an introduction to a new programming language. As long as one does not expect too much (IMHO). i.e. The last one I attended was okay. Instructor talked us through the development environment installation and setup. Showed us how to get up and running with the IDE, mentioning several little quirks about it that weren't "in the book", etc. Then went on through several exercises and practice drills, talked about this and that, showed some helpful and useful stuff, etc. As programming instructors go, at least in my experience, he was actually quite good and helpful. Instead of lectures and classes geared towards learning and doing mostly what HE thought we should be learning and doing (there was some of that in the first dozen or so sessions) he switched to having us come up with our own projects. The types of apps and problem solving we each were most interested in and needed to do in the type of development we'd actually be doing in the real world. Then he'd review our work, individually and one at a time, discuss it with the whole class, offer suggested improvements or better techniques, so on and so forth. He was very good, IMO. But the fact is there is only so much classroom time available. Can take YEARS to learn a programming language in depth. And instructors are quite often not nearly so knowledgeable as some might presume. That's not criticism, just fact. No one knows everything about anything. So I find reading and doing, at my own pace, taking control of what facets of the language I am most interested in and have use for in the real world to be the most productive for in depth learning. Video learning I find to be the least effective technique. Unless its the learning of some physical action or skill. i.e. A short clip that might show where and what to click to pop up some feature, menu item, or whatever. For instance, how to pull up and activate a debug utility if the written explanation isn't very clear. The basic problems with watching videos to learn about something like a programming language is that video presentations are by their very nature ... SLOWWWWW. Whomever is making an effort to speak slowly and clearly. I'm a speed reader and can read words faster than one can usually speak them clearly and understandably. AND ... if something is unclear, its faster and easier for my eyes to drop back to reread something than it is to try to halt, rewind, and then replay a video. Not to mention that when learning, I have a habit of writing, typing, or cutting and pasting notes at key points about key items. This is far easier to do when looking at printed (typed) material, with static pictures, etc than when looking at some video presentation. i.e. There may be no text in the video to cut and paste, or to re-read and then type out in one's own words. And in most videos I've seen if one wants to do a freeze frame and then copy a particular picture it's usually not nearly so clear and detailed as a static picture shown in high res. Add, in video instruction its all one way. You get the material and ONLY the material the creator of the video chooses to give you. Which may or may not be the bits of data you really need. And yah can't hold up your hand to interrupt him or her and ask a question. Add, that in many such training videos I've seen there is the distractions (to me) caused by the fact that so many who make such take an inordinate interest in making sure every hair is in place, their makeup is good, that he or she read the teleprompter or script correctly, that the sweep of an arm to point at something is done with an actor's grace and flourish, or someone decided to spend inordinate time and effort to include some bit of eye candy in the video to show off his or here multimedia skills ... etc. In short, instructor seems to loose something due to perceived need to look good and be SMOOTH, as if he or she is more concerned with appearances than with substance. I've no time or patience with such things ... I'm there to learn not to be impressed with one's acting or film making skills. It may well be different for others, I make no claim that my way is the better way for anyone else except myself ... but videos are my least favored method of learning something like a programming language. Can be good for the learning of something like how to assemble Widget A to Widget B, or how to properly cast and retrieve a "popper" lure so as to trigger the strike reflex of a muskie (a type of fish). Audio presentations have much the same problem as videos. Good for learning how to speak a new language, not worth a lot for learning how to program in a new language. Just my opinions. Not worth a thing beyond that.

dogknees
dogknees

A formal definition of the language, api, whatever first and most important. For example, a full grammar for a language, structures and functions with parameters for apis/object models,... Then, one simple, and several non-trivial examples that demonstrate every option/parameter allowable. If it's a methodology, an explanation of why it is better than what it's replacing, what the formal basis of the method is, and complete, detailed examples of small, medium and large apps developed with it.

Tony Hopkinson
Tony Hopkinson

the AK47 of learning practical stuff, is practicing it. Accept no substitutes.

jslarochelle
jslarochelle

Reading, video and doing. I really enjoy little video presentation like they have on InfoQ and Parleys. JS

Capt_Skippy
Capt_Skippy

Learn programming?!?! Hell, I will sooner hire one!

maclovin
maclovin

NOT having to be a programmer at all of course! ...They're weird!

ilyaskazi
ilyaskazi

A combination of written materials and In-person training is best of all.

Jaqui
Jaqui

because I use reading and doing combined to learn. :p

Osiyo53
Osiyo53

Video tutorials are not in the least a new thing. They go back at least as far as WW2. Probably further back than that, but as least that far back as I've seen quite a number of WW2 era training videos. To talk about more modern video tutorials, I viewed several just recently as they were a mandatory part of a new certification I earned. So I have seen some of the latest and greatest. For that matter, I've made a few myself for a course I teach on a part time basis at a local technical college. I never said I thought video tutorials were useless. They have their place and valid usage. I did say, in my post, that my PREFERRED method(s) were reading (and I always actively take notes while reading), and then doing ... and then reading some more, then doing some more. Now, in educational theory, as I studied it when I got a teaching certificate some years ago, they talk about "Learning Styles". There is some debate about the subject, and its not clear cut, proven science, but I think the idea has validity. The idea of learning styles has numerous backers, and many of them disagree about the exact terms and definitions, and about how many learning styles there are. Etc. But the basic idea is that each human has her or her preferred method for learning, in general. And if taught something by an instructor or teacher who uses that preferred method the student can learn better and faster. The theory also usually asserts that different types of knowledge also have a "best" learning style that fits that type of knowledge or skill better than others. Myself, I usually lean towards the VARK categorizations of learning styles. That is: Visual Auditory Reading/Writing Kinesthetic That last term means "doing" and "touching". A really good teacher, in a classroom setting will attempt to present the material to be learned using at least some of all those methods. In an attempt to present the material in various ways so that all or most of the students will have the material presented in a form that fits that individuals preferred learning style. Of course, it is not usually possible to present ALL of the material in each and every one of those methods. The classes would be too long, and part of the time you'd be boring the heck out of a goodly number of your students. Thus, a good teacher tries to make available extra study material (additional text books or articles, a video a student can take home or view in the library, and so forth) so that if the student wishes he or she can do extra study via the method that helps THAT PERSON learn better, easier, etc. For some types of learning videos (or actual live show and tell by an instructor) are in fact very good ... for almost everyone. For instance, I could write an explanation of how to cast a certain lure and retrieve it properly when fishing for ... ohhh ... muskies in the early spring in shallow waters. SOME folks might read my article and be able to visualize exactly what I meant. Still more might be able to partially visualize it, then by trial and error discover what I really meant. And still more might read what I wrote, scratch their heads and go "Huh?" But if I showed them exactly the technique in a video, probably 90% or better would understand what they needed to do in a couple of minutes. Then it'd only be a matter of practice to get it down right. The remainder probably will never catch a muskie (which is a type of fish) short of pure luck ... or the use of explosives. However, certain other types of knowledge are simple best taught by other methods. Or a combination of methods. But ... trust me ... I've been around for a while, and have been both a student and a teacher ... VERY few people can just "see it" and then be able to adequately "do it" themselves. But there are a LOT of people who THINK they can. Chuckle ... I've helped bury a few of those sorts.

Tony Hopkinson
Tony Hopkinson

I just signed up for a new car, all help is welcome.

Jaqui
Jaqui

good and concise. ;) I've had well written material that didn't help me at all, yet other material that wasn't considered good did work for me.

Justin James
Justin James

It is almost impossible to get me to sit through a video that is more than 5 minutes long on my computer. I get fidgety. I start checking email. I mess with my cell phone. Those TED videos kill me... they all look so interesting, but I can't sit through 30 minutes to get the knowledge that I could read in 5... I just don't have the time! I agree that reading delivers the most bang for the buck, in terms of time. J.Ja

Tony Hopkinson
Tony Hopkinson

ever statements and that's from unbiased sources. I do like to hear the reasoning behind the creation of a new a language though, getting the sense of it early helps you find your way around in it. Formal definitions though are usually my last port of call.

Jaqui
Jaqui

having the danged instruction sheet so you can swap the clips helps :p reference material and doing it was my vote.

john.range
john.range

Yes, learning usually works best for me when multiple activities are combined. Reading lets you dart from place to place in the text, video enables you to watch an expert at work and view alternative ways of doing things, and practice glues it all together. JR

Jaqui
Jaqui

checked the videos on showmedo.com? a number on basic open source stuff, and on programming, python, java, and a bit of c/c++ edit to add: and free to access.

Tony Hopkinson
Tony Hopkinson

One of the prime requirements is being. "A little bit strange"

Sterling chip Camden
Sterling chip Camden

A good tutorial should solve a common problem. Don't show me "Hello world", show me how to put up an interactive web page. A concise tutorial should eliminate anything extraneous to that task. Provide links for further reading, but stay on track. Give me step by step, with a little explanation for why, but leave most of the explaining to your links.

arignote
arignote

I prefer videos. I use the video tutorials on Safari books online. I'm learning Flash ActionScript so it helps to have video demos of the finished projects. I do get fidgety if the presentor is not engaging, but I guess TV has ruined my attention span.

Tony Hopkinson
Tony Hopkinson

:D I don't believe I've learnt anything until I've used it in anger...

jslarochelle
jslarochelle

I did not know that one and it looks really nice. Little videos are a nice break from books. Also a nice complement because sometimes you get to actually see people you read about in books or you get a different perspective. :) JS

Jaqui
Jaqui

how much market would there be for a book on how to write good tutorials and documentation for software?

Jaqui
Jaqui

I would think 2 or 3. and I agree with your definitions, although I'm sure others might not.

Tony Hopkinson
Tony Hopkinson

Spend the entire budget on the UI. It ended up on top of (if you were really really lucky), an untested (and often untestable), fragile, undocumented, inefficient piece of crap. So then management looked at what they'd got fior their money and it looked good, so they sold it. Then in order to rescue the investment and the revenue potential, they call us in. Lucrative on occasion, but distinctly unsatisfying. Nothing wrong with prototyping, but you have to remember that it is one. When I prototype something I never put in the features it would need to make it a product, it's more efficient, and way less risky. Put the time to make it a real product in the plan, but not yet done. No smilies, makes even the worst PM keeep an eye on things.

Sterling chip Camden
Sterling chip Camden

... wasn't that it was rapid, but that it was usually permanent -- and then cloned a million times. At least now most people call it by what it should be: a prototype. But you still have to be willing to scrap the prototype and start over with a better design. Too many just hack the prototype until it "works".

Editor's Picks