CTO Secrets: How to get the best companies fighting to hire you (part 1 of 3)

Neil O'Connor
Koodoo
Published in
11 min readNov 4, 2019

I recently gave a talk at the inaugural DDD East Midlands conference in Nottingham, UK. Here is a transcript of that talk, in three parts. UPDATE: the video of the original talk is now available here.

What’s this talk about?

Thanks for coming. I did consider going with a full-on clickbait title for this talk and calling it something like “28 incredible career hacks for geeks (and you won’t believe number 7!)”.

But basically I am going to give you my advice, for what it’s worth, on how to make yourself as attractive as possible to hiring managers in the sorts of companies you really want to work for.

Sadly, I’m not a magician. I’m not here to help you get a job that you’re not qualified for. There are, of course, other ways of achieving that.

I WILL talk about plenty of quick fixes you can make to improve your CV or your interview style, or those little hacks to help you get noticed, but other things I’m going to talk about might require you to think differently about what you prioritise in your career and to adopt a different mindset.

So what qualifies me to talk to you about this? Well, because I’m one of those hiring managers. I’m CTO of a fast-growing fintech startup called Koodoo, which is one of the Blenheim Chalcot ventures. I was CTO of Oakbrook Finance for 5 years, who have been hiring a lot of tech talent locally over the last few years, and I’ve had previous hiring roles in large respected software teams.

I insist on interviewing everyone myself for the first interview, and as a result I have interviewed hundreds of software professionals in the last 10 years, and seen 1000s of CVs, and I like to think I’ve got a pretty good track record in the ones I’ve hired. I’m sure a few people in this room have had the pleasure or displeasure of being locked in a room with me for an hour.

My talk title mentions making yourself attractive to the “best companies”. What do I mean by best? I don’t necessarily mean the ones that pay the most or have the most recognisable name. Those guys can be soulless or cutthroat places where they talk a good game about their tech investment, but in reality you are little more than a cog in a corporate machine.

I’m talking about the gems — the places that value what you do as a software professional, give you the opportunity to learn and grow, and have happy, engaged teams making great software. Believe me when I tell you that these places are where you want to be building your career.

The first clue is that the best places will often call themselves software companies. They are the places that value great software and great software engineers. I’m not saying there’s anything wrong with writing software for a global manufacturing company or a bank or a funeral director or… whatever… I’m sure many of them are pleasant places to work. But if you are hungry to create awesome code in an environment where your colleagues and your boss and your boss’s boss TRULY understand what it means to build awesome software… then you should probably be aspiring to work for an innovative software or tech company.

The other part of my talk title is about getting those awesome companies fighting to hire you. Industry legend Joel Spolsky says that really he is looking for people with just two qualities: Smart & Gets Things Done. This talk is about how to become that perfect candidate who hits those two sweet spots.

I’m going to talk to you about career goals, getting an interview, and nailing an interview and tech test.

PART 1: Career Goals

So bear with me here. Some of these things might seem a bit abstract at first, but hopefully you’ll start to see the relevance as we go through.

I’m going to ask you to take pride in being a professional. What does this mean? We are a very young industry, but in a ridiculously short timescale, the entire modern world has come to rely on software and the people writing it. 20 or 30 years ago, the idea that badly written software could cause the world’s economies to go into meltdown, or cause nationwide electricity blackouts, or cause cars to crash into trees, was fanciful. Now, the truth is, every aspect of life as we know it depends on someone *exactly like you* not screwing up.

But our industry hasn’t kept pace in terms of professionalisation. Think about this: anyone can work in software development if they can talk their way into a job. There are no minimum qualifications, no universally enforced professional certifications.

You can’t become a brain surgeon or an airline pilot or a nurse or a lawyer or a vet without having the right professional qualifications. In fact, you’d probably be a little concerned about ever going to the dentist if anyone could become a dentist just because they nailed the interview on the day. But literally anyone can apply for a job in software development.

(As an aside, apparently when they launched the first fully fly-by-wire aeroplane, the Boeing 777, they made the software engineering managers sit on the test flights. I imagine that helped focus their minds during the QA phase!)

Don’t get me wrong, it is great that our industry is finally seen as sexy. God knows I’ve been waiting long enough. It’s great that people are retraining and coming into the industry and helping with the skills shortage. And the flipside of that is that having a Computer Science degree is also definitely not the same thing as being a competent developer.

And of course not all software jobs are equally critical. If you are writing colourful apps for toddlers, the bar is not as high as if you are writing control software for nuclear power plants.

But what I am urging you to do is to aim to be amongst the minority of true professionals. By which I don’t mean “don’t turn up to work drunk”. I mean professional in the sense of treating your job as having serious, formal accountabilities that go with it. Take your craft seriously. Take the time to learn about the practices that some of the leading lights in our industry write about, such as formal software design patterns.

You may have heard the term ‘boy or girl scouting’ in the context of code — leaving it better than how you found it. Well take that up a notch: a professional software engineer, should aim to leave the *industry* in a better state than how they found it. So how do you do that?

Have a side hustle or two. There is no better way to keep your skills sharp and stay in the habit of solving problems than doing it for something that you are personally invested in. Build an app, run a community website, become a key contributor to an open source framework. Find something you are passionate about and spend time working on it — it may even one day make you lots of money. Or it may not.

Be part of your local tech community. You’re already here, so that’s a great start, but if you don’t already, go to some meetups, apply to take part in Hack24. As you sit there in your second or third meetup listening to someone else talk, you should feel a burning obligation to be standing up there at a future one doing the talking yourself. If the idea fills you with horror, then use that feeling as a way of personally challenging yourself to a) become an expert in something others want to hear, and b) defeat your introverted self and learn to stand in front of a room and talk. It’s an important skill that will help you throughout your career.

And still on community, being an active part of the online tech community should be top of your list. Don’t be a passive consumer of other people’s knowledge from StackOverflow. It’s not their job to solve your problems, so pay it forward. Every time you find an answer to a problem on StackOverflow, contribute something back.

Start by thanking them for their answer and explaining how it helped your case. Then maybe find someone else trying to solve a similar problem and answer their question. Then as you gradually acquire expertise in various things, start actively seeking out problems people are having that you may know the answer to. Think of it as equivalent to voluntary work. It will make you feel good as a human being, give it a try.

Contribute to open source projects. Have you found an NPM package that was particularly useful? Noticed any bugs in it or thought of a way it could be improved? Could the readme have been a bit clearer? Then put in a PR, no matter how small. Someone just like you has made that package out of a labour of love because they wanted to do something nice for you. Give back.

Practice your core skills. If you were a professional tennis player you’d be practicing your backhand 1000 times a day, or if you were a professional musician you’d be practicing your scales and arpeggios. As a professional software engineer, you can practice your core skills too. Online coding katas are the obvious way to do that. Try codewars if you like your practice gamified.

Keep learning. Make reading tech material a regular habit. Honestly, have you read a techie textbook in the last 6 months? If you haven’t picked up a textbook since uni, force yourself to get back in the habit.

If dead trees aren’t your preferred reading style, your options have never been greater for keeping on top of a range of material. I use an app called Feedly, and whenever I’ve got 15 minutes to spare, I’ll open it and flick through a few dozen articles in my feed and maybe read one or two that sound interesting. And of course there are loads of MOOCs — free or bargain online courses on every subject imaginable.

Adjacent skills and practices. I love meeting a naturally talented coder. What a love even more is meeting a natural coder who has reached the point in their career when they’ve started to understand about the adjacent skills and practices that make for well-rounded, well-engineered solutions. A good driver doesn’t just understand how the car’s pedals and steering wheel work — they know about traffic systems and traffic laws and road signs, they know how to cope with different weather conditions, they know how to read the road, they know a bit about the psychology of other drivers, they know when to give way and when to accelerate out of danger.

So if you’re a developer, I want you to know at least SOMETHING about test practices and frameworks. About continuous integration and delivery. About performance and scalability. About security. About writing clean code. About debugging. About cloud architectures. About different types of databases. About monitoring. About version control workflows. About agile methodologies. About Domain Driven Design.

Work on your soft skills. Obvious stuff like presenting, writing clear email. — there’s plenty of online resources about this stuff. But also, if you’ve never done one, take a Myers Briggs or similar personality classification test online, and find out what your strengths and weaknesses are. I don’t normally buy into this stuff, but it was a revelation to me that people don’t necessarily conceptualise information in the way I do, so I made a conscious effort to address that, and suddenly I was getting through to people I hadn’t previously managed to get through to.

Seek help from others. Do you think Roger Federer doesn’t still get tennis lessons from a coach? Find someone who you respect and ask them to mentor you or just ask them if they don’t mind spending a few minutes of their day explaining why they did something a certain way. Or even ask your colleagues to sit with you and critique your thinking. Don’t be so arrogant to think that you know it all already or think it’ll look weak if you ask someone for their advice.

Give your help to others. Everyone has something to offer. Everyone. If you don’t feel comfortable just going to other people and imparting your wisdom, there are other ways of doing it. Offer your wisdom to the huddled anonymous masses by blogging about something you care about, or as suggested a minute ago, seek out StackOverflow questions you can answer. Stream yourself coding on Twitch. Yes, that’s a thing.

Teach to learn. Teaching is also a great way of learning something yourself, and it also helps you to develop your empathy muscles.

Final one for now: develop a point of view. By this I mean, as part of a global community of software developers, you should have opinions about things. Is this latest silver bullet javascript framework really better than the last one? What’s with everyone using MongoDb these days? Should developers operate in an ethical framework? Is blockchain the future of cat memes?

Take time to connect the dots between your individual opinions and talk about them with your colleagues. Anyone who uses Twitter knows that individual rants are boring. Having a point of view, based on trends that you have observed over time, and a central theme or narrative, is interesting. Develop a point of view and it will not only help you in your job, it will give you something to blog about, and guess what, it’ll give you something to talk about in interviews.

(Opinions are those of the author, not the company. All images used are copyright of the original publishers, who are too numerous to track down given the sheer volume of memes in this talk!)

--

--

Neil O'Connor
Koodoo
Writer for

CTO of Koodoo. I enjoy the finer things in life. Oh, and most of the non-fine things too.