5 Simple ways I helped create a tech team with 23% women

Since I started at 7digital I’ve loved our belief in continuous improvement. Throughout our history as a company we have had a number of influential women working in various parts of organisation yet I knew there was more we could do to improve the diversity of our tech team.

When I joined in July 2014 I was one of two women on the tech team, a position that was short-lived as my fellow female dev left for a new position, leaving me with the coveted position of “the woman developer”. Not wanting to sit idly by and maintain my new title I set about pro-actively working with others in the tech team to grow our outreach to female developers. After only a year and a half, our tech team is now made up of 23% women, of which a number hold senior developer positions.

So how did we manage to achieve this in such a short space of time? Here are some of my top tips to bridging the gender gap in tech that helped us along.

Create a gender neutral job advert

The first part of the hiring process is centred on the job advert so we felt this was an important place to start.

A key step for us was to re-evaluate the language we used so that we could strive to incorporate gender-neutral terminology1. Using the online tool Textio, which has used machine learning to detect gender bias from millions of successful (and less successful) job advertisements, we were able to achieve this. It is useful to know that there is more to consider than just the use of pronouns when influencing or encouraging balanced applications. As a team we’ve benefitted from understanding how tone and structure in writing can impact your communication from a gender perspective.

2. Form a technical academy or training program

Here at 7digital we believe it is important to not only strive to attract the best talent but to also help nurture it ourselves.

Every year we give internal team members from any department, as well as two new graduate hires, the opportunity to take part in our Technical Academy. The programme consists of 6 months of software development training covering everything from writing code to build automation. Our graduate hires are taken on as full time developers, which ensures that from day one they are fully immersed into our tech teams.

The academy originally began as a way to teach inexperienced software devs specialised skills. The programme has since expanded to include staff who wish to become software developers or simply to gain skills that will support their current role at 7digital. The Technical Academy has received increasing interest from female employees outside the tech team as well as a rising number of women for the graduate positions. Whilst selection for the academy has not focused specifically on women, we found this to be one of the most successful factors in increasing our gender diversity. We hope that other companies see the same success with established internal training programmes.

3. Implement a code of conduct for events

Creating and implementing a code of conduct for our events was a no-brainer, and one of the simplest changes to implement.

We used an open source code of conduct and made sure attendees at our tech meetup, Devs in the Ditch, were aware of the standards of behaviour expected. Whilst we have not had any poor behaviour in the past, we recognised the importance of having a clear code of conduct, one that ensures attendees of any gender or background are treated with respect. This allows us, as hosts, to outline the culture of our events, and handle situations in the event that a guest’s behaviour falls below the standards expected.

4. Discussing issues and educating ourselves

The single most important thing we did turned out to be free and easy: to educate our teams and create an open-environment for gender issues.

When the women in our company spoke about the issues they have faced, we as a team listened. We discussed how men and women write their CVs differently and to be aware of the tendency for women to undersell themselves2,3.

We raised awareness of ways that all of our team could be encouraged to contribute to discussions and not feel that they were being ignored - for example, asking people to think before interrupting someone and reducing the use of gendered pronouns. This worked especially well with the female team members as they were no longer frustrated that they had to make extra effort to get their opinions heard.

Jenny, a senior developer in the Delivery Team, spoke to us about how the company should provide employees with a clear route to progress. We even had an, unfortunately failed, attempt at a women’s football team. The importance of this has been that by listening we have then been able to implement change!

5. Promoting our values beyond our walls

It is great to get your own house in order, but we also recognised the importance of getting involved with external organisations and discussions that help encourage gender diversity in technology.

As a company, we have increased our support for organisations such as Stemettes, CAS #include and Geekettes: CAS #include works with teachers to ensure the new computing curriculum is an equal opportunity for everyone; Stemettes encourages girls to choose STEM based subjects by running hack days; Geekettes is a global organisation that encourages the advancement of women in tech or digital leadership roles. Our efforts have included ten members of our team attending the #include computing wikibook hackathon, as well as being a part of their role model poster project - with 7digital tech team designing and starring in the poster. We’ve also sent volunteers to help support the Stemettes recent Code Warriors Hackathon, which lead to the hashtag #GirlsinSTEM trending for 8 hours on Twitter! We found the issues discussed at these events were discussed within the office, which has help to spread both awareness and knowledge.

The fantastic crowd at the Stemettes event (Twitter: @stemettes)

The team CAS #include with poster

What have 7digital said about this?

Simon Cole, CEO, has stated “Gender diversity brings many things to an organisation but fundamentally, for me, it is about a work environment matching the environment of a society, whatever role people are performing. Sometimes that involves us leading change and I am enormously proud of the work that Emma-Ashley and others have done to create that lead in our development team. There is more to do but already I feel a noticeable change in the whole work environment surrounding our dev teams, a change for the better. The most effective way to lead change is to start as people enter the world of work - or even before it - and in that respect, the work Emma-Ashley does in schools and colleges with the next generation of world class developer talent is absolutely vital.”

