By the time our IT Craft team took over the project, the system had already gone past
the point of no-return: it could
no longer support the client’s growing business requirements.
However, the client could not wait until a new system would be ready, tested, and
adopted by employees. The IT Craft
team and client decided on a stepwise transfer of functionality from the old to new
system with both systems working in
parallel as long as required.
The following challenges affect directly project complexity:
COBOL was designed specifically for IBM mainframes. Modern languages do not
support COBOL approaches and best practices.
Thus developers could not make a copy of source code and reproduce it on a new
platform. Instead, IT Craft developers
had to study the source code and design a new architecture.
Lack of documentation
Another downside of COBOL is its self-documentation feature. It is very
convenient when quickly figuring out what the
source code does then provide hot fixes. However, it turned out that no
description process was available, thus adding
to the entire scope of modernization work.
Requirements and changes
IT Craft developers transfer functionality to a new platform and add new features
based on stakeholders’
recommendations. Because no person knows the entire process—employees can
describe only their daily routine—the team
must refine requirements and implement them accurately to maintain existing
No downtime tolerated
The client’s business cannot stop for even a minute without facing huge losses.
The team introduces new source code,
accurately ensuring continued functionality always remains available for the
client’s employees. New releases are
possible only within strict timeframes when workload is minimal.
No new functions are compatible with the old system. Because of this, developers
can only add more functions in the new
system. When introducing a new part of source code, the developers must ensure
users keep working in the “right” system
so no data gets lost after its input.
After so many years of constant updates and changes, the system had accumulated a
large volume of unused subprograms,
failed features, and system errors. Employees formed specific habits on how to
manage those. Developers must keep both
system errors and employees’ habits in mind to ensure the new system would
behave as per employees’ expectations after