Diversity in IT: ultimate goal or a tool for a better future

Disclaimer: opinions expressed here are my own and not related to/endorsed by my employer or anyone else.

Diversity. We hear calls for a diversity from everywhere almost on a daily basis. Different organisations and events are blamed for the lack of diversity. But what is the meaning of diversity? Let’s dig.

From Google:


Sounds nice, but…

What it actually means from a company/event point of view? Usually, only two types of diversities are looked at: racial diversity and gender diversity. In other words mix of individuals from different ethnic backgrounds is an indicator of a racial diversity. A mix of male and female individuals is an indicator of a gender diversity.

So, how a diversity of any kind can be achieved? There are two options: naturally (when diverse mix of people is selected based on their merits and conditions of entry are inclusive and not discriminatory) and by force (when someone makes a decision about diversity targets, creates quotas, and discriminates against people of a particular race/gender because they are an obstacle to achieve those targets).

As someone, who works in the IT industry for 20+ years, I like to work in naturally diverse teams. Those teams are usually high-performance teams due to a natural selection. In those teams, people are focused on hitting their work targets and don’t care about race/gender of their co-workers. Naturally, these teams embrace another type of diversity, the most important one – diversity of thoughts. I consider this type of diversity one of the most essential factors in the creation of a positive team dynamic. In such teams, people feel free to express their opinion without a fear to be ridiculed and open to constructive criticism of their work. There’s no way someone tells to other team members something like “your opinion prevents me from doing my job“. I’ve heard this one when I was a part of a forceful gender diversity obsessed organisation.

This brings us to a discussion about organisations where diversity of different types is enforced. Usually, it’s not a diversity of thoughts that enforced. This one is cut first. To justify their existence, so-called “diversity champions” (real position in one of the organisations) start from declaring lack of diversity as a major problem. And it doesn’t matter if an organisation achieves its commercial goals or conference tickets are sold out in seconds. How success is defined in those organisations? Data needs to be collected first – and it’s perfectly fine. It is unlawful to ask people of their ethnic background – so, thankfully, this aspect is usually left alone.  But gender… Instead of optional male/female/other field (to keep reasonable SJWs in bay 🙂 ) they start talking about tens of genders, their fluidity etc. My opinion is that in most cases when we deal with IT (and not only), gender doesn’t matter. In some cases where it does matter, usual male/female/others suffice. So, it starts from a weird data collection and ends up with quotas, AKA reverse discrimination. It usually leads to a sad reality when an organisation loses or misses good people because of their gender. But diversity champions can tweet something like this:



Why, tell me why, would you use “identify as female” when talking about IT conference (in this example)? If someone identifies herself as female, this person is female. But the answer is straightforward. Usage “Identify as …” makes this fuzzy feeling of self-indulgence and moral superiority also sometimes called “inclusiveness”.

By now, I am sure, we agree that naturally diverse environment in IT is the way to go. How do we facilitate this?

  • most important: no discrimination of any kind – race, gender, body type (unless related to work conditions), age, political views, etc.
  • recruitment: if you want to have a higher percentage of employees of a particular type (i.e. more women), you need to work on increasing number of candidates of this type. For example, support communities like Code Like A Girl, Node Girls, and many others
  • community: support of user groups, meetups, local conferences. This approach gives an excellent exposure to a diverse range of people and provides an opportunity to market your organization
  • staff retention: once hired, we need to try and keep people. I mean to create the environment where people want to stay and contribute to the success of the organisation. I am not talking about money. Professional development, flexible working hours, ability to work remotely, at least part-time, parental leave, etc.
  • keep door revolving: even when people leave, it’s good to say them goodbye in such a way that they would be happy to come back

Obviously, there’s no 100% guarantee that even if all the action items above are followed, the desired result will be achieved. If not, there is a perfect rule from the Agile cookbook: “Inspect & Adapt”. Organisations are different, people are different – find your own way. Once found – share.

To summarise: diversity is a very complicated topic. It seems that there are many ways to improve it, but many of those, mainly paved with good intentions, can lead you astray.

P.S. good related article

Xamarin.Form – memory management

This post is part 4 of series of Xamarin.Forms – real life stories posts.

The nature of the application we were creating is that it is in use almost 24×7. And memory leaks, even small ones, pile up. And at some stage iOS throws you a memory warning, and shortly afterwards, application gets killed. First time we noticed the problem was when the application was about 50% ready and serious testing started. Our tester complained that after 2 hours of use, the application became slow and then it crashes. Investigation of  crash files with native iOS tools showed that operating system killed the app because of excessive memory use.

Now we know the exact cause of the problem, how do we solve it?

Continue reading

Xamarin.Native vs. Xamarin.Forms

This post is part 2 of series of Xamarin.Forms – real life stories post.

Let’s start by defining Xamarin.Native (it’s not an official name). For me Xamarin.Native is combination of Xamarin.iOS, Xamarin.Android, and Xamarin.Mac. These 3 packages allow creation of platform specific UI in a way that very close to the way native apps are developed. The main difference is that it can be done using C# language. In addition, non-UI layers (e.g. business, communication, etc.) can be shared across multiple platforms if separated into PCL library. This approach enable us to fine-tune the UI for each platform without the risk to introduce bugs to other platforms. Also you can re-use those PCL libraries to create native Windows apps (Windows Phone, WinRT, UWP).

Continue reading

Xamarin.Forms – real life stories

During last 12 month I was part of small but very mighty team. Our goal was implement mobile tablet-optimised application supporting 3 major platforms: iOS, Windows, and Android. At this stage, this project is almost completed, application is published in Apple, Windows stores and in Google Play. A lot of lessons have been learnt during this year and this what I want to share.

Continue reading