Embracing Diversity in Development Teams

Background

Recently, I spoke at the Lean AGILE Glasgow meet up in March about how to embrace diversity in the tech industry, specifically focused on within development teams and why it is a good thing. I thought that I would write up this talk in some detail so that people that didn’t get a chance to watch or attend, would be able to read about it instead.

 

My Software Development Experience

As a lot of people know, I am still a student, therefore some may wonder if I actually have any software development experience that can be applied to what I’m talking about. However, being a student means that I get plentiful experience studying different development methodologies and even putting these to use. This includes Rapid Application Development (RAD) where everybody scrambles to put something together as quickly as possible in a very short space of time, without prototypes. The type of development used at events such as hackathons can often be described as RAD, which I have attended many of. Alongside this, I have also studied AGILE development in depth, and put it to extensive use throughout my professional software development course this semester, where we have to work with a real world customer to produce a product that meets their specifications across a period of 6 months. So, since my project isn’t going awfully, I must be doing something right therefore I feel confident enough to talk about and tailor the issues that I will be discussing specifically around software development.

Is Working in a Team Always Positive?

It’s relatively easy to establish that working in a team isn’t always everybody’s cup of tea. This could be for a variety of reasons:

  • Some people might just prefer working by themselves. Sometimes it is easier to design something by yourself if it is just a small project or something personal that you want to make, for example, your own website.  On the flip side, some people might just be introverted, which is totally okay too!
  • There are many different and opposing opinions when it comes to coding styles. This includes using tabs or spaces, what programming language everybody wants to use, what the design is going to be, and many more.
  • There could be many conflicts created within teams because of issues with people slacking, people working too much, people getting frustrated and all the rest of it. When you are working within a team, your people skills are put to the test!
  • Some people might think of working with others as a distraction and therefore that they can’t achieve their full working potential when working with people. This might lead to late nights and early mornings after getting home from the office so that these individuals can keep up to pace, which isn’t ideal for anybody involved.
  • Some people just like playing by their own rules and setting their own work schedules and deadlines!

Overall, I can completely understand people wanting to work by themselves sometimes. However, when  you’re dealing with a large project or don’t have the knowledge yourself to get something done, you will need to work with a group of people. Especially within the industry.

Why Should You Work in a Team?

Working as part of a team comes with many benefits, as I am sure most of you are aware of already:

  • A lot more work can be done in less time. This is a pretty obvious and overused example, but it still holds true!
  • You have another pair of eyes to look over your work with you. This can be extremely beneficial for various different reasons. People can learn from you and you can learn from other people when coding together, to create the most effective code for whatever it is that you’re working on. This is why within software development, pair programming and mob programming are starting to be adapted by large scale industry companies.
  • People tend to be more creative when working together. This is due to brainstorming and spitballing ideas back and forth between each other, not just yourself!
  • Friendships and trust can be built up when working with people, also. If you have to work with a group of people on a project for an extended period of time, it is likely that by the end of it you will have gotten to know each other pretty well.
  • Even though there are issues when working within teams, resolving these issues leads to better skills handling and dealing with conflicts, which can be used in all walks of life. Every cloud has a silver lining!
  • Working as part of a team also encourages healthy risk taking. When some people are working within teams, they feel the need to prove themselves to people and therefore want to be the one that has that “eureka” moment. This can really bring people out of their shell and make them more confident, as well as a harder worker.
  • Last but not least by any means, if you don’t know something then there is a very good chance that somebody else in your team will. We all have different and unique skill sets and talents, therefore it would be foolish to not combine them! This is a form of embracing diversity in itself, and it is definitely a positive thing!

What do I Mean by “Diversity”?

Almost everybody has a different idea of what the definition of “diversity” actually is. To me, diversity is how things and people differ. For example, I am diverse from everybody reading this, and everybody reading this is diverse to me and one another. Obviously some people are more diverse or less diverse to certain people than others, but that’s not the point.

Diversity is a fantastic thing and it can help us out massively in all walks of life! We should be embracing it. This leads us on to the real question.

Does Diversity Aid Software Development?

Without getting too philosophical, if we didn’t have diversity, the world that we live in would be boring. We would have seen and heard everything before. This is especially important in software development.

The majority of successful products contain features that haven’t been thought of or implemented before. This means that even products need to be diverse from one another!

Asides from what is produced from software development, there is one major part that everybody can agree that diversity is massively important to.

Product Testing

