Don't ask to ask, just ask | |
PerlMonks |
Re: Good programming practices and changes in requirements: how to maintain good codeby sundialsvc4 (Abbot) |
on Feb 11, 2015 at 20:14 UTC ( [id://1116388]=note: print w/replies, xml ) | Need Help?? |
In my experience, it is a business-process issue, and this is the biggest point that I stress in consulting/turnaround engagements. The project faltered, not because the programmers were incompetent nor because the requirement was impossible, but because of unstructured and undisciplined business process. Many people presume that software, because it “merely” consists of source-code files, is easy to change. Not so. Computer software is actually a frighteningly-complex machine that operates autonomously, and whose thousands of parts are all tightly coupled. Any change could break the whole ... and you are extremely fortunate if you realize that this has occurred. This means that the business process of managing the software ... of any changes to it or to its requirements ... must be formalized, and that formality must be adhered-to. You can’t simply get a cool idea in your head, walk into the “dungeon,” and order your programmers to stop whatever they’re doing and do it. The programmers, in their turn, can’t simply “make it all up as they go.” Change, itself, is seen to be business-risky no matter how large or how small it appears to be. Many companies now have a “change approval board,” or CAB, such that nothing may be done to any system (whether in production or in development) without the express approval of the Board, which reports to the CIO/CTO if s/he does not directly sit on it. Completed changes are reviewed to determine that they correspond to an approved change-order and that they change “nothing more and nothing less” than what is called-for. Programmers lose the autonomy, the power, and the discretion that they might be accustomed to. But, the programming environment is vastly improved. Good software process management also relies upon source-code control, a ticketing system, and the discipline to effectively use both. It relies paramount on clarity and effectiveness of human communication.
In Section
Meditations
|
|