Caitlin Moran, Girls in Coding & the Future Workforce

caitlin-moran-girls-who-code

This is a guest post from Sinead Bunting, Marketing Director at Monster and organiser of tomorrow evening’s Girls in Coding: How they will be critical to female roles in the future workforce event, being held at Skills Matter. The event is free though tickets are limited, so book now!


I used to be a bit of a blogger, and enjoyed nothing more, than regularly posting a good cathartic piece of my mind at the industry blog; Digitalrecruiting.co.uk. But I stopped contributing about three years ago. Having moved media/solution side, I felt my thoughts wouldn’t be viewed as being as objective as perhaps they once were. Also, maybe nothing got me fired up enough to bother putting my tuppence worth out there in the blogosphere. Yet here I am today, fired up and ready to go!

So, What Happened?

In July last year I went to see Caitlin Moran launch her new book, How to Build a Girl in Union Chapel, Islington, London. I was pretty excited; I’m a big fan of Caitlin and I was also about to go on holiday to France, so was looking forward to a bit of downtime and a break from all things work.

That night however, rather un-expectantly, Caitlin said something that got me thinking all about work!

She said something that was so fundamentally important to the future of the workforce that I immediately thought to myself, ‘something has to be done about this’ and Monster and its mission of helping folks ‘Find Better’ in their career and its strength in connecting tech talent, has some role to play here…

This is what Caitlin said:

“If 90% of coders are men, developing and owning the language of the future, women won’t be part of the conversation”

monster-event-twitter-post

This hit me like a bolt of lightning – well perhaps a slight exaggeration – but it did really hit home. I was worried. Whilst there is still some way to go in terms of true equality, whether it’s in equal pay or the low percentage of women in senior management positions, females have made some significant strides in the UK workforce in recent years. This has been to the benefit of all concerned with reports showing that companies who have more women on their boards and in their senior management teams aren’t just ‘doing the right thing’, they are generating greater profit. The prospect of this gender equality progress unravelling, due to females not being sufficiently skilled in tech to converse in a world where all things tech prevail, is hugely concerning. It’s also the wrong direction to go in for a stronger, fairer and more successful society. As Hilary Clinton stated last month at a conference for women in Silicon Valley; “We’re going backward in a field that is supposed to be all about moving forward”.

Girls in Coding and the Future Workforce

Intuitively, the solution seems pretty clear; we need to show girls that a career in coding can be hugely interesting, rewarding and that coding and technology are fundamental skillsets required for any industry or role they hope to pursue in the future. Additionally we need to enable girls to learn these skills and also up-skill females (and males) who are currently in the workforce. So, by no means an easy or simple task. This is further compounded by worrying retention rates of women current working in tech, who are leaving the industry due to a chauvinist culture and female-unfriendly working environment. If we are building a pipeline of female tech talent but it goes into an environment that’s not accessible or sustainable, we have a ‘leaky bucket’ effect, which does not solve issues in the long-term.

The good news is that contrary to popular opinion, girls and women actually quite like technology with recent reports showing that there are now more women than men gamers in the UK. Having spoken to numerous women in and around the area of technology and ‘women in tech’ in last month or so, there is some fantastic work and initiatives already being done it this area. There is such an appetite and passion to help girls and women get into technology that the future is incredibly promising.

Next Steps – Working Together

Our goal at Monster is to raise awareness of the issue amongst talent acquisition and HR professionals and to show both current and future candidates the importance of coding skills in current and future careers.

Our first step towards raising awareness is to host a Monster #TechTalent event on April the 16th at Skills Matter eXchange, London: Girls in Coding: How they will be critical to female roles in the future workforce.

The event will consist of a series of interactive panel discussions with leading figures in this space discussing issues around the long, mid and shorter term areas and possible solutions to help girls get into coding and women into technology.

The event is open to all parties, and of course both genders.

The following panellists have been confirmed:

  • Amali de Alwis, CEO and Executive Board, Code First: Girls
  • Ruth Nicholls, Managing Director, Young Rewired State
  • Amelia Humfress, Founder and CEO, Steer
  • Anne-Marie Imafidon, Founder, STEMettes
  • Marily Nika, Co-ambassador, London Geekettes
  • Debbie Forster, UK Managing Director, CDI Apps for Good
  • Gina Jackson, Managing Director, Next Gen Skills Academy
  • Graeme Goulden, Senior Product Lead, Monster Worldwide
  • Alexa Glick, Global Diversity Program Manager, Microsoft
  • Wendy Devolder, CEO, Skills Matter