There are many different ways to test the wide variety of products that are produced from software development processes. However, one thing that testing has in common across the board, is that if software is going to be released to the public, it should definitely be tested with different members of the public in a variety of different ways. All of the different people using your product need to be taken into account when you are testing.

There are a few major examples of software development cases, where all of the different people using applications were not taken into account. Let us take a quick look over some of them.

Example 1: Voice Recognition Software’s Difficulty with Different Accents

This is understandably difficult to cater for, especially in somewhere like Scotland. This is getting a lot better from the first voice recognition software that I ever came across, built in to the iPod Touch’s voice operated music controls. However, there are some issues that are still present with voice recognition.

A good example of how difficult it is to work with voice recognition technology in Scotland is seen in this popular Burniston sketch.

Example 2: Racist AIs

There are many examples where artificial intelligence software has demonstrated racist tendencies.

An AI was developed to help aid the American justice system. It’s only job was to label suspected criminals as guilty or innocent, and it turned out that it was labeling criminals guilty, simply because they were black. This could be for a number of different reasons, including that the development team themselves are racist and have accidentally included this into the AI’s programming, that the justice system is corrupt and racist, or many other reasons. But this isn’t even the start with racist AIs. You can read the report here.

There is a video that went viral of a hand drier that had been programmed to recognise when human skin was put infront of it, therefore to turn on. However, this did not work on people with darker skin. Come on, everybody has the right to dry their hands!

Google developed an image recognition software and released it to the public, and one user discovered that when they tried to use the software on an image of their black friend, that it was identifying them as a “gorilla”. This is obviously extremely unacceptable, and Google profusely apologised and fixed the bug immediately.

Example 3: Machines Associating Household Objects With Women

A professor at the University of Virginia was developing his own image recognition software, and during testing he realised that the software was associating images of kitchens, for example, with women. As the professor did not want the software to be sexist, he then started researching why this was the case, as he wanted to figure out how to avoid whatever was causing it, so that this did not happen again.

This is when he discovered that image collections that are widely used for training AIs, and are actually recommended/used by companies such as Microsoft and Facebook, contain many clearly stereotyped and sexist images.

AIs take the data that they are trained on, and apply them to every situation that they are given. Therefore, it was being made to think that all these stereotypes were how things were, which is not the case. You can read the article here.

Example 4: Accessibility Requirements Not Being Met

There are many different examples of this from big and small companies within the industry, which can be seen from this one of many example articles.

Within these examples, people that have different issues with accessing websites or software through normal methods and need alternative methods to access them, do not have these alternative methods working the way that they are needed.

People with accessibility difficulties are still going to want to use your products!

What’s the Moral of the Story?

We can see from these examples that there is clearly something wrong here. These issues should never have happened in the first place!

Money isn’t even the start of the problems when issues like this occur. Can you imagine having to pay employees of a company to go back and make sure that software that they made wasn’t going to be racist any more? It’s ridiculous that things like that have to happen.

When things like this happen, there is a bad smell created within the industry that lingers. If somebody tries to use a product and they cannot use it, a number of things could happen. Some people might think that it’s a widespread issue that happens to everybody, some people might not even notice because of how small a bug it is, but some people could feel discriminated against which is a horrible feeling. As software developers, we are people that make products to make peoples lives easier, not make them feel bad because of who they are.

How Can We Fix This?

There are many different factors that contribute to issues like those described above that need to be addressed, which could be a whole other post in itself, however, there are a few key things that everybody should make an effort to do, to help combat things like this happening again.

  1. As much as you cannot test your product on every single person that is going to be using it, you can try and make sure that users that are going to be testing the product are as diverse as possible. This can be done in a different number of ways. For example, selecting from many different groups of people when doing testing through user groups, or beta testing to the wider public.
  2. If you are in charge of employment in any way, you should be making your recruitment policy as open and accepting as possible. This will definitely attract diverse people to come and join you, which kills 2 birds with 1 stone. If you have a diverse development team, then you will be less likely not have issues like those stated above, as well as hiring diverse people and solving issues of inequality in the industry. It’s a win-win.
  3. Build for inclusiveness! If you are making a product, then build with the thought of making it accessible as possible for people at the front of your mind.
  4. Finally, remember that as developers, we don’t know everything about how to make things as inclusive as possible. If you need any advice, then we are all here to help each other. And if you are looking for advice to include certain aspects, there will be certain groups that can give you advice on this. For example, Women in Tech, Scotland, for embracing different genders.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s