Yes, it demos well. But is it maintainable?
Not so fast there cowboy. Let’s take a closer look at the generated code.
The HTML code generated by fcFormsConverter:
- All elements are absolutely positioned
- Every element has its own style attribute
- It lacked any security (privilege class) checking
- Doesn’t effectively deal with Contextual Objects (what Clarify called their in-memory form variable storage)
- It had no way of distinguishing server-side code from client-side code
- Variable names that leave much to be desired (var t_FC_queryBulk1;)
To be fair, fcCodeConverter did a good job translating self-contained APIs that didn’t have any user interaction or UI components. But that’s not where the bulk of the work needs to get done.
In short, the generated code is not maintainable.
Today’s Drag and Drop’s UIs, Wizards and Designers are all mainly focused on the creation side of the software. They help you with the initial bit, and leave you alone afterward. This is great for a demo, but really not a good proposition for the maintainability of an application.
This mimics what we found with fcFormsConverter and fcCodeConverter. They demo-ed well, but when we actually tried to maintain and extend the generated code, we found it typically took longer than writing it from scratch. And when we wrote it from scratch, the code was much cleaner and more maintainable.
Ultimately, we shelved those products. Yes, they demo-ed well. But they didn’t prove themselves in assisting our customers to transition their legacy forms and code to our environment in a fashion that led to good, maintainable code.
Could we have continued to improve on those products? Yes. But I don’t believe it would have been a wise investment. I believe that the transition process of moving from a thick-client app to a thin-client app is also a great opportunity to re-examine some of your business processes, question what was done, re-assess what is really desired, and make your application as robust and maintainable as possible.
- Is there still value in those customizations you made years ago?
- Do you have customizations that are merely workarounds for the thick-client platform/environment?
- Do those same challenges apply in a web application?
- Do the architectural decisions you made for a Windows app still apply in a web app?
These projects were pretty ambitious, especially the fcCodeConverter. It was basically a compiler, and I have a fair amount of awe and respect for developers that can pull off that type of work. It’s so outside my realm of knowledge (and interest).