Monday, May 28, 2012

Web Application Development Guidelines

The year 2010 was an excellent year for web applications and products as it saw the largest amount of funding for cloud-based applications yet. The trend has already shown to continue in 2011 and now more than ever, web applications are in high-demand.

Why the sudden demand?

A large part of the reason for the boom in cloud based startups and products is how far web technology has come in the last few years. With the advent of open APIs, social graphs, location based services and now mobile accessibility, many ideas that were not previously very difficult to execute are becoming not only possible, but also seem to come with low overheads and initial investment.

Points to focus on

Requirements & Planning
Web app planning research
At the heart of every application is its feature set. You simply can’t expect success by doing everything else right but not having a compelling feature set. This might seem like common sense but you would be surprised how many people don’ pay enough attention to this step.

Ensure that you have performed thorough market research to determine:
  • Is there a problem that exists which is being solved by your product?
  • Are there other players in this space (competitors)?
  • What platforms is your target market dominantly using? Do you need a cross-platform solution?
With this knowledge, you will be in a much better position to make decisions such as what servers to use, what kind of architecture needs to be developed and be able to perform competitor analysis to determine how to best approach your product with the aspirations to one-up everything else that may exist in the market.
Accessibility
Multi-Platform Web App
It is vital to know how many different platforms the application must be available on. This can vary from product to product because certain web applications are useless on anything other than a laptop or desktop computer (for example, a large CRM system like Salesforce would not be very useful on an iPhone for adding new leads and such) where as other products may need to be accessible on mobile phones on the go to augment the existing web product (such as Groupon which can allow you to view latest deals in areas near your location).

Inserting, updating and fetching information from the database is also something that would be done by all the platforms upon which the deployment were to take place. This would mean that it would be best to make a single API that can be accessed by all the different platforms. This helps reduce the workload and improves the re-usability of code as it essentially means that the different platforms would simply need a UI design unique to the dimensions of the platform. The API layer would be able to handle all the communication with the back-end system, which would not need to change.
User interface/experience
Web app wireframe
The interface can make or break a web product. With a tremendous amount of competition out there, the overall user experience must be very well thought out and attention given to detail to ensure that the product is user-friendly, intuitive and efficient.

While user-interface design is a creative art for the most part, there are elements of it which are downright scientific. How a person’s eyes are attracted by different colors, sizes and fonts are important to know. Knowing what to put above the fold and below the fold are concepts that need to be kept in mind as well as taking measures to avoid clutter. During this fine balancing act it is important to make sure that you are not slowing down the load times of your interface by using heavy scripts or intense animations to distract users.
Scalability
Web app scalability
One of the most challenging aspects of web applications development is creating applications that scale well. So what determines how well an application scales? For an average user session the following metrics must be determined:
  • Server CPU Usage – generally can be high if there queries that are not optimized and take up far too much processing in order to fetch the results.
  • Bandwidth Usage – this can increase overheads if each user session is taking up more bandwidth than it needs to.
  • Database read/writes – the amount of read/writes to the database increase overheads in general, as they are the main culprits of CPU usage.
  • Storage – the amount of data an average user stores will increase the overheads and needs to be optimized for obvious reasons.
Some ways in which optimization can be tackled are:
  • Database optimization – make sure your table structures are normalized appropriately based on the level of complexity of the project at hand.
  • Query optimization – database queries must be optimized to ensure that they are efficiently returning the required information. There are several ways to gather information from a database, and the most efficient method is not always the most obvious one.
  • Memcache – minimize the amount of reads/writes on the database by using a cache technology such as Memcache. Steps must be taken however to ensure that the user always sees the latest version of the data and not just what the cache has in store.
Reach
Share with friends
Ensuring that the application is accessible to as many people as possible is one thing, but taking steps to make sure that your application is visible to large audience is an entirely different and equally important aspect.

Using tools such as social networks (Facebook, Twitter, Google+) and localization techniques to offer the product in various languages can go a long way in gaining global coverage for your product which can yield much higher volumes of traffic than previously anticipated.
Testing & Iterating
Application QA Testing
In web application development, the product must go through several iterations before it can be deemed ready for launch. This is because human behavior is very difficult to predict down to an absolute and thus web products require feedback and tweaks made upon said feedback several times over before it can leave the beta stage. This is why a closed-beta testing period is highly advisable.

Conclusion

Web applications may be in high demand right now and interest is peaking at an all-time high, but this doesn’t mean that everyone is tackling these projects efficiently. Developing a web-based product is a complex maze that needs to be navigated with precision & efficiency. It combines skill-sets from several different fields such as programming, art & user behavioral psychology to name a few.

No comments:

Post a Comment