Doing More with Less!
For me, the real excitement in embedded system implementation is the intriguing fun of finding the right fix that gives a few more processor cycles, being excited to find that 8 bytes of memory leak, realizing that a few more milliseconds of deep sleep you brought in made your system design made it most efficient in the market!
Ultimately, optimization is an economics problem. This analogy does help in understanding the business side of a technical design. You start out with a list of resources associated with your system. The major ones are always Memory, RAM, processor cycles, code space and power consumption. The most liquid asset will be the development time and is always money.
And system's assets are somewhat replaceable. For instance, we can trade RAM for processor cycles or code space. Sometimes we might not trade anything, spending more development time will reduce the resource load.
Optimization starts with a good design, preferably one with a little extra overhead. Although there is always some fun in reducing resources as far as possible, you'll get diminishing returns. The first 10% of improvement shouldn't be too difficult, but next 10% will probably take twice as long.
Every situation and environment has its own constraints, including some combination of time, money, space and design. These constraints sharpen your imagination and enhance innovation. Even when you have an abundance of resources, it’s valuable to consider how you would tackle the same challenges without them.
These trade-offs we take in our system design defines what the unique factor in our design is, and end of the day, this constrained environment is what makes the beauty of Embedded systems!