“You can get anything you want in life if you help enough other people get what they want.”

When I started my career as a software developer, I wanted to be the best developer I can be. I thought the way to go about that was by learning a lot. Hence I would learn everything about the programming languages I was working with.

I would read all famous tech blogs. I would catch up on hacker news front page. I would Google “must read books for software developers”, download the books, start reading them and would lose interest halfway through. I would participate in language, editor and framework wars online with so much enthusiasm.

Whatever was the hot topic among the developers, I wanted to learn it. Big data, HTML 5, Clojure, R, Javascript frameworks, TDD. Once I learnt the modern frameworks I would loathe the decade old tools that I would have had to use at work. I would have conversations with colleagues on how a new piece of technology, I read about, would be perfect to use for our next product or service.

Though all this made me knowlegable overall, when it came to actual work, I alternated between days of good productivity and days of barely getting anything done. I was not having any impact on business growth. i.e. if I was fired, growth wouldn’t have varied.

After 3 and a half years in the industry, I now realise I set the wrong goal. I can be the best developer in the world but it will be of no use if I am not having any impact on business growth.

Recently I have reset my goal to be the developer that contributes the most towards business growth. So how can you be that developer. Simple. You help accelerate the business growth by shipping faster.

The first step is to know the product really well. Know all the specifications. Know all the edge cases. Know what happens when that button is clicked. Know how the system handles that invalid input. Learn the core data models and their relationships between them. You should also have some idea on how people use the product and what’s the most used feature.

Coming to the code, treat your codebase as a set of libraries. Learn their APIs. Learn their side-effects. Learn how failures propagate between them. Learn the art of crafting better code from software engineering classcis like code complete, clean code.

Finally, keep up with the new releases, features and deprecations of the libraries(rails, django, devise, ember, etc) that are crucial to your product.

When you know all these things too well, you won’t be surprised or making guesses when reading code. You won’t get blocked when you are working on something. Blockages are worse when you have to depend on someone else in your team or your PM to resolve it.

You might be wondering, isn’t this what we all do everyday at work. But what I am insisting here is, set aside separate time specifically for the above tasks. It is when you sharpen that axe. Once that axe is sharp, you will be shipping features so fast and have all the time to read everything on the hacker news and reddit frontpages and also contribute to open source.

When you take all the time you spend online reading random stuff, the stuff you think will make you a better software developer, and use it to understand your product and code base, I promise you, you will start having the best impact you can have as a developer.

To put is shortly, be useful.