Muhammad Umair


I hated books. Especially programming books that I read during my undergrad studies. These books were so boring, lengthy, complex and did not contain any real value.

After my graduation, I tried to apply the concepts given in those books. They were not helpful. They were written for a ghost programmer. A programmer of a fantasy. A programmer who think there is clear separation(like a separate department) among requirements, design, development and deployment.

Unfortunately, this imaginary programmer does not exist in the real world.

On the other hand, I believe books are a great source of knowledge and insights. I always believed in books. But I was confused too. There were many great books available in other disciplines. Is there a problem in the software engineering world?

One day, I found a simple technique to find good programming books. This technique can help you find the best books available in any field. It’s so simple that I am feeling guilty while writing this. Why this idea did not pop into my mind earlier.

The trick is: use the Amazon Store Best-Sellers feature. That’s it. There are so many categories and you will find the top books available in any category.

I compile a list of 10 programming books. Bought them and start reading.

I was a junior developer. I was facing tremendous challenges. Many things that I learned during studies were not true. Books that I read during my under-grad were not very helpful.

But my list (developed from Amazon) contains awesome books. When I read from them, I shocked. How the hell the writer knows about me, my programming challenges and my daily routine. I read a page from these books, my reaction is always like: GO ON.

Some epic books in my list are: The Pragmatic Programmer, Code Complete and Refactoring.

So, what was the difference between the boring books I read during studies and these awesome books during my career.

First of all, they were written by those people who use programming for a living. They were not academics who wrote for academics. Although some of these authors are teachers too but all of them have real world programming experience.

Secondly, they shared their personal experiences and relate to the challenges that programmers face on daily basis.

Hence, I decided that I will learn from programmers. Period.

This insight change my attitude towards programming completely. I learned enormously after my graduation. I learned that running a program in a lab is hugely different then a program running in the field.

If you are a junior developer. You want to up your game. Take your programming to a new level. The first thing that I recommend for you is to understand a development process.

Secondly, learn object-oriented analysis and design. Why? Most of the language that you are using or will be using are object oriented(e.g Java or C#). If they are not OOP(lilke javascript) then believe me someone is working to make them object oriented.

Here is a free report that summarize one of my personal project. In this report I describe the software development process and object oriented design.

Click here to download the free report.

In this report I summarize my journey to learn the best programming concepts( and crush some of my old beliefs).

So, this is my story of learning the programming in a better way. I am sharing my experiences on this blog and I believe you will learn and importantly enjoy.