I started a new contract for work about a month ago–the week before I went on my bike ride to Harlingen. I’m on long term (at least six months, possibly two years or more) assignment at a State agency where we’re porting a very large application from OS/390 with DB2 to .NET and SQL Server. As you can probably imagine, that assignment is keeping me pretty busy. Although I won’t be able to publicly mention the client or the application specifically, I will be able to talk about issues that come up during the development process. If nothing else, this is turning out to be quite a learning experience.
“The Application” isn’t a single program, but rather about a dozen PL/1 programs that run on the mainframe and about 60 Windows applications (written in Visual Basic) that run on Windows clients and access the DB2 database. There also is a public Web site that currently runs on AIX and accesses the DB2 database. We will completely rewrite the PL/1 programs and the Web site, and retrofit the VB applications so that they access the SQL Server database. All this work will be done in approximately 30 months. We have a hard deadline date that can’t be changed, and that makes me a little nervous.
There are three primary variables to any development project: features, price, and schedule. One of the cardinal rules of development is that the client can control any two of those variables, but as a developer you have to maintain control of the last one. Otherwise the client is going to want everything for nothing in no time at all. It’s a recipe for failure. In this particular case the schedule is set in stone and the existing programs define the minimum feature set. That leaves the development team with only one variable: the price. In this case, “price” means how many and what quality of developers we can bring onto the project, and when. One of my first recommendations after reviewing the project was to develop a detailed staffing plan and get it approved so that we know we have the funds to complete this project on time. It’s going to be an interesting ride.