How do I become a better software developer?

Of late I began to answer questions on toster.ru, a Russian counterpart of stackoverflow.com, and stumbled upon a junior developer asking how he would improve his programming skills. As I have a lot to say on the matter, I dared to answer the question and my answer collected a number of likes in time and it seems to be useful for a broader audience than I initially thought.

So. Professional developers always improve their skills on a daily basis and never stand still. Any growth is based on doing real work, solving concrete problems and receiving feedback from others or as a result of reflection.

TL;DR: Read books, do real work, look into code written by others.

What can you do right now to become a better software developer? Every item deserves special, continuing attention and the best strategy here is to learn the very basics everywhere and then tackle each of them one by one.

Learn the background

Algorithms, networks, cryptography, architecture, OS, web browsers principles of operation, compilers and the like. Studying these topics gives you understanding what problems occur in the real world and how “top guns” solve them. It’s a fresh supply of insights.

Find a full-time job

I have a strong opinion that there’s only a single way of becoming a better developer: work in a company within a strong team on a single product. Such an approach teaches you to solve scaling and future maintenance problems, think beforehand, improve the process you follow in development, fine-tune your environment and plan your work according to external requirements. It’s also a great chance to cooperate with other specialists, internalize their experience and learn to settle disputes in a well-argued manner.

Write code for people, not for machines

Writing code, I would say, is not the biggest part of senior developer’s work. But when it comes to writing code, you should understand what you write and why. Despite the classical, there’re also modern books on writing good code, for example, “The Art of Readable Code” by Dustin Boswell which are extremely useful and which I highly recommend. You need books, you will never learn yourself what you can learn in books just because you won’t have time to carry out any thorough research. On interviews I always ask which books an interviewee read or reading and if the answer is negative, it’s a significant disadvantage.

Contribute to the open-source

You’ll have to face the thinking of other very different people and code they produce. This teaches you to read other’s code, find mistakes in it and also forms a critical and reasoned thinking. Open-source development as well as books gives you the experience you would never obtain yourself from people who are often more smart or experienced than you in something. By the way, comparing to the enterprise development, you’ll have a chance to enjoy writing high-quality code that business doesn’t always need.

Be patient

This won’t happen in a single day. Think about naming, separate concerns, study algorithms and the ecosystem, optimize your workplace, learn new technology, read articles, and you’ll obtain new thinking and start to develop maintainable and reliable software in the coming months. Unfortunately, there’s no easy way. And there’s a book that I recently read that teaches you how to learn by a famous grandmaster chess-player Josh Waitzkin: The Art of Learning, it structures your approach to learning a bit.

And one more thing. Programming isn’t boring, it’s challenging and fascinating and exciting, have fun and enjoy your time!