Living in the Tech Avalanche Generation

A practitioner’s introspective on technology

Becoming a polyglot or dilettante programmer?

Learn a new language each year. Or so the polyglot mantra goes. Sounds feasible enough right? After all, the more experienced we get as programmers the lower the barriers to entry in learning new languages right?

Over the last six months or so I have been trying to learn Ruby / IronRuby with mixed success. First up I started by reading some free information aimed at learning POR or plain old Ruby as I call it - sorry excuse the tongue in check but I couldn’t resist the chance coin my very own ‘Plain Old’ acronym given half the chance :). I started by reading Mr Neighbourly’s Humble little Ruby Book and taking all the examples and writing them (in NetBeans Ruby Edition) and then adding to those examples with some further experimenting of my own. This was all going nicely until the real world (working life) got hold of me in one way or another and my time in following through with Ruby started to wane. I have since then attempted to reorganise aspects of my daily life in a way that would incorporate Ruby in the hope of picking up the momentum again, for example I am posting some of my Patterns series in Ruby and even bought Ivan Porto Carrero’s rough cuts of his unfinished book, but still I feel it’s not enough to really let the early work take root and ferment.

many_hats_polyglot So what’s required to really learn  this new language? If you think about how we learn languages and develop our skills in them, it relies heavily on becoming active in developing with the given language, however most of us are employed in an environment where the expectation is that we will be developing (with some specialisation) in a single language and on a single platform. In my opinion I believe that what is needed is a project that is persistent and on going, all of which is easier said than done, there always seems to be an omnipresence of DotNet related learning and on the surface that should take precedence; how do I choose?

This year I am going to continue my learning of XAML based UI technology, develop a DSL for data transformation in a particular domain of interest, continue my learning of the Entity Framework as deeply as possible and really give NServiceBus a lot more time and use it at every (appropriate) opportunity and of course I will continue to write this blog. So where is my quality Ruby time going to come from? Answer I don’t know but I feel strongly that being a polyglot programmer of any depth means taking on significant projects in your newly chosen language of learning. Perhaps I have to settle with being a polyglot dilettante in the shorter term?

I would love to hear some other opinions on all this.

Share/Save/Bookmark

4 Comments so far

  1. Brad January 26th, 2009 6:24 pm

    I found it hard working fulltime and trying to keep up with technology. However, as my contract ends this week I plan on spending the entire month of February working harder than ever to catch up on the 10 or so books I have backlogged and my side projects. I have small amounts of paid development work to do and some savings, so this allows me to take this time off for self development, otherwise it would just not be possible.

    Unfortunately, even with a month allocated to self development, I don’t have time allocated to learn a new language. Does that mean a month is not enough?

    [Reply]

  2. Ivan Porto Carrero January 26th, 2009 11:18 pm

    Hi

    It may surprise you but my day job is programming C#. I picked up ruby and use it on all the projects outside of work.
    In the beginning this was very hard and it did take longer even to write stuff in Ruby then in C#. I guess the way to go is to try to port some more complicated libraries etc to the new language.

    I mean a hello world app isn’t going to teach you much.. but if you try to build something simple like a twitter client that does async requests etc.. you can still do that in one or 2 weekends but it will give you a good feel and experience with the language.

    furter to learn ruby in particular it might just help to start doing your sysadmin tasks with ruby. And to create your build scripts with rake and such. Also you could try (not now tho because it doesn’t quite work yet) to use RSpec for testing instead of NUnit/Rhino.Mocks.

    I do spend more than a month each year on self development.. more like the equivalent of 3 I think.

    [Reply]

  3. EJR January 26th, 2009 11:41 pm

    Typically when a new hire comes into a company, it takes approximately 6 months for that new hire to become acclimated with things… I believe that this can also be applied to learning new technologies… not just being able to run a “Hello World”, but to actually learn it and be able to do something of value with it.

    [Reply]

  4. Simon Segal January 27th, 2009 7:55 pm

    Ivan

    I like the admin tasks suggestion, I will give that a go. I calculate that I must spend at least 25 hours a week working on self development and learning, which includes writing this blog and all the learn by example code along with weekly proof of concept spiking that goes on in my own time and that is not directly related to my job.

    BTW, how is the book coming?

    [Reply]

Leave a reply

Creative Commons Attribution-ShareAlike 2.5 Australia
Creative Commons Attribution-ShareAlike 2.5 Australia