Tag Archives: tools

Do You Need to Learn a New Technology?

TL;DR: Yes.

Developers often ask me which language or tool they should use or learn. I have definite opinions on good and bad tools for various tasks, but the most important tip is to continue learning new technologies. This gives you joy in your life, prevents burnout, and provides a platform when the time comes to move on from your current technology.

For your day job, you want a language that is stable or increasing. It doesn’t matter if it is outside the top ten in rankings like the TIOBE index. For example, Oracle’s proprietary PL/SQL database language has been hovering around place number 20 for many years, and PL/SQL programmers are not likely to be out of a job anytime soon.

But you still need to continually add to your skill set. People who keep doing the same thing lose the joy and wonder of making something work, which is often what got them started in IT in the first place. To prevent burnout, carve out time to work on something new every week.

Don’t expect your employer to give you this time. In some organizations, you might be able to use allocated training time to learn something on your own, but even Google’s famous “20% time” for side projects is 20% on top of the 100% you already work.

You should be grateful you have the privilege to work in IT. To keep that privilege, you should invest time in yourself and your life.

This is an excerpt from the monthly Spiritual Programmer newsletter. Don’t miss the next issue, sign up here

Do You Know It All?

Last week’s Technology That Fits newsletter (sign up here) stimulated some interesting discussions. I showed the following graphic:

Doomed Projects

Everybody agreed that projects that choose good tools for good reasons are good, and projects that choose bad tools for bad reasons are bad. But some disagreed on Learning and Lucky categories above.

I call projects that choose good tools for bad reasons “lucky”. They are CMMI level 1 – sometimes they succeed, sometimes they fail, and they never get any wiser. I’m not recommending you accept that as a satisfactory state of affairs, but for an individual project, being lucky is enough to pull off a success.

Projects that seem to have good process but make tool choices you disagree on are “Learning” projects. Some people will walk out or loudly complain if their favorite tool is not used. I find that to be a narrow-minded approach. If clever people have chosen a different approach from you, it means you have an opportunity to learn. Don’t think only you have all the answers.

Toolmaking

My carpenter has been putting in a new floor in a room in my house, and I noticed that he makes some of his tools as he goes along.

It’s not that he doesn’t have a hammer and a cordless electric screwdriver. But every once in a while, he needs to move, align or support something in a way that his standard tools do not support. So he immediately builds an ad-hoc tool out of scrap wood.

The need for custom tools has been recognized since Fred Brooks wrote about having a specialized toolmaker on the team in The Mythical Man-Month: Essays on Software Engineering in 1975.

Today, you still need to be able to build your own ad-hoc tools. Even if you consider yourself a “pure” Java programmer, make sure you know a few helpful additional technologies like Perl, Python or Regular Expressions.