Mastering is more than just knowing. It is knowing in a way that lightens your load.
If you’re worried that your current job is rotting your brain, it probably is.
The best way to learn is to be in the same room with people who are trying to achieve some goal using the skills you wish to learn.
“How long will it take to master aikido?” a prospective student asks. “How long do you expect to live?” is the only respectable response.
Expose Your Ignorance. Tomorrow I need to look stupider and feel better about it. This staying quiet and trying to guess what’s going on isn’t working so well.
Be the Worst. Be the lion’s tail rather than the fox’s head! Surround yourself with developers who are better than you. Find a stronger team where you are the weakest member and have room to grow.
Software development is composed of two primary activities: learning and communication.
We can all benefit by doing occasional “toy” programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit.
Software is not a product, it’s a medium for storing knowledge. Therefore, software development is not a product producing activity, it is a knowledge acquiring activity.
Sometimes the best tool for the job and the one you’re most familiar with are different. At those times, you have to decide if your productivity is more important than the team’s productivity.
Being a genius, lucky, rich, or famous doesn’t make you a master. These things aren’t essential to craftsmanship. Skill across all facets of software development and the ability to transmit that skill in ways that move the discipline forward are at the heart of the craft.