I have a dream that my four little children will one day live in a nation where they will not be judged by the color of their skin, but by the content of their character.
Dr. Martin Luther King, Jr
I ask you to consider these powerful words and wonder how they might apply to software engineering. What does it take to live up to this ideal? Immediately they suggest to me that:
- An engineering organization should be a meritocracy where what one knows and can do is what fuels prestige and success.
- Performance should be measured by results.
- Someone's ability to succeed as an engineer is independent of their appearance or location or any physical disability that doesn't preclude their ability to interact efficiently with a computer.
- Project-related information should be made available to engineers so that everyone is free to learn from each other and improve.
- The requirements, design and implementation of a software project should be clearly documented so that information about the project does not become a currency or a device for unfairly manipulating others.
I believe the path toward these goals begins with transparency. If transparency is extended through the entire software development life cycle, it might look something like what is described in this web site. Of course, there are lots of different ways to bring transparency to a software project. This is only one way to do it and no claim is made that this way is better than another: only that a project with sufficient transparency, however it is manifested, is better than a project run without it.
It is fair to question what transparency has to do with racial or social justice. To that question I say:
As complexity rises in a project the barrier to becoming informed will also rise unless there is sufficient transparency to balance it. Without such transparency complexity stratifies project members into information haves and have-nots. As time goes on and the complexity rises, new project members stand a worse and worse chance of ever acquiring an understanding of the project that matches those who were present at its beginning. So, anyone entering the industry would necessarily have the hardest time getting up to speed on any project. How could this effect not discourage or even eliminate participation from people entering the software engineering industry? Thus, if there is an imbalance in participants, this effect would tend to increase and exaggerate it over time.
In other words: without transparency software engineering can devolve into a “good old boys” club where entry is barred seemingly on the basis of merit, and yet it is a catch-22 because without transparency there is no way to gain the experience to qualify to be in the club. Whereas, with transparency there is a lower barrier to entry, limited primarily by one’s ability absorb information from others, and not what one already knows.
So, why would transparency in one company help? To that I ask “Why would fighting against sexism or racism in one company help?” Of course it does! I don’t believe the status quo can be justified when it institutionalizes anti-transparency policies. Whatever short-term-gains are had by avoiding transparency are, in my opinion, more than balanced by the longer term losses of productivity, quality, extensibility scalability and the ability to add new team members as time goes on.
Finally, I don’t claim to have invented any of the ideas here, and readers may notice a huge overlap between ideas presented here with Agile Programming techniques, OO Design techniques, Open Source development principles, etc. Well, great! These are all highly evolved social structures that either by design or effect result in some transparency. But, it is also possible to perform these activities and not write enough down. To fail to create enough useful transparency to make a difference in leveling the information playing field. To practitioners of these and other excellent techniques, I say:
I think there is more we can do to increase transparency in software engineering, regardless of the techniques we use, and that we should unless we are content with the degree of diversity of workers in our industry.