here is the truest thing about life as a programmer okay you start off right here this is mt stupid the reality is that if you don't believe that you are a good programmer you're never going to scale this mountain you're never going to take on problems that are probably outside of your skill range you're never going to attempt to do anything big because you're constantly second guessing yourself to be able to get into the mountain of being pretty good you have to go through mount stupid there is no shortcut you can't just sit there and think i'm too stupid to do anything and somehow just walk around this mountain you've got to make mistake after mistake because if you don't make a series of really bad decisions and learn from them you never gained the experience to become a decent programmer and if you'd never become a decent programmer you're never gonna make bigger mistakes to become a great programmer learning is just series of banking bad decisions and correcting them later on there is no book there is nothing that is going to cure you from making mistakes to learn so climb mount stupid because behind mount stupid is becoming a senior engineer