Jack of All Trades

Late last week, I received an email from a fellow developer asking me if I had any thoughts on the pros and cons of using Vagrant versus Apache in in WordPress development.

At one point in my career, I would have spent extensive amount of time researching both, reading articles, and even testing out the two pieces of software along side one another because I didn’t want to respond with an “I don’t know.”

Years ago, I got over that attitude – in fact, I don’t think it’s possible to keep that mentality up and actually advance your career – but I responded with the following:

So I haven’t really done much with Vagrant, at least not right now. I’m hoping to eventually tinker around with it but I tend to work with things on a need-to-know basis so I pick them up as I go along.

Right now, my current projects are on the typical stack so I’ve yet to really need to pick up Vagrant or have the time to spend tinkering with it.

Wish I had more to offer, but that’s all I’ve got for you right now :).

It’s okay to say I don’t know, but that isn’t an excuse for laziness. I think that it’s important for developers to balance pragmatism with laziness when dealing with new technologies.

Being A Pragmatic Developer

I think that developers talk a lot about pragmatism – and that’s important – though I’m not actually sure how many of them strive for it. Then again, who am I to judge?

All I know is that I know that it’s something I try to practice, but I have my moments of weaknesses just like everyone else. I mean, it is fun to rabbit trail new things – just at the proper time, right?

Anyway, for the purposes of this post, here’s how I’m defining pragmatism:

Dealing with things sensibly and realistically in a way that is based on practical rather than theoretical considerations.

To be honest, that definition still leaves something to be desired, but that’s what’s given so I’ll roll with it.

Diving in the Deep End

Here’s the thing: I think a lot of developers get sucked into all of the new technologies that are available and our curiosity gets the best of us so we end up like rocks skipping along to the top of the lake never really sinking into any particular field, just touching whatever comes along (and some even claiming that they’re experts after doing just that).

Skipping Rocks

But when we do that, I believe that we rob ourselves of gaining a significantly deep understanding of a set of tools, technologies, and languages that can ultimately make us incredibly capable developers with a smaller set of tools, and a larger base of knowledge off of which to solve problems using said tools.

Another way that I look at it is this: If we still have questions or gaps in our knowledge of the tools and technologies with which we’re currently working (and even making a living off of), what’s to stop us from continuing to dive deeply into said tools and technologies especially if we enjoy working with what we have?

Why should we move on to something new?

Breadth or Depth?

Of course, I’m not dissuading anyone from having fun tinkering with new things. I’m just as guilty as the next person at least when it comes to spending time off the clock; however, when it comes to work and serving in a professional capacity, the breadth of knowledge that I have is rather small.

I’m okay with that.

I’d rather the depth of my knowledge be greater than its breadth and that’s something that takes years to achieve (and I’m clearly still working on it).

Pragmatism in Practice

Practically speaking, what does this look like? After all, I’m not trying dissuade anyone from learning new technologies. In fact, it’s something that we need to do.

But I’d rather be someone who has a deep level of knowledge with a handful of tools rather than someone who has a little bit of knowledge over a wide array of tools.

In other words, I don’t want to be “a jack of all trades, master of none.”

So when it comes to learning new tools, languages, and technologies I may try to bring one new thing – such as CodeKit – into the fold of my current set of tools during a project, but you’ll never find me actually trying to build things using a set of tools, languages, and technologies that I barely know in order to solve someone else’s business need.

Ultimately, I want a deep understanding of what I’m working with, I want to do good work, and I want others to get their money’s worth. Personally, I believe that’s what a pragmatic developer is and it’s what I’m aiming to achieve.


Join the conversation! 8 Comments

  1. Small spelling mistake. I think you meant new instead of knew.

    the knew technologies

  2. Thanks for this Tom. This is exactly what I needed to hear. That there are others out there who approach things like I do. With careful, guarded, yet curious pragmatism.

    I think as developers we have it the worst. We like learning and we love knowing. So when a new tool/app becomes available we certainly do not want to be the last to know about it.

    We must be careful however, it’s all too easy to fall into the vicious cycle of:
    1) Discovering the tools/workflows of other developers.
    2) Tinkering with said tools. Dreaming about how they could “enhance” our workflow and make us better developers. If only we could figure it out. Maybe just a little bit more time.
    3) Cursing ourselves and this “wonder tool” for not doing the job.
    4) Wishing we could get back the hours invested in the tool that was supposed to save time.

    So I’m with you. Curious pragmatism wins every time.

    • Curious pragmatism wins every time.

      Yes – though I’d go even a step further to say that demanded pragmatism wins every time. It’s not enough just to want to tinker with the latest and greatest – I think that it helps to do so on a need-to-know basis.

      This is not to say that if you have the time to avoid exploring it. Just that if you get on that slippery slope, it’s hard to get work done :).

  3. Just so long as gaining a deep depth of knowledge with one (or a few) tools doesn’t close you off from being able to pick up others if needed.

    • from being able to pick up others if needed.

      Exactly – that’s where I think being pragmatic comes into play. It’s learning things that you need to know on a need-to-know basis.

      Otherwise, you’re just stonewalling yourself which will ultimately hinder you as new things come available (and new young’ns come up and try to take our jobs ;)).

  4. I pre-agreed with you to the point that I called my little agency ‘Pragmatic’ :)

    Pragmatism is also a luxury of experience though: starting out I remember dealing with new technologies all the time to try to meet clients’ business requirements. Once I’d developed a general purpose toolkit (WP + plugins + theme dev) then the cost/benefit of exploring new technologies swung towards proven methodologies and solutions.

    Anyway, nice post.

    • I pre-agreed with you to the point that I called my little agency ‘Pragmatic’

      I don’t know if you’re a psychic or a ripoff, but I like the latter so I can get some royalties ;).

      But seriously, I think you hit the nail on the head:

      Once I’d developed a general purpose toolkit (WP + plugins + theme dev) then the cost/benefit of exploring new technologies swung towards proven methodologies and solutions.

      It’s on that need-to-know basis. You can always pick up something new, right? But you’ve gotta get established with a deep knowledge before skipping along and doing more.

Leave a Reply