You are hereDesigning complex webapps in the real world
Designing complex webapps in the real world
A "webapp" short for web application is a computer application that works over the internet in the Internet browser. It does not require installation of any software except for the Internet browser itself. Web applications are a relatively new concept. There are some popular webapps around, the most well known are perhaps Facebook and Flickr and lesser known Trello. The success of these webapps has prompted some companies to attempt to convert their traditional client only or client-server applications into webapps. But writing webapps can be far more challenging than writing traditional client only or client-server applications. So before you start take a look at these gotchas and ensure you are well prepared for them.
- Binary applications have attempted to achieve multi-platform compatibility for a while, but due to differences in the underlying operating systems it requires additional skill and effort to design a multi-platform application. Webapp proponents may say webapps are write once and run everywhere, however in reality, each browser and its past versions can be varied enough to be classified as a different platform with its own quirks. So webapps are inherently multi-platform. Ensure the developers on your team are comfortable designing and working with multi-platform application architectures
- Webapps are usually written in interpreted scripting languages like PHP, Perl, Python and Ruby. Most of these languages are not inherently object-oriented1 (e.g. Perl, PHP) and object oriented concepts are introduced as a layer on top of the core language. Even if they are inherently object oriented (e.g. Python) they do not fully support all object oriented principles like data encapsulation (public vs private interfaces), operator overloading, virtual functions the likes of which C++ programmers are used to. Also these languages are still evolving much faster than traditional languages like C and C++ are. In short it takes a lot more discipline to write proper object oriented code in these languages than it does in strongly typed and pre-compiled languages like C++. Do your software developers have this discipline?
- As soon as your application is on the Internet it is accessible to a much wider international audience. Even if you decide to limit access initially, there is a good chance that later you will want to open it up to other audiences. This means you should be able to cater for multiple languages in your architecture. Even if you only support one language, data or input coming from users could still be multilingual. Accordingly, your code should may have to cope with UTF-8 strings and your application architecture should support translation and right-to-left languages.
- The Internet, browsers, web-standards and web-languages are constantly evolving. Web-standards are particularly culprit and there are several revisions. Your software development team and development methodology should be able to cope in a constantly changing ecosystem.
- Each operating system today provides a robust backbone for developers to design their application on. Microsoft provides the well known MFC and more recent windows forms architecture. Apple developers will know of Carbon, Cocoa. Even phone platforms like Android and iOS have robust company backing for their development architectures. Because companies want programmers to design for their operating system. The web is not owned by anyone and there is no single robust architecture for designing applications on it. There are lots and lots of different competing architectures which all do certain things well and leave out other things. jQuery, DJango, Backbone.js, YUI to name a few. Choosing one or the other is hard and will limit what you can do using your chosen architecture. Chances are that you will need to fork your own version of it if you want it to do more.
- A webapp is a client-server application which means you will need to get your head around network issues like no connection, slow connections and disconnects midway through an operation. You will also need to worry about security so your application cannot be hacked into and more importantly does not compromise security of the server it runs on.
- The lack of a standard architecture means there is no set outlines for designing user interfaces for your webapp. While this offers the flexibility that you can make it look any way you want, the excess flexibility also means you can get it wrong more often than not. Think about your user interface carefully, what UI components will you need, where will you source them from and how will you make it all look and work together as part of one webapp. Will it end up user-friendly. Will it end up accessible?
- Webapps thin the line between traditional web-design and programming. Web designers are not programmers and vice versa. You will need a mix of the two and manage their expectations to achieve looks with usability.
- 1. An exception is Java (+JSP) which is a fully object-oriented strongly typed language but is slower and slightly more cumbersome.