I'm working on a medium-scale software firm and my current project is on a government agency. This agency's scope is nationwide and we are creating automated system for them.
Because of the large-size nature of the project, it is divided to 12 major phases, and aside from this reason, the project is divided because of bidding purposes (e.g. It is not always that the same company will be hired in every phases)
Here is the main problem: We won on the bidding of the first phase. Now part of the contract is to
- Make full and proper documentation of the system, and;
- Code the system on a way that future system can be easily integrated on it, and can be easily maintained.
After some time, we again won the second bidding and that is when I was hired. Now while team members introduce me to the system and to my specific task, I observed that cannot easily "dive" to the previous delivered system because:
- The documentation that is the end-product of phase 1 is not that comprehensive
- The codes (made also from the previous phase) are not that well-designed (e.g. Does not follow clean coding; no centralized convention; does not follow OOP principles etc. other technical stuff.
I asked my far more experienced coworker on this and we are on the same position and because of this unanimous decision, I want to suggest a redo and perform a complete overhaul before actually starting the real task of the 2nd phase. How can I tell suggest my manager / company head that smoothly? This problem is not in any way to affect this government agency since the system is already live and functional. Though maybe for now the problem is not that evident, but what about if the project is on its 6th phase onward? What if the company that handles the project then will have difficulty on progressing?
I'm considering these factor on how should I construct my suggestions and give it to my superiors:
They might think that the first phase of the project is [not so] total waste (in the long-term perspective)
"I can't believe how this product quality passed"
and might even put all the blame to the previous project manager, which is by the way my friend.
The coding is not that "continuity"-friendly, and I'm very anxious [and actually not proud] if a developer from a different company see our codes and really might do bad for our reputation like:
"I wonder how programmer of Company X create applications like this?"
(Trust me, the codes are really messy and maybe this is harsh, but my coworkers says that it does not meet the "industrial-level")
- Though I can also easily quantify why (as detailed and objective as possible), I don't know how not to give them a "The previous delivered system is of bad quality and as the management you should feel bad on allowing this" vibe.
My manager and CEO are very friendly and kind (They do fist bumps to us employees every now and then- that kind of friendly) but they are also very emotional. I don't think they will approve this suggestion that easily.