Martin Fowler on the ethics of software development – QCon report

Martin Fowler of ThoughtWorks gave what seemed an important session at QCon London, exploring the ethical dimension of software development with a talk called What are we programming for?. The room was small, since the organisers figured that a track on IT with a a conscience would be a minority interest; but Fowler always attracts a large audience and the result was a predictable crush.

The topic itself has many facets, perhaps awkwardly commingled. Should you walk away if your customer or employer asks you to code the wrong thing – maybe enforcing poor practice, or creating algorithms to fleece your customer’s customers? What about coding for proprietary platforms owned by vendors with questionable business practices? Fowler mentioned that around 50% of ThoughtWorks solutions are built on Microsoft .NET; and that the efforts of Bill Gates to combat malaria was something that helped him make sense of that relationship.

Fowler also echoed some of Robert Martin’s theme from the day before: if you build poor software, you are in effect stealing from the future revenue of your customer.

Finally, he talked about the male/female imbalance in software development, rejecting the idea that it is the consequence of natural differences in aptitude or inclination. Rather, he said, we can’t pretend to have the best people for the job while the imbalance continues. I’d add that since communication is a major theme of Agile methodology, and that females seem to have communication skills that males lack, fixing the imbalance could improve the development process in other ways.

Big questions; and Fowler had few answers. When asked for the takeaway, he said the main one is to discuss these issues more.

7 comments to Martin Fowler on the ethics of software development – QCon report

Ethical software development is of course a proper and righteous striving. Whether it is practical for the individual programmer is another consideration. Some programmers, developers, software architects and manufacturers will find themselves at odds with one another. Some in order to survive will do whatever is required to keep the lights on and feed the kids. If that means writing software to bilk a customers, customers or creation of malware, many will answer the call. Where exactly do all the virii come from? Who hacked the voting machines?

These areas are worth pursuing but to what extent and granularity can be questionable? Nevertheless the point should be made, and shouted and trumpeted and media attention brought to bear. Activism should be applied. Greater efforts should be made. Self policing should be industry wide. We all pride ourselves of being analytical and bright that we should be able to solve these sort of problems.

Lack of women in IT is definitely a glaring area of need and an omission of self-conduct, but so is the lack of African descendants in IT. Start somewhere, at least, cross train all the ones who are employed now to be better, in hopes of encouraging them to be beacons to others. Our industry as a whole needs greater levels of mentors and mentees.

Discussion will help, but action, even if small will do more. Think of it as yet another example of the Agile Method.

The business pushes for deliveries and the software may end up as a bloated and patched prototype running in production – this is most likely the scenario; we are “pro” so we deliver increasing the technical debt and compromising the joy of writing great code with the need to pay the mortgage. Who fails to keep this game in balance? And the recession may decide…

Very often it’s the customers themselves that push for quick and cheap solutions with total lack of concern for long term goals. Often, it’s the result of inadequate resources for IT projects and sometimes just the lack of the understanding that spending more up-front might save a lot later.

People, who develop solution, often, lack power in dictating how things should be run (especially if the proposed option would cost more). Running projects is complex activity and sometimes good intentions and practices are not enough.

I am a female and from my experience there is a jungle out there. “She can fight back or leave”. Not so long ago there was a study published by DDJ about female perception of studying computer science and one thing voiced was that girls felt that they needed to work harder to get the same grade as male students. I think it translates into IT as well. Besides, there is an imbalance in pay, projects are late and the deadlines need to be met so work/family balance is always an issue and usually hurts females more than males.

Companies that develop software, either for internal use or for sale as a product make many of the same mistakes over and over again. Communication within a project and in the business that drives it is the number one problem in software. It has always been the number one problem.

The inability to effectively define and drive a product is what causes all other problems. If you don’t know what you want to build, how can you deliver it on time? No one spends enough time identifying key scenarios and walking through them.

Management makes promises to customers on the delivery date and everything is compromised (getting the irony yet?) from that point.

As far as women are concerned, I’ve only worked with one female who wasn’t in QA in my entire career, which spans many years. I’ve always thought that to be odd and counter productive.

We need to differentiate between ethically wrong (fleecing customers, intentionally producing misleading data, etc.–you know, lying, stealing and killing) and poor practice (poor design, inadequate review, bloated code, applications that run slowly or have poor GUIs, etc.). Those of us who regard ourselves as professionals try to avoid poor practice, but may be forced into it by job requirements. However, we should always refuse to do anything ethically wrong, even if it means having to find another job.

We are all African descendants; some of our ancestors left earlier than others…

The company I currently work for treats all employees equally, does not tolerate any form of harassment, and is very accommodating of individuals’ needs; in other words, there is zero barrier to women working here. Despite all that, we have very few female developers – we just can’t find enough to recruit. The problem is a long way upstream from here, in career choices made by girls in high school, and I don’t think that their perception is that IT is hostile to women, just dull, geeky, uncool, etc.

I think the relatively small number of women in IT is partly about the common perception that it’s a mostly-men domain, so that’s why many girls don’t really try and understand it and see if they’re good at it, and if they do get to work in IT, they need to keep the work day to 8 hours, because they have things to do at home, and when deadlines come and you have to work overtime, it’s harder to do both.

I might be wrong in this, but I have a feeling that in IT working overtime is seen as something natural, and instead of asking for it only on special, well reasoned occasions, managers use it as a quick fix for bad planning. This puts pressure on the programmers and takes away more of their time, and those who can’t adapt have to find another job.

And on top of that, (at least where I work) there’s a still strong idea that women aren’t as smart as men, and some of the men in my company (thankfully not the boss) have a ‘don’t listen to her, she’s a woman’ attitude.