Slower, and making the code touched by that change better. The only other approach I know of is to get buy in for shipping every change slightly One approach is just to say “every Friday goes to adding tests!” (And then when there’s some reasonable test coverage, make fridays go to refactoring that are easy with the new tests, and so on).īut this often fails because when Friday comes, something is on fire and management asks to please quickly squeeze this one thing in first. You don’t need to tell the team exactly how to fix it, but you gotta get buy-in for space to fix it. I fully agree with this, but I think it misses a key step:Īs the team’s manager, it’s your job to get buy-in from the executives to gradually fix the mess. So talk about how the team can improve it, and modernize their skills at the same time.īecause if you walk in, saying, "This all sucks, and so do you, lets throw it out", do you really have to wonder why you are hitting resistance? come in embracing that this beast of a codebase makes 20 million a year. Maybe they aren't doing what you would, but they are keeping this beast alive, and probably have invaluable knowledge of how to do so. Once you are at that point, start picking off pieces to modernize and improve.Īlso, respect the team. You can change code as long as the tests pass. You can delete code as long as the tests pass. If you have end-to-end tests that run through every feature that is currently used by your customer base, then you have a baseline to safely make changes. It doesn't work.īut before you re-write once line of code - get some testing in place. You will eventually have re-written all the code, but do not ever fall into the trap of a "full re-write". I know a full rewrite is necessary, but how to balance it?įirst off, no, a full rewrite is not only not necessary, but probably the worst possible approach. This business unit has a pretty aggressive roadmap as management and HQ has no real understanding of these blockers. The mess is just too huge to be able to build anything. productivity is abysmal which is understandable. no caching ( but there is memcached but only used for sessions. Just to get the menu items or list of products. In many places I see controllers like files making curl requests to its own rest API (via domain name, not localhost) doing oauth authorizations, etc. no MVC pattern of course, or whatever pattern. Multiple versions of jQuery fighting each other depending on which page you are or even on the same page. When adding a column, because of the volume of data, they add a new table with a join. the database structure is the same mess, no migrations, etc. I gather the reason for that is because it was developed on production directly and deleting things is too risky. the routing is managed exclusively as rewrites in NGInX ( the NGInX config is around 10,000 lines ) it doesn't use composer or any dependency management. it has been developed for 12 years directly on production with no source control ( hello index-new_2021-test-john_v2.php ) this code generates more than 20 million dollars a year of revenue I have to find a strategy to fix this development team without managing them directly.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |