If a company has developed a framework for doing almost everything their business requires, but has following problems :
- With evolution and change of ownership the design has degraded. ( Absurd hierarchies )
- Is not up to date with latest trends in enterprise software development. (Data Sets!!)
- Too many dependent modules. ( Not interface based, code dependencies, tons of xsd etc )
- It take a new hire loads of time to catch up because the framework is private to the company.( Bad coding practices in past, lack of documentation, scattered business logic )
- Not using any well known libraries like (log4net/ CSLA / Spring.net / Drools )
How do you go about doing the following as a Sr. Dev :
- Convince higher ups the need of a revamp / re-design.
- Incremental re-design or continuous refactoring ? Best bet?
My biggest concern is how to explain the higher ups that there is a problem with the framework. A sound advice on incremental redesign vs continuous refactoring the framework would be nice too!
Unless you convince the management that maintaining and extending the current implementation is more expensive than reworking or redesigning it… you have less chances to do something “officially”.
The technical point of view is most of the time in conflict with business point of view. The technical guys try to make the clean, fancy solution. The business guys want to invest less in the technical fancyness, but to be efficient and have the investment returned.
So, if it is not yet the case of high maintenance costs… what you can do is to try to incrementally correct the problems. However, if it is about correcting architectural or higher level design problems… that is something that can’t go easy and might affect the entire system.
Changes can be dangerous, specially in case of an old system, with long history, poor design, etc. So refactoring/reworking might introduce new, undiscovered problems, so it is risky.