I'm a cutting edge technologist, but please don't make me learn anything new
A paradox exposed
If you read this blog, you are probably a technologist, and quite possibly a software developer. If so, ask yourself this: When was the last time you learned something truly new? Not just another aspect of what you already know best (say, a Python developer reading up on a module in the standard library he hasn't used before), but something that puts you out of your comfort zone and stretches your ability to learn (like that same developer tackling Erlang).
If the answer is more than a month ago, stop reading and think about your prioritises for a moment. And think about how you came to be a technology professional in the first place.
Technology is all about learning new things. I remember when I first started playing with my mother's IBM 386 PC with MS-DOS 6 (yes, I know I'm young). I was terrified and excited. When I learned about DOS batch files, I thought I could build just about anything. With GOTO. And SHIFT. When I borrowed my friend's father's Visual Basic 6 manuals, I read them cover to cover and tried to build a better text editor. Oh, how I have learned the error of my ways, but that was an exciting time. It was how I got into technology, and became interested in programming. Half a dozen programming languages later, it's still one of my most important hobbies, and the cornerstone of my professional career. If I hadn't had the desire to learn new and unfamiliar things, I would probably have been an accountant. Yipes!
A colleague and friend once told me: if you're in technology, you're an absolute idiot if you're not spending at least 30 minutes every day learning something new. Your knowledge today is most likely obsolete in a few years' time. But more importantly, the aptitude for learning and passion for acquiring new skills is probably your most valuable professional attribute. Without it, you're just someone who learned a trade and now applies it day in, day out. There's nothing wrong with this, but it certainly limits your ability to grow professionally.
I think we all know this. I think we all remember the excitement of learning new things. And yet, programmers can be some of the most stubbornly set-in-their-ways people you'll ever meet. This goes beyond the pointless "religious" debates (vi vs. emacs; object oriented vs. procedural). It even goes beyond programming languages and paradigms. It goes right down to the tools we use to write our software.
I was prompted to write this by a discussion on the Deliverance mailing list about moving the code to GitHub or BitBucket, two "social coding" portals that use Git and Mercurial for version control respectively. The aim was to make it easier for people outside our community to contribute, and to present a bit more an outward face. Some developers also preferred these tools over Subversion, which is what we use now.
In response, one of the contributors basically said he wouldn't be interested in contributing if it moved away from Subversion. I don't know his reasoning, but for a moment I found myself in agreement. In fact, I've berated people who move code away from a Subversion repository to a Git or Mercurial one before (although not only for the reason I'm about to describe - more on that in a future blog post). I'm extremely comfortable with Subversion. It fits my brain and I use it on a daily basis. Having to learn something else sounded onerous. My urge was to resist it, so as to keep the project well within my comfort zone.
But then I thought: how utterly stupid a reason. I learned Subversion at one point too. Why should this be any different? Maybe Git or Mercurial really would be better? I didn't know them well, so I had few factual arguments. My resistance was instinctive: For the love of God, don't make me learn anything new!
The same applies everywhere. People freak out when you present them with a new framework or tool. I've spent weeks - if not months - building frameworks that I believe in, only to have people shoot it down because it's "one more thing to learn". (For sure, an excessive learning curve can be a big problem, but many of these "new" things are in fact about making old things easier for new people to learn). Programmers build up irrational hatreds for all sorts of things: XSLT (XDV, anyone?). XML. Java. In a grown up community like Plone's, we don't see too much of this (though perhaps it is just displaced by apathy), but peruse Slashdot or Reddit one evening, and you will find hordes of kids born ten years after K&R was written proclaiming the virtues of C and refusing to even look at C++, let alone Java. They learned that from someone.
This problem is of course not unique to software development, but I think it is a little hypocritical at times. We claim to be on the cutting edge of technology, and yet we often engage in great amount of navel-gazing. It leads to NIH (Not Invented Here) Syndrome. Rather than learn about what others have done and build on it, we prefer to build our own, with our own tools, designed in our own way, exactly the way we've always done it. Get off my lawn, you young whippersnappers!
What can be done about this? The advice about taking half an hour of each day to learn something new is a good one. After the Deliverance debate, I decided I was long overdue to learn about DVCS and found the excellent Mercurial Book, which I read online. I'm now reading Pro Git to compare. Learning new things is fun, and makes you a better developer. The ability to draw insights from a number of disparate sources is probably one of the main things your clients pay you for (or your boss values you for), whether you're a consultant, a developer or some other kind of professional. So keep growing your list of sources.
But we must also recognise some of the reasons people become insular. There are so many technologies and tools out there, one can't hope to learn about them all. "Choice overload" instinctively makes people retract to the familiar. Once we got jobs and families, we stopped having time to just surf the internet looking for "cool new things". It can also be hard sometimes to pick out the things truly worth investing time in.
Here, you can help your friends. When you find something worth learning about, Tweet liberally and blog about it. Pick out the best summary you can find, and show it to others. It is much easier to get started when someone gives you a recommendation and helps you filter out the noise. And if you've just built the next great piece of technology, you could do worse than to make it easy and fun to learn.