I've been reading Jack G. Ganssle's "The Art of Designing Embedded Systems", which has attracted a few negative reviews because it talks more about the philosophy of general development than embedded systems. To me, this makes the book a lot more interesting and enjoyable. There are a few great quotes that I've come across so far (including the title of this post, in which he discusses the difference between a 6month newbie, and tenured 10 year veteran; turns out there isn't always a difference).
Here are a few that I think are particularly pithy.
- We jump from design to building too fast. Whether it's writing code or drawing circuits, the temptation to be doing rather than thinking inevitably creates disaster.
- The customer's delight with our product is the ultimate and only important measure of quality.
- Initial (ad hoc and chaotic)
- Repeatable (intuitive)
- Defined (standard and consistent)
- Managed (predictable)
- Optimising (characterised by CI)
and then he notes the pessimistic (but unfortunately resonating) additions of U.S. Air Force Captiain Tom Schorsch:
- Negligent (indifference)
-1. Obstructive (counterproductive)
-2. Contemptuous (arrogance)
-3. Undermining (sabotage)
The next one is something that I've cursed myself for many times:
Source code has two equally important functions: it must work, and it must clear communicate how it works to a future programmer, or to the future version of yourself.
This is just the start; there are many other interesting gems in this book, and if you get the chance, I'd recommend giving it a read!