Role Models

Additionally, what we know is that ‘people buy people’ and girls are hugely influenced by roles models and their peer group. Monster is working with the London Met Film School to film a selection of women in tech, as role models to show girls just how rewarding and successful a career in and around technology can be. We will be distributing this content online with the aim of influencing not only girls but their parents who as gatekeepers are hugely influential when it comes to subject and career choice.

Plug the Digital skills Gap & Fuel Economic Growth

It’s estimated that the UK requires an additional 745,000 workers with digital skills by 2017and 77% of firms within Tech City in London say they could grow faster if they had access to better skilled digital staff. All too many studies highlight that in tech, its men who are leading the way in this crucial aspect of the workforce. To ensure we meet this tech talent challenge, plug the digital skills gap, as well as develop tech that meets the needs and requirements of both genders, this needs to change.

Having spoken to many industry figures and women in technology in the last few months, it’s fantastic to know that there are many great initiatives and passionate professionals out there wanting to and already making a difference in this key area. We’re looking forward to marking the start of our Girls In Coding campaign with our upcoming event and believe that, by raising further awareness of the issue amongst the HR and talent acquisition community, we can work collaboratively to really make a difference to the amount of girls and women considering coding as an exciting and rewarding career option.

Watch this space…..


For more information on the Girls in Coding: How they will be critical to female roles in the future workforce event, or to register, click here.

 

Dear next PM: Stem the tide of our worsening tech skills gap!

This open letter to the next Prime Minister from Skills Matter CEO Wendy Devolder first appeared on ElectronicsWeekly.com. It is reprinted here with permission.


wendy-devolder-1200px-webDear next P.M.,

You will know that London is now the undisputed home to Europe’s fastest growing tech cluster.

It’s not clear, however, if you or your main challengers intend to take action to deal with the crisis in which our capital’s tech businesses find themselves.

They can not find the talent to keep up with their own growth. So you and your government must take action.

Tech is a golden place to work right now according to all the most recent research. The Business Growth Fund and Barclays say 27% of all job growth in London is generated by the tech and digital sector. And businesses questioned by the latest Barclays’ Fast Growth Tech survey predict they will grow by 11 percent on average over the course of the year, which is more than four times faster than the UK’s 2015 GDP forecast (2.6 percent).

Technology professionals are also receiving more pay rises than pay cuts. The Technology Industry 2015 Report by Mortimer Spinks and Computer Weekly reveals the proportion of permanently employed technology professionals getting pay rises has continued to rise from 57% in 2013 through to 64% in 2015.

And yet 80% of data-intensive businesses still struggle to find the skills they need, suggests research co-produced by the Royal Statistical Society.

The current Home Secretary Theresa May’s response: a proposal in December, 2014 to immediately kick out foreign, highly-skilled technology graduates from British universities after they complete their studies, preventing them from entering the UK’s technology job market.

May’s proposal was widely criticised by the tech sector and ultimately blocked by Chancellor George Osborne. Yet the growing negative rhetoric in the UK around immigration is badly hurting our tech sector. Compounded by the UK’s visa restrictions, it’s now harder than ever to find highly-trained international talent, let alone experienced and highly skilled local talent that is up to speed with the needs of our world-class tech firms. And let’s not forget all the other industry sectors, whether banking or retail or publishing, for whom technical talent and expertise are vital for developing and maintaining a competitive advantage.

T​he solution to our tech skills gap is to attract the very best tech talent from around the world to our capital. But little is being done to make this happen.

Despite initiatives like Mayor Boris Johnson’s talent visa to attract the best and brightest in tech from around the world to London, the UK’s visa restrictions remain unnecessarily bureaucratic and the quotas are too low and too narrow.

We have so many successful homegrown innovators to celebrate, including companies like Mind Candy, Huddle, and Novoda, all based and founded in London. And the capital’s digital scene continues to enjoy fantastic growth. According to The Tech Nation Report by Tech City, there’s been a 92% increase in new digital companies incorporated between 2010 and 2013 and there are now more than 250,000 jobs digital jobs in London.

This means the urgent need for the very best talent to design, develop and grow products and services is stronger than ever – something we see first hand evidence of at Skills Matter, with daily requests from companies across all sectors about how and where to find skilled people to fill vacancies.

We help by working with companies and communities to inspire and develop talent and skills, connecting software engineers with world renowned experts to develop technical, behavioural and process capabilities. I’ve also long campaigned for easing visa restrictions through my engagement with No 10’s Tech City initiative, UKTI, Tech London Advocates and the House of Lords.

