4 ms·
Agreed. We are wrapping up the rewrite of a CRM and man-oh-man has it been long. Two years in the making due to being taken on and off, on and off, and yet agai
by systematical 8y ago
Agreed. We are wrapping up the rewrite of a CRM and man-oh-man has it been long. Two years in the making due to being taken on and off, on and off, and yet again on and off the project. Looking back. I wish I had either just rewritten the existing system, piece by piece at a time, or at least starting moving pieces one-by-one out via micro-services to a new backend. The front-end then could've been completed in a smaller rebuild.
Regardless, had we gone with a strangler approach, we probably would've been done months ago. As it stands, there is at least another week or two of development via QA break/fixing until its ready to go live.
With that said, I still think there are times when a full rewrite makes sense. We redid our API two years ago when it was still small and I am happy we did the full rewrite. The old architecture just wouldn't have been able to scale with where we are now and I felt the code was just too far gone to be helped.
As always, life is full of learning experiences.
- selestify 8y agoWhen would you do a rewrite instead of a strangler?
- projektfu 8y agoI personally have worked on successful rewrites when the existing system was actually broken. Maybe it worked enough to get most work done but there are manual steps to keep it from falling apart completely. Development has gone off the rails. The rewrite can be a winner that constantly delivers useful functionality.
- segmondy 8y agoSame creators realized immediately after building that they can build better and are given the opportunity to rewrite.
- deleted 8y ago[deleted]
- taneq 8y agoI'd guess the risk of the strangler pattern is that the new code ends up being largely the same 'shape' as the original?
- vendiddy 8y agoIf there is high level of coupling within a system it will be difficult to contain the rewrite to a single subsystem. In this case, it may make sense to rewrite. Alternatively, you can gradually remove unnecessary coupling before applying the strangler pattern, but this can be a longer path. The related principle here is to ensure you have good boundaries in your application with minimal dependencies between each system so it's easy to rewrite portions of your app. Here is a talk on this: https://vimeo.com/108441214 https://vimeo.com/108441214
- singingfish 8y agoThere's a similar thing I try to encourage. For any new project/component you should do it three times. First time to get it wrong. Second time to learn from your mistakes and get it less wrong. Third time to try to ensure that all subsequent mistakes can be gracefully recovered from. When given a new piece of work I find stage one tends to be my planning stage.
- marton78 8y agoThis is similar to the advice about building houses: they first house you ever build you should build for an enemy, the second for a friend and the third for yourself.
- systematical 8y agoI love this saying.