I surface again, back from the land of studying and cramming. I decided to study for the SCJP (Sun Certified Java Programmer) exam, since that's what I spend my time doing at $dayjob (I might as well do it as best as I can!) Yesterday I passed the exam, yay!
I kinda like exams and certifications and courses in general (though if you'd asked me on Sunday I likely would have had something different to say!) They give a focus to my learning or simply give me the opportunity to look into a topic -- I'm interested in many many things and although I plan to learn about them all at some point, I can't learn everything at once. I was delighted when a JQuery course was organised in Tog earlier this year, it was the perfect opportunity to get a taste for it.
My usual process for learning a programming language usually starts like this:
- Do something. I first used Perl when I had a huge QIF export where I needed to change the dates from DD/MM/YY to MM/DD/YY. Or maybe it was the other way around.
- Or follow a tutorial to learn about it. Django looked so cool I had to try out their awesome, awesome tutorial.
- Sometimes I'll pick up a book on the topic if I see a good recommendation, like Learning Perl.
Very quickly though, I'll usually get interested in a problem or app and I'll drop the tutorials and books, simply using them as reference materials. It's the best way to learn, my practical knowledge expands but at the same time I'm likely to miss on things because I don't know they exist, or I don't realise I only have a partial understanding of a particular topic. In the end I only learn and see what I need for whatever task at hand, my knowledge can be fuzzy in places. I build a good feel for what's right and wrong but I don't necessarily understand precisely why. There could be a world of useful features I'm missing, especially if the new language has its own very specific quirks and shortcuts that don't always map one-to-one to other languages -- Perl comes to mind!
So that's why I enjoy studying for a certification or course, it gives me a different focus. Sometimes I even learn things that could end up being useful! ( ;) ) Some I'm sure will help me debug tough issues in the future, others I'll want to try out in my next project. I enjoy my new understanding of why some things work and why others don't.
Right now though, what I'm really looking forward to is having the time again to read other, non-Java related books!
Congrats, must get some tips off you when I get around to doing this too! #1. Posted by Baz on Thu 24 Jun 2010, 19:10
Thank you! :)
First tip would be here: http://www.jpichon.net/blog/2010/6/scjp-6-study-guide-kathy-sierra-bert-bates/ ;) #2. Posted by jpichon (Website) on Thu 24 Jun 2010, 22:18
Congratulations on passing!
I've never yet taken this approach with learning something, although I keep meaning to do an LPI certificate or two.
Usually, like you, I take the "do something" approach (all the more so for Perl ;-)) A couple of days ago, I needed to write a small text-extracting utility, that I couldn't quite do in sed, and although Perl would be the obvious one for that, I took it as an opportunity to get started on writing Python.
Sometimes I look around for existing code related to what I want to do, and start hacking that into shape. mostly using intuition (as in "generic familiarity with programming languages", which probably won't help when I get round to trying Prolog!) to work out what the existing code does. If you re-use code like that a lot, you get to see at least the language features that actually get used in the language by the language community; the things you don't see might be neat, but are implicitly less useful day-to-day.
But to get the subtleties of a language (e.g.continuation-passing style in Scheme), some kind of teaching material is good (or almost essential). Unfortunately, for the most popular languages, sometimes authors who haven't understood the subtleties themselves jump on the bandwagon, so recommendations for books are useful.
Now I need to find a real project to do in Haskell, the next language on my list! #3. Posted by John (Website) on Fri 25 Jun 2010, 13:15
Congrats on passing this exam. I know that they are never easy. #4. Posted by Brian O'Donovan (Website) on Sun 04 Jul 2010, 10:18