But of course as our tech sector grows, the problem will only get worse. So if our capital city wants to continue generating quality jobs and remain a leader in burgeoning sectors such as fintech, dealing with the technology ‘skills-gap’ is imperative now.

​Future Prime Minister, this topic’s a winner for you. You need to spell out now what you’ll do to support London’s continued growth into a world-class tech hub.

Wendy Devolder, CEO of Skills Matter

While It’s Compiling: Skills Matter interviews Tom Stuart

In the run-up to CukeUp! 2015, we caught up with BDD expert and enthusiast Tom Stuart to ask him about his talk and what he thinks of the current state of BDD. Tom is a computer scientist and programmer. He has lectured on optimising compilers at the University of Cambridge, co-organises the Ruby Manor conference, and is a member of the London Ruby User Group. You can find him on Twitter here, and visit his website here.


You’re leading an open-discussion at CukeUp that’s looking to define what BDD actually is. Can you give us a brief overview?

The title of the discussion is “WTF is BDD?”, and the idea is to try to get everyone to agree on a simple, clear, concrete description of what BDD is and literally how to do it. I don’t know if that’s a realistic goal, but I thought it would be interesting to try.

Where did this need to redefine BDD come from – what has led you to this talk?

It’s not about redefining it so much as just nailing down a usable definition in the first place. I honestly don’t think we have one right now and I find that frustrating.

The term “behaviour-driven development” has mostly worked well for discussions between experts — primarily this means consultants and trainers — because the people involved in those conversations know how things have been done differently (and badly) in the past, and are able to use that experience to interpret, frame and prioritise the whole cloud of ideas that swirls around BDD.

But I’d say there’s been a failure to communicate the essential idea of behaviour-driven development to the wider non-expert community, which is a shame because it’s the non-experts who stand to benefit the most from it. I find BDD very useful but I also find it difficult to persuade other people to do it because there’s nothing to point at to show them what I’m talking about. That makes it look like it’s not a real thing. It‘s embarrassing.

Right now the only guaranteed way to “learn BDD” is to pay one of those consultants or trainers to come and teach it to you, which is fine in itself, but it shouldn’t be the only option. If BDD has validity and value then we should be able to communicate it straightforwardly, without jargon or enterprise-consultant-speak.

And even among experts there’s a lot of noisy disagreement over the details of what BDD is. There are so many blog posts out there about “doing BDD right”, “doing BDD wrong”, “BDD is not X”, “BDD is just Y”, “if you’re not doing Z you’re not doing BDD”, and so on. This sort of debate is a sign of a healthy and inquisitive expert community, but again it’s not helpful for getting people engaged in the basic principles and practices of BDD. It puts them off — “if these clever experts can’t even agree on what it is, what hope do I have?”. I like to think that if we set aside the fine-grained disagreements for a moment, we’ll be able to agree on some big fundamental stuff that would be useful right now to people who need help with their software development process.

You’re currently working on a book and screencast – How to Write a Web Application in Ruby. How did that come about? And when can we expect to see it!?

It’s adapted from a workshop I run for Ruby developers. In the workshop we incrementally build up a complete web application from scratch by reading the appropriate specifications and using only the Ruby standard library — TCPSocket, URI, CGI, that sort of thing. Then, once it’s working, we refactor it by replacing bits of our hand-rolled implementation with battled-tested third-party code like Rack, Active Record and Action Pack. So halfway through the workshop we have a long manual implementation of a web application, and by the end we have essentially a short single-file Rails app. People seem to get a lot out of the workshop when I run it, so the book and screencast are about taking that same content and making it available to anyone online.

The stated goal of the book is to help Rails developers to understand their tools better by illustrating what each piece does in isolation and how they fit together. Its unspoken ideological goal is to make the point that software isn’t magic and it doesn’t come about by a process of divine revelation. It’s just stuff made by people, and you’re a person, so you can make that stuff too. You don’t need to wait for someone else to come along and make a framework for you to use; you are capable of building a thing yourself. Of course there are good pragmatic reasons to reuse someone else’s work instead of building everything yourself, but ideologically it’s important to know that you have a choice. Software is brilliant and it should be empowering, not constraining.

