title: Embedded systems worst practices?
body: <p>What would you consider "worst practices" to follow when developing an embedded system?</p>
  
  <p>Some of my ideas of what not to do are:</p>
  
  
  <li>Avoid abstracting the hardware layer, instead spreading hardware accesses throughout the code.</li>
  <li>Not having any type of emulation environment, having only the actual hardware to exe/cute on.</li>
  <li>Avoiding unit tests, perhaps due to the above two points</li>
  <li>Not developing the system in a layered structure, so that higher up layers could depend on lower layers functionality debugged and working</li>
  <li>Selecting hardware without considering the software & tools that will use it</li>
  <li>Using hardware designed for easy debugging, e.g. no test points, no debug LEDs, no JTAG etc.
  
  <p>I'm sure there are plenty of good ideas out there on what not to do, let's hear them! </p>