Global Optimization

December 30, 2017

The software development process itself can be described as a global optimization problem. When we have questions about where we should be spending our time, or what practices we should follow, we need only to think about where we would realize the most value to determine what to focus on.

This is similar to how we would optimize a part of the system, or a piece of code. First, identify the slowest part or the bottleneck. Next, determine what the best recourse to take is, and subsequently implement. This could be to use a different algorithm, trade time for space, or make a different set of trade-offs to help make the improvement.

Taking a step back and applying this to software development itself, we need to first find where we have the biggest gap to reaching our goals, and work on addressing that in particular. At this point, looking to best practices or various tactics could prove useful to help with the task at hand. But, the circumstances surrounding the details are typically more important than other factors.

This is a simple perspective to take, but one that often isn't taken. Typically time is our resource, and thinking about the problem from an optimization lens can be an effective way to determine the best way to spend it.