I was going to try the engine on fleet management and dispatching system. It was pretty much the target usage, so I was particularly happy about it.
First showcase was a small fiasco, because future users didn't like it. It was too different from their current program, which was slowly dying for several unimportant reasons. The platform was (and still is) very flexible, so I promised to bend it as far as I could to meet their requirements.
It took me about 6 months of non-full-time development and the progress was tremendous. I started as "Win95" and ended as "Win7". It took so long because I stumbled upon some major problems of initial design and I had to reengineer, twice(!). But much worse was, that end users needed, but didn't want the new system. They were happy with status quo and didn't want to make anything better or different. In fact, they requested to recreate their current system (Win32 app) exactly as it was.
I don't want to go into much detail, as it's irrelevant for this story. I want to write about changes this experience led to.
The most notable change was a new approach to generating a form. Since then only controls for value has been generated. Now controls are generated for relation, order and flag as well.
For datetime control I created extremely rich/smart, but quite buggy (I must admit) control. It was single input (textbox), but thanks to a lot of JavaScript around the control it checked, what part of datetime are you currently on and offered appropriate functionality. Like when you wrote "8" on "day" part, it knew there are up to 31 days and "8" is the final day, so it skipped to "month" part automatically (in Czech Republic we use "d.m.yyyy" date format). On the other hand, if you wrote "2" on the day part, you stayd on the day part, because the control didn't know, if you wanted to write just "2", or e.g. "24". And there are more such things.
For number control I allowed user to change value using up-down arrows and because on Czech keyboard you have to press Shift to write number, I checked for the other without-Shift characters and convert them into appropriate numbers.
I also had to think more about more functionality, like "suggest" for values, drawing tables, forms, pages etc. I noticed some repeating patterns, but unfortunately I didn't have time for deeper analysis. But I kept it in mind.
The project finally didn't happened, even after I finished the last request and killed the last reported bug. It wasn't so big for the hassle, I already built an intranet for our company on it, which saves a lot of my coworkers' time. After I dropped this load off my shoulders, I was able to dust off the knowledge for the final reengineering. But this time absolutely from scratch.


No comments:
Post a Comment