This is the second part of my retrospective series I started here.
When I’m asked about my favorite project in my career I always talk about this one. Every part of this project was solid, well established and justifiable. There were no need to make any compromise on anything. We didn’t have to worry about licence fees, as long as we used IBM. 🙂 And what’s most satisfying about a project? The sponsors and the users find it useful!
Disclaimer: I’ve put this together mostly from memory and the few remaining documents I found laying around in my archives. I have no idea if this system is is in use any more, for all I know it probably is.
Background
A few years passed after the Intermed project, Java became a strong player in enterprise development. With the J2EE application servers becoming a viable option, coding your entire stack from scratch was no longer necessary. Still there were quite a few gray areas that had to be worked around.
I was working as a contracted freelancer at IBM at the Hungarian manufacturing site, that produced (and still produces) high-end data storage systems. The manufacturing site ran a high number of IT components: shop floor control systems, order management systems, procurement systems, truck load tracking. All in all it was a smooth running operation, but still faced a problem. There was only a really limited communication between the systems, so monitoring the actual status of an order was quite difficult.
Production monitoring is essential for running this operation. No two orders were the same. During the “free” time the plant manufactured “prebuild” machines, that were configured for the most likely order configurations. These were placed in a buffer, and when an order came in they were reconfigured with the exact specifications. This required a common monitoring application that could be used to match the orders and the available machines. The most time in the build phase was used for testing the configuration. If a “feature” was removed from the machine it didn’t require re-testing, and it was easily shipped. It was essential to use pre-tested prebuilds that had minimal difference to the order.
To achieve a transparent order monitoring a Lotus Notes application was created which was loaded with data from the relevant systems provided real-time reports to oversee the operation. There were some problems with the solution, as it was not as fast as expected. The data load was running so long, that the incoming datafiles stepped on each-other’s toes, data was inaccessible during the load, so basically the system was down for the better part of the day. The project was started to overcome these problems.
Project goals
The original project goal was only to create faster data loaders and increase the availability of the data. I’ve created some data loader plans that loaded the data into a separate DB2 database. The issues with the original application, escalated and a team was assigned to create an entire new application front-end along with the loaders.
Availability
The new application had to be designed to provide availability of data especially for the month/quarter-end periods. It was no coincidence this was exactly the time when the most amount of data poured in from the source systems.
Design
The users of the system were ranging from manufacturing staff to higher management. They were used to the Lotus Notes application, so the new app had to match the design principles and feature set of a standard Notes application.
The users were used to be able to create their custom views, reorder columns, filter data using quite sophisticated tools. They were also keen on grouping using “twisties” , as seen on the image. They even liked to use icons in their views and highlight rows matching given criteria.
Flexibility
The system had to be designed to be easily modifiable and customizable. It had to be simple enough to be extended with new fields, views or even business logic in days.
Easy administration
The plant had limited administration options, HelpDesk was (for all I remember) centralized, so deploying any software change to the clients was a long procedure. SCISy being a business critical application had to have rapid delivery, and easy administration features.
Security
The application had to be certified by internal audit. They checked for most known application vulnerabilities at that time.
There was no external public access of the application possible, and the internal regulations were quite lax at the time. Still it had to match some security regulations.
The Team
I’m quite certain I can say, the team was the best team in Hungary for this particular job.
Project management was delegated from Mainz, and they didn’t have to do much, except for the regular administration tasks. They were always worried about deadlines, but didn’t care much about the actual product.
We’ve done the technical project management, development planning together was with an old friend of mine, who I could call the Business Owner of the project. We set up milestones, made architectural decisions, planned work together.
The team members each had particular strength, and were assigned their tasks accordingly. We originally had
- a lead developer, who created and maintained the loader logic, database structure, integration tasks
- an eccentric developer, who did insanely rapid UI prototyping, even though I replaced, literally (!) every single line he’s done with a more robust solution, his mad skills got us through the first milestones
- an excellent developer, with mean algorithmic skills, who worked on tougher business algorithms, and query optimization
- an excellent junior developer from my company, who learned everything in a matter of minutes, and used the patterns to create the rest of the business logic (he was replaced before completing the project with another, less enthusiastic guy)
- and I was also working as the principal developer, to establish the framework and keep it together
Later the UI developer was replaced by two “standard” developers, who did the application programming after the UI guy left, one of them was brilliant enough to make up for the incompetence of the other. Also a trainee joined us as junior test manager, who tested the application, later I hired him, and managed to mentor him into an excellent solution architect.
A személyes évértékelőt hiányolom! 🙂