XmlObject - Adaptive Object Model
Better Designs Faster
Jim chuckled as he got in my car, “Well thankfully your car is clean on the inside.”
“So where were you this weekend and why the sudden emergency,” I asked?
“I was called to the Association of International Automobile Manufacturers meeting late Friday. You know, spring time in Florida … as you know, everybody in the industry attends this conference. Our biggest customer surprised us by announcing that they are going to try to hit the market with a hybrid engine in the next cycle. Another has a fuel cell that they want to start testing even sooner. Both were fishing for information. Our last release made them skittish … management is worried.”
Except for a rattle from the exhaust the car was silent.
“It’s not all bad news,” said Jim “I got the corner office to agree that it was time for a budget increase.” Startled, I choked more than replied “that is good news.” The look of surprise on my face must have been apparent because my boss was laughing.
“Is it enough to add the resources I’ve asked for?” “Maybe,” my boss smiled, before his face turned serious again. “Vic, I’m sorry for making this your problem, but that report I was looking at, it says it all and I doubt that anyone besides us really knows the trouble we face.”
Then he seemingly changed the subject. “Remember OOPSLA 2002? We heard that Gang of Four author talk about Adaptive Object Models. What was his name?”
He continued, “I remember you were all excited. You think I never read the stuff you send me, but on occasion I do.” Ok, at least he knew it was my idea.
“If you were reading it why didn’t you say so?”
“I didn’t want to get your hopes up.” He smiled, paused, then continued, “Look, don’t pay any attention to me. You have been telling me for years that we need to upgrade our architecture and I’ve been stalling. Well that day arrived Saturday. We, and by we, I really mean you, are going to get the job. I am formally relieving you of your other projects. Starting right now this is your only responsibility. I expect to see a plan next week.”
I drove back to the office stunned. Adaptive Object Models aren’t rocket science, but they are new. I had read the papers, studied the examples, and even built a prototype. I was ready, but I wasn’t sure if the rest of the company was and I needed Jennifer on board.
“So why Stewart Anderson’s?” Jennifer asked as we followed the hostess. “I didn’t think you liked this place.”
“I don’t” I responded. “But large quiet booths make it a good place to have a conversation.”
I noticed she was forcing a smile. “Jennifer” I said as we sat down. “Jen” she interrupted.
I started over, “Jen, we need to change. As quickly as the car biz is evolving we need to adapt. More importantly we need to be faster about it than we’ve been in the past. The truth is that the problem Chicago was designed to solve has grown, while its architecture stood still.”
Jennifer nodded but stayed silent.
“I understand how you feel. You know that Chicago code-base better than anyone. You think that you and your team can implement any change that is tossed at you.”
“I …” she paused. “I mean, we, can. Do you remember the last release? Yes, we had were a few late nights, but we got it released and it worked.”
“Yes you did, but let me ask you how much testing was done. We were making changes that affected every product we have. We did a passable job of testing the new features, but who tested everything else?”
“You know as well as I do,” she said. “Nobody did.”
“Wrong” I said. “Our customers tested it and with less than ideal results. We lost some good prospects with that release and we left our best customers questioning our ability to deliver. With the original plan there was an outside chance we could do another release, but with new requirements, we don’t stand a chance. And Jen, I think this day was inevitable.” I paused as Jennifer stirred her lemonade.
“Jen, I have a plan. I have been working on it for a while now. Jim will support us, but, he isn’t going to do the work. That part will be up to us.” Jennifer was still silent, so I continued.
“I’ve been posting links on something called Adaptive Object Modeling to the Wiki? You read any of them?”
“Yes, a few but I didn’t see how they applied.” “Well,” I replied. “Let’s take a run at it. Let’s talk about the structure of Chicago.” “What do you mean” she replied.
“Chicago’s architecture ... pick a small part of the class diagram and describe it to me. We have a package that models engine operational and manufacturing parameters … use that as an example.”
Jennifer drew a breath and droned, “We are attempting to model the manufacture and operation of the modern internal combustion engine. We do this by assembling and collating data collected from dozens of sources. If someone wants to know how much the engine will weigh we can ask the model. Want to know if a cheaper connecting rod can handle the stress of 7,000 RPM, ask the model. If you want to know how much the engine will cost to build next year in a foreign country, ask the model. It is very complete and we are expanding it all the time.”
“Ok,” I said. “Now tell me what is wrong with the model.”
Suddenly Jennifer grew quiet. “Hmm, I hope this won’t come up in my next review,” she said. I replied, “Then only tell me the parts I know about.” Again I smiled and she didn’t.
“Well, it is getting harder to add new functionality. The design is monolithic and growing more so. Blocks of functionality once opaque to other teams, have become transparent. Inappropriate dependencies are being created and are effectively binding what should be separate development efforts together. We are aware that we have a problem and are working to address it. However, it is growing faster than we can handle.”
“Should I go on? She asked, with a little irritation in her voice. “Just a little” I urged. “I am interested in hearing about this last release.”
Again Jennifer drew a breath. “What do you want to hear, backwards compatibility is killing us. We need time to refactor. That is why I’m upset at the schedule change”
“I thought we were refactoring,” I pushed. “Yes” she answered. “We are, but Chicago has gotten so big that we have a hard time testing the changes. Maybe if you would get us some of those resources you keep talking about.” She replied sarcastically. “And what does any of this have to do with your so called plan?”
“Jennifer … I mean Jen. I understand this is upsetting. I know we have a problem and I’m not blaming you. It is my job to fix it. We know management is serious this time because they gave me a budget. Now, I am not going to have time to train new developers.
I paused to see if Jennifer caught my meaning. Suddenly her posture changed. “Ok, I get that part,” she grumbled, but I could see her relax a little. “So what again is this Active Model thing?” she asked.
I could see that it was starting to rain and we were done eating. “Let’s get back before this rain hits,” I said.