Thursday, August 20, 2009

Staying Current: A Software Developer's Responsibility

I have a personal hatred for weekend conferences*. To me, a weekend conference ensures that I'll be "working" for 12 straight days.

I understand that opinion isn't universal.

Some people have problems getting time "off" to attend conferences. These situations feel like a fundamental misunderstanding of a software developer's responsibilities. Part of your (software developing) job is staying up on current technologies. That means doing some research during your day.

(almost directly stolen from Ward on technical debt)
If you spend your entire day coding and never looking at new things, you accrue productivity debt. In the short term (say the last week of a release), it makes sense to take on a little debt. However, in the long term, assuming little or no payment, the interest (where interest equals the gap between your skills and the current solutions) will render you a NZPP (Net-Zero Producing Programmer). In a typical organization you can coast as a NZPP for around 6 months and slowly transition to a NNPP.

It is your responsibility not to become a NZPP (or NNPP). Most talented software developers refuse to work with NZPPs. At the point that you become NZPP, you usually have to declare bankruptcy (with regard to software development). You generally have two choices: take a much lower paying job where you can learn new things or move into another role. If you want to be a software developer, neither of these outcomes is desirable.

Luckily, you have the power to avoid becoming a NZPP. Most employers will happily buy you technical books and send you to technical conferences. In my opinion, whether or not you took advantage of these benefits should be noted on your performance review. Not staying current as a software developer, especially when the opportunity is offered to you, is software malpractice.

I once created a list of things I look for in potential team-mates.
  • Have you tried Test Driven Development? Can you name something you liked and something you disliked?
  • What language(s) that are gaining popularity, but not yet mainstream, have you written Hello World in?
  • Do you read books or blogs looking for new ideas at least (on average) once every two weeks?
  • Do you at least attempt to learn a new language every year?
  • Have you ever run a code coverage or cyclomatic complexity tool against your codebase?
A commenter said something along the lines of
Not everyone has the personal free time to dedicate to doing all of these things
And, that is the fundamental flaw. Employees (and even some employers) seem to think that these are activities that should be done in your off time. I can't disagree more. These are things that a responsible developer needs to do as part of their job, thus it can be done during work hours.

20% time isn't something Google invented, it's just something they named, formalized and made popular. The activity itself is something good software developers have been doing for years. I applaud Google for making it a standard, thus ensuring that it's employees always have the opportunity to stay current. However, your company doesn't need to standardize on 20% time for you to stay current.

It's your responsibility to make time in your day to read a book or a blog.

You should also take advantage of a company sponsored trip to a conference. If you've attended conferences before and derived little value, I highly suggest the QCon conferences and JAOO.

Once you start doing research as part of your job you'll find that conferences are just like work, except the focus is 100% on research. And, it's not something you want (or should have to) spend your personal time on, it's just another productive day of doing what you have a responsibility to do.


* Which is why Josh and I run SpeakerConf Tuesday-Thursday. You can travel to, attend and travel home without missing a weekend day.

14 comments:

  1. I completely agree with what you are saying but I would amend the sentence "Employees (and even some employers)" with "Employees and especially Employers!".
    I have a feeling that most employers don't understand the importance of keeping their developers up to date, and they see conferences and blog reading as a waste of time. And they transmit it to the Employees that then feel unconfortable using working time for their personal development.

    ReplyDelete
  2. I'm right at the end of one of those 17 day work weeks. And I agree completely that conferences should be a weekday thing, but I think that many employers would disagree with that sentiment.

    ReplyDelete
  3. Excellent post! I couldn't agree more with making time in your life as a developer to always be learning something new. I have never understood how some developers think that they don't need to make time for expanding their horizons. My chief complaint with many employers is that they don't need to play a part in their development staff growing their technical knowledge. That used to not be the case, but since outsourcing is so prevalent in corporations I assume that they "think" they can easily hire someone with the technical skills they need for a given task. No thoughts given to growing technical skills for those who have the business knowledge.

    ReplyDelete
  4. Very well written...I completely agree with you.

    ReplyDelete
  5. Hello,

    Would you allow me to publish a french translation on my blog (http://jeremy.wordpress.com) ?

    I may not make the perfect translation, but I like what you write and I think that if I make it more readable for french geeks the message may better understood.

    Whether you allow me or not, thank you for your great content.

    ReplyDelete
  6. Hello jlecour,
    If you provide a link back to the original at the top of the translation, you may feel free to translate this blog entry.

    Cheers, Jay

    ReplyDelete
  7. Thanks. For sure, I'll begin wth a direct link to your post.


    I just need to understand a sentence of yours that is not clear enough to me to translate it.

    "However, in the long term, assuming little or no payment, the interest (where interest equals the gap between your skills and the current solutions) will render you a NZPP."


    I don't understand "assuming little or no payment"

    Thanks for the clarification.

    ReplyDelete
  8. Hi Jay,

    I've published my translation : http://jeremy.wordpress.com/2009/08/25/rester-a-jour-la-responsabilite-du-developpeur/

    The content is available here as a gist : http://gist.github.com/174953 if you or anybody would like to update the translation

    ReplyDelete
  9. Hi jlecour,
    By "assuming little or no payment" I meant if you don't do any reading and/or leading.

    Cheers, Jay

    ReplyDelete
  10. Thanks, I've updated my translation.

    ReplyDelete
  11. Grr. So I have people like you to thank for scheduling conferences during the workday when I can't attend because my employer won't send me to technical conferences. :-P

    I'm definitely a fan of weekend conferences.

    It's one thing for me to understand that I don't want to become a NNPP and to spend my own time preventing that from happening. It's another to make my employer understand that they shouldn't want me to be a NNPP, or that such a thing even exists, but that's a bigger topic, covered in your NNPP article.

    ReplyDelete
  12. Amy,
    I'm sorry. Your situation definitely isn't ideal. I actually discuss conference policy before I join a company these days. Perhaps you can request some conference time as part of your next performance review.

    Good luck!

    Cheers, Jay

    ReplyDelete
  13. Would you allow me to publish a portuguese translation on my blog (http://www.rafaelfranca.com.br) with a link to original post?

    ReplyDelete
  14. Rafael,

    Go for it. Thanks.

    Cheers, Jay

    ReplyDelete

Note: Only a member of this blog may post a comment.