In a perfect world I could keep track of what my code touches and the effect my decisions have on others, but I can't.
Just like playing chess, the human mind can only track so many steps down the different choice paths that at some point you just have choose a path and go and sometime you may never know.
Choosing a new tools set for development is not unlike that. An engineer may make their best guess, the it must be understood that it is just a guess that may be driven by 1) knowledge, 2) desire or 3 ) whatever. There will always be side effects.
A classic case of side effects is (as it turns out) from a chemical engineer from the middle 1900's. He had the dubious distinction of solving 2 very complex problems that turned out to have extremely serious side effects decades later. He solved the knocking of gasoline engines by introducing lead into the fuel and also of using freon as a refrigerant. Great solutions with worse side effects. Thomas Midgley. Jr.
Our choice of tools and projects are less profound, but side effects will always exists. Will the tool keep current, will a better tool kit come along (they always do), can the company find programmers willing to use it in 5 years? Ton's of issues and mostly guesses.
I'm always asked how long some bit of code or a feature will take. Most of the time I'm pretty good. But there are times where even the expectations are not known or are constantly shifting. In times like these it's "lets roll and see where we end up" is really the clearest path. Maybe.
Side effects will always exist and no planning, guessing, budgeting will account for all of them. It's what happens. So we don't try to sweep them under the rug. We just deal with them and do the best we can.
Just like playing chess, the human mind can only track so many steps down the different choice paths that at some point you just have choose a path and go and sometime you may never know.
Choosing a new tools set for development is not unlike that. An engineer may make their best guess, the it must be understood that it is just a guess that may be driven by 1) knowledge, 2) desire or 3 ) whatever. There will always be side effects.
A classic case of side effects is (as it turns out) from a chemical engineer from the middle 1900's. He had the dubious distinction of solving 2 very complex problems that turned out to have extremely serious side effects decades later. He solved the knocking of gasoline engines by introducing lead into the fuel and also of using freon as a refrigerant. Great solutions with worse side effects. Thomas Midgley. Jr.
Our choice of tools and projects are less profound, but side effects will always exists. Will the tool keep current, will a better tool kit come along (they always do), can the company find programmers willing to use it in 5 years? Ton's of issues and mostly guesses.
I'm always asked how long some bit of code or a feature will take. Most of the time I'm pretty good. But there are times where even the expectations are not known or are constantly shifting. In times like these it's "lets roll and see where we end up" is really the clearest path. Maybe.
Side effects will always exist and no planning, guessing, budgeting will account for all of them. It's what happens. So we don't try to sweep them under the rug. We just deal with them and do the best we can.
Comments
Post a Comment