I sort of fell into IT a long time ago. I was always good with computers and one opportunity led to another. I’ve bounced around in roles quite a bit, gaining valuable experience, but frequently not loving what I do. I always seem to look to the next opportunity.
My favorite position was building a data warehouse, which lasted for a couple of years. But eventually I just ran out of enhancements to do. The company had all of the data sources working, a reliable ETL setup, and several analysts comfortable working with the toolset. Looking back, perhaps I should have left that company then, taking those fresh and marketable skills into a new consultant path.
Instead I did the safe thing — stuck with the company and migrated through a few new roles, implementing VMware, SAN, doing lots of security training, running IT from a technical level, “promoted” to management. Taking this path led to a lot of additional skills and experience but, alas, true career happiness has been elusive.
I finally figured out that management is something that I am capable of, but don’t love. My next job was as a system engineer, which was great until I inevitably got promoted to management.
So I’ve been casting around, trying to find my true “passion” to pursue. I read Chad Fowlers excellent book “The Passionate Programmer”, which has some great advice on building career capital and really launching yourself into the community as a leader.
I’ve always enjoyed software development, so next I picked up Bruce Tate’s book “Seven Languages in Seven Weeks”, and through some kind of magnetic attraction went right to the Erlang section. Erlang has some really cool features, but the coolest may be “hot” code loading — upgrading modules on a running system with (hopefully) zero downtime. Anyone who has been up late at night deploying a EAR file to cluster of JavaEE servers with the requisite downtime can understand the excitement at this notion. A passion found?
One thing I picked up from Chad’s book is to pursue something important, but not yet commoditized. For example, India has a huge number of Java developers. Unless you are a world-renowned expert, Java development is unlikely to lead to more than a mediocre salary and a succession of jobs that eventually get outsourced. Erlang doesn’t appear to (yet) be a target for this mass commoditization. So I pursued it.
Knowing nothing of Erlang, I worked through the Seven Languages chapter on it, then got “Learn You Some Erlang for Great Good!”. This started out well, and there was an Erlang Factory Lite nearby, so I went to that too. In my goodie bag was a copy of “Introducing Erlang: Getting Started in Functional Programming”. I then found that there was a companion book to this “Études for Erlang”, which can be read online for free.
By this time I was getting bogged down in learning Erlang, and realized the massive conceit on my part that I could read a couple of books, do some programming exercises, and jump into some kind of important role in the Erlang community — maybe contributing to one of the many excellent open source projects.
I had also found a number of great podcasts, among them Mostly Erlang and (more importantly) Ruby Rogues. Both of these podcasts feature “picks” and the end of the show where the panelists give links to new / useful / exciting / fun / whatever stuff they think is interesting. One of these was from Episode 136 where James suggested So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love
I’ve been reading this book with great interest, as it dovetails nicely with “The Passionate Programmer”. The trick is to not find a passion and then follow it, but to gain skills and experience through deliberate practice. This gives you valuable skills that you can then trade on for money, position, power, etc. Part of this is very discouraging — deliberate practice is hard work, but it is also nice to see this laid out in an easy to consume manner. Also discouraging is the realization that I simply don’t have a world-class understanding of any one system. However this was tempered with the realization that I have deep experience in a wide range of systems over the past 20+ years, so it’s not as if I am starting from zero.
So what’s next for me? Is Erlang development my true passion? It is literally too early to say. I need to develop my own deliberate practice strategy. Given my past love of data warehousing / ETL type work perhaps I should focus on a “data layer” system. NoSQL is a big thing at the moment, so perhaps a deep-dive into Riak or CouchDB would be a way to combine both Erlang and Database interests.