I’m ashamed to say that it’s become a bit of a long-term project now, not because I’m not excited about it, but just because I’m a terrible procrastinator and I don’t have a publisher breathing down my neck about it, so I can easily put it on the shelf for months at a time while I’m working on other things. I first announced it on the Ruby Rogues podcast in August 2013 so it’s definitely been brewing for a while.

I’ve resolved to get it shipped this year. That sounds terribly pessimistic. What I mean is that I’ve made a resolution to speak at fewer conferences in 2015, because they ordinarily take up so much of my time, and the idea is that I’ll be freed up to get the book finished. It’s the main thing I’m working on right now. I just checked the PDF and it’s 77 pages so far. So it is real and it will be out before too long.

Your writing spans a pretty huge range of topics – not just technical (like this post from your website on the London Cycle Hire scheme). Where do you find your inspiration from?

I would love to say something motivational and high-minded here, but the truth is that my writing is mostly born of frustration. I am very excited about the possibilities presented by general-purpose computation, and that excitement turns to frustration when those possibilities go unrealised because of bad education or lazy design or whatever it is.

So much of what is wonderful and beautiful about the computable world is hidden under a thick layer of inane jargon, poor documentation, crummy explanations, arrogant behaviour, confusing interfaces and so on, and I feel compelled to try to dismantle those things whenever I see them. Often that amounts to just unproductive complaining, but sometimes it motivates me to try to build a really clear explanation of a particular idea, or at least a really clear illustration of why some existing thing is bad. That’s actually still just complaining but I invest some effort in dressing it up as something superficially more constructive.

Explaining things clearly, whether through human language or computer code or interaction design, is really difficult to do, but that’s what makes it important and worthwhile. I think that you can change someone’s life in a tiny way if you help them to understand something fundamental about the universe, so it’s worth putting a bit of effort into. In practice the main thing I’ve learned is that this is a terrible way to try to make a living.

Were you always going to be a developer? What do you think you’d be doing if you weren’t?

I was fortunate enough to have access to easily-programmable computers from a very young age, so yes, I’ve been programming for as long as I can remember, and it’s hard to imagine doing anything else for a living. I suppose that latterly I’ve been spending more time explaining things to humans than to computers, so under different circumstances maybe I’d have become a teacher. I am a huge fan of mathematics so it’s likely I’d have ended up as a maths teacher, if not an actual mathematician, if computers hadn’t existed. It’s a frightening thought.

Finally, and back to CukeUp; what are you looking forward to most at this years conference?

Well, obviously my bit is probably going to be amazing, but social convention dictates that I pick something else. Actually I’m really looking forward to the workshops, because workshops (more so than talks) are often an opportunity to really learn something new — to be that person who’s having their life changed in a tiny way. So I’m hoping to be shown different ways of thinking about Cucumber and BDD, and to get the chance to ask some awkward questions, and to find something new and interesting to complain about.


While It’s Compiling is a continuing series of interviews with experts across a range of bleeding-edge technologies and practices, exclusive to Skills Matter. Be sure to subscribe to this blog for future interviews, or follow us on Twitter.

Find out who we’ll be interviewing next, and get a chance to put your questions forward with the hashtag #whileitscompiling.

FullStack 2015: Call for Papers

FullStack 2015

Our second edition of FullStack – the conference for JavaScript, Node & IoT developers – returns June 25th-27th. The conference is independently organised for and by the community.

Following the tremendous response to our Call For Thoughts, and with support from Cian O’Maidin (nearForm), Rob Moran (ARM), Robert Rees (Guardian), Sarah Clarke (Google) and members of our JavaScript, Node & Angular community, we have been able to identify some key themes for this year’s conference:

  • ES6 and io.js
  • App Architectures for Performance, Maintainability, etc.
  • Software rendering
  • Virtual DOM (e.g. React)
  • NodeJS and associated technologies
  • Implementation stories and soft skills
  • Dev Ops/NoOps
  • Microservices
  • AngularJS 2.0 and related topics
  • Hardware
  • Internet of Things

To submit your proposal, head over to the Call for Papers page. We’re especially keen to hear from people who haven’t spoken at the conference before. If you’re worried about presenting alone, feel free to pair with someone on your team. The community is very friendly and this is a safe way to dip your toes in the public speaking arena. If you need some help a great place to start it here.

If you have any questions then please contact us at info@skillsmatter.com.

The CfP will close on March 20th. All presenters will be contacted the week commencing April 6th. 

Please be sure to read the Skills Matter Code of Conduct. It outlines what we expect from our speakers and guests so that we can continue to provide a fantastic environment to learn and share skills for everyone.

