Home

Al Davidson started coding at 8yrs old, and has been doing so professionally since graduating in Physics in 1996. He specialises in web applications, covering areas as diverse as social software, e-commerce, machine learning, network analysis, and natural language processing. He’s led and grown dev teams for various agencies and startups, and is currently CTO of iTrigga.com

Title – What is your job title?

Chief Technology Officer, usually abbreviated to ‘CTO’.

What is your role about?

The requirements of the job vary massively depending on the company you’re in, but you could probably sum it up as being the public face of the tech team to everyone else – both internally (the board, the investors, the finance people, the sales team) and externally (the customers, job applicants, the press), so you need to be able to speak the language (and DSLs) of the other areas of the business as well as your techies. You’re responsible for everything that the tech team does, and all the tech decision-making, so you need a broad knowledge of everything from web development to database scaling and linux sysadmin, plus the people skills to be able to manage a team. I’m in a small startup, so I still get to do a lot of hands-on tech work too. In an average week I probably spend a total of 2 days coding features, maybe a day on infrastructure work and tech planning or research, a day speaking to clients, a day planning and managing the team and our projects, and the rest is taken up with internal meetings.

What are the best/most positive parts of the job/industry?

There is always, always, something new to learn, and the nature of startups means that it attracts a certain kind of person – someone with an entrepreneurial streak, who enjoys testing themselves to see how far they can push their limits. In contrast to large companies with hundreds of developers where you can feel like a very small cog in a very big machine, in a startup every day your work has a directly visible impact on the fortunes of the company. Your mistakes are painfully visible, but the triumphs are entirely yours too. When you do a good job, it has an equally visible positive impact on the company. Decisions have to be taken fast, and the whole direction of the company can change frequently until you find a business model that works. I love building and growing teams, and the friendships you make in a small team with big ambitions, amongst people you trust and respect, will stay with you for a long time to come.

What are the negative parts to the job/industry?

In startups particularly, budgets are incredibly tight. You virtually never get a training budget or any structured skills development, and there is often no-one to turn to if you get stuck – you constantly have to think on your feet and if you don’t know how to do something that urgently needs doing, you just have to find out – and you’d better be a quick learner! But I kind of like that, it keeps me on my toes and stops me getting bored. You need to be highly motivated, and anyone who says ‘..but it’s not part of my job description to do that!’ does not belong in a startup. It’s also possible for sucessful startups to grow too quickly – I worked at Freeserve in the first dotcom boom, and every cliche that was going round on joke emails about “you know you’re at a dotcom company when…” was painfully relevant. My team had 4 developers and 8 managers, and with repeated takeovers I sat at the same desk for two years and worked for four different companies. I went back to small companies after that and have never gone back.

What is the standard career path/qualifications?
I arrived at a CTO job through a random walk of increasingly senior developer roles, and I kept getting the senior dev roles through consistently having strong ideas about how things could be done better. In large companies there can sometimes be a “them and us” attitude between the tech team and the other areas of the business, and techies can sometimes have little respect for their managers, but this mainly comes from a belief (misguided or not) that the manager would not be able to do the technical job – so having worked my way up from junior dev helps a lot. I remember very clearly the point where I realised I’d become a manager, when I got to Friday afternoon feeling exhausted from a frantically busy week, but I hadn’t fired up my IDE once – there was no denying it by that point! 🙂

A CTO needs to have a good understanding of many different areas, from the very technical through to the very commercial – business/finance and industry trends, plus you also need to be able to understand your clients businesses. So a varied background is a big plus. A few years at at least one development agency, where you get exposure to many different clients and business models, is a great way to learn.

What are the prospects?

Everyone in the startup world is hoping for The Big Exit – where your company is sold or floated for a big pay-off, and your hard-earned share options can be cashed in for a big lump sum payoff. However, for every Google or Facebook there are hundreds or thousands of small startups that didn’t make it and went out of business or just stagnated into anonymity – so make sure you take your jobs for the right reasons and enjoy your work in its own right, treat the prospect of a lucrative exit like entering the lottery rather than a certainty or even a likelihood, and you’ll have a great time along the way whatever happens at the end.

