If you want to learn how to be a GREAT programmer, not just good enough to program an app application, but good enough to be GREAT, study machine language. Study 1s and 0s. Study the history of the computer, learn how to make an operating system, and Fortran, Cobol, Pascal, Lisp, C, C++, all the way through the modern languages of Python, etc.James Altucher, The Rich Employee