Software Engineering at Google Chapter #1 - What is Software Engineering? (3 of 3)

  • Finding problems earlier in the developer workflow will greatly reduce costs later
  • The timeline of software development moves left to right (concept -> design -> ... -> production). To “find problems by shifting left” means to find problems & defects earlier in the process so as to not waste time or hit impossible roadblocks in the future.
  • Bugs caught by code review and static analysis are much cheaper than bugs found in production.
  • “Because I said so”, “because everyone else does it this way”, and “just because” are where bad decisions live
  • Decisions should come down down to A) Are we doing this because we must (legal, customer requirements) or B) We are doing this because it’s the very best option based on current evidence
  • “Cost” can mean many different things depending on context (CPU, money, engineering effort, opportunity costs)
  • Jevons Paradox: Consumption of a resource may increase as a response to greater efficiency of its use. If you decrease build times by 50% people may start building more often because it’s faster.
  • Decisions are made with the best data available at the time. As data changes with time, these decisions should be revisited. Based on new evidence are we doing things in the best possible way?
  • Data driven decision making is the preferred method, however things that can’t be measured can still have value
  • Software is considered sustainable when it is able to change with time including changes such as the underlying libraries or operating system



Thank you for your time and attention.
Apply what you've learned here.
Enjoy it all.