10 October, 2019
What makes a good CTO great? I’ve been asking this question myself, and so far have been able to find only one answer – it’s not only to do our jobs well but also to solve problems that may seem unsolvable. In this article, I’m going to present the top challenges you’re going to face that will test your predisposition for serving the CTO’s role. If you succeed and overcome those issues, you will be on your way to the path of greatness.
Finding a balance
In order to find balance, you don’t have to go through a deadly workout with master Pai Mei like Beatrix Kiddo in “Kill Bill: Vol.2”. CTO’s role focuses on finding a middle ground in day-to-day duties. Below, I present three examples that may look absurd and seem to clash but are going to influence your workflow as the Chief Technology Officer.
You have to know the technology BUT you must quit programming
You probably don’t have time to stay up-to-date with every little bit of new technology released. And guess what – you don’t have to do it. Your main goal is to have enough theoretical and practical knowledge to recognise whether a certain solution – let it be a new language, tool or open-source – is worth trying out and eventually introducing to the company’s technology stack or not. If the solution makes the cut, your job is to explain complex technicalities to your management and come up with a complete solution that can be presented to potential clients. All that has to happen without writing a single line of code. As I’ve written in my previous article for the first-time CTO, most of us have to say “bye-bye” to programming early on and trust our developers on coding-related issues more. So in order to be up-to-date, I advise you to do one thing…
HINT: Work on your communication skills.
You need to talk to your people about technology on a regular basis. Don’t be afraid to ask them about recent news – you’d be surprised how often they will find something worth exploring. Listen to what they say and stay open-minded. Developers will really appreciate that they are given the opportunity to have a real influence on the company’s tech stack. If you give them proper motivation, they will voluntarily come to show you their recent discoveries and interesting solutions you might have missed.
You have to consult people BUT you must have your own opinion
This leads us to the next issue – everybody has an opinion on everything. It’s no different in software development. Now that your opinion is the one that matters the most, it’s very easy to slip into dictatorship mode. As you probably suspect though, it doesn’t work.
What does work is the culture of teamwork – asking your people for their opinions, mentoring junior developers, setting high standards for everybody (including yourself!) will make your team more motivated and engaged in the company’s life.
HINT: Consult the problematic issues and implement ideas but never take it out on your team if your final decision turned out to be a bad one.
It’s very important that you clearly define what you expect from people (apart from good coding). Examples? Saying “Please explain to the customer what you are doing in the project because I know you’re an expert”, or “You can work remotely but I expect you to be in constant contact with the rest of the team” rather than giving orders without an explanation works wonders.
Your team needs to know they matter and their opinions can be taken into consideration, so make sure that they are heard. During the meeting, all possible options and their consequences have to be said out loud. As the decision-maker, you take responsibility for your choices and hope that the team will support you.
You have to keep control over everything BUT you must delegate tasks
Maybe you’re alpha and omega now, but there are so many letters in-between which make up the full alphabet. Those are your development teams working on different projects. It’s impossible for you to micromanage and double-check everything, so naturally, you need to remove yourself from certain tasks. If you don’t learn how to delegate, you’re going to be swamped with unnecessary responsibilities and show your developers that you don’t trust them. And you don’t want either to happen.
HINT: Find gaps in the company’s structure and fill them with passionate people.
Controlling everything doesn’t mean lurking behind people’s back all the time (let’s leave something for project managers 😉), rather establishing a process that will allow you to know exactly what’s going on without going into teeny tiny details. I can tell you how it made it work at The Software House.
You’ve got a task X, and you know that similar tasks will appear in the future. Pick a person who you think is qualified enough to handle it and do a trial run by delegating that task. After it’s ready, check the results, give your opinion and praise the work. If the result is satisfactory, ask if they liked this task and if they’d like to do more of such things on a regular basis. If they agree, ask how will they combine it with their recent responsibilities. If there’s no way to do that, decide which duties can be delegated to somebody else (maybe a brand new junior developer?). This way, everybody is slowly progressing and getting promoted. In time, you will structure your company hierarchy – your team leaders/lead developers will evolve naturally, as well as people who are happy to code without being involved with management tasks.
Always remember to reward people that have done a good job on things you’ve personally delegated to them! Ask if they enjoyed it and if they want to do more. Also keep in mind that if you add additional work to a developer, it also means you have to take something off their back (ergo: delegating it to somebody else).
Recruiting and managing the best talent
What if there’s nobody to delegate tasks to? Well, that brings us to one of the most important CTO’s responsibilities – putting together a great software development team. And as we all know, it’s not easy. Talented developers are a precious resource for tech companies, so they compete with salaries, perks and modern offices. However, what’s more important for them than “fruity Fridays” are homely atmosphere, engaging projects and inspiring co-workers.
Like I’ve said in the aforementioned paragraph, some gaps can be filled by internal recruitment. Observe people, research their skills through delegating tasks and soon you’ll learn who can be promoted or trusted with more responsibility. But what happens when you simply need more hands on board or looking for an unusual set of skills? I wish the clone factory from “Star Wars” existed, but there’s only one thing you can do – recruit externally.
After you identify skills that are required, you need to attract the right talent. Most CTOs would go and find the most experienced senior developers they can find. However, in my opinion, sometimes it’s worth hiring ambitious juniors and training them with a little help from your recent seniors. With a bit of talent, they will be able to reach proficiency in a certain technology in no time.
HINT: when recruiting people DON’T compare them with current employees who are already on board.
Your teams already know the company culture, tech stack, etc. much better than anyone from the outside ever could. Try to imagine how the person sitting in front of you during the interview will evolve after half a year in your organisation when they learn everything they need to know. Their attitude and willingness to learn should be treated as an investment and sometimes can be more valuable than proficiency in certain technology.
The magical word: “and”
Let’s start this one with a few real-life examples. When you’re looking for a software company to develop your product, usually, a company ABC says they will create the product fast, while a company XYZ promises to create a good quality product. Pretty much the same goes for your software developers: very often you’re going to be told that “We can either do it fast or with high quality”, or “We can either rewrite it from scratch and get rid of the legacy code or we can continue but it means it will take time”. A great CTO has to find a way to create that product fast AND still maintain high quality. This seems like an impossible challenge but you will be surprised how often people can think of completely unexpected and amazing solutions when pushed a little into brainstorming.
HINT: Leaving the technological comfort zone has unexpected results.
A great CTO (and a great team) are those who are able to come up with a method that might be a bit difficult at the beginning, but in time will result in a customised product that will benefit the client. How to push yourself and your team? Tell them you know it’s a
hard task, and that’s precisely why you’ve chosen the best people for the job. Inspire them with your own ideas but also make sure that they have their own space to think and share their thoughts. I’ve lost count how many times this method worked in The Software House – by putting out ideas together we managed to create a full picture of the project and eventually satisfy the client with our creativity. The collective effort brings magical “and” to life!
Being able to predict and adjust to the market
Finally, you should make a distinction between temporary hype and future-oriented solutions. And let me tell you: to foresee whether a given technology will work out and become widely popular or not is a lottery. So my advice is…
HINT: Before you do anything drastic like introducing new technology to your clients, try it out first.
Do you know how the vicious technology circle works? When seeing new technology, experienced developers immediately want to try it out of boredom – new developers (who haven’t found their favourite technologies yet) just google what’s in right now, and new things always hit high places. Then, a snowball effect happens and according to buzz it’s “the next big thing”. After a few months, devs get bored again and go back to the good, old stuff. As a result, a secondary market is created – customers are stuck with applications written in that hyped-up technology and they look for programmers who know how to deal with it. And there’s fewer and fewer of them because they have gone back to their proven and verified technologies. Ergo: because they’re scarce, hiring them is extremely expensive. Due to high costs, customers are left behind with legacy code and a massive problem.
However, once in a while technology is a hit. At The Software House, it was Node.js – firstly we introduced PHP, then Node.js. We followed the trend and it worked because it’s being constantly developed and is loved by the IT industry. Currently, our new darling is Svelte framework. However, we didn’t just jump the hype train and started selling it to our clients straight away. I decided that our developers need to become familiar with this technology first, and the opportunity presented itself. We were invited to the meet.js Summit conference and we’ve prepared a simple TypeRunner game to make our stand more appealing to participants. People loved the game and our developers had an R&D session that gave them the practical approach to Svelte. Now we’re just observing how the market behaves. If the technology begins to go mainstream, both I and my developers have the necessary experience and options about Svelte. By the way, I haven’t written a single line of code myself. But, by following our process and talking to people involved, I know exactly what to think about Svelte.
Of course, there are many more challenges waiting for CTOs – from data protection and cyber-attacks to relationships with management. A single CTO job description doesn’t exist because every organisation demands something different. One thing is for sure: a good CTO (just) correctly executes the technological plan. A great CTO draws talents to the company, inspires them to improve and helps them thrive.
At The Software House, we know that CTO’s role is very demanding and we respect how much time and effort is needed to properly fulfil their responsibilities. That is why we’ve prepared a special resources hub to support CTOs and their day-to-day jobs.