There are many challenges associated with software maintenance that we have no control over. It is good to identify these to know what we are up against.
There may be a significant existing code base. This can make it hard to comprehend the big picture of the system. The system may span multiple software products. To compound this problem, there is almost always insufficient documentation if any.
The design can be hard to follow. Sometimes good initial intentions deteriorate over time. This is inevitable when somebody puts a patch on top of the patch of the patch. In the end, you not only have something that is hard to maintain. It can be nearly impossible to understand.
Use of the system may require live data. It may also require lots of it. Typically the software works fine in a development environment. You often cannot replicate production problems. This can lead to a balancing act to keep up with problems but protect the live and often sensitive data.
Check Your Subroutines - We are delivering our latest release to internal test today. Had a code review yesterday. Many issues were found. We are fixing the highest priority probl...