My team has a big architectural meeting coming up soon; it will be time to discuss what’s working, what’s not, what our system wants to be when it grows up. It’s a three-day, offsite meeting. We’re flying in team members from Houston and Indianapolis. It’s a big deal. And I’m trying to prepare.
I want to write a document describing some of the benefits of many of the modern software development tools and techniques. But I’m stumped at where to begin. The problem is that there’s far too much to say.
There are no automated tests, nor any scripts for manual testing. Building the system is a matter of grabbing the code from several different source-code control databases (and all the code that developers have forgotten to check in), moving it to the production machine, then manually trying out anything you’ve been working on, finding the DLLs you forgot you needed to register, trying it again, calling everyone who worked on the system, adding to the database the tables someone forgot to tell you you needed, lathering, rinsing, and repeating until no one notices any further errors.
And of course there is absolutely no documentation.
The initial system was built by a very talented programmer who was quite new to all the technologies used. She did a great job getting things working, but the system has grown in all directions, and there has been little coordination of the efforts.
What I want to propose is a multi-tiered application architecture, using modern development technologies and techniques. My choice would be Java with Hibernate and Spring, although I don’t have much experience with either framework. But I would certainly be willing to live with .NET or a Python framework. I could even see doing all or some of it in PHP. I would be willing to consider full-fledged J2EE, although that scares me a bit.
Everything should be test-driven. No code should be checked in without passing unit tests, and no code should be written without having tests for it to pass. The builds should be automated. There should be automated functional tests.
In short, we should be building a modern, modular, scalable, testable, automated system.
The trouble is in having so much to say that I can’t seem to even begin actually writing my document. I’ve been working around the edges, mostly analysis of the various options for technology. But I need to work on the main part, and I need to do so soon.
Anyone ever seen good sites describing in management’s terms the advantages to modern techniques?