One of the fundamental problems of hiring good developers is telling the good ones from the okay ones from the total duffers. The industry as a whole has developed some crude indicators, including batteries of interviews, extensive technical tests and gut instinct.
However the most compelling indicator of programming capability remains the programmer’s opus. For years this was not accessible except at a gross level. Essentially you could look at commercial product they had contributed to. This didn’t really cut the mustard because on a large project it was easy to fudge the issues around what a individual’s specific contribution was. We are all familiar with the lurkers on large projects. Worse we know both intuitively and from past experience that 20% of the people generate 80% of the bugs.
Open Source helped enormously and if you cared to take the time you could examine a body of work for an individual. However not everyone contributes to Open Source projects because the friction of engagement was relatively high and the slow promotion from viewer to patch submitter to committer was a total turn off for most people.
GitHub changes all this.
GitHub combines the ridiculously easy forking, branching and merging capabilities of GIT with a hosted SaaS solution for sharing code in a social context. The result has been that since 2008 GIT and GITHub have become the defacto standard for Open Source projects. Despite a number of holdouts (notably the Apache Foundation) the rest of the world has embraced the utility of social coding.
What does this mean? For the first time in the history of the sector we have an enormous body of active code that is accessible via a public API. More significantly, that API is not just for the source code, its designed for the meta-data around the source code, the users, the events, the issues and the organisations. What this offers us is a set of raw data that we can analyse to understand not only who is good, who is bad and who is indifferent, we can reverse engineer the key indicators to allow us to identify the different classes of programmer from the lurkers and bozos.
Michael Lewis‘s Moneyball taught us that in the absence of a solid methodology people go with gut and those gut instincts are almost always skewed or outright wrong. Daniel Kahnman confirmed that analysis in “Thinking, Fast and Slow“, where one of his key discoveries was that a good heuristic, applied consistently will always beat the opinions of experts. The power of MoneyBall was that it showed how good historical data can be used to give a indication of future performance and how performance may not be related to the indicators we have used historically.
So we have the raw data, constantly updated by GITHub. We know that the major league of software is open source, so if you are not committing in GitHub are you even at the show? Finally we know that with A16Z’s investment of 100m dollars there is going to be some additonal commercialisation. Its seems an obvious play to use the vast array of analysable data to monetise the community on GitHub in a variety of ways.
So can GitHub become the MoneyBall of Software? Can we develop meaningful heuristics that can identify not just ninja rockstars but good team players and players with the equivalent of a consistent “on base percentage“.
I think that data is in GitHub, we just have to mine it.
Okay, the bad news is there is no way to stop shitting yourself on-stage.
Public speaking is one of the great fears and everyone shits a brick for about their first 50 or so public speaking engagements. I was lucky (or unlucky depending on your point of view), I did my first public speaking engagement about a year out of college. While working at Generics Software I wrote a paper for an Ada Conference and was invited to present it in front of the great and good of the Ada community.
I was so dumb I wasn’t even nervous until exactly 2 seconds after I stood up in front of the audience. I actually couldn’t speak, I tried, but nothing came out but a small squeaking noise. Eventually somebody got me a glass of water and I managed to open the top button of my shirt, once I got started I delivered a complete 20 minute presentation on “Why Ada is not an Object Oriented Programming Language” in exactly 5 minutes, start to finish.
Thank fuck for Q&A. I managed to salvage the disaster a little bit with a reasonable Q&A session. I sat down afterwards and as the droplets of icy sweat rolled down my back I made an immediate decision to never, ever, ever submit another paper to a conference.
Fast forward a year (Generics was an Irish Startup so therefore was honour bound to implode like all Irish startups in the 80’s) and I was punching the clock at Digital Equipment Corporation (DEC) in Reading UK, then the number two computer company in the world after IBM. I had been in the company about a month when my boss Mark Ryland came to me and said ‘Joe, prepare a one day course for the new Decstation 3100, you’ll be presenting it to a group fo 30 pre-sales guys in one month’. I remember the feeling to this day, It’s how I imagine your guts might feel if someone slowly slid bayonet into them, immediately cold, nauseous, sweaty and painful. With the added certainty that its only going to get worse.
So I prepared the course and presented it. A complete disaster. It was an official DEC training course so I had to hand out official course review paperwork. My class were generous in their feedback and I was feeling ok until a helpful colleague “interpreted” my scores. I was shit.
I was now officially “the guy who shits himself” before a public speaking engagement. But worse was to come. I then had to prepare two day course for the pre-sales teams from all over Europe and deliver it in the Munich centre. I remember lying in bed the night before I was due to fly making a serious plan to go the airport, get on a plane to Dublin and just never return to the UK. Instead, I flew to Munich, delivered the first day of the the course and ran out of material by about 3pm. I sent everyone home but not before some furious german pre-sales woman publically upbraided me for dragging her halfway across Europe to deliver such a shitty course.
For the second day, I had actually done more preparation but I worked through the night to add a bunch of class exercises to pad out the day. The second day was better as a result and I think I only lost about half a stone to flop sweat. I finished the course, jumped on a plane and about then decided to get the fuck out of the training business. I did two things when I got back, registered for a 2 day presentation training course and applied for a transfer to the Ultrix Engineering Team where all I needed to do was code.
A couple of themes emerge that often don’t get mentioned on presentation training courses:
- The fear melted my brain: I was so scared I couldn’t think straight enough to even register for a training course. Even though I knew in an abstract way about DEC training facilities I didn’t make the mental leap that they were for people like me. When you are new at presenting everything you think you will remember gets frozen out once you stand up. You are left wondering if you can even remember your own name. So all your adlibs disappear and you end up reading your slides at break neck speed. Not a good look.
- Preparation: The only preparation that works for public speaking is … public speaking. Even though I shit myself mentally all through the last day I was infinitely better on day two than day one.
- Passion: Passion covers up a lot of cracks. The second day was a training course on using the optimising compiler. I had done a bunch of work on this and I really knew the subject and I loved the stuff I was teaching. So even though I was all over the map the passion helped enthuse my audience.
Since then I have probably done at least one public speaking engagement a month as part of my job. Audiences have ranged from a handful of people to full auditoriums. So 20 years x 12 months makes for about 240 public presentations. If you roll up internal stuff that might easily double that number. For important stuff I still do a mountain of preparation, but I now have the luxury of being able to speak off the cuff for many events.
So if you want to become a good public speaker do these things repeatedly :
- Embrace your fear, name it (“I am shitting myself about this speaking engagement”) and then turn that fear into passion by immersing yourself in your topic
- Speak about things that you love and let the love of your subject carry you over the horror while you are getting over the 50 talk hump
- Try and work with small audiences initially (team talks, internal groups)
- Prepare by actually giving your whole talk out loud in an empty room at least once before you do it in public
- Don’t try and memorise word for word, memorise the sense and structure and some key phrases/sound bites
- Remember the ending so you don’t trail off with a lame “thats it”
- Do every piece of presentation training that you can
Accept that its horrific, do it anyway and eventually one day you wil realise that your greatest fear is now actually spiders/flying/rejection again.
There are no short cuts 😦
I did this presentation tonight at our school AGM. Its a synopsis of the excellent EU Kids Online Report prepared by the London School of Economics.
You can see the results here: