< expLog

Eating Elephants

or Ramping up on large software projects

elephants_intro.png

As a software engineer, you'll almost certainly ramp up on large projects: anything from massive proprietary software stacks to popular open source projects. This note covers the tricks I've accumulated over the years to onboard quickly*: mechanical programming tactics, recommendations on quickly building and refining your mental model, and strategies on learning effectively from others. *: To establish my own credentials: over the course of my career, I've switched stacks and domains several times as a professional engineer; from server side reliability to android to jupyter notebooks to ML tools, including deep dives into Pytorch.

To set expectations, a “large” project in this context means one where you cannot realistically expect to read all the code, particularly not in time to deliver anything meaningful with it. I should also warn you that there will be several bad puns along the way to make this post easier to digest.

And just in case you were wondering: no elephants—virtual, or otherwise—were harmed in the making of this post.

How do you eat an elephant? One bite at a time.

Index

Updates

  • 2023-06-04: Typeset in org mode and moved to the blog. You can still find the Google Doc here.
  • 2022-12-04: Added a small section on looking at the boundaries.
  • 2022-11-xx: Rewriting during Thanksgiving break: publishing as a google doc.
  • 2022-09-xx: Major reorganization, incorporating feedback.
  • 2022-08-21: Removing the "DRAFT" title, but I'd still like to continue editing and revising.