Working on maintaining and modifying a five year-old Java application, I came to realize there’s a strong relation between legacy and pyramids. Here’s an analogy:
Pyramids are HUGE monuments, built for the sole purpose of being a tomb to one person.
- Although the project tree is HUGE (14000+ files), the purpose of the application is amazingly modest (CRUD + search) | |
- Pyramids required a lots of resources to build (time, wealth, labor).
- The application took 5 years, 4 teams and lots of $ to build. | |
- No one knows exactly how the pyramids were built.
- Compiling/Building the application is a black box. “Just invoke those commands – twice – and you’ll get your ‘war’ files”, said the Build Master. | |
- Ancient scripts are quite scarce inside the Pyramids.
- Project documentations are almost non-existent | |
- Sometimes you wonder what motivated people to build such a thing, in such a shape.
- The schema is highly normalized (talk about contact information spanning across 4 different tables, with email field divided into name and fqdn) – WHY?! | |
- When you look closely, Pyramids are built by stacking layers of stone blocks on top of each other.
- The application is a grand collection of all sorts of frameworks (counted 4 so far), libraries (uncountable), tools, architectures. | |
- Currently, some Pyramids aren’t structurally sound, and visits to them are quite limited in fear of falling rocks.
- Dare adding new code to that monster? | |
Imperfect pyramids can be found along side perfect ones, proving that it took builders decades to master the way they were built.
- The application contain all sort of “imperfect” code as a proof of how the builders gained experience over time (JSP files with Embedded Classes, with embedded Java code and hard coded urls, business logic, view logic and data access mechanisms) | |
- People visit the Pyramids for few hours as a source of great admiration and respect. Then, continue on with their lives.
- The application’s code is a source of respect and admiration, but when it comes to something functional, better build something else. | |
- Pyramids can’t be maintained.
- The great conclusion. | | UPDATE:
- Some people have been reported to complain about a sense of suffocation or claustrophobic symptoms when exploring the pyramid internal passageways.
- The same is experienced while reading the application code. |
Hahaha … that’s awesome!!!