> embedded/console/driver developers working on specific hardware need to care about
In other words, things that great engineers need to care about :)
I'm not an embedded developer, but to reiterate, I'm just advocating for a focus on performance if you aspire to be a great engineer. This is different than being a great businessperson, or a great software developer kit / library designer.
>In other words, things that great engineers need to care about :)
Really ? I feel like most cutting edge engineering is done in building distributed systems, ML, high performance computing, etc. Micro optimization is where it was last century.
>But, when you have to ship 50k IOT devices and they have to be under $20.
You're working on couple M $ project total ? Meanwhile a guy shaving off a % off performance in a FB data center saves them millions a year in power consumption alone.
But FB guys don't micro optimize (they use PHP FFS), they measure production systems and look for bottlenecks. Premature optimization is a gut feeling based guessing game not quality engineering.
FB engineer here; worked on HHVM for several years. We absolutely do "micro-optimize", e.g., our string hashing code is written in hand-tuned assembly.
Where we apply those optimizations is, of course, driven by profiling, so those statements aren't entirely in conflict.
Well they are in the context - the article talks about premature optimization - and the OP argues you should micro optimize to be a good engineer.
What I'm saying is the only way to do optimization correctly is by doing the things you and everyone else is doing when it matters - measure before and after - the rest is just assumptions that rarely pan out the way you expect them to - at least that's my experience with optimization when I was still doing game dev. You can really do micro optimization up-front
In other words, things that great engineers need to care about :)
I'm not an embedded developer, but to reiterate, I'm just advocating for a focus on performance if you aspire to be a great engineer. This is different than being a great businessperson, or a great software developer kit / library designer.