The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.

And…

In any case, book learning alone won’t be enough. “Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter” says Eric Raymond, author of The New Hacker’s Dictionary.

I love my code, and love each of my projects and my development environment. While sleeping I alway dream about the code and Visual Studio! One day, a friend of mine asked me why I have hundreds of lines of old code commented, I told him that I don’t have the heart to kill them! In some projects I have whole code files commented!!!! I feel that my projects are my kids, I can’t let them go, and when it comes to deployment, I feel depression!

In a heavily loaded computer system, a steady stream of high-priority processes can prevent a low-priority process from ever getting resources. Generally, one of two things will happen. Either the process will eventually be run (at 2 A.M. Sunday, when the system is finally lightly loaded), or the computer system will eventually crash and lose all unfinished low-priority processes…. Rumor has it that, when they shut down the IBM 7094 at MIT in 1973, they found a low-priority process that had been submitted in 1967 and had not yet been run.

This is one of the powerful (and most funniest) illustrations on the abstraction (i.e. normalization) design of databases. It shows a simple diagram of a database where no abstraction was considered in its design.