UI Development (1)

January 16th, 2008

In the good old days, the definition of a witty computer power user was that he/she knew something about GW-BASIC (or dBASE III, Lotus 1-2-3, you name it).  All screens were 80 by 25 green text console and there were little requirements for UI.  It was a paradise for UI programmers!  Users were forced to learn all the tricks about using an application.  If one did not know that pressing the slash (/) key brought up Lotus 1-2-3 menus, he/she was considered “disqualified in skills” and no one blamed that Lotus 1-2-3 had a lame UI.

Unfortunately, the paradise faded away fairly quickly.  We all knew that the UI of this age had many defects by design, such as

  • It was designed for well-trained professional, which implied fewer users, higher training costs, and smaller market.  Wall Street liked this model only if the profit margin grew better this way, which unfortunately not.
  • Heavy keyboard operations barred many baby and echo boomers.
  • It was not fancy and friendly enough to use.

To boost the revenue of software market, one simple way was to have more people buying and using computer software, which eventually led to a friendlier graphical user interface.  The improvement of computing power and the invention of mouse made it possible.  In the PC industry, Windows became the dominant OS and UI environment.  Although the look-and-feel of Windows evoluted through versions, the great thing is that Win32 SDK programming paradigm did not change (much) and thus programs written many years ago can/may still run on today’s Vista machine.

Microsoft Windows SDK was first rolled out decades ago.  In the beginning, Microsoft C sucked (when Turbo C dominated the market), Win16 SDK sucked (where Intel 80286 was responsible for part of this), and thus it was not as popular as its successor, Win32 SDK.  In the 32 bit era, there are better preemptive execution, better C compiler, and better designed Win32 SDK, so that the whole flow became complete and mature.  However, pure Windows SDK development was too demanding for most applications.  As a result, Microsoft provided MFC to utilize C++ language features and to wrap the SDK so that programming could be easier.

As time went by, more and more new UI controls were introduced and they were as difficult to program with in MFC as using pure SDK, such as ListView.  MFC also had some weird backward compatibility and  COM issues version by version which further deteriorated itself.  If one needed to spend so much time writing fatty MFC programs, why not spent much less time writing a fattier VB one instead?

VB might be the most criticized language because it’s fat, slow, and blessed by Bill Gates.  However, VB is a revolutionary language IMO.  In many cases, people just want something that work without long waiting, especially the internal tools used in enterprises.  These tools’ time-to-market is far more important than performance, and that’s the show stage to demonstrate the power of VB.  VB allows programmers to spend more of their time on business logic instead of tricky Windows messages and message loops.

In the .Net age, Windows Form was designed to replace legacy VB.  IMO Windows Form was far from success because of following reasons:

  • Architecture of enterprise applications shifted from client-server to multi-tier, and the trend of client-tier shifted from rich client to more managable web client (where ASP.NET covered).
  • The need for full-customized software in the SMB segment dropped.  SMB are using softwares that are either good enough (e.g. PeachTree, ACT!), or flexible enough for minor customization (e.g. InfoPath), or shifted to ASP model (e.g. SalesForce).
  • ISVs were hesitated to embrace .Net because of download size, look-and-feel, or fear of instability.

WTL is one interesting thing worth to mention here.  Basically it can be treated as “MFC-done-right” and utilizes many modern C++ facilities to build slim fast Windows applications.  However, WTL is far from popular because it is not included in VC++ and there are many alternative technologies other than Win32 UI for developers to choose when WTL is born.  We’ll talk more about these alternatives in the coming article.

PS. As to Java AWT or Swing, don’t you think it’s something similar to VB or .Net Windows Form in the fashion of building rich clients?  IMO they are destined to limited applications and won’t draw too much spotlights in the future.

Reviews & Comments, Technical, Windows | Comments Jump to the top of this page

Comments are closed.

Chef Peon's Melange

Archives

Meta

Social Links