Coding Horror, one of the many things on the internet that sucks away my time, had a story a few years back comparing software development to moving stones for a pyramid. The gist is that there’s a big stone block a distance from your building site and you have a deadline to get it there. Brute force says take the distance, divide by days, move it that much every day, which is great, but likely to result in unhappy slaves (meh) and non-reproducible results (ouch).
The lesson is that every day you need to move the stone at least one day closer to its eventual location or do work that increases your speed such that the moving stone can get there in one less day.
I think thus far in my development efforts my approach has mostly been of the brute force method, which kinda hurts. I do my best to quickly write code that gets the job done well, without any n factorial algorithms or similar badness, but ultimately my current problem is in those first few words “I do my best to quickly write code”. I’ve succeeded in the past based on the ability to solve small problems rapidly, but ultimately the more valuable skill is the ability to solve large problems early. It’s one of the reasons I really like being at Credera, so many of the senior people in the technology practices approach problems in methodical ways that I think I used to mistake for a lack of agility, but now recognize as using proven resources and techniques.
It’s silly to walk up to a hunk of marble and say “lets not use logs to roll this piece” because it’s not made of granite.