You meet with a client and he explains his idea. The managerial teams shake hands and everyone is happy. But, for the engineering team the fun hasn’t started yet. The following is based on a true story….
Before anyone gets his hands dirty with code, a decision needs to be made, i.e what programming language to use. To be more realistic, what technologies to use. Many things influence this decision, but the decisive factor originates from the client needs.
Thus, even before the technological decision, we need to encode the client’s idea in a language that the engineering team can understand and process. This is the time where we need to author the famous ‘Functional Specification’ document (among other documents).
Having a clear vision of what needs to be done, we can then consider factors like scalability, flexibility, performance, platform dependencies and decide which technological path to follow.
After the client approves the Functional Specification, i.e. he agrees that the product to be delivered will behave as he had originally envisioned, the engineering team can finally have its fun. But, wait! The team needs to collaborate, so we first need to set up workspaces, versioning systems, automation and staging servers…. Well, system administrators should have some fun too!
So, finally, the engineering team can have the long awaited fun (well by now, you might as well have guessed it, I am one of them). The magic word is implementation. And so many other buzzwords that encapsulate such hateful meanings…. unit testing, milestone deliveries, timesheets, re-implementation, quality control, bug fixing…. I guess this is why it’s called software engineering and not just development.
After all the above one would assume that that’s that and it’s time to move on. But, more often than not, this is not the case. Assuming that the delivered product did put a smile on the client’s face, we still need to host the product and ensure its wide accessibility. Oh, well, let the system administrators worry about that. I’m just happy that the bugs identified by the users are as minimal as possible.
Usability testing in a nutshell is a 1 on 1 session with real life users, asking them to perform a number of tasks on a website/app to see what works well and what doesn't work well for them.
The best way to discover how well your website or application works is to watch and analyse real users interacting with it.