So I’ve worked in a few places and everywhere I go there are insufficient unit tests, poor and outdated documentation, insufficiently enforced coding style... in other words we hack, a lot. Then I hear of companies driving their engineers to 10-16 hour work day. This is insane as code quality really suffers. There are many software engineers but very very few who can write safe and maintainable code consistently. This is ok in online ads and social networks. But can we really execute systems like self driving cars safely? We talk about things today that really have to work, how do we snap out of hacker mentality?
Hardware companies (I consider self driving a hardware thing) have different standard, and no matter how much you unit test you still have to stress it in real life for long duration to stabilize things. There are reasons why certain practices are used for these hard real-time, fault tolerant systems: No recursive calls Static and global variables Design for worst case instead of average performance Limp mode Bare metal or at most RTOS No runtime resource allocation, hard code them from init on Redundant components
The biggest difference is "no move fast and break things" and "it's not ok to fill up your memory with memoized results"
This is the single biggest reason Google can succeed faster and longer in moonshots than others. They really care about the health of their code
Right... show me one person who has been promoted in Google for making code healthier :)
Not everything is about promotions. Do you just work out to look good or are there other benefits too?