Learning a New and Unfamiliar Code Base
When starting a new job or contributing to open source, learning a new code base can be intimidating. Here's how you can jump in quickly.
Quick Jump:
Someone who took my Flask course recently e-mailed me asking if I could make a video on how to tackle learning a new code base and it just so happens I had to do that very recently so I made a video showing the process I use on 3 different apps.
# Gaining Insight on 3 Unfamiliar Code Bases (Video)
Timestamped Table of Contents
- 0:39 – In the real world, documentation isn’t always available
- 1:25 – Exploring 3 different web apps to gain insight on what they do
- 2:15 – Taking a look at a closed source Flask application
- 3:55 – Figuring out the tech stack of the application from the bottom up
- 6:32 – Getting an idea of what a web app does by looking at its URL routes
- 9:30 – Scoping out a project’s size on the command line in a few seconds
- 12:15 – Determining how an app is designed based on lines of code for file types
- 13:11 – Using prior experience and our new found knowledge to find out what to edit
- 14:05 – Looking at an open source Phoenix app (https://changelog.com) on GitHub
- 14:50 – One strategy for fixing a bug in an open source project
- 15:24 – Learning from open source projects to build your own web applications
- 16:40 – First steps to get familiar with an open source project’s code base
- 16:45 – Using GitHub’s UI to gain insights on an application’s code base
- 18:21 – Repeating most of what we did on the command line but on GitHub instead
- 20:21 – Copying features from an open source project into your project
- 21:05 – Tracing code on a need to know basis
- 23:08 – Making your first pull request on an open source project
- 25:07 – Not every pull request needs to be Earth shattering, small is ok
- 25:33 – You don’t need to be an expert or professional to contribute to a project
- 25:52 – Don’t under estimate small pull requests, always test your code!
- 27:18 – Looking at a Ruby on Rails open source project (https://dev.to) on GitHub
- 28:04 – Seeing what the dev.to code base is composed of
- 29:14 – Getting a list of routes, just like we did for the Flask app
- 29:51 – Exploring the routes at the code level (some web frameworks have this)
- 31:05 – Repeating what we did previously to find the dev.to tech stack
- 31:25 – Finding hints of a linting tool being used is a very good sign for code quality
- 32:02 – Tests are a great way to see how things work under the hood
- 33:09 – Going back to dev.to’s tech stack
- 34:33 – Use everything together and your task at hand to determine what to do next
- 35:35 – Oh yeah! Don’t forget to check a project’s list of package dependencies
Reference Links
- Build a SAAS app with Flask course: https://buildasaasappwithflask.com
- Dive into Docker course: https://diveintodocker.com
- Changelog Website: https://changelog.com
- Changelog on GitHub: https://github.com/thechangelog/changelog.com
- Dev.to Website: https://dev.to
- Dev.to on GitHub: https://github.com/thepracticaldev/dev.to
How do you tackle learning a new code base? Let me know below.