George Carlin-Style Software Career

  • Oct 22, 2012 at 6:17 PM
  • Shawn Wildermuth

George-CarlinI've always been a big fan of George Carlin. I remember watching one of his first HBO specials when I was quite young. No matter whether you agree with his point of view, you had to admit he had an impressive mind and a way to stay relevant no matter where the country went.

Recently, I was watching Louis CK talk at a Carlin Tribute when he told the story (that I'd heard before) of Carlin's philosophy of throwing out his act once a year to work on a new show. This got me to thinking how this could apply to what we do.

Continually Learning

Learning new technologies, tools or languages expands what we are good at. In fact, I would argue that developers are paid to learn. That is what we are good at. In this way I think most developers should be learning new technologies every year.

Does this mean I think that you should chuck your entire knowledge and experience and start fresh? Of course not. But challenging yourself by taking on something new (either for work or as a side project) is going to make you more valuable and keep your ability to adapt sharp.

Now before you scoff, let's look at the reality of the situation. I know that I am not like most developers who are building solutions in the Enterprise. The tooling and technologies tend to change slowly in most environments. I don't pretend to believe that most jobs will let you introduce new technologies every year, but I do believe that by looking at solutions in a different way by learning new ways of doing things, your ability to see problems from a different perspective will help you improve even if you're daily work is using the same technologies as before.

Why Change Matters...

I like money as much as the next person (ok maybe more), but I realized a long time ago that being a developer was not only a job, but a passion for most of us. In fact, when queried from young developers as to what they should learn to make a lot of money in the software business, I'd often point them to MUMPS. MUMPS is a development language created at the Mass General Hospital in the late '60s to run big hospitals. Many many hospitals still use MUMPS and the last few people who work with it still make an exceptional living at it. Sure, it's lousy work but if you're in it for the money, go find a tiny niche and exploit it.

But for many of us the real trick in software is to stay challenged. Sure, some of us decided to go into management or consulting...but even in those roles, our hearts are still in it for the rush of learning something new and bending it to our will.

Afraid of Change?

In the last ten years I've invested quite a bit in a myriad of technologies.  Some of these were even dead on arrival (e.g. Oslo, WinFS...hrmph). At the time that the investments I made in learning technologies that either had their day in the spotlight or were abandoned, I got the lovely anger/denial two-fer. This happens with every technology...period. The real talent is being adaptive. Change is going to happen in software. You have a choice to stick to what you know really well and stay the expert in that thing; or you can decide that learning is what your real skillset it. Bring on the change and I bet you'll not only be a better developer; you'll enjoy it more too.




Adam Monday, October 22, 2012

First, let me say I agree with the sentiment of your post: continual learning is a valuable and enjoyable thing, essential in many professions/crafts, and developers need to welcome change, relish the challenge, and learn look at things in new ways. Good developers love learning; it's a core skill.

However, ...

As a general/non-specialist Microsoft developer, I may need to develop with: SQL Server (including SSRS, SSAS, SSIS), .Net/C#/VB, IIS, ASP.NET WebForms/MVC/Web API, SharePoint, Windows Forms, WPF/Silverlight, WCF, EF, Azure, WP7, TFS/MSBuild, HTML/CSS, JS and a large number of libraries, mobile/adaptive web, a 3rd-party CMS (e.g. DotNetNuke), etc.

It is far from necessary to be an expert in all of these technologies, some are a lifetime's work. Many are progressing at a rapid pace, while others are moribund but have apps that need supporting. Some are introduced at the whim of management who have just come back from a conference/presentation: "SharePoint is our new strategic platform!". Sometimes, you'll need to work with beta/v1 stuff, with all the pain and loss of productivity that entails.

It's enough of a struggle simply to get a bunch of technologies, some of which you barely know, to play well enough together to create an application, usually under time pressure. The code will probably not be very good (understandable/idiomatic, testable, well-structured, performant, secure, etc.) and you'll have a relatively superficial understanding, propped up by recipes found on MSDN or elsewhere on the web. The experience gained may subsequently have to be chucked away in order to move to the new hotness, or it may be months before you use the technology again and you have to re-familiarize.

Given that's the case, i.e. a job already with many unpaid hours, where does the time come from for side projects, and to learn Windows 8 (& WP8), F#, PowerShell, git, C++ 11, Clojure, Haskell, Big Data, Android, NoSQL, etc? How about soft skills/sales & marketing/product management/social media/writing & presenting/networking? How about physical wellbeing/exercise, family/social life, faith/volunteering, liberal arts ...?

We're trying to fill a pint pot not with a quart but with a gallon, from a firehose

BTW, I'm a big fan of your writing, training materials, and community engagement. Thanks! I'm just letting off steam. :)


Benjamin Haag Wednesday, November 28, 2012

First: your articles are great! You're a talented writer, knowledgeable as hell, and present complex topics with style.

Now, you mention George Carlin and Louis C.K. in the same friend, should our paths cross, the first three rounds of Scotch are on me...


Shawn Wildermuth Wednesday, November 28, 2012

Thanks Benjamin

Leave a Comment