5 ways to improve your line-of-business application

Whether you are developing a line-of-business application internally or to be sold, and whether it is web-based or thick-client, it should support a few key features that far too many applications fail to do.

1. Global search

An effective search can make a system vastly easier to use. It should be immediately available, and work consistently, from any area of your application. It should also be as simple to use as Google (enter some search terms and hit “Go”), but should allow for more advanced capabilities such as filtering, or exclusions, through a documented syntax. This advanced syntax won’t be used by perhaps 80% of your users, but for the 20% who do it will be a critical feature.

2. Single sign-on, leveraging Active Directory

Almost every organisation uses Active Directory, or a similar system, so there’s no need to have your own users table. Instead have modules which you can plug-in to allow you to talk to their identity management system. If your application has a permissions system, you can store the permissions there as well. Administrators will generally have a great deal of experience of their own systems, so your application will fit in with their existing workflow better.

3. Report errors centrally

As well as reporting the error to the user, report it to yourself. If you are a developer working inside the company, send yourself an email, with the user, the error, and the location of the user within the program (e.g. the URL, a stack-trace, etc). If you are an external developer, call a web service to create a ticket in your support system. If you contact a user about a problem, rather than them having to contact you, you will have made a client for life.

4. Accelerator keys

Some users are very happy with a mouse-driven application. However, wander down to the finance department and you will see they rarely take their hands off the keyboard. If you can drive your application using the keyboard, perhaps by incorporating accelerator keys, you can increase their productivity by two- or three-fold.

5. Coding ID numbers

Prefix a letter to the internal ID numbers of your applications data can be extremely useful. The last system I worked on was a property management application for lettings agents. We prefixed all properties with an R, all clients with C, all maintenance jobs with M, etc. So, R123456 would be property 123456.

This was used in a number of places. Entering the ID into the global search would instantly take you to the relevant web-page, while system-generated letters would have a reference built up from these numbers.

At what point do you think “why am I doing this?”

When I started a new job, I was told I would be working on a 3-tier architecture. I was a little bemused when I first laid eyes on the code and discovered that 2 of the tiers were entirely pointless!

In a traditional 3-tier architecture (using SQL) your presentation layer obtains a business object from the business layer, which in turn is responsible for communicating with your data repository, perhaps using an ORM, or raw SQL, or stored procedures, or whatever.

In this project, the presentation layer would call a method in the business layer, which was a wrapper for a method in the data-layer, which was itself a wrapper for a stored-procedure. There were about 300 stored procedures, so there were 600 redundant methods, meaning around 6000 redundant lines of code, spread across 14 assemblies, and close on 100 classes.

Now, I can understand how someone could misinterpret the n-tier design philosophy, and implement it this way. I’ve done some superbly stupid things in my time. It’s called learning. What I can’t understand is how you can keep with this approach for years at a time. I mean, at what point do you sit down and think “Why am I doing this? What benefit is it providing me with?”.

Even if you do understand the design, the framework, the language, the tool, the whatever, and are using it exactly as it was intended, you should still be asking this question and, if you don’t get a compelling answer, stop doing it! It’s as simple as that.