Paul Shannon, Vice President of Technology and former software developer in the Content Development Team, has spoken on our progression, stating “I’m proud of the compassion and attitude I’ve seen growing in our team around diversity awareness. Having great developers like Emma-Ashley pushing back and questioning our practices is precisely why we don’t want a team of clone-like versions of ourselves. The positive effect on the team is difficult to measure, and we love to measure things, it certainly feels like it’s making a positive difference and we’re attracting, and retaining, some fantastically talented people these days. Our culture of continuous improvement and the emphasis on giving people interesting problems to solve with a great degree of freedom really benefits from having ideas grounded in different experiences; with different viewpoints influenced by that diversity we’re trying to foster.”

Janey, one of our newest apprentice developers, noticed the positive gender ratios on the tech team and told us after joining it was a deciding factor in accepting a role here. For us this validated the effort and time spent on the things we listed above as we could see the value from having more women in the team was attracting more women. She also told us in her interview she is going to be a CTO one day, and we hope to help her on her way with that.

In an industry which is 16% women, we have been pro-actively striving to support the presence of female role models. We have been looking at the way progress works within 7digital and have held a tech team open space, making sure we had women there to provide feedback.

We know there is still a lot of work to do but we didn’t want to wait to share what we did. Whoever you are, man or woman, if you are into software development or system administration and want to join us on our journey of continuous improvement, we are hiring and would love to hear from you!

Emma-Ashley fills the role of Software Developer in the Media Delivery team where she is working with 7digital's streaming and downloading technologies. In her spare time she is also Industry Liaison for @CASinclude, @stemettes Ambassador and proud Hufflepuff.

Over the last month we've started using ServiceStack for a couple of our api endpoints. We're hosting these projects on a debian squeeze vm using nginx and mono. We ran into various problems along the way. Here's a breakdown of what we found and how we solved the issues we ran into. Hopefully you'll find this useful. (We'll cover deployment/infrastructure details in a second post.)

Overriding the defaults

Some of the defaults for ServiceStack are in my opinion not well suited to writing an api. This is probably down to the frameworks desire to be a complete web framework. Here's our current default implementation of AppHost:

For me, the biggest annoyance was trying to find the DefaultContentType setting. I found some of the settings unintuitive to find, but it's not like you have to do it very often!

Timing requests with StatsD

As you can see, we've added a StatsD feature which was very easy to add. It basically times how long each request took and logs it to statsD. Here's how we did it:

It would have been nicer if we could wrap the request handler but that kind of pipeline is foreign to the framework and as such you need to subscribe to the begin and end messages. There's probably a better way of recording the time spent but hey ho it works for us.

At 7digital we use Ajax to update our basket without needing to refresh the page. This provides a smoother experience for the user, but makes it a little more effort to automate our acceptance tests with [Watir](http://wtr.rubyforge.org/). Using timeouts is one way to wait for the basket to render, but it has two issues. If the timeout is too high, it forces all your tests to run slowly even if the underlying callback responds quickly. However if the timeout is too low, you risk intermittent fails any time the callback responds slowly. To avoid this you can use the [Watir `wait_until` method](http://wtr.rubyforge.org/rdoc/classes/Watir/Waiter.html#M000343), to poll for a situation where you know the callback has succeeded. This is more inline with how a real user will behave. ### Example

At 7digital we use [Cucumber](http://cukes.info/) and [Watir](http://wtr.rubyforge.org/) for running acceptance tests on some of our websites. These tests can help greatly in spotting problems with configuration, databases, load balancing, etc that unit testing misses. But because the tests exercise the whole system, from the browser all the way through the the database, they can tend be flakier than unit tests. Then can fail one minute and work the next, which can make debugging them a nightmare. So, to make the task of spotting the cause of failing acceptance tests easier, how about we set up Cucumber to take a screenshot of the desktop (and therefore browser) any time a scenario fails. ## Install Screenshot Software The first thing we need to do is install something that can take screenshots. The simplest solution I found is a tiny little windows app called [SnapIt](http://90kts.com/blog/2008/capturing-screenshots-in-watir/). It takes a single screenshot of the primary screen and saves it to a location of your choice. No more, no less. * [Download SnapIt](http://90kts.com/blog/wp-content/uploads/2008/06/snapit.exe) and save it a known location (e.g.

[TeamCity](http://www.jetbrains.com/teamcity/) is a great continuous integration server, and has brilliant built in support for running [NUnit](http://www.nunit.org/) tests. The web interface updates automatically as each test is run, and gives immediate feedback on which tests have failed without waiting for the entire suite to finish. It also keeps track of tests over multiple builds, showing you exactly when each test first failed, how often they fail etc. If like me you are using [Cucumber](http://cukes.info/) to run your acceptance tests, wouldn't it be great to get the same level of TeamCity integration for every Cucumber test. Well now you can, using the `TeamCity::Cucumber::Formatter` from the TeamCity 5.0 EAP release. JetBrains, the makers of TeamCity, released a [blog post demostrating the Cucumber test integration](http://blogs.jetbrains.com/ruby/2009/08/testing-rubymine-with-cucumber/), but without any details in how to set it up yourself. So I'll take you through it here.