Eating Elephants
or Ramping up on large software projects
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
- Maintain Your Sense of Purpose
- Orient Yourself: construct a mental model
- Do the Work: mechanical tactics*
- Learning from Other People
- Write (a lot!)
- Bon Appetit!
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.