Categories
Software Architect

Software architecture has ethical consequences

The ethical dimension in software is obvious when we are talking about civil rights, identity theft, or malicious software. But they arise in less exotic circumstances. If programs are successful, they affect the lives of thousands or millions of people. That impact can be positive or negative. The program can make their lives better or worse–even if just in minute proportions.

Every time I make a decision about how a program behaves, I am really deciding what my users can and cannot do, in ways more inflexible than law. There is no appeals court for required fields or mandatory workflow.

Another way to think about it is in terms of multipliers. Think back to the last major Internet worm, or when a big geek movie came out. No doubt, you heard or read a story about how much productivity this thing would cost the country. You can always find some analyst with an estimate of outrageous damages, blamed on anything that takes people away from their desks. The real moral of this story isn’t about innumeracy in the press, or self-aggrandizing accountants. It’s about multipliers, and the effect they can have.

Suppose you have a decision to make about a particular feature. You can do it the easy way in about a day, or the hard way in about a week. Which way should you do it? Suppose that the easy way makes four new fields required, whereas doing it the hard way makes the program smart enough to handle incomplete data. Which way should you do it?

Required fields seem innocuous, but they are always an imposition of your will on users. They force users to gather more information before starting their jobs. This often means they have to keep their data on Post-It notes until they’ve got everything together at the same time, resulting in lost data, delays, and general frustration.

As an analogy, suppose I’m putting a sign up on my building. Is it OK to mount the sign just six feet up on the wall, forcing pedestrians to duck or go around it? It’s easier for me to hang the sign if I don’t need a ladder and scaffold, and the sign wouldn’t even block the sidewalk. I get to save an hour installing the sign, at the expense of taking two seconds away from every pedestrian passing my store. Over the long run, all of those two second diversions are going to add up to many, many times more than the hour that I saved.

It’s not ethical to worsen the lives of others, even a small bit, just to make things easy for yourself. Successful software affects millions of people. Every decision you make imposes your will on your users. Always be mindful of the impact your decisions have on those people. You should be willing to bear large burdens to ease theirs.

'Coz sharing is caring
Categories
Software Architect

The title of software architect has only lower-case ‘a’s; deal with it

A disappointing trend has been in bloom for some time now within software development; the attempt to professionalize the practice of software architecture as one on par with the classical school of Architecture. This seems to stem from some need for further legitimization of one’s accomplishment beyond acknowledgment among one’s peers and employer. By comparison, Architecture itself was not professionalized until the late 19th century, at least a few millennia after the practice had been around. It would be no great stretch to say that some software architects seem a bit eager by comparison.

Software architecture is a craft, and it certainly takes practice and discipline to achieve success in the field. That said, software development is still a relatively nascent endeavor. We don’t even know enough about this practice to adequately professionalize it. Despite its youth, software development’s product has become a highly valued tool, and as such, the accomplished individuals (as well as those who wish to be seen as accomplished) have enjoyed levels of compensation on par with the leading professional fields, including medicine, accounting, and law.

Practitioners of software development enjoy considerable compensation for work that is highly creative and exploratory. The fruits of our labors have been used to accomplish many significant milestones, some that benefit all of mankind. The barriers to entry are largely one’s own merit and opportunity; the fully-professionalized fields undergo programs of study and internship that dwarf our own. Dwell on that for a moment and ponder how much cause we have to be content, and just how brash it is to insist that software architect be considered a title that sits as peer to Lawyer, Doctor, and Architect.

The title of software architect has only lower-case ‘a’s; deal with it.

'Coz sharing is caring