I recently watched Jiro Dreams of Sushi. It's a documentary on a 85 year old man named Jiro who has spent 75 years of his life learning to make sushi. He's addicted to his craft and has made his number one focus in life perfecting the art of making sushi.
Jiro lives a way of a shokunin which is
"defined by both Japanese and Japanese-English dictionaries as 'craftsman' or 'artisan,' but such a literal description does not fully express the deeper meaning. The Japanese apprentice is taught that shokunin means not only having technical skills, but also implies an attitude and social consciousness. ... The shokunin has a social obligation to work his/her best for the general welfare of the people. This obligation is both spiritual and material, in that no matter what it is, the shokunin's responsibility is to fulfill the requirement."- Tasio Odate
Jiro has simplified everything in his working environment from cooking techniques and tools. He his pure in his focus of only making the best sushi possible and does so with a team of 5-6 chefs under him.
If Jiro was a computer programmer instead of a sushi chef, what would be his techniques and tools to perfect the art of computer programming?
Here is a list I have so far:
-Text editor
-A programming language
-Databases
-Algorithms
-Math
-Debugging
-Tests
-Writing Documentation/Comments
I think Jiro-like programmers would similarly be distinguished by their mental attitudes, and not by their tool sets. For example, satisfying the customer - by creating code that's reliable, secure, easy to use and cost-effective - would be their most important goal. Their own satisfaction would be derived from fulfilling those goals, not from getting rich or using the latest trendy frameworks. (I have nothing against people who want to advance their careers or build billion-dollar companies, but that's not what Jiro is about. After all these years, he still has just his one hole-in-the-wall sushi bar.)