Sustainability has been a "hot" topic for the last five plus years now. It is often talked about in the context of the environmentalist movement or farming, but allow me to give the concept a bit of a technical and moral spin. Sustainability is all about planning for the future of humanity. What our children and the world's children will experience as a result of our actions today.
Do you think your house will be standing 100 years from now? How about 1000s, like the pantheon? No? Me neither. This is the issue I've come to with systems design. I came into a world where people did things with a lack of planning for the future directions it would take us. I didn't create the issues, but it is all of our responsibility to fix it.
How many systems have you used that needed to be explained to you far beyond 5 minutes? How many wasteful positions do you see that maintain a single, custom system? How many additional positions do you see as a result of poor, bloated work-flows? How many people know how to do your job?
This all brings me to the issue of morality in systems design / implementation. Systems should be designed in such a way that they are not only easy to use but easy to maintain and sustain for decades, not months and years. Breaking down the walls between those creating the system and those in need of a system isn't just a best practice, it's a moral prerogative.
The technical elites (haves) have a moral obligation to design and develop systems in such a way that everyone (even have nots) can use them. Experience design (UX) is not just a "nice to have" requirement, it is a moral issue. It is immoral to design something that allows the system to be dependent upon your knowledge (or any small group of people) to continue running.
Yeah, believe me, it's very tempting to hand a system off to a client who has no clue what they're doing and intentionally design it so you'll always have to be involved.
It's also far more difficult to design in such a way that you don't have to be involved (even as much) in the future. Let's face it, that's less money for you and probably more work to get a product out to the client.
There has been a bit of a code of ethics push in the Drupal community which has had me thinking about all this so I'd like to make one of my own. These are some of the principles that I strive towards in everything I write and in every interaction with those in the community: