I can’t stress how important it is to know who your users are and what they do. When developing custom apps, regardless what the underlying programming is, it’s so important to know how the user is going to use what you build. It’s even more important to clearly understand what the user does and how they do their job BEFORE you start planning your project.
I’m starting my last 2 module re-writes of a long term project and I really enjoy the information gathering and initial interface design aspect of programming. Gathering information allows me to get down into the trenches and observe and interact with the end users. How are they doing their job? Let me try? I get to ask a bunch of questions and let them complain to me about their day-to-day tasks. In a way it’s like I’m a therapist. I’m here to make their job easier and to help eliminate those annoyances.
At the same time, I get to think about how they might use a new feature or do their job a little different, more efficient. This is when I begin exploring the interface design and how the user will interact with the input tools. Is it clean, clear and easy to use? Can they figure out how to use it with little or no documentation?
With this comes change. I don’t know about you, but I don’t even like change. Just keep this in mind when you go to implement the new solution. Learn how to manage the resistance to change. When you are in the trenches, let the users know that change is coming. If they are part of this change, there is less resistance. Above all, make sure to train. If you’ve done your job right, once the user is shown how to use the new solution, they will see the improvements. Sometimes it takes them time to get used to the newness and repeated training sessions may also be necessary.