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

  • The widening gap between CPU cycles and memory latency changes the definition of “efficient” as hardware changes with time but the software does not. A foo-sort may have been the fastest possible solution 5 years ago, but on new CPUs the code would be even faster if re-written with a bar-sort.
  • Measure and keep an eye on how long it takes to do a build. Keeping this efficient helps scale the organization.
  • To identify organizational policies that don’t scale well, imagine the work imposed on a single engineer but make the work 10x.
  • Not only should you automate things, but you should also allocate time to the planning of the optimization and scaling of work output
  • The “Churn Rule” is that if a team updates a widget, the team must also update all code that depends on the widget. This way a single team or group takes care of the widget upgrade, all dependent code is updated, and there is no need to engage the other users of the widget (could be dozens of other groups). This scales better than updating the widget and then asking all of the other teams to update their code.
  • The tradeoff for using development branches is that when a branch is merged all other teams must sync their efforts to the new, updated master. The more branches that are merged to master, the more catching up the teams have to do.
  • To scale knowledge use shared communications mediums. This in turn grows and produces more experts for your organization.
  • An engineer who is willing to answer questions for others helps to scale knowledge and work output.
  • Turn scale to your advantage by using automation (having a computer do more than a single human can do), expertise (fewer humans can do more), and consolidation/consistency (limits problem scope).
  • The more often you change and upgrade your infrastructure (compiler, libraries, etc) the easier it becomes.
  • The flexibility of a code base is influenced by the following factors: Conformity, stability, expertise, organizational policies, and familiarity
  • Stagnation is an option, but not often a wise one



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