Naval’s epic tweetstorm about how to get rich reminded me of a favorite book, How To Get Rich by Felix Dennis. Also, Paul Graham’s essay, How To Make Wealth. Paul Graham himself chimed in on the tweets –
I agree with almost everything. The only thing I’d change is “If you can’t code [learn to].”
I learned how to code. Three pieces inspired me early and kept me going: the intro to Learn Python The Hard Way, How To Become A Hacker, and Teach Yourself Programming in Ten Years. I’m on about year seven but have put in many more hours than anyone who has a job and/or family could. If it takes 10,000 hours to be good at something, my odometer is approaching.
The best way to learn is to teach, second place goes to learning how to learn. I know how to learn to code. On one hand it is as simple as Paul Graham says, just learn to. As is often the case, simple is the opposite of easy.
The worst part of being a self-taught programmer is after learning something incredibly difficult, you realize how easy it is if only someone explained it better. It irrationally makes you wish the next newbie has to suffer as badly as you did – like hazing the next freshmen. Rationally, if it was taught as easily as it is, the profession wouldn’t be as lucrative. Constraining the supply of coders increases their price especially amongst a certain demographic (hints bro culture and diversity lip service).
Dealing with frustration is something you have to learn early. Your wit, charm, and threats mean nothing to a computer. It won’t do what you want by asking nicely. You have to do everything correctly; even to the last semi-colon. Otherwise your program won’t work, period. You’ll want to smash your keyboard and cry until the circuits break. You’ll think you are the dumbest person alive, and can’t, just can’t do it.
Then it works! Maybe after googling every combination of technical terms you don’t understand. Maybe after a walk or a nap. Maybe after a clean start on a new platform or new language. But it works, and after things work enough times, you realize you always get it to work, even if it takes six months.
Programming does change how you think. You’ll perhaps see real life in a new way, break down arguments into logical chunks, or even become more patient. I ended up drinking much less, hardly at all now because I’m hyper-tuned to how clear my mind is. I spend more time thinking and less time typing.
To make matters worse, to save a ton of time and headaches, you should target one type of development – web, mobile, data science, cloud, devops, database, systems, or security. To add insult to injury, learning to code for a job, to freelance, or to be an entrepreneur require totally different skills.
- Jobs want you to jump through difficult programming quizzes that have little to nothing to do with the actual job.
- Freelancing means you have to know what the client wants when they don’t know themselves, sell them on it, and complete the job quickly, happily, and profitably.
- Entrepreneurs have to do everything. I’ll leave it at that.
Even though all three types of professionals know how to code, I don’t know how to contribute to a large project and most employees don’t know how to make a complete app like Get QX. In theory, we could learn each other’s roles. But in practice, just learning something in programming might set you back months or years.
So why do it?
Power and freedom.
Can anyone learn how to code?
I say no, most people can’t. Not because they aren’t smart enough (you really don’t have to be very smart at all). No, because it takes too many hours and there are too many artificial barriers.
We need to give people more time, much better tutorials, and encouragement.
You can learn how to code and you should. Know what you are getting yourself into though and never stop even if ten years turn to twenty.