Please share:
Found this gem, ripe for the picking, in my Google Reader.
I’ll get back to what I think about “teaching yourself a programming language” in a second. But, I want to preface (especially if you’ve not read any of my previous posts) that I’m an advocate for Computer Science reform in Academia. I believe CS is stale, especially from a commercial or Open Source software perspective. It has been my experience that recent CS grads are ill-equipped to begin working as productive Software Engineers. Lastly, I am also a firm-believer in self-study.
I am often amazed at the discussions around “…I want to learn [insert language here]”. I’m definitely guilty of this as well. I’ve always felt that If I was proficient in Python/Ruby/Perl I could do so much more, from a scripting perspective - or even rapid prototyping. But, I believe it would be a waste of my employer’s time and money to go and toy around with language X. And, I don’t have any “pet” projects that really require the knowledge of another language.
So, here’s the first paragraph:
“Programming as a profession requires a great deal of learning on one’s own. Whether you think Universities should or should not be in the business of providing job training for software development, the fact is that the industry moves far too rapidly for Universities to teach more than a small portion of the knowledge required to be competent on the job, even at an entry level.” |
Very good point. Academia can’t keep up. So, how about teaching people to be Software Engineers, independent of any language implementation as the core? The alternative is to scratch the surface, and shove more theory on top.
Now, here’s my argument. Give a man a fish, feed him for a day. Teach a man to fish, feed him for a lifetime. Languages are almost irrelevant here. Fishing equates to architecture, design/modelling (not UML), and testing. Yeh yeh, you have to know how to hook the fish…the coding analogy. Yes, but as we’ve established languages can be learned…on the job (or off as the referenced blog states).
I love the details of the post. To really “learn” you must get beneath the surface. I also enjoyed some of the comments - it can’t be emphasized enough that every language has its experts, and their code is generally viewable…in one form or another. This is the beauty of Open Source’s opportunity for Academia, and anyone who wants to learn.
Enough of the mushy stuff. If you really want to learn how to program. Pick up Unit Testing first. Learn Test-Driven Design. Download Eclipse. Pick a tutorial and start learning how to be a programmer. Then, sign up on an Open Source project that you find interesting. Ok - so do this whether you are an aspiring student, working professional, or someone who is looking for something new.
Please comment: