Saving the World with Software
There's been an increased focus on user experience in the last few years, bringing with it an avalanche of related buzzwords.
Everyone's wants them some UX. No, no... interaction design. Usability?
Anyway, it's refreshing to see design and the creation of elegant interfaces take greater prominence in building systems. We now judge our software by a higher standard than we did 10 years ago.
We're now much more aware of how our users are using our systems. And we try to build things that make their lives easier. After all, if we make the end users happy, we've succeeded right? Everyone will love us.
End users aren't the only people that "experience" our software. If you're building software for others, we might have to include a few more.. how about everyone that comes in contact with it in some way or another? And then also include the people that come into contact with us during the process.
The operations team might have to run our installation and upgrade scripts, or make configuration changes to the system. They will have some sort of experience.
Future maintaining developers will "experience" all of the ease or pain of making changes, fixing issues, and keeping the thing running. If it's not a pleasant experience, they'll make sure everyone knows. All your hard work, your beautiful user experience, compared to lipstick on a pig - a facade that hides some shoddy workmanship. But you worked hard on it, right? You just didn't have time to refactor that part of the system. But now it's too late to explain everything to the new developer who just wants to rebuild the whole thing in LOLCODE anyway because it's clearly a mess now. And he figures it would only take him a couple weeks to do it "properly".
The project sponsor, overseeing manager, or CEO may never experience using our software directly. His or her experience may be the effect on the business. The bottom line. Does the thing do what it was supposed to? If it doesn't, you guessed it -- bad experience.
What's the turnaround time on getting something fixed and/or deployed to production? Automating stuff? Yes, we can. If you're slow or can't do things reliably and in a repeatable way.. bad experience!
Are you introducing new bugs every time you fix an old one? Oh no! Bad experience all around. We have testing for that.
For some, their experience may be entirely secondhand. Did we increase or decrease the number of people swearing and flipping tables in the office around them? Or are they overhearing users saying that the new system is so much better than what they had before. That might be the only experience some have as they are indirectly affected by the quality of the work we do. You affected the mood of the room. Congratulations!
There are loads of people that we affect daily throughout the processes of designing, delivering, and maintaining software.
Lucky for us, the bar is set pretty low with a lot of enterprise software. We don't have to be perfect. There's no such thing as perfect. And we have real constraints like time, money, and resources.
But the beautiful thing about software is that it is able to evolve. We can keep refining it and making it better. And so we evolve as well. You are continually getting better at your craft, right?
Every time we deliver something, we're learning from our past and delivering better than ever before.
I'm thinking one of the ways that we can do that is to consciously consider the experiences of all the people that our software affects:
End users and everyone within earshot. UX, baby. Administrators, operations. Did they say "wow, that was easy!". They should have. Management. Or, everyone who sees the progress or status reports. Wow, this is what it's like getting a professional to build stuff for us. Developers. Maintainers. Wow, your code is so easy to understand, fix, and modify. Respect! Stakeholders. Your work did what it was supposed to. You delivered! Trust! Are we making their day better, even marginally, by building software for them? Are they better off with us or without?
We're practically saving the world with software. Except we're not at all.
But hopefully we're making it just a little bit better for everyone that comes into contact with our work and us during the process.