In programming there is a rule followed by all skilled programmers. "Premature optimization is the root of all evil."
Optimizing code is difficult and frequently makes code much harder to understand and is itself an extremely common source of bugs. Optimizing code takes extra time. You can't optimize everything and developers usually don't know what actually requires optimization. The 80/20 rule almost universally applies. 80% of your runtime will be spent in 20% of your code. 20% of your code will take 80% of your time to develop. So on and so on.
The question becomes, which 20% of your code will you optimize? If you pick poorly you may spend 80% of you time on code which only effects 5% of the runtime overhead. Which means we need to know because our gut is frequently wrong.
Code optimization, concurrency, and parallelism is some of my core background. This is where profiling comes into plays. You have to have it coded to profile it. If you can accurately test it, we can determine which 20% is taking your time. Which tells you where to start digging.
Sadly, in many cases, optimization doesn't always mean tweaking code, it frequently means rewriting algorithms or changing the algorithms used in the current implementation, which in turn can ripple out to every bit of code which uses the code requiring optimization.
Optimization can be expensive. While there is usually a lot of low hanging fruit to improve things, most coders these days don't really know anything about optimization because it frequently requires low level knowledge and understanding of CPUs, cache, compilers, assembly language, and so on. A small fraction of developers know this stuff anymore. Which means you frequently use your most experienced developers to optimize, pulling from other tasks and further increasing costs.
Which feeds into my previous snarky comment about project management. Historically your experienced developers had broad control of what they worked on. These days, with agile for idiots, everything must be accounted for. As a result, experienced developers spend much of their time fixing street shitter fuck ups, bugs, and pulling things together just so it will run without crashing. Which is why languages like c#, java, and python have become so popular. These languages generally make it harder to crash. Though far from impossible.
Great background. I appreciate it.
(post is archived)