I still see tight hardware constraints now. Until '10 I was working at a company that made flash CF cards which used 8-bit processors. 32K of SRAM and 64K of code space with bank switching. Every clock cycled mattered. Hand coded division operations. 32-bit integers are a luxury. Even wrote some self modifying code for an inner loop that boosted performance by 25%. Nowadays that company is using ARM processors but you still hit constraints (usually memory) not seen on PCs and servers.