Monday, December 10, 2007

WYTIWYG - The Challenge of Custom Software

What You See Is What You Get (WYSIWYG or 'wizywig') is probably the best thing to happen to desktop publishing or web authoring. WYSIWYG enables you to view your output while you are making the stuff. A nice paradigm to put your creative ideas to paper. Thanks to the GUI Builder in RAD tools like Visual Basic or WinForms or netBeans Matisse, this WYSIWYG paradigm is brought to the developer as well. But these GUI Builders only cover the part where you are designing the GUI. What about the part where you are designing the business logic, the real things that get done in the background ?

I was recently working on a project that would enable a client to publish his magazines based on what data is stored in the database. It was kind of a report generation software, but with lots of automated formatting based on the database content. Like if the article was about a horse, it had to be taken from the database and formatted in a specific way whereas if it was about the jockey, then it would have a different formatting. The client had fully imagined how the magazine would look like and how the pages would be formatted. But we as developers had to meet the challenge of trying to sketch what the client was imagining. We were trying to give the client what he was thinking... We were supposed to say, "What You Think Is What You Get" (WYTIWYG) !!

I'm sure as creative minds we have always faced this challenge of taking someone's imagination and putting it to life. When it's your own imagination its easy to execute but when you have to understand and convey someone else's imagination it really gets complicated. And software development is all about meeting this challenge.

UML 2.0 has 13 diagrams and each of them are used to covey that imagination, but how many times have you come to new project and even after looking at all the diagrams, never figured out how to go about it from there?? And when you have a quick deadline to meet, it gets even tougher.

But during the above mentioned project, I realized that WYTIWYG is more about marketing than it is about true development. The reason I say this is because quite a lot of times, if you have good convincing skills you can change the way your client is thinking. This implies that you can always make someone else think what you want them to think. I guess some intellectual said, "You can take the horse to water, but you can't make it drink"... I would dare to disagree and say that if you have the skills you can make the horse drink as well...

May be some day we'll have AI so strong that the computer will be partially able to understand what we are thinking. May be after it's understood our thinking, it can create what we are thinking. But until that's done, improve your convincing skills... most probably, it'll be more useful that all your programming skills...

No comments: