I'm inspired to write this post because Someone Is Wrong On The Internet. Of course a more accurate statement would be "I disagree with some aspects of what someone on the internet said, even though they have an entirely valid point of view". But that's less catchy.Continue reading "Reading Code is a Skill"
Mandatory initial exclamation about how little I have blogged here lately. Over a year without updates, oh dear! But a) I have been blogging quite a lot for the IntelliJ IDEA and Upsource blogs, and b) I had another baby, which kept me quite busy.
So on that topic (more or less) I get a lot of questions about my job: what’s involved in the job, what’s it like working for JetBrains, what does a Developer Advocate do, what’s it like working remotely etc etc. Given I also rather generously1 recently offered to answer people’s questions about my job, I thought the most scalable way was to write-once-read-many, i.e. write it in a single blog post for everyone to read.Continue reading "Being a Developer Advocate at JetBrains"
So I came to the blog to update my upcoming events (at least something stays up to date) only to find it's been nearly a year since I last blogged! This is terrible!
It's not that I haven't written anything in a year, it's that a lot of my writing energy goes into stuff for the actual day job. Which is good, because that's pretty much what I wanted from the day job, but the blog makes it look like I don't write any more.
So I'm going to cheat. Here's the stuff I've written in the last 12 months.
- A whole series of articles off the back of last year's Java 8 in Anger talk: Five Java 8 Features That You Won’t Be Able to Live Without, Why Java 8?, and Java SE 8 in Practice.
- A tutorial on TDD in IntelliJ IDEA. I have video clips to turn this into a screencast as well, but that's Yet Another thing I didn't get around to.
- A tutorial on how IntelliJ IDEA helps you migrate code to Java 8. This evolved into the other thing I've been working on this year, my latest live demo presentation, Refactoring to Java 8.
- A whole series of blog posts on "What to look for in a code review". This was fun and satisfying to write.
- ...which got turned into a book. Yes, I'm finally the author of a book!
- Java 8 Top Tips, with a bunch of IntelliJ-specific tips
- I've taken over Java Annotated Monthly, so at least you get to hear from me once a month with that. I try really hard not to be too sarcastic, jokey or British when I write the newsletter. I don't always succeed.
Oh yeah, and I had a baby. I'm contemplating blogging about being a working parent, but I'm a bit concerned that Of Course a woman is going to blog about Being A Mother, when previously I just blogged about... well, come to think about it I blogged about all sorts of things, including haircuts and hangovers, so I guess I could probably get away with it.
So, I get asked a lot about how I got into technical advocacy / evangelism1, so it seems like the most cost-effective way to answer this question is to write a post about it. Warning: it’s a long one!
Firstly, let me caveat this (I always have caveats, don’t I?) with, “this is my personal experience”. There may be other ways to get into this role.
Any long-time readers of the blog (I love you guys!!) will know that I started blogging before I did any of this running-around-the-world-speaking-at-conferences lark. I started blogging for a number of reasons:
- Even “back then” (probably around 2007), it was definitely an advantage to have something external to the day job to differentiate you from other job candidates. I didn’t feel comfortable with open source, Stack Overflow wasn’t invented yet (and even if it had been, I’m not sure I would have felt knowledgeable enough to answer questions), and most of what I had learnt in order to level-up my skills was via blogs like Joel Spolsky’s and Rands in Repose.
- I really enjoyed writing. One of the (many) things I had wanted to be “when I grew up” was a writer or a journalist. I didn’t take that path because I thought if I did I would be Poor Forever. However, if I started practising my writing in a blog, I would learn to find my voice, and have something to show book publishers if I ever did get around to writing a book, like I had always wanted to do.
If you’ve ever started a blog, you know the problem is thinking of things to write about. I generally documented things I’d had difficulty getting working, because a) if I had trouble with the existing documentation, other people would too and b) I have a memory like a goldfish, so it would be useful for me if nothing else. But it took me years to really take the blog seriously.
At the end of 2008, I joined the London Java Community, largely because I had returned to London from a year working in New York, and a) I needed a new job (during the height of the crisis, when my recent experience was all financial markets!) and b) although I had friends in London, I needed to rebuild my social networks, and I was using meetup.com to do this. I tried lots of other meetup groups, but like many geeks, I found it hard to connect to people without the common ground of tech or code to talk about.
Eventually I ended up working for LMAX Exchange, and because we were always looking for keen, bright developers, I started getting much more involved in the LJC so that I could help us hire people I actually wanted to work with. During this time, people like Martijn, Ben, John and, of course, Barry were encouraging me, consciously or not, to do a bit of technical presenting. I saw a lot of different talks there, some from professional evangelists from vendors, but many from “ordinary” developers like me. It made me think that a) I should do this (awesome for your profile/career etc) and b) I could do this.
Of course, I saw very few women presenting (I do remember an awesome presentation from Fabiane) and also very few women members. Many members assumed I was a recruiter, even before I started trying to chat to people to, well, recruit them for LMAX. In the first 2 minutes of meeting someone, if they didn’t ask me directly if I was in recruitment or HR, I would always make it clear that I was a Java developer. It was tedious but something I just got used to. Interestingly, once it was clear I was a Java person, people seemed to accept that and just treat me like any other techie.
I think this is one of the reasons I decided to start doing presentations - I could a) show my own technical credentials, so I would spend less time having these tiresome conversations (which, by the way, seems to have worked) and b) make it more normal to see women techies, hopefully minimising the number times other women faced the same assumptions (I’m not sure if this worked or not, as I only have my own experiences to look at).
But these thoughts were only floating around my mind, I didn’t actually do anything. During this time, while working at LMAX, it seemed like there were lots of things I could blog about, or talk about, but I never really got round to it. Plus, I wasn’t really sure what I was allowed to talk about and what I shouldn’t be talking about. So apparently during these two years I only wrote a total of 6 posts, and I never did a single presentation at the LJC.
However, I really wanted to do presenting and have time/inspiration for the blog, so I chose to leave LMAX and join ThoughtWorks - they were looking for consultants and I knew this was a company that valued blogging and presenting, and I’d had some exposure to their guys through the LJC and, years before, I’d seen them speaking at QCon London, which had actually been my initial inspiration for blogging. I told LMAX that was why I was leaving, and off I went.
So it’s 2011, and I’ve joined ThoughtWorks. I revived the blog while I was unassigned to a project, I invested that time in porting the blog to a more sensible platform, and trying to write a blog a day. Again, I picked topics I could comfortably talk about - I spoke about my experiences as a beginner trying Android for the first time (sometimes people will be arsey with beginners, but in reality many real human beings can’t tell you you’re wrong when you’re just talking about your own experiences), and despite my original intent to blog with zero gender identity (I was genuinely afraid that if I wrote about tech subjects and I was wrong, or very junior, I would give women programmers a bad name) I decided to blog about “the women in technology subject”. Again, here I went for my personal opinion/experiences, for which only mean people can criticise you (mean people are easier to ignore than correct people 🙂 )
I was also fortunate enough to meet Martin Fowler in person while he was over in London. We were talking over drinks (this is London, after all) about the women in technology thing (ThoughtWorks are really big on this subject, and determined to do something positive in this area), and I was complaining about the lack of women at a particular conference. He asked me if I had submitted a talk for the conference. Me?? Of course not! I’m not ready for that! I’ve got nothing to talk about. I haven’t been given permission to do this, or guidance on how to do it. I haven’t even presented at the user group yet. But it did make me think - I said I wanted to present, so what was stopping me? Did I need someone to guide me through it, to assign it to me as a task? It was going to be up to me to make this happen. And if Martin Fowler, who had just met me 5 minutes beforehand, thinks I’m ready to do this, then who’s to tell me I’m not? What’s the worst that could happen?
Of course life then got in the way - I was assigned to a couple of projects, so the blogging stopped. I was interested in attending or speaking at conferences, but wasn’t going to have anything ThoughtWorksy to talk about for quite a while. And now, because I was commuting to my assigned project, I had very little time even for the LJC.
At this point, LMAX called to let me know that the talk they’d done at QCon San Francisco, “How to Do 100K TPS at Less than 1ms Latency” had been enormously popular, and they were open sourcing The Disruptor and wanted to do some evangelism around this - did I want to come back and help a) do evangelism and b) co-ordinate the company’s evangelism? Yes, yes I did. So, after just 3 months, I quit TW and went back to LMAX2.
Back at LMAX, I started to take evangelism more seriously.
I tried to blog every week - I set aside Sundays for blogging (at the time I was, fortunately for my particular choices, single and not overburdened with a social life outside of the LJC). I wasn’t going to sit all alone in my tiny flat, so I’d go to the pub with my shiny new Macbook Air, bought specially for blogging (thanks ThoughtWorks, you spoiled me - I needed a mac after I’d invested 3 months getting to grips with the one you gave me) and write something. It wasn’t always amazing, but I’d do something. During the week, when ideas came to me, I’d make a note of the title in the blogging tool so that when Sunday came I’d pick one and go with it. Early on it was fairly easy - we’d released a white paper on the Disruptor, but I found it hard to understand what it really meant, so I spent Sundays writing shorter articles breaking down how it worked and how to use it. I needed a LOT of help from Martin Thompson and Mike Barker to understand it, but they were patient with me (plus I think they were happy that someone was writing this and it didn’t have to be them). They took the heavier, more complicated subjects and I pitched my stuff at developers like myself. When I ran out of Disruptor stuff, I moved on to the topics I had in the backlog - I generally had more ideas for blogs than time to blog, so I ended up with quite a long list to pick from. The key is to make a note of it at the time you think of it, and not try and think of a topic when you sit down with time to blog.
I coordinated our events and publicised them on the new LMAX blog I’d created. Dave Farley was often presenting on something Continuous Delivery related since his book had been released, and Martin was talking about hardcore concurrency stuff.
Mike and I got even more involved in the LJC, not just to recruit people. We got involved in the JCP and OpenJDK - since LMAX was doing cutting edge technology stuff with Java, we wanted to see where the language was going and influence it too if possible.
Martijn must’ve got fed up my lack of drive in the presenting area, as he pretty much forced me to do my first presentation. In a nice way! But he told me I was ready, he checked my content before I did it, and I did a short talk on the JCP.
At this point, my plan was to spend this first year of presenting doing short talks at the JUG, maybe work my way up to a longer talk by the end of the year, or maybe the following year, then the year after that to submit to conferences.
Well, with amazing mentors like mine, that didn’t happen. Martin Thompson was due to give a talk at JavaOne at the end of that year (still 2011), and I was lucky enough to get a ticket at the last minute (we won the Duke’s Choice Award for Innovative Programming Framework, and LMAX was awesome enough to let me have the ticket to the conference to receive the award, since the evangelism efforts and blogging had had a direct influence on us winning this award). Martin asked if I wanted to co-present with him. Of course this was terrifying! I hadn’t even done a full length talk at the LJC, I had barely even been to a conference, let alone presented at the largest Java conference In The World! So I said yes. These opportunities do not come up every week. It’s a talk Martin had given various times before, he would be there to pick up the slack if I freaked out, and I knew this material, I’d been blogging about it and answering questions for the last 6 months.
It really was as terrifying as I thought. But. It went well. I answered difficult questions. We got great feedback.
JavaOne 2011 was an important milestone in my evangelism career. Not only did I get to put this presentation on my CV, I got to meet a lot of people in this network: Martin introduced me to a lot of high performance specialists; Martijn and Ben introduced me to people involved in the JCP, to other Java User Group leaders, and we somehow got in to the O’Reilly party - I finally got to meet a book publisher and get one step closer to my dream of writing a book. I also met the ladies behind Duchess, and they introduced me to Stephan who runs Devoxx. This turned out to be an important step in turning an idea I had for a panel into a Devoxx reality.
This is October. By the end of the year I had also presented at JAX London with Mike, and at Devoxx Belgium on a panel, largely thanks to the contacts I had made and the prestige of having a JavaOne talk under my belt. So I went from basically zero at the start of that year (my blog had been dormant for years and I had no experience presenting) to having a blog with thousands of hits a month and being an “international conference speaker”. In many ways I got lucky, because the Disruptor was a really interesting, technical topic that is in an area developers feel they should understand (high performance). But I believe it was more a) determination to make this work, even if it meant using my own time to write blogs and prepare presentations and b) fantastic mentors who pushed me to do it and opened up their networks to me, that facilitated this rapid rise.
Honestly, after that things were a lot easier - I had the experience presenting at conferences, I had Martin and Martijn suggesting conferences to me (and introducing me to the right people where appropriate), which got me into the QCon/GOTO loop and into OSCON. With videos of my presentations availble, combined with the reach of my blog, I also had people approaching me to do other events, like user groups in the cities I was visiting, and conferences I had never heard of. I think it helped that I’m a woman, because conferences are always actively looking to increase their diversity (whatever it might seem like at times!), but I think that anyone could follow these sorts of steps with a similar outcome.
I’m not going to talk much about my career after that, because really that’s the tipping point - after that it was more of the same, really. I will say that I left LMAX because the pressure to be a full time developer and do advocacy is hard, especially when you’re no longer single and you don’t have the spare time you used to have. I joined MongoDB because they were well known for understanding the technical community, and because they were looking for an evangelist who would continue to be an engineer (although not for 40 hours a week every week). I think they might have hired me without the previous experience, but the blogging and presenting experience was a big selling point for the guy who became my boss. I eventually left them for JetBrains because you learn, over time, what your sweet spots are as an advocate/educator, and what your interests are. After two years of MongoDB, I knew I really wanted to focus on Java and the JVM, and JetBrains is a much better fit for that. I’m pretty certain I would not have got this job without a) having the conference-presenting experience and therefore b) being known to the team already through the conference circuit.
Well. That was a massive post. That’s why I’ve been putting off writing this for ages. That’s just my own story, I have another post in my head about the challenges that face you on trying to sell the value of evangelism/advocacy to your organisation (and maybe some suggestions). But that’s for another day.
In closing, I shall try to leave you with take-away points that I hope will be helpful if you either want to become a technical advocate, or are interested in just some aspects, like writing or presenting:
- Join a user group. I cannot, cannot stress how important the LJC was to my career. If you do nothing else, this is the one thing that can help you. You will meet people who will inspire you or give you the kick up the backside you need. Try to remember that many of these people, like me, were developers like you before they became bloggers/authors/speakers. If they can, you can. These people also have networks, and whether you like it or not, it really is not what you know but who you know (but don’t let that put you off - meeting the right people can be easier than becoming some sort of super-expert!)
- Present at the user group. Preferably get them to video it - you can use this in submissions to conferences, if it’s not a blind CFP they will like to see examples of your style. Having an example, even one that you think isn’t awesome, is much, much better than having nothing at all. (Also, and this is not a blog post about becoming a better speaker, but do watch your own videos - it’s insanely painful the first few times, but it gets easier and will help you to improve).
- Be prepared to commit your own time to this. I blogged and prepared talks at weekends, even for companies that valued evangelism. I gave up evenings to attend the user group. This will be especially important in the early days when you probably have a day job too. This investment should pay off, either your company will learn to see the value of it and give you more time (having developers attend and speak at the LJC was enormously successful for recruitment for LMAX), or you will get a job better suited to what you want to do.
- You don’t have to have something awesome to talk about. I got lucky with the Disruptor, true. But our most in-demand topics at the Sevilla Java User Group are “Introduction to…” topics, especially for things that are no-longer cutting edge - not all developers were early adopters, and now they need an overview of “why NoSQL” or “what’s Docker”.
- You don’t have to be awesome. Your blog doesn’t have to be perfect English (especially if you’re not a native). It just needs to clearly describe the thing you’re trying to explain. You don’t have to be Damian Conway(one of my favourite presenters) when you speak - in my experience, a presenter can get away with either only great content or only great delivery, you actually don’t need both. I’ve been to conferences where presenters haven’t really had either - you have to start somewhere, and audiences are surprisingly forgiving (especially at user groups).
- Find mentors. Listen to them. You might not even meet them, you can watch what they do. But I’d encourage you to find real human beings who are a step or two closer to where you want to be. Talk to them, let them know what you want. And let them bully you into doing scary things.
- Be yourself. Figure out your strengths and interests, and play to them. I was scared of being a woman developer on show, via the blog or via conferences, but it turns out to be an advantage. I was afraid that because I’m not Martin Thompson I can’t possibly talk about difficult technical subjects. But I don’t have to be him, I can be me - I can explain things to the level that I need to understand them, so other developers like me can catch up with me. We don’t need to all be genius-level.
- Do things that scare you. The terrifying things are the things that got me the furthest.
I hope this helps someone.
1Evangelism / Technical Advocacy - I use these terms fairly interchangeably. Evangelism was the common name some years back, but many are uncomfortable with the religious overtones, so instead prefer Advocacy.
2 This is why I often talk about being at ThoughtWorks for a minute and a half - I really loved a lot of things about the company, but what I really wanted to do was offered to me in a company I already knew, where I could get going straight away without any ramp up
Just over two years ago, I embarked upon a journey as a developer / evangelist for a company who was then called 10gen (who got fed up of saying "the MongoDB people", and transformed into MongoDB Inc). My goals for this role were: to learn what it was like working for a company that produced a technology product; to discover what impact working in an open source fashion has; and to level up my advocacy skills. I have met all these goals, and more - I met some fantastic people; learnt different approaches to software development; discovered my new favourite database for creating applications; moved to Spain; started both a MUG and a JUG; worked to understand the value of community and evangelism, and to help create a strategy for these areas; and my evangelism efforts and open source work earned me the Java Champion title. I'm extremely proud of what I've achieved over this period, and very grateful to MongoDB for giving me these opportunities.
But now, a new adventure is about to begin. If you've seen my live coding demo this year, you'll know of my love affair with IntelliJ IDEA, a tool I use daily (even for blogging). Well, now I'm joining the team at JetBrains, where I'm going Full Advocate. I hope this means I get to carry on doing more of what I love - presenting, writing, and working on demos to help developers become more productive. I hope this will give me opportunities to stay ahead of the curve in the Java/JVM world.
And yes, in answer to the Most Frequently Asked Question, I am staying in Spain. I've fallen in love with Sevilla and I'm not ready to leave yet.
I shall leave you with my somewhat disasterous "Top Ten IntelliJ Tips" from GOTO Aarhus, which is worth watching just to see Dan North save me from the curse of the live demo. Things can only get better from here, right?
Since I have a tendency to bang on every now and again about how we, as developers, could do better in managing our careers (for example, by creating CVs that don't suck, and by staying ahead of the curve), Dave Thomas asked me to speak for a mere 50 minutes on the subject at GOTO Aarhus, a talk I wasn't enormously happy with as there was no way to cover a lifetime of hard-fought experience in such a short time. Dave seemed to like something in it though, as he gave me the opportunity to present the topic again at YOW last December, and this time I think I managed to distill the important points into the (still ridiculously short) time allotted.
See the video here, and please give me any feedback you have.
I recognise there are many many more topics I could cover, so I'd better start making a list. Suggestions?
I was flattered a couple of weeks ago to be interviewed by Google as part of their women techmaker’s series, as it moves over to Europe. In this video I talk about going to Mars, education, planning your career, being a developer, and the impact of technology on our lives. So, not much…
I had an interesting discussion last night at the LJC developer sessions, and it’s a topic that comes up again and again:
Technology, particularly development, seems to move at an ever-increasing pace. Sure, the Internet makes it a lot easier for us to get access to information than in the Olden Days, when people probably had to read papers and books, and physically meet up to share knowledge, but that just makes the sheer volume of information even more overwhelming.
So how do you keep on top of all those technologies?
You can’t. If you devoted yourself to learning the same way you did at university (pfff, well, theoretically you devoted yourself to learning…), you could still never master every technology out there, and every new language and framework that pops up daily. Even people who pick a technology stack that’s suitable for purpose (let’s go with the old favourite Spring/Hibernate combo) can’t read every blog post about those technologies and see every conference talk that was ever videoed. To be the best even at Just Java, you’d have to be a master of concurrency, understand garbage collection, have read all revisions of Effective Java, know every detail of all versions of Java, including all the changes coming in Java 8, be aware of all the JSRs in progress. They’d have to have read about waterfall development, the Mythical Man-Month, XP, Scrum, Lean, Programmer Anarchy, so that they could know they are working in the most effective way for the business and team they are in.
All that as well as working 40 hours a week on the day job.
So to expect to know the ins and out of all current (and maybe dated) technologies, and all upcoming ones - not knowing which are just fads and which are going to be the Next Big Thing - is impossible.
But don’t you ask candidates how they stay current when you interview them?
Yes I do. And actually it’s their willingness to at least try, and their ability to filter out and select the things to investigate or be aware of that interests me, not their deep understanding of Scala when they’re working in a Java EE environment (for example).
There are two reasons that I can think of to “stay ahead of the curve”:
- To be more effective in your job
- To get your next job
If you’re aiming for point one, it’s a little easier to filter out the noise and focus on what’s relevant. In your place of work, there are going to be hard limits on new stuff you can use. For example:
- Your systems guys will not allow new languages, even JVM ones, in a production environment. In which case, you don’t need to worry about learning them in any detail.
- Your company has paid a heavy subscription fee for their existing database, therefore they will not be trying out funky NoSQL solutions. Fine, you don’t have to research them.
- You work for a consultancy that specialises in government work, and documentation is sacred. So, don’t worry about going to a bunch of agile/lean conferences, you probably won’t be able to sell it to your customers.
Now I’m not saying these circumstances apply to everyone. And I’m not suggesting these are necessarily the best situations to be in.
But you can look at your current position and, if you intend to stay there, it might rule out a lot of the technology/process learning that’s available.
Point one suggests good places for research. For example:
- You’re using Spring dependency injection and you don’t speak XML fluently. So you might research Spring wired up via Java and annotations, or you might look at Guice, or you might do a bit more reading around good practises in XML, or tools you can add to your IDE to make your life easier (Eclipse and IntelliJ both support XML refactoring).
- Your Ant scripts are killing you, and you don’t know where your library jars should live. You could read a lot more about Ant, you might look into Maven, Ivy, and Gradle (hint - gradle is awesome if you don’t like programming in XML).
- You spend all your time coercing objects into something Hibernate-shaped, and not actually delivering new functionality. Maybe you could become a Hibernate guru instead of just poking at it like most of us do, or you could investigate different persistence frameworks or mechanisms.
You get the idea. If you feel pressured to keep learning and you’re not looking for a new job, there’s plenty you can be doing within the framework of your day job. The best thing about this is that you might even be able to persuade your boss that you need to do some or all of this learning on work time, leaving you more time for your kids/spouse/drinking/XBox.
I’m really much more motivated to learn skills to find that great new job
Point two is a bit more tricky. When you’re looking for a new job, it seems like every job description contains all technologies under the sun; it seems like interviewers expect you to be an expert in all sorts of different areas; it’s impossible to tell which jobs are good and which are poor, so you apply for everything and try to learn everything to get to the interview.
How on earth do you pick which things to focus on?
Well, it’s surprisingly easy. Just pick the ones that interest you.
But what if I’m falling behind on technology X and it turns out to be The Next Big Thing?
Well, by the time it becomes the next big thing, you’ll have heard enough about it to know whether or not you care - either because it interests you or because it’s so big you should care. And by then, there will be plenty of knowledge out there (blogs, courses. conferences, books…) so you’ll be able to pick it up much easier than when it was at the embryonic stage and no-one really knew what to use it for. Java is, what, 17 years old now, and people are still starting to learn it now. No-one said you had to have coded with Java 1.0 in order to be effective in a Java 8 lambdas world. In fact, you could argue that those who learnt it early on might be less able to adjust to the current state of play.
So. Learn something because it interests you, or it’s fun, or you personally can see the value of it. Even the process of learning something new is valuable, even if the thing you learnt is not - it exercises those brain-muscles so they’re used to picking up something unfamiliar and playing with it.
But I see a thousand jobs for Scala/HTML5/<insert tech here>! Should I learn that?
Have you looked at Scala? Do you like it? Do you want to learn a whole new language? Do you want to spend the next two years of your career working in Scala? Because if you learn it to find a new job, and you do find a new Scala job, then you’re going to have to use it, and to continue to learn it. And if you don’t really give a crap about Scala, then why bother? Have you looked at the types of companies that are advertising jobs for Scala? Do you want to work there? Again, if not, don’t bother.
In our industry, particularly if you live and work in places like London, New York, Silicon Valley, there are lots of jobs, even in these Tough Economic Times. You don’t need to take any old job (unless you need a job Right Now, in which case I would advise you take Any Old Job and work on the side to find The Right Job to move to imminently).
The point is, you’re freaking out because there are all these different technologies and all these jobs that are looking for different combinations of all these different skills, and this is a Good Thing. You’ve been looking at it wrong - you think you need to be everything anyone wants, so that someone out there will pick you, like some sort of school sports team selection. But it’s not like that - the selection power is in your hands. You can wade through those millions of job postings and find the ones that interest you. You can invest in becoming skilled at the things you like, the things you enjoy, the things that scratch your intellectual itch, and you can then find a job that matches those skills. Even better, if you’re active in learning those skills, and visible at it (stack overflow, your blog, communities…), you’re going to improve your chance of getting a job in the area that fascinates you.
You don’t have to be good at everything. Just find the things that interest you, stuff you feel motivated to learn about, and then when you find a job that uses those skills, you know you’re in the right place.
So in fact, there is only one reason to stay ahead of the curve:
- Because you want to.
So it’s much easier to figure out what to spend time learning and what to ignore for now.
You don’t have to stay ahead of all the curves. You just have to stay within tolerance of your own curve.
When you’re applying for a job at LMAX, your CV (or résumé, for our American readers) usually comes through me and I decide whether to call you for a technical phone screen.
I’m going to let you into a secret.
I’m going to tell you the criteria I use when judging your CV.
Now, you could say this is a foolish thing for me to do, because now when you apply you’ll be “cheating” and writing your CV to pass these guidelines.
LMAX isn’t the only company that’s going to judge your CV based on these criteria. I firmly believe that an increase in quality of the CVs in our industry can only be A Good Thing. An increase in the quality of your CV is definitely A Good Thing for you.
Even more importantly, if I get CVs that do not pass these basic criteria, now I know you either don’t read the LMAX blogs (shame on you), or you’re not able to follow simple instructions (bodes poorly for your ability to learn within the company).
The thing that you have to keep in mind when you’re writing your CV is that the reader really does spend less than a minute reading it. It’s not fair, true. But it’s the way humans are. I’m not in HR or recruitment, I have a proper job as a software developer, and I need to get back to that as soon as I can. When I get CVs in batches of up to 12, as I regularly do, I’m not free to spend more than 10 minutes going through all of them.
The Easy Stuff
You must be able to spell
You really must. There are things called Spell Checkers and they are amazing. Some of these new-fangled pieces of software even show you your errors in this cool squiggly red underline in your document.
I’m reading your CV in Open Office, and if I see red squigglies under words that aren’t technologies or acronyms I’m going to wonder how good your attention to detail is.
You must use capital letters in the appropriate places###
It’s traditional to start a sentence with a capital. It’s also traditional to use a capital “I” not “i” when referring to oneself. We’re not 14 years old, we’re not writing an SMS to our mates. We’re applying for a proper job paying proper money.
Correct grammar is appreciated
Whether you’re a native English-speaker or not, you need to get someone else who is a native English-speaker to check the prose in your CV to see if it scans correctly. For me, it’s not about being prejudiced against you because you’re not a natural author, it’s a) attention to detail again and b) your ability to make yourself understood. If your sentence construction, choice of words or simple comma placement is off, I’ll have to read that sentence a couple of times to parse it and it’s going to trip me up and ruin my flow. I want to get a good feel for you from reading your CV, so if I stumble a few times I’m not going to feel like I connected with you.
Harder and fluffier
I don’t care which versions of Spring you’ve worked with
I know you need a checklist of technologies on your CV so it gets past the non-technical recruitment agents and get picked up via automated searches. This is a bigger problem with our industry than one I want to tackle right now. So I’ll let you off having buzzword bingo on your CV. However, your CV needs to be more than just a list of technologies you have used vaguely, or perhaps once read about.
It’s useful to me if a) you put the technology check list in a single place on your CV, b) you give an indication of your level of proficiency in that technology (novice/competent/master) or length of time you’ve used it in a commercial environment, and c) you organise them in some useful fashion - preferably the ones that are appropriate to the job you’re applying for near the top, or at least those you’re happiest with at the top. Alternatively put the checklist of technologies next to the role you used them in.
Often I will completely ignore this section because I’m more interested in your ability to learn and your passion for what you do.
I want to know about your passions
In the old days I used to fast forward to your hobbies and interests, but these days we’re encouraged not to put those on the CV in case you’re judged against them. Which seems like political correctness gone crazy, but then when you think about it you can infer a lot about a person from their hobbies and interests, and therefore you could be pre-judging them based on some criteria that is not at all associated with their ability to do the job. For example, if they have hobbies that take them all over England I might infer they have a car and can drive - OK, it’s a dumb example, but you get the idea.
These days, given that I’m trying to find great team members to work with me at LMAX, I’m looking for things like: your blog; any contributions to open source software; your involvement in a Java User Group (or other extra-curricular activity). I’m not going to discard you if you don’t have any of these things, but if you do it’s definitely extra brownie points for you.
I want to know if you worship at the altar of technology, or if you’re business-value driven
Either of these things is fine - we need people who are very business-focussed and people who are rabid about technology, as well as all those in between, to build a good team. Another axis of interest is people/process - are you passionate about people, about building a good team, about helping them to deliver?
Getting a feel for where you sit on these axes is not for me to discard you, but if you look like you’re strongly in one of these camps and I feel like we need a team member to really push that area, then you stand a much better chance of getting a phone interview.
I’ll get an indication of where you are by the way you talk about your roles and your achievements. This does not help me:
This is much more useful:
I was part of a team of four developers implementing a web based administration application, commissioned to enable internal users to update the settings of our reporting tool. This saved the support staff approximately 4 hours every week, as they no longer needed to manually update the database. We used agile techniques such as daily standups and weekly iterations in order to provide quick feedback to the business.
(I made both of those up, by the way, before anyone starts trying to sue me for stealing something off their CV).
Here I can see:
- The size of the team, and your ability to work in a team
- You understood the business need you were trying to fulfill
- You have worked in an agile environment and at least pay lip service to why you were working that way.
I don’t really care about the specific technologies you used, the fact that you mentioned web-based and database gives me enough of a feel.
Sometimes prospective employers really do stalk you
Personally I think claims that prospective employers will check every facet of your web presence are somewhat over-exaggerated. If I barely have 60 seconds to read your CV, I’m not going to check you out on Facebook, my life is too short.
However, if you claim to have written a book I will look it up on Amazon. If you have a publication or example code, I will glance at those. If you’ve worked for a company I’ve worked for in the past, I’ll look you up on LinkedIn to see if we have any common connections (or worse, to see if I should remember you and simply don’t). I’ll also use LinkedIn if your CV is not screaming yes or no, to see if there’s an extra dimension in your profile which will tip me one way or the other.
So be aware of your web presence, particularly something that is aimed at your professional image like LinkedIn, and make sure it represents you the way you want it to.
This post might be simply a good way to increase my own workload - every CV I get from now on may be an automatic pass, and then I have to call all of you before I can start weeding you out.
But I don’t mind too much about that. I get concerned sometimes that good people are not getting the interviews they deserve, not just at LMAX but across the industry, because they get almost no good CV advice. Frequently the people who are the first to read CVs are agencies who are not technologists. By all means, have words on there that will make your CV appear on their search results.
But you need to put something on there for me, a real developer, because strings of keywords tell me nothing about you.
If I can improve the quality of just one person’s CV with this post, I’m happy. If I have given you that first step towards that job you really want, then that’s even better.
Read if you’re a developer and wondering what’s missing from your job.
Read if you’re a manager and you’re looking to recruit the right types of developers. In particular be honest with yourself over whether your organisation is more aligned to "hygiene" or "motivation". At least one of the poor job decisions I have made is because the role was mis-sold as one and turned out to be the other.