If you aspire to become a rockstar engineer then understand that doing a good job everyday is not good enough, just doing more work is not good enough either.

To become better you need to improve over time. But how does one actually make this transformation?

The single most important thing for becoming better at anything is to make a personal commitment to learn and improve.

Without this important first step you’re almost always looking to blame something other than yourself, you are also quick to give up in the face of slow progress. On the other hand almost magical things happen when you do make up your mind.

Whatever the mind can conceive and believe, it can achieve. — Napoleon Hill

Work on building that resolve first and when you’re ready; here are some ideas that will help you become a rockstar engineer:

Read books and other publications

Books are probably the greatest source of information and tactics you need to get better. Picking any book in your domain will help you improve. You are not looking for a solution for a particular problem, instead just go through it with an open mind and see what the author has to say.

Here are some recommendations if you haven’t read them already. The Pragmatic Programmer, The Mythical Man Month, Clean Code, Design Patterns, The Art of Computer Programming. Google’s site reliability handbook, Netflix Engineering Blog, Airbnb Engineering Blog.

Attend talks, courses and seminars

Its not the amount of information, whats really useful here is that they help you keep on track, any new stuff you learn is then just a bonus. It also provides an opportunity to network with others which leads to the next point.

Network with high achievers

Clearly you are not the first person to crack this problem, reach out to others who are better at something you want to excel, ask questions, pick their brain, tell them you are looking for help. Be humble and inquisitive and you position yourself to gain from others.

Isolation will kill ambition faster than bad ideas.

Code in your free time

Working on side projects is probably the best way to improve your coding skills. Finding something meaningful can be challenging though. Take your time.

One option is to build a custom library, keep it maintained and ask for feedback. Alternatively, contribute to other open source projects.

Hackathons are another great way to hone your “programming under pressure” skill.

The idea is to work on coding problems outside of your work.

Roll your own server

Even if you are not a server engineer, setting up and managing your own server can be rewarding. Services like Digital Ocean let you have one for $5 per month these days so cost should not be an issue.

Securing a server is a great way to learn. You can host your resume there, setup your own email or write-up a small web app of your choosing.

Having basic shell and Linux skills are a must have, even for non-programmers.

Learn to deal with failures

If you want to increase your success rate, double your failure rate. — Thomas J. Watson

Your server was hacked on day two? You were the slowest programmer in the hackathon holding everyone back? Someone gave terrible feedback on your open source project? Asked an embarrassing question during a talk?

Give yourself some prep talk on how to deal with failures before you begin.

Track your progress

This is probably the most important thing, how do you really know that you are improving. It might be the number of technical skills you acquired, or the number of books read or meetups you’ve been to. Track anything you can think of and review it regularly.

Without tracking and seeing actual progress you’ll run out of steam faster than you know. Learn to understand your value and build on it. A rockstar engineer wasn’t born that way, they built it over time.