Interview with Wojciech Krysiak - Part #2

In the previous part of the interview with CTO, Wojtek we discussed the role of the CTO in the company and the importance of choosing the right technology.

Interviewer: What is your background? How did you gain your technical experience?

Wojtek: The truth is that everything was about my ego. It will be quite a funny story.

One day when attending a course at the university, we were assigned a project to make a simple database for storing users’ data – a super simple thing that can be done in one day. But I’m saying this as a CTO with ten years of experience. I was just a kid at the time and had little idea how to get around to doing it. One of my roommates told me then that I wasn’t even smart enough to do it. He simply played on my ego. So I thought I needed to prove him wrong. And this was actually my first night of coding. At 6am the next day, the program was ready and in a couple of hours I showed it to my professor, and got an A+, which was the highest grade at the time. The praise was well deserved, as the code was simply amazing. Actually I was so excited about my program that before handing it over to the teacher I had extended its functionality – at 5am in the morning I added mouse support. This was no mean feat back then, something hard to do in the C language. But I managed to do that, and he was really impressed, “whoah, mouse is working!”. So this is how it all started. Big shoutout to my roommate!

What happened next?

I simply realized how much I loved that. I just knew it. I wanted to figure out a way to do it for a living. I started working for different people at university and built a couple of programs. During my final year I built a startup called Students Open, which allowed students to share notes. It was like a folder where students could add notes and share them between groups, cities even.

What technological implementation are you most proud of?

My daily work throws different problems at me, so there are a few, actually. It’s not surprising given my ten years of experience in the industry. I could tell you about a recent achievement. We are currently building open source software called Admin Bro, an admin panel for Node.js applications. There are two reasons why I’m really proud of this project. Firstly, this application solves business problems. It speeds up the development process a lot, hundreds of times actually, with an admin panel. Instead of spending one week, you can do this in five minutes. This is a really amazing thing we did, and it’s open source so everyone can use it. I believe that it could speed up Node.js applications globally.

The second thing is the tech stack. Building this thing was not easy. It was a challenge because when building it you have to plan for the entire application to be connected with different tools that developers use around the world. And we did that. It has a modular structure, and people around the globe can add new connections to it.

There are many software houses on the market. What makes you different?

Running a software house is really hard work. It’s not easy business. When you have a product, everything revolves around it. We don’t have one, but we have people instead. We can win the game by having the best people who work in a well-organized manner. This means we need good processes to be in place. Every company will probably tell you that. We differentiate by the technology which we use. Our focus in on JavaScript – and we promote ourselves in the community. We promote JavaScript events, software, and try to attract the best talent. All good JavaScript people on the market know who we are.

We also promote JavaScript globally. Our open-source tools can be used by all people around the world – for free. This is also how we would like to differentiate and attract clients.

Apart from that, we continuously improve our processes, and give our clients the confidence that they get the best people in our market working to best processes. This is the path we are taking right now.

How do you keep up with the newest trends in IT? What are your favourite resources? GitHub? YouTube?

I believe that on your own, as a CTO, there is no way to be up to date with everything. But if you work with the right people, it’s very likely they are also on the lookout for new things, and learn a lot. Simply talking with your people is an amazing way to get up to speed. You role as a CTO is to verify the different ideas and things they read, and decide on the right technology to use in the company. This is how I learn new things – from the people.

What is your X-factor?

A couple of months ago I did a test in the Gallup institute. It tells you your biggest strengths, or talents. My biggest skill is being a learner, which allows me to learn new things very fast, and then teach them to other people. I believe it helps me a lot. As I’ve already mentioned a couple of times already, technology is moving very fast, and we have to keep up. If you are stuck in one place and not willing to learn, you are losing the lead, basically dying. The ability to learn fast is the trait every CTO has to have.

What is the primary responsibility of the CTO?

It depends on the company. CTOs in product companies may be concerned about completely different things. Likewise, the role of the CTO in a software house employing hundreds of people would also differ from a counterpart in a company employing 50 people. We are the latter. My role is taking care of the stack, which involves picking the right technology which we could use – something possibly new and safe.

Is there a specific KPI you are most focused on? Cost? Performance?

There are a couple of KPIs I keep my tabs on. One of them is time of development. We are currently trying to implement the so-called building blocks method, i.e. build using tiny elements of software which can be reused. As a CTO, my role here is to decide which blocks can be extracted and reused in another project. Then, I have to plan accordingly how to use particular blocks in a different project. In this way, we can deliver our projects to our clients much faster.

Is there a particular KPI that applies here? E.g. how much money can be saved using an existing block?

Not regarding blocks. It really depends on a particular example. For instance, Admin Bro came out as a building block, and the saving here is a week’s worth of development. Multiply the number of hours in a week by the rate of the developer, this is the amount you save. It gives you an actual number.

What’s the biggest challenge of the CTO?

Again, it’s to keep up with technology. You have to keep up with processes. Whenever something new comes up on the market, you have to verify that, and the challenging part is to differentiate the next big trend from some unimportant additions, i.e. something that would die in, say, three months. If you don’t pick the right tools, you could destroy the company.

I used to be a developer, and know that all developers are on the lookout for new things. And there are various motivations behind it: to build faster, to improve skills. But at the end of the day it’s not just about building things. It’s really about the market. A CTO chooses a technology, but he or she must also consider the current market situation. For example, a bad decision will result in difficulties hiring experienced professionals. That’s why every CTO needs to have such considerations in mind.

Let’s talk about the money for a second. How do you prepare an IT department’s budget. How do you make decisions about investing in new tools?

Running the budget in an IT company, especially in a software house, is never easy. What I would recommend to every owner of a software development company, if anything, would be to keep an eye of the cost of an hour of development at the company. We think of finance in our company as if it was a production company. We divide our cost into two parts. One is the cost of developers, i.e. how much every developer earns, and the other part is overheads – fixed costs on top of that.

In our company we think in terms of working hours of our developers. We never assign 100% of the hours to projects developed for our clients. A part of the “budget” – let’s say 10%, 15%, 20% of the time – is spent as investment. This, for example, can be used on building blocks, or adding a new open-source tool. Those are the things we invest in. There is no way around it – we have to do it to help people grow, gain new skills and develop in a safe environment. We never get fully onboard with a new technology and offer it to a client before we’ve thoroughly tested it. This is too risky for us. We first use things internally, in internal projects. And this is basically what the budget is for. This makes max. 20% of our total so-called budget counted in development man-hours.

In the third part of the interview, we'll find out what are the features of good software, what qualities good developer should have and future of software development. As a icing on the cake Wojtek reveals how to become a CTO.