A couple of weeks ago, Basecamp (previously 37signals) wrote a great blog post part in which the topic of legacy applications as well as using latest and greatest technology were discussed.

In programming, there is often an obsession with using the latest and greatest technology. Programmers view the use of edge technology as its own badge of honor, and are quick to throw away legacy applications.

I’ve talked about this in previous posts before – it’s why I’m a fan of going deep rather than wide when it comes to working with certain languages and tools – but it doesn’t mean I don’t struggle with the desire to pick up something new every now and then.

Long Live The Latest and Greatest

Sometimes, I think we convince ourselves of one of the following things:

  • We should go deep in a set of tools and languages so we can become an expert in a field.
  • We need to keep up with the latest and greatest technology so we can bring the most value into whatever job we’re doing.

Or maybe we convince ourselves of both at the same time. We’re really good doing things like that, aren’t we?

Latest and Greatest

I don’t think they’re necessarily mutually exclusive, though. I mean, there are definitely JavaScript technologies I could learn and bring into my WordPress development just like many of us did with LESS or Sass years ago.

But if I aim to learn something like Swift along side what I’m already doing, I have to take into the consideration the ramifications it may have on my current career. That is, if I want to be the best I can possibly be at providing WordPress-based solutions for other people, does it make sense to learn a new language?

The usual argument for things like this is:

“Yes! It helps you think in others ways outside of the terms with which you’ve traditionally worked.”

Over the course of my career and working with several languages though, it seems to be many of the same programming principles apply regardless of the language.

In fact, I’d say the language becomes the easiest thing to learn – the syntax, the keywords, and so on – but applying solid software development practices to solve problems transcends whatever tools and languages we opt to use, don’t they? Or maybe not?

Ultimately, my point is developers are often like moths attracted to a light in the dark when a new piece of technology is released. I know I used to be that way and, to be honest, I still fight those urges. Sometimes I win, sometimes I don’t.

But I also know what’s a stake for me is far greater than it was at one point. Aside from finding myself continually learning more about the craft of development through building solutions for others, I’m also sitting at the intersection of really loving my job.

Can I build an iPhone application? No. Would I like to know how? Maybe. Would it serve a purpose other than simply knowing how to do so? Not at this point in my career. Maybe eventually, though.

So yeah, the struggle is real: I’d love to continue to be able to learn new languages and work with new devices and things like that. But I also really enjoy what I do and the things with which I get to work.

And when it comes to advancing my career in terms of solving problems, I’d rather be able to have a wide array of ways to approach a problem with a given set of tools than a narrow set of ways to solve a problem with a variety of tools.