Effective versus efficient code
- by Todd Williamson
TL;DR: Quick and dirty code, or "correct" (insert your definition of this term) code?
There is often a tension between "efficient" and "effective" in software development.
"Efficient" often means code that is "correct" from the point of view of adhering to standards, using widely-accepted patterns/approaches for structures, regardless of project size, budget, etc. "Effective" is not about being "right", but about getting things done. This often results in code that falls outside the bounds of commonly accepted "correct" standards, usage, etc.
Usually the people paying for the development effort have dictated ahead of time what it is that they value more. An organization that lives in a technical space will tend towards the efficient end, others will tend towards the effective.
Developers often refuse to compromise their favored approach for the other. In my own experience I have found that people with formal education in software development tend towards the Efficient camp. Those that picked up software development more or less as a tool to get things done tend towards the Effective camp. These camps don't get along very well. When managing a team of developers who are not all in one camp it is challenging.
In your own experience, which camp do you land in, and do you find yourself having to justify your approach to others? To management? To other developers?