- Referred to in software development as “the root of all evil”, premature optimization is similar to scope creep, but with architectural decisions. It is optimization without full information. Say you wanted to build a system that allows you to keep track of how fast your dog runs - it takes distance between the dog’s legs, and how quickly they run 30 feet. Before we start building we then think “wouldn’t this be great if it worked for cats too?” Cats are harder to get to run, so we need to make the 30 feet a variable and do slightly different calculations. Then we say “but one day we might want this to work for humans,” so we need a different set of calculations for 2 legged creatures. This problem can play out on a much smaller level during software development, and can cause unnecessary drag. For example, this process takes 1 minute to run but we found a way to make it run in 4 seconds! However, the function only runs once a week - it’s not worth it the time (or money) it will take to make it run in 4 seconds. In addition to causing initiatives to take longer, premature optimization can also introduce unneeded complexity into a system. Knowing when and why to optimize is why it is very important to have a strong software architect.