In your experience are you aware of any differences your role has between industries/sectors?

In startups, particularly web / tech startups, the CTO is able to (and/or has to) stay more connected to the technology than in larger companies or other industries, where it is a much more “strategic” and/or financial role.

What was it like coming into the industry?

I got my first coding job on graduating in 1996, and was hired specifically because I studied physics and hadn’t studied software engineering. The boss believed that trained software engineers needed to “unlearn” a lot of what they’d been taught in university in order to adapt to the “real world”, and that physicists had more transferable problem-solving skills. I don’t know if I’d necessarily agree with that these days – it’s a long time since I was at University, and the advent of Big Data has brought academic CS rigour to the fore recently – but I would say that the ability to get things done and get things finished is rarer than you might think. I’m now at the stage in my career where some of the tech problems I’ve tackled in the last few years have made me wish I’d had some more formal software engineering / comp-sci formal training, but it took me ten years to get to that point. The most useful lessons I learned from my first job where things I didn’t even realise I’d had to learn until reflecting back much later – general business things like how you’re expected to behave at work, how to take minutes of a meeting, how to handle difficult customers, how to cope with pressure, and how to get someone to tell you what they actually need from this system you’re building for them rather than what snazzy UI tricks they saw on some website and really want on this internal invoicing system…

Do you have any thoughts on the future of your role/industry?

The hot skills right now are mobile app development, “new-wave” front-ends (e.g. HTML5, CSS3, and Javascript applications) and Big Data techniques like map/reduce. However, they are tools not ends in themselves, and no one solution is right for every situation.
The state of the industry right now is similar to that of the first dotcom boom, around 1999 – the rapid growth of new models and technologies has led to a “democratization” of the sector, where it’s been possible for small companies and one-man-bands to move quickly and outpace the larger companies. It’s perfectly possible at the moment for a single person to make a good living writing, say, mobile apps in their bedroom, but this wasn’t always the case and it may not be for too much longer as the bigger players catch up. Also we’ve had some recent big IPOs (stock market flotations) of companies like LinkedIn, to mixed results – the imminent Facebook IPO will be watched closely as an indicator of the health of the marketplace. But it’s certain that whatever happens economically, smart pragmatic tech people will always be in demand.

What advice would you give someone entering your industry?

Treat all people fairly and with respect, whatever you may think of them in private – it’s a surprisingly small world, people change jobs frequently, and the same names keep coming up again and again. It only takes a minute to gain a bad reputation, and unless you’re lucky you might never lose it. Don’t try and blag your way into something, you’ll be found out quickly unless you’re very smart – be honest about your skills and limitations, sometimes “I don’t know (…yet!)” is the right answer.

When I’m hiring developers, the most important thing to me is not “what skills do they have?” but “do they think in the right way?” – it’s far easier for a good coder to pick up a new language than to teach someone who knows language X how to be a good coder. Don’t get to attached to any particular methodology or approach, as the community changes direction frequently and today’s hot ticket will be tomorrows legacy code that everyone hates. Try different approaches and iterate the ones that work.

Ultimately the best way to learn is through doing – someone who has written and released their own project, whether it’s a small library or a mobile app or even just a hand-coded web site is always going to stand out over those who haven’t – so get coding! Participating in open-source projects is also great experience. Test-driven development is a very good habit to get into sooner rather than later, and I would highly recommend internships as a way to learn how things are done in industry and why they are done that way, along with how to work as part of a development team.

Have you come across anything or anyone that has helped you move forward in the industry?

Two great books to read are Joel Spolsky’s “User Interface Design For Programmers” and Steven Skeina’s “The Algorithm Design Manual”. But most importantly, read the blogs relevant to your chosen discipline, blog and/or tweet about your interests and the tech problems you face, and ask intelligent questions. Be interested in everything, and you’ll be surprised at the connections you make.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s