Recently had a conversation regarding our application(s) up at DC for my government client.
When I walked in, I can only imagine what the users thought of it. That applications that I took over was an architectural and programming disaster. It used a lot of DCOM/MTS/COM+ for logic and display. It was a simple web application, yet it was written as a resume tool, so that someone could further their resume by adding a bunch of cool technologies on it. A simple web request could spin up anywhere between 750 and 1500 objects inside of com+. These were vb6 objects inside of com+, so there was nothing like object pooling. They had an overuse of logic in the vb6 code, which caused the huge number of objects shown in the com+ explorer. Page requests would take on average 30 seconds to return. There were some stored procedures to manage communications between 2 sql server databases. Between com+ and the 2 sql server databases, there was all kinds of fun with deadlocks in distributed transactions. The pages themselves were not written in class asp or in aspx. No, the developers had designed their own xml based page description language, because applications always need their own page description language for a user application inside of a company. I had a lot of com+/mts experience at the time, so that is how I got in. I had written my first book, so that helped as well. I remember someone hassling me about “what do you know about mts?” and I responded by saying “I’ve used it in several projects because it added value, but I don’t see any value for it here. Why don’t you turn to <insert page # from book 1> and read what it says about why you should or shouldn’t use it.” The response was something like “All it says is that if you don’t know why you are using something, you shouldn’t use it.” Yep.
I did my best, but it was clear that I was only able to add so much duct tape and 2x4s. I did find it funny that the original guys had written some reports in classic asp. Why? Because it was quick. If you can’t tell, this app was a problem. I put the duct tape in all the spots I could. I wrote some new and better reports. I passed all of the section 508 issues. The reports ran and ran well.
I got asked to write another application for them. It worked great. I mean, no issues at all. It was only about the features. The obvious questions, came up, “What does it take to fix the first app?” Me, it takes a rewrite. “Ok, lets do it.” They didn’t have the full time budgeted to rewrite, so I worked on it part time. I worked on some other projects. I kept moving the ball forward. In 2010, we rolled out the major rewrite. Sure, we had some of the standard rollout issues, but everything worked. Now, we could easily add features and make changes, and we did. New user requests were handled and keep being handled. The UI was still not to my liking because they wanted to UI to keep the same to limit training issues, ok. Stability greatly increased. This got rid of 90% of our “distributed transaction” failures. My first job on this was to get rid of the stored procedures to move some data. This got rid of the final set of the distributed transaction problems. Speed went from about 30 seconds per page load down to about 3 seconds, a 90% performance improvement.
So, I spend a lot of time on new features. Slowly but surely, users began to like things. I was able to handle new requests, business rule issues, congressional oversight, and other regulations handled across the country. All the time during this, I worked on books, training, other customer work, and got it out and going.
Over the last year to 18 months, I’ve been working on a step one UI update. This update has been completed along with security penetration testing and section 508. The step 1 update has been delayed due to some internal issues.
I was on a conference call the other day. I found out that my system, as reported by our government PM, was the top ranked application across the entire department.
The top ranked application. As Gartner Group likes to say “High and to the Right.”
The interesting thing is that I’ve tried to do this all of my working career, try to create value for the customers/users.
At The Coca-Cola Company, I worked to create value for the users. I’ll never forget the “VM zero” problem of windows 3.x. Back in the early 1990s, we were having random problems with client-server back talking to Oracle databases from a windows 3.1 desktops. Somebody said something about it looking like memory below 1 meg was filling up. The problem was that talking to drivers back then required memory to be used that could be accessed by the drivers which ran in DOS. I came up with a simple solution, simply delete the beta dlls, yet, it was still problematic to get things done. Due to issues like this and other things, I left KO. You have to solve customer problems and create value, not argue about things that do not matter for petty personal gain.
My career has been a simple continuation of creating customer value. At Marketlynx, we built a startup that created a web based real estate multiple listing service for real estate associations, which is a saas style application. I built a web based manufacturing system at Lucent Technologies and worked with their mobile system along with reporting. I built a system for the State of Tennessee Department of Children’s Services for tracking training for foster children.
Finally, I got in with my government client.
Along with that ride, I’ve been involved with customers that didn’t really care about customers, only ideology, or other things that made no sense. No folks, success is simple. If you would focus on success for the end customer, you can have success. Focus on other things, and you probably won’t be successful.
“High and to the Right” makes you successful because it makes others successful.