Sunday, 24 June 2012

The subject of women programmers is boring


I've been challenged to do a session at a very large conference around women in programming.  Which leads to two reactions from me 1) wow, what an honour! and 2) *sigh*.

The problem with these sessions is that you're preaching to the choir.  Those who turn up are a) women or b) men who are sympathetic and supportive to the cause.  People who are actively discriminating against women or, more commonly, those who don't know their actions are hurting diversity in our industry, are the least likely to receive the message.

This tends to lead to the same types of sessions - yes, our industry under-represents certain segments of society (i.e. women); yes, we all agree this is a problem; yes, everyone in this room is trying their best to do the right things; no, we have no idea how to fix it at the industry-level.

These sessions are boring.

How do you make this subject interesting, relevant, and appeal to the types of people it really should target?

I'm considering all sorts of games with the title, even going so far as to put "Boobs" in it.  I very much doubt that will make my final selection.  I'm thinking hard about the format, I definitely don't want it to be preachy, I want it to be informative, collaborative, and, preferably, funny.  Not too much to ask, right?

In programming, if something is difficult to do right, it's a sign of a smell - the feature being requested might be contrary to the purpose of the product; the application might not have been designed around the business's real requirements; there could be a large amount of tech debt that should have been cleaned up along the way but wasn't; the requirements might be fluffy, changeable, or simply outright wrong.

Does the fact that we can't get these sessions right point to a smell as well?

Are they pitched at the wrong people?  Are we saying the wrong things, suggesting the wrong ideas, tackling the wrong problem?  Should we even be talking about women in technology?

Or am I just the wrong person to do it?  I don't even want to be the spokesperson for women developers.  I can only be the spokesperson for me.

Overall I can't help but think we're missing the point again.  If I think that events aimed at girls are wrong, then I think that sessions at conferences aimed at highlighting the missing women there is also wrong.  But this is a great audience to reach - these are people who want to further their careers, who are likely to be putting in extra hours to improve themselves/their company/the industry.  Give a techy a tricky problem to gnaw on and there's no-one happier.  And what could be more tricky than the seemingly-unsolvable problem of attracting greater diversity into technical roles?

The answer might lie in shaping the problem such that it is interesting enough, difficult enough and technical enough for us.

Or maybe the answer is simply accepting the fact that you're not going to change those who are part of the problem, but you can change the message you are giving.  I know many men are tired of being berated about this issue because they're already doing the best they can.  I know many women are bored of hearing about it because they're already here.  Maybe it's time to look at the problem differently and suggest an alternative approach.

If only I knew what that was...

Saturday, 16 June 2012

Overheard: Development Myths

Continuing the theme of Things I Have Heard I Don't Think I Agree With.

To developers technologies are everything
I can't remember the context of this but I hear the same sentiment in different guises over and over again.  Often from non-techies, but more alarmingly from developers.

Is this true?

It's true for a certain tribe of techies, sure.  And creating and effectively using new technologies is an important part of what drives the current information age forward.  But I'd be worried if I thought that 99% of developers were like this.

In our day jobs, and also if we want to create something that makes any money, we need to be interested in solving people's problems and creating solutions.  Sure, we'll use technology to do that.  But if we were all only motivated by technology, we'd always be trying out the Next Big Thing when our customers wanted a simple CRUD web app.  Any organisation that encouraged this sort of technology um, infidelity?  playing the field? might find themselves with lots of fascinated and broadly-educated developers, but not a lot of productivity.

I always thought developers were drawn by wrestling with the machine to solve a particular problem, or to do something that hadn't been done before.  I didn't think we liked learning Ruby because we didn't study it at university, or switching to a functional language simply because that's the way the whole world is going.

We can train The Business to speak our language
I've heard a number of people talking about the Holy Grail of having business owners write acceptance tests.  At LMAX we have a (Java-based) DSL that theoretically could allow technical-ish non-developers to write our automated acceptance tests.  However, is this the right thing to do?  To make our jobs easier, and our code better quality, we need the business to become almost developers?

Our (very difficult) job as developers is to act as translator between the ones and zeros a computer speaks and the real life doman language our business guys (and girls) use.  Forcing the business to become more technical is just, well, lazy.

So if our business people shouldn't be forced to become more technical, how can we bridge the gap?  Is there anything that we as developers can do to move closer to the business?

Ubiquitous Language is a good start.  When a business user talks about an order, a developer should be thinking about the Order class, or something that implements an Order interface.  When the business talks about placing an order, a developer shouldn't be thinking "place order translates into the execute method", they should assume there's a placeOrder method somewhere they can use as a start point.

We certainly shouldn't be training the head of sales to start talking in terms of Java classes or technologies - "I want the Resin tier to validate the order while the OrderMatcherImpl checks for availability".  That would be silly.

Development is hard, that's why they pay us.  And part of that hard job is learning the business model we're implementing so we can mirror and support the business.  We shouldn't be inflicting our technology on the business.

Saturday, 9 June 2012

The birth of a new community

Topping off my mini-tour at the end of May, I was invited to Rotterdam to present to a brand new community of developers.  I was really interested in attending because my experience with user groups is pretty much limited to the London Java Community, and I knew this would be different due to being a) across a wider range of technologies and b) shiny and new.

It was hosted (rather awesomely) in a brewery, and until then I'd never given a presentation in a pub.  Frankly it's something I'm keen to do more of.  Due to a total technology fail on the part of all of us, we couldn't get the projector working with any of the various laptops.  However, with 30-odd techies, free wireless and slides available on Slideshare, we managed a novel and collaborative presentation approach, with people clustered around the laptops with the largest screens, and someone at each one valiantly keeping up with my quick pace through over 100 slides of stick-men drawings (a review of the evening is available).

I really enjoyed it, it was quite a change of pace from the conferences - my first attempt at presenting after imbibing probably a little toooo much wine, and a much more intimate venue which encouraged a lot of questions and discussion.  It's actually a format that worked, and maybe there's a way to get it to work even more smoothly, if the slides on all the laptops were synchronised, and there was some way for me to gesture wildly at the appropriate parts of the slides like I do when I'm on stage.  Hmmm, maybe that's actually a webcast now I think about it.

So I had an excellent time, thanks to the hospitality of the rather awesome Rotterdam-ians.  What I found fascinating  - as well as the venue and the novel presenting style - is the formation of a group of people with broadly similar interests.  One of the great strengths of a place like London is its size - you will find a number of people here with interests like yours, and sites like Meetup make it ridiculously easy to find them.  One of the weaknesses of London, however, is its size - there are so many people you could attract that you end up narrowing your search field.  You pick a very specific technology, a tiny geographical area, a single interest, to build a community around.

I've been thinking for a while it would be nice to have a community of people who aren't all the same, who share overlapping but different passions.  But how do you create something like that?  You need a single thing to draw those people together, otherwise they'll never find each other.

In smaller cities the geography limits the numbers, so you can have a broader range of interests represented.  In London, I can see something as (relatively) specific as a Java User Group becoming even more specific.  With nearly 2500 members, you could easily spin off Java-for-banking, Java-for-gaming, Java-in-west-London-zone-2 etc etc.  In fact, we've already spawned off a number of groups like the Graduate Developer Community, the London Scala Users' Group and so forth.  With nearly 2500 members, you cannot possibly meet them all, you can't even get a feel for what everyone's into.  How do you get the intimacy from a smaller user group without narrowing the scope so much that all of you might as well be clones?  The awesome thing about user groups is coming across new ideas, seeing solutions to problems you didn't even know existed, hearing about things people are working on that never occurred to you.  For that, you need diversity.

And one of the nice things about a city as large as London is you get plenty of diversity.  But how do you pull together that diversity?  How do you create a group that is diverse, when by necessity you need something central for those people to gravitate towards?  And if the diversity creates a large group, how do you create intimacy and feel personally involved, the stuff that comes for free if you belong to a smaller group where you know everyone?

In Rotterdam, at the Girl Geek meetup, I saw the advantage of using something other than a specific technology to gather together a group of interesting people - you get a wider range of experiences and passions.  How you can achieve this without using geography or genetics to select your participants?

Is it even possible to build a community when your goal is diversity?

Wednesday, 6 June 2012

QCon London: Disruptor presentation video

The "User's Guide to the Disruptor" presentation I gave at QCon London is now available on the InfoQ site.  This is the same presentation as the one I gave at Skillsmatter in March, but the questions are different.  Plus since I'm winging it every time, I probably cover slightly different things or explain some stuff better / worse.