How To Become A Better Programmer.

This is a complete guide on how to become a better programmer based on personal experience and research.

A Better Programmer

For me programming is more than a job. I believe you should have passion for coding. Sometimes tools and languages don't matter as much as the fact that you are doing it with love. You must enjoy your day to day.

Programming skill levels:

It's difficult to say where is the border between different levels and it will differ per language.

Basic  Can work with basic understanding of the code. Can do cosmetic modification on working programs under tutor. Fully dependent on other people. Read more 
Advanced  Asking questions and using external referrences. Having good understanding of what the code is doing. Still needs help and validation. Read more 
Expert  Can program without external help. Ask good questions onStack Overflow and do research before to ask. Read more 
Master  Knows the details for the framework and the language. Able to solve problems alone. He can validate code of the other people. Read more 
Grand Master  Can create a language or a tool used by many others. Designing complex systems which work flawlessly. Read more 

You can start by improving your skills in several areas:


Read books:

Patterns of Enterprise Application Architecture: Martin Fowler: 8601300201672: Amazon.com: Books

Domain-Driven Design: Tackling Complexity in the Heart of Software: Eric Evans: 8601300201665: Amazon.com: Books

Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series): Robert C. Martin: 9780134494166: Amazon.com: Books

Introduction to Algorithms, 3rd Edition (MIT Press): Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: 9780262033848: Amazon.com: Books