Unit Testing Lambda Expressions & Streams

Richard Warburton

This is a guest post from Richard Warburton, who has worked as a developer across varied areas including Statistical Analytics, Static Analysis, Compilers and Networking. He is a leader in the London Java Community and runs OpenJDK Hackdays.

Richard also teaches a course on modern development with Java 8 at Skills Matter, alongside Jim Gough & Raoul-Gabriel Urma. At the end of this course, you will be ready to use Java 8 on your day job and be familiar with the cutting edge programming approaches which allow you to write more flexible and concise code. You can find out more information about the course here, or head to the Skills Matter page to book your place now!


Usually, when writing a unit test you call a method in your test code that gets called in your application. Given some inputs and possibly test doubles, you call these methods to test a certain behavior happening and then specify the changes you expect to result from this behavior.

Lambda expressions pose a slightly different challenge when unit testing code. Because they don’t have a name, it’s impossible to directly call them in your test code. You could choose to copy the body of the lambda expression into your test and then test that copy, but this approach has the unfortunate side effect of not actually testing the behavior of your implementation. If you change the implementation code, your test will still pass even though the implementation is performing a different task.

There are two viable solutions to this problem. The first is to view the lambda expression as a block of code within its surrounding method. If you take this approach, you should be testing the behavior of the surrounding method, not the lambda expression itself.

Here’s an example method for converting a list of strings into their uppercase equivalents.

public static List allToUpperCase(List words) {
    return words.stream()
                .map(string -> string.toUpperCase())
                .collect(Collectors.toList());
}

The only thing that the lambda expression in this body of code does is directly call a core Java method. It’s really not worth the effort of testing this lambda expression as an independent unit of code at all, since the behavior is so simple.

If I were to unit test this code, I would focus on the behavior of the method. For example, here is a test that if there are multiple words in the stream, they are all converted to their uppercase equivalents.

@Test
public void multipleWordsToUppercase() {
    List input = Arrays.asList("a", "b", "hello");
    List result = allToUpperCase(input);
    assertEquals(asList("A", "B", "HELLO"), result);
}

Sometimes you want to use a lambda expression that exhibits complex functionality. Perhaps it has a number of corner cases or a role involving calculating a highly important function in your domain. You really want to test for behavior specific to that body of code, but it’s in a lambda expression and you’ve got no way of referencing it.

As an example problem, let’s look at a method that is slightly more complex than converting a list of strings to uppercase. Instead, we’ll be converting the first character of a string to uppercase and leaving the rest as is. If we were to write this using streams and lambda expressions, we might write something like the following.

public static List uppercaseFirstChar(List words) {
    return words.stream()
                .map(value -> {
                    char firstChar = value.charAt(0);
    firstChar = toUpperCase(firstChar);
                    return firstChar + value.substring(1);
                })
                .collect(Collectors.toList());
}

Should we want to test this, we’d need to fire in a list and test the output for every single
example we wanted to test. The test below provides an example of how cumbersome this
approach becomes. Don’t worry—there is a solution!

@Test
public void twoLetterStringConvertedToUppercaseLambdas() {
    List input = Arrays.asList("ab");
    List result = uppercaseFirstChar(input);
    assertEquals(Arrays.asList("Ab"), result);
}

Don’t use a lambda expression! I know that might appear to be strange advice in an article about lambda expressions, but square pegs don’t fit into round holes very well. Having accepted this, we’re bound to ask how we can still unit test our code and have the benefit of lambda-enabled libraries.

Do use method references. Any method that would have been written as a lambda expression can also be written as a normal method and then directly referenced elsewhere in code using method references. In the code below I’ve refactored out the lambda expression into its own method. This is then used by the main method, which deals with converting the list of strings.

public static List uppercaseFirstChar(List words) {
    return words.stream()
                .map(Testing::firstToUppercase)
                .collect(Collectors.toList());
}

public static String firstToUppercase(String value) {
    char firstChar = value.charAt(0);
    firstChar = toUpperCase(firstChar);
    return firstChar + value.substring(1);
}

Having extracted the method that actually performs string processing, we can cover all the corner cases by testing that method on its own. The same test case in its new, simplified form is shown here:

@Test
public void twoLetterStringConvertedToUppercase() {
    String input = "ab";
    String result = firstToUppercase(input);
    assertEquals("Ab", result);
}

The key takeaway here is that if you want to unit test a lambda expression of serious complexity, extract it to a regular method first. You can then use method references to treat it like a first-class function.