Joining a New Project

 

My process for owning a new project or becoming an expert on an unfamiliar platform:

  1. When you first start, write down everything anyone has told you about the project or platform in a quip or google doc. Write down a basic explanation you would give to a friend elsewhere in the org.
  2. Get a point of contact about the project and have a 30 minute sync-up. Ask them to confirm that your explanation is correct. Ask for every existing document and codebase on the project, and especially videos. Ask them to add the links to your google doc.
  3. Explore the links that you have. Write down a brief summary of each resource in your document. Videos are usually the most important as they contain a lot more information than the author intends, and that info is very helpful to beginners (i.e. where do go when navigating a codebase, how to call APIs, website format, etc.).
  4. For codebases, write down all the APIs. If you don't understand what they do, guess. Call your point of contact for another 30 minute chat. Ask your point of contact if your explanations are right. It's much easier for a point of contact to correct someone who is slightly wrong than it is to write an explanation from scratch.
  5. Ask your point of contact which APIs matter the most and do a deep dive on each one. Keep going until you find the hard-working most important code for that API. Write down all the classes you found along the way and what they do. Add more links to your document.
  6. Remember, above all, that you should ask every question you need help on. It's okay to ask questions you're embarrassed that you don't know the answer to. In fact, you should try to ask them first because they're usually foundational and important.

If this is an existing service or codebase:

  1. Set up the existing code in your IDE.
  2. Get everything working for running the server locally and running integration tests. You'll probably need to talk to your point of contact to do this. After you do this, boot up your server and run the integration tests.
  3. Set up the debugger and try running unit tests from your IDE. Debugger access and running UTs from your IDE will save you a lot of time.
  4. Use the UTs on important classes to figure out what they do and how they work.
  5. You can also debug when doing ITs -- this will give you an end-to-end understanding of a codebase.

Finally:

  1. Ask for a task that will help you get a good introduction to the platform or project. Preferably, it should be small and interact with a fairly important API. From then on, it's mostly about repeating the above steps with more knowledge to build off of and with more detail.
  2. Make your documentation available to other people who will work on this project in the future.

Comments

Popular posts from this blog

Using Kanban Boards to Stay Organized and to Stay Motivated

Low Level Design Part 1: Reading and Gathering Information

Low Level Design Part 3: Estimates