3 ms·
I've been programming now for 19 years. The most important thing I've learned is to really, really, really understand the business and problem I'm solving befo
by danielvf 9y ago
I've been programming now for 19 years.
The most important thing I've learned is to really, really, really understand the business and problem I'm solving before starting.
I've taken a three processor core, hand tuned assembly language system and rewriten it so that it used only one core and performed 10,000 times better for the customer's metric. This was because I understood the actual problem better than the previous developers.
I've won an online stock trading competition with a bot written in PHP. Again, not because of magical programming skills, but because I understood the problem better than the other competitors.
-
Miyamoto Musashi, the most famous swordsman in Japan, faced a never ending stream of warriors showing up to his isolated house to fight him for bragging rights. When a warrior showed up and challenged him to a dual, Musashi would go chop down a young tree, remove the branches and fight with that stick/tree instead of a sword. He never lost a fight.
When I first heard this story, I just thought Musashi was doing this to shame his opponents. Swords are all about cutting and being light for speed and maneuverability. A wet piece of wood is an absolutely terrible sword.
I realized today that there was more going on in this story. Japanese swordsmiths didn't know how to make a lot of high quality steel. In the end, most of a Samurai sword was essentially cast iron, and could shatter with single poor blow. Almost the entire Japanese sword art was built around not breaking your sword. But Musashi could ignore all of this and so could attack, defend, and move more efficiently. It's true that a wet piece of wood was a terrible sword, but it could do boatloads of things that a sword could not do.
I used to regard all programming languages as fitting somewhere along a single line of "goodness". Now I realize that the right programming language for project is not about the programming language, but about what best fits the project and the team.
And just like a Real Programmer can write Fortran in any language, you can write clean beautiful code in any language, but this code has to play to the strengths of the language and avoid the language's weaknesses.