Temptation of a new software

How not to master anything

The software landscape

Everyday there are new applications being created. New tools which help us, the programmers do our job. They promise to make the hardest part of programming little bit easier. They promise to empower us to build more complex software. They promise us to make it more enjoyable.

Only thing required to reap those benefits is to learn the new tool. Go through the “Getting started” document or through “Tutorial” or two and you will be on your way to improved productivity.

It’s easy to learn new technology

Every programmer I know takes pride on being able to quickly learn things. Couple days and any new piece of technology will become familiar and instantly applicable for work at hand.

One of the reasons is learning anything new is fun. The documentation paints all the possibilities of new things which can be build.

It’s also easy. Following set of instructions gives a feeling of acomplishement, of achiving something substantial. We can finish something in an afternoon and think we didn’t waste any time.

Be an expert

But just reading documentation and going through the tutorials is not enough to really master the technology. It seems that’s the only thing which is needed.

Real expertise comes from hours and hours of working with a given technology, long past the time when most people are willing to stick with it. It requires patience and committement, something which current culture is lacking. We are trained to always look for the next shiny thing.

Advantages of mastering a technology

Mastering given piece of technology, learning all of its advantages and dissadvantages, gives you ability to fully utilize it. It becomes like a very well fitting piece of equipement which you can use intuitively.

Once you don’t have to think consciously about the tool usage you can focus on building those amazing things you always wanted. Your solutions will become more fitting with the tools. You will free your creativity to work on the really hard problems, and not on fighting with the tools.

Summary

It’s very easy to get trapped into always learning the next library/framework/language. The process of going through a tutorial or intrudction documentation gives us false sense of achievemnt. Instead what we should be doing is to focus on mastering several tools very well, and use that to build amazing things.