3 ms·
We're working on a project that was inherited from previous engineers with no crossover. The first thing we did was write an end-to-end integration test suite f
by bvirb 4y ago
We're working on a project that was inherited from previous engineers with no crossover. The first thing we did was write an end-to-end integration test suite for all the features we could find, which has grown more comprehensive over time. We still have old code we know is working alongside newer code written in a completely different style. We've been able to make major changes in tools and conventions over time while keeping progress steady. While we'd love to clean up all the code and have a single set of the latest conventions the decision is always refactor it now or maybe punt and we'll get to just delete it later, we usually go for the latter.
I think the biggest benefit has been that the tests are isolated from the implementation details so we can always be sure everything is still working without having to refactor the tests themselves.
There is still a learning curve for new people because they don't know which of the multiple conventions in the code are the presently-agreed-upon ones, and that is where we could probably use some better documentation, but I think the end-to-end tests really saved us from the idea that some knowledge is lost and we might need to start over.
- yashap 4y agoYeah, zero doubt investing in robust, automated E2E tests in that situation is key. I’d also add: - Get the “change engine” running smoothly (productive and reliable local dev environment, reasonably fast/reliable build/deploy jobs) - Get people understanding, documenting, and teaching others the high level functionality and architecture If you skip those steps, and hop straight to new features, you’re just asking for regressions, outages, poor architecture/design decisions, and just a very slow pace of work. But invest in those 3 up front and you can get to a point where you’re evolving the product well, with few regressions, at a good pace, even without vets to teach the newbies.