How to Build a Custom Web Application

We spend a lot of time developing custom web based applications for a variety of clients. There are key differences between a typical website and a custom web application and those differences affect all stages: planning, design, development, and rollout. Here are a few tips to help when tasked with creating what is effectively a piece of shared, web-accessible software.

1. Measure Twice, Cut Once

Let's say you're building an application to manage hotels. I'm not a hotel manager so off the top of my head I'd assume we'd need to track number and type of rooms, availability, housekeeping staff and schedule, amenities, things like that. But there's no way I could begin development without a much better understanding of what the program needs to do. Sit down with your client -- but not just the guy signing the check -- talk with management, administrative assistants, maintenance engineers, and anyone who will be using the program. That's not to say you have to talk to everyone in the company but you need to meet with a representative from each distinct business segment who will be involved with the application on a day-to-day basis.

The goal of this meeting or series of meetings is to determine the needs of the client. A developer can (hopefully) build anything -- but without specific direction it can be very easy to build code that's completely tangential to the true project goal. Avoid wasting valuable programming time by understanding what information should be stored, how it will be accessed and ultimately, what the end result should be.

2. Design for Usability

One of the key differences between a traditional website (be it e-commerce, non-profit, blog, etc.) and a custom program is that your application design doesn't have to convert a Google search hit into a sale. If people are logging into a custom application they've already bought a license for it. Save the flashy stuff for the musician's website and stick to usability in your custom application design. If you're in need of inspiration, search for great dashboard design, not cutting-edge web design.

Speed is another important factor for usability -- if you bog your site down with large graphics it's just going to take your users longer to get to the content that they really need. Make important areas of the site stand out clearly and make your menus intuitive with a logical path that the user can understand.

3. Develop Effective Error Handling

Keep in mind the different types of issues that your users may face: programming errors, data problems, and of course user error. As a developer you're really responsible for preventing and handling all three -- yes, even user error (to a point). Your exact methods for handling errors will of course depend on the development framework and programming language(s) that you choose to use to build your application, but there are a few best practices to keep in mind.

a. Remember that users don't always enter data in the proper format. If you have a form that expects only numeric data, someone will try and input letters into that field. If you have a date field, someone will try to enter the 42nd of March. You need to be able to handle situations like this and present the user with a "friendly" error message as opposed to the vague and confusing 500 Server Error or some other such thing. Any time the user can directly interact with the application (typically through forms but also potentially through querystrings) you need to expect the unexpected.

b. Most users don't understand the difference between a problem with the program and a problem with the data. Ever hear the old phrase garbage in, garbage out? Well, your users haven't and they won't understand it if you tell them. So your job is to be connected to the people who will be populating the all-important data into your application and make sure they can get it loaded, inserted, updated, and deleted as easily as possible.

c. Actual, honest-to-goodness system errors need to be captured and sent to the development team. Email works best, a database entry would add some additional benefits as well. Whatever method you choose, your best bet is to grab as much information about the problem as possible: user name, time, error code, line, page, referring page, querystring, form variables, etc. The more information you can collect the faster you'll be able to resolve the issue.

4. Get Fresh Eyes on Your Application

If your project is of significant size (well, even if it's not) you will be spending a great many hours designing, coding, debugging, reworking, and improving it. As such you will have a perspective that is far different from that of your end users. What seems obvious to you -- "Just click on Home, then click on this little tiny text link in the corner" may not be obvious to the folks who are ultimately going to have to learn your program.

If you can enlist a pair of fresh eyes to run through the application with you, you might hear some observations that never occurred to you about usability, navigation, and other suggestions for improvement. This will not work if you simply guide them as if you're giving a demo -- allow them to pilot the ship and you can learn just how accessible your program really is.

5. Understand Your Support Structures

Who's going to be supporting this new application? How will end-user support requests be handled? It's important to give your end-users a simple method for getting help whether that be access to a contact form or phone numbers, refresher training videos, dedicated support personnel, and the like. Adoption and buy-in of your program will be much smoother if the users know that they'll be able to get their questions answered quickly and easily.

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
13 + 1 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.


Do you have a question about something you saw here in our blog? Are you interested in a custom website for your business? If so, please contact us here.