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.
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?
A 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.
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?
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.