Many active organizations are alive and constantly changing. With some recent changes my team will be taking over a project from my Parisian counterparts.
This project started as an internal project ~4 years ago. It has evolved and grown to be a very successful endeaver. As one of the developers leading the adoption of this new feature I found several techniques that worked well in ramping up quickly and efficiently.
Whether you’re taking on a pile of spaghetti code that barely runs, a well structured and cared for product, or even an old weathered beast that will probably outlast your career some strategy at navigating these new (to you) waters can make all the difference.
Start with tests
Hopefully your new project has some tests you can review to gather the intentions your ancestral developers. Add some of your own tests. The process of adding tests and debugging the code your testing lets you break the code base into manageable chunks. It may even give you the opportunity to refactor a little bit. Lastly, make the tests easy to run. Everytime you save, run the tests!
Working your way through the code base, when you hit chunks of code that doesn’t immediately make sense, add some comments. If possible turn those comments into executable assertions. These don’t necessarily need to be submitted.
Review the functions and make some changes. Can this function be converted to a pure function? Do it! Reducing a function to a simple, reusable chunk will remove a significant amount of bugs that would be difficult to tackle down the road. Remove unused code, it will always be accessible in the source control history.
This is where you make things better for yourself going forward. Setup continuous integration. Add more tests, build checks, code format checks. Standardize these things. It will put your entire team on the same page and keep things clean and simple. Don’t waste time arguing about format, pick one.
Rinse & Repeat
This isn’t a one time process, you can repeat lots of these steps over different sections. Continue until each section makes sense or has been broken down to a level that is consumeable.