Wednesday, January 12, 2011

In Search of a New UI

As I have been in software engineering over the years I have seen a lot of technologies and technical fads come and go. I have been witness to some pretty incredible growth in bandwidth, capacity, and hardware technology. I have been able to watch open source software, which I first regarded as communism masked as technology change the technical landscape. I have also had the good fortune to become a convert and to be a part of this movement that still has not been fully adopted and embraced by much of the business community.

I have also watched certain hardware and mobile devices, and Apple steer technology back into the land of the proprietary. I think the forces of open source are too strong to let such a shift occur en masse.
What I have not seen in either the internet or the intranet are applications that truly put the technology stacks to their fullest capability. Sorry, but the Facebook UI and the apps leaves me wanting. In the space I live, the electronic medical record (aka: EMR) there is just to lack of imagination as to what is possible in the user experience (UI) and in defining workflows that addresses real business needs, that places healtcare providers more with their patients and less with the computer. In the business application space I cannot say I am all that impressed with ERP and other types of business apps. This criticism is as much leveled at myself as it is at the industry at large. For I fervently believe that real growth and innovation will seed and flourish when you are willing to hold up the mirror in front of you prior to pointing fingers.

Now that I am working in the front-end space I have come to realize just how much norms have stagnated our notion of what an application needs to be. As I am becoming more adept with these technologies I am coming to understand what an application and a workflow can be.

In concert with that last thought it has been my observation over the years that we (myself included) like to blame the shortcomings of technology for our own lack of a) knowledge; b) technical design; and c) functional design. Back in the 90's when I was making low level hWnd calls from VB to do what I thought should be standard UI fare there may have been some truth to these arguments. Though if you asked me back in the day I really did hold a similar position on such matters... just not as strongly formed as my experience then was far less.

As I look over the landscape of the technology stack I currently work with (Php, Javascript, JQuery, CSS, Html) I realize that there really is nothing lacking other than my own ability and imagination. Having prior experience in the Java world I can say the same about that technology stack as well.
Such a realization is empowering as it allows you to really dream and contemplate what is possible. It emboldens me as for every thing I wish to do, I realize that the only impediment I face is my own lack of knowledge and understanding as to how to go about solving the problem. This in itself is very cool as I have always loved to learn.

The freedom of the open source movement and the internet has created an asynchronous development environment and an informal community of developers that are driven by their passion for software and their love of sharing the fruits of their labor with others. This community has created more jobs and revenue than the world of proprietary software. It has created opportunity for those that are economically challenged. It has created a space for learning and sharing that is unprecedented in the history of ones and zeros. If it is comminism, then I, gladly am a commie.
I know firsthand that a real developer would practice their craft for free if they could not do it as a profession. Money is always tangential to the labor of love one gets in being able to play with technology and build things others find value and merit with. Sure, there is some hubris in what we do, but for the most part the business of technology becomes our rubics cube. There are so many of these proverbial cubes in the technology space that we have great choice as to where we want to play... Configuration Management, Database Development, Database Management, Application Development (both backend and frontend), Process Automation, Testing, Scalability. The list goes on and on and on.

Today it is time for me personally to re-think and dream about what an application can be, and to attempt and put those dreams into practice. Whether successful or not the most fun is always to be had in the journey itself.