From Programmer to CEO

June 29, 2022

Marek Rosa recently gave a talk at the Czech game development conference, Game Access. From programmer to CEO, he shares tips and best practices for changing the mindset to become a more effective leader. 

Watch the video or read the transcript below. 

This transcript has been edited for length and clarity.

Hello, everyone. Today I will be talking about my transition from programmer to CEO. I will tell you about how I had to change my mindset. But before that, something about me. My name is Marek Rosa. I’m the CEO of two companies that I started. One is Keen Software House, where we develop games. The other is GoodAI, where we develop general AI or AI to recursively self-improve. 

I started Keen Software House in 2010. The flagship title that we released in 2013 is Space Engineers. We have sold more than 4 million copies since then with over 73 million in revenues. The game is active, we are still supporting it and it’s going well.  The other company that I started in 2014 is GoodAI, where we are developing general AI. I invested my own money to start this company. Basically we are doing basic research – not engineering of AI, but fundamental research. 

More recently, in the last two years, we’ve started working on AI in games. We’ve been developing an experimental game where you have AI agents that can communicate with you. They have their own motivations, they are autonomous, and they can create their own stories. 

So why do I create games? 

For me, it’s the need to create. I have a passion to create games. This is the main reason. The strategy has always been to look for niches, unoccupied niches that other companies are not investing in – because they’re not interested in it or because it’s too risky. 

This is what we do at Keen Software House and GoodAI. If there is a problem that nobody wants to solve, we go after it. Those who can benefit from this talk fall into two categories. The first are those who want to become CEOs, or managers who want to become leaders, but who are currently not in a leadership position and wish to learn. 

The second category are people who have their own bosses and who want to understand how their boss thinks. They may do things that seem idiotic or incompetent, but actually there are good reasons for why those things happen. 

I started out as a programmer in 2010 developing my own game and game engine. I did everything on my own. Later on, I started to hire people and had to transition to the CEO role. For a long time, it was really hard for me to actually change my mindset. And right now, as I said, I’m the CEO of two companies, also creative director, and I’m managing multiple projects. I need to understand what we are doing, I need to be coming up with new ideas. 

In this presentation, I will be talking about the tricks that I use to cope with all this. So, the before and after. 

Before I changed my mindset to become a CEO, I was really demanding. I was controlling, micromanaging, and I didn’t trust people. I didn’t have patience when somebody wasn’t making something on time. I was very frustrated because as a CEO you have full responsibility for everything, but you have very little control. Everything you want to do, you need to do it through other people. 

Whereas, when I was a programmer, I could just do whatever I wanted. Whether I did it or not, it was just up to me. But if there are other people involved, you don’t have 100% control. I also believed that if I paid people, they should be trying to make me happy. Basically, I felt like a customer. So I didn’t understand why I should have to manage them. So this was me before. This was my starting point as a programmer. 

I had to really change my mindset. I learned to empower people, to develop people, and to actively shape team culture. I will talk about a few rules, and a few, let’s say advice. But these are only some. I think there are hundreds and hundreds more that could be useful. 

What I learned about leadership is that it’s about actively building a good team culture. This really starts you as a CEO, or as a leader. You need to be setting up the culture that you want in your team. And it’s also useful to be an example that others want to follow, to have a long term investment into people and to communicate the vision of the company or the project very clearly. And by the way, this on the screen is our new office that we have in Prague. 

Another point is about delegation. I also had a big problem with this because many people were giving me advice saying that I should delegate, I should delegate. And I didn’t understand that. If I delegated something, I would lose control and get different results than I wanted. This was a constant struggle for me, and after many, many years, I actually understand what it means. 

When you are delegating, the reason to delegate is so you can do more. 

That’s the main reason – you don’t need to do everything. You can delegate and people will do it for you. But it’s very important to make sure that the people who are doing the job have the required skills to do the job. I cannot delegate something to somebody who is not yet competent to do the job. 

It’s also important to communicate the constraints of the delegation. For example, if I have a team member and I tell him to make a new model, it doesn’t mean that he can make any model, that he can go and do anything. It’s very clear to say that I’m delegating this job to you. But these are the boundaries and you need to do it within these boundaries. 

Because I also have a plan. And the output needs to fit properly into my plan. With delegation, it’s also important to understand that if I want to delegate a lot, many of the decisions of people who are autonomous — and I want them to be autonomous, because that means that I can do more – they will make decisions that I may not completely agree with or like. But if I’m okay with it, then you know, that’s the way to go. 

Also, with delegation, I think it’s good to have some kind of buffer for time loss or financial loss. Because when you delegate something to somebody and there is an error in communication, you might get something different than what you wanted or needed. And you’ll need to do it again and again. So you need to take this into account. 

I can delegate things that I have a personal preference for. For example, if I have a vision for a game, I wouldn’t want to delegate that vision. I can delegate many other things in the game, but I wouldn’t want to delegate the vision. For example, I may have some idea about the story or the game. Again, I wouldn’t want to delegate the whole story to a writer. I would want to delegate only some parts of it and keep ownership of the story for myself. 

Another important thing is to have trust in people and give them a chance to fail. 

That’s also one of the things that I learned. And I see it also with upcoming leaders on our team. Many of them are also really frustrated. They want to control others to make sure that the other doesn’t fail. But I think the solution is to have a buffer. You need to assume or expect people who you delegate to will fail. 

You need to be okay with this, and give them a chance to fail. 

Treat people as you think they should behave, or as they could be, and not how they currently are – so basically, to really believe that they can do it. And in most cases, they will do it or they will change in a positive way. If you will be negative towards people or if you don’t trust them, then most likely, they will actually behave like you don’t trust them and not perform well.

Another really very important investment is to develop relationships with your team. So basically, make sure that your team doesn’t hate you. That’s quite important. And with this, you can look at it from my perspective that when you are building, when you are having a relationship with somebody in your team, to ask questions like, am I actually building or developing this relationship? Or am I hurting or damaging this relationship? I think that’s a very good question that you can ask after every conversation with somebody. 

How to work with many people who have different skills, different strengths, different weaknesses? 

So my solution is that I try to understand everybody’s strengths and weaknesses and build on their strengths and compensate for their weaknesses. So basically, find somebody else who can do that part, who can do it better. Or maybe, organize the team in a way that those weaknesses don’t come up. 

And what to avoid?

So, one thing I think that is really important to avoid is a culture where people complain. In our team we have a culture where everybody is responsible for everything. And this doesn’t mean that, for example, I want an artist to be fixing code or something like that. But it means that if an artist doesn’t like something, he comes and says it and doesn’t keep it to himself. 

This is also important to understand: not every idea can be delivered, or we cannot really focus on every idea or every suggestion that anyone in the team has. Sometimes, of course, we need to prioritize. And sometimes, not all the ideas will fit with the vision of the game. So for people, it’s really important to understand that if their suggestion doesn’t get noticed by management, or if we don’t act on it, it doesn’t mean that we don’t agree. There are reasons. In that case, the person should just let it go. 

Another thing that can kill team spirit or team unity is blame culture. I think this is something that is also very important to avoid. It’s important to enable people to make mistakes and to not blame people for every little detail or every little mistake. It’s okay if people fail sometimes. But of course, I think it’s still important to look at the overall accountability and performance of your team. Pay attention if there is somebody who doesn’t fit and who is constantly making wrong results, not delivering, or underperforming.

Something else to avoid is people who are not productive. So in our team, what we do is that in the first three months – and usually we try to do it in the first month – we try to test whether the person is productive or not and make the decision whether the person continues or not within the first three months. This is what I’ve learned. For example, we had somebody who didn’t perform well in the first three months. So we gave the person another three months, another three months, and they never changed. You will either see that it works within three months or it doesn’t work. 

Another thing that I’ve learned during my process is about getting advice.

I was asking for advice on how to be a leader, how to be a CEO. Many people and much of the advice they were giving weren’t useful, not good for me or not the right fit. So I think taking advice from other people and just using them automatically is bad, bad advice. That’s something I wouldn’t do. 

And finally, what I’ve learned is that the culture in your team is what you tolerate. 

If you are, for example, unhappy about some particular trait in your team, such as people not delivering on time but yet you tolerate it, It means that you are okay with this and not doing anything against this. This becomes the culture that you will have. You will have a culture of people who don’t deliver and they are okay with this. So culture is really defined by what you tolerate. 

Some people have also asked me what kind of mental hygiene or what kind of life hacks I use to stay mentally fit and to be ready, to be productive. Every day I think about – almost every day – I think about what I would need to do, what I did well or what didn’t work. 

Every morning I have what I call a morning routine. I read through these things just to remind myself. And this list actually goes long so I don’t read it all because it’s 50 pages or something like that. So I try to focus on a few main things that will improve my life. I keep on top of this morning routine as a reminder for myself until I have improved that thing. And then I find something else. And then I go on. 

Also, here are a few tips, something specific that I wanted to share with you: don’t be too busy. That’s one of the things that probably many who know me will say that I’m very busy. But this is about a mental state. I don’t feel busy – I may seem busy, or I’m doing many things – but I don’t feel busy. And this means that you always have some time when you can just sit and think and let your thoughts go. You cannot only be solving tasks and answering emails. 

Sleeping well is also very important. And it will help you. This is the advice that everybody’s telling us, to manage your resting time and work, your work-life balance. In my case, this doesn’t mean that I work only eight hours and then I have free time.

I personally work every hour in my day, but there are days or hours where I do something else. Like, going to a party or a dinner. Or I travel. This kind of thing. So I don’t feel like I’m always working. I have days where I work from morning to night, but then I have days where I’m just traveling or doing other activities. 

I think everybody needs to understand how to manage their own work-life balance. It can really be working only eight hours per day. For some people, it can be working only six hours per day. For some people like me, it means that I can be working constantly for weeks and then I go for some travel or something. So I think it’s really about understanding your threshold and managing it.

Physical activity – doing sports in my case – that’s something that makes me happy. And when there are periods when I’m not doing some physical activity, I feel like I’m missing it. So this is something very, very useful for me. 

I try to split my work or schedule my work so that I can work in sprints or bursts so that I’m not distracted every few seconds. And this is, of course, very hard especially these days with phone notifications, your inbox, and constant incoming emails and people messaging you. 

It’s easy to say, but hard to do. But we all need to learn how to turn off all these distractions and focus on sprints. For example, it’s very useful for me to come up with new ideas during brainstorming with the team. Because when you are brainstorming, you’re focusing on the people in the group, and not on emails or messages. You’re really in your zone. Then you can come up with interesting ideas. 

Then there’s the resetting of your environment, or going to a different place. It’s something that I’ve also learned that is very, very useful. When you are constantly only in the office or in your flat, it gets kind of boring and you fall into a stereotypical mindset. What I learned is that when you are traveling, seeing different cities, sitting in different countries, experiencing different nature, it somehow triggers something different – I don’t know, context, or whatever in your brain, and you can see the same things but from completely different angles. So that is very, very useful. 

As I said at the beginning, I’m constantly trying to improve myself. My advice to you would be to ask yourself what kind of person you want to become. And then actively shape yourself to become that person. This, I think, is the best advice. So for example, if you feel that you are too lazy and you don’t want to be lazy, or let’s say you are not disciplined, that there are many things that you know you should be doing but aren’t doing, start at least thinking about what kind of person you want to be. And if you don’t want to be the lazy person, the undisciplined person, then start taking active steps to not be that person.

Look at your strengths and your weaknesses.

I think you should build your future on your strengths. Not on weaknesses, but on your strengths. So if you are good at art, I think you should invest your time in becoming a better and better artist. You should not worry if you are not good at, let’s say, sound design. 

In my understanding, weakness is something that sets me back or sits me down. So something that is hurting my strength. And that’s why I try to analyze all of my weaknesses. I call them my Achilles’ heel because it’s something that can actually kill me. If I ignore this one little thing, it will hurt me very much in the future. So I actively work on fixing them. These are the things that I work on in my morning routine. Things that I need to be reminding myself about to get rid of these bad habits. 

Here are a few examples. And these are really just some examples. I don’t want to get too personal with them. At some point, I realized that I was spending too much time on email. And this doesn’t mean that I’m just browsing through emails. There were simply too many emails coming to my inbox. I was just answering, answering and I would spend the whole day answering emails. Then I would feel like I wasn’t doing anything that I wanted to do. I just answered emails.

What I did was to set a time budget for how much time to spend on emails and how much time needed to spend on other things, things that I’d planned. Things that I actually needed to delegate. I couldn’t only be in reactive mode, reactively replying to emails. I had to be in active mode, prioritizing what I wanted to do. 

Something else that was useful for me after working on all these projects – because I worked on Space Engineers, then AI in games, and general AI and many other things – if you’re constantly switching contexts – you go for a meeting that is about Space Engineers, and then you go to a meeting that is about AI, and then to a meeting about HR stuff, or a meeting about marketing – constantly switching context in your brain is just tiring. It’s not funny, and I didn’t like it.

After some time, I came up with the strategy that Mondays and Tuesdays I would focus only on Space Engineers. On Wednesdays, I would focus on AI or AI games. Thursdays and Fridays, I would focus on general AI research. And then Saturday and Sunday, if I’m not doing some kind of fun activity, I focus on any of those things which I think is the most urgent or most important.

Another thing that I realized when I was struggling with changing my mindset from programmer to CEO was that I wanted the people on my team to behave in a certain way. And then I wondered, but why aren’t they doing it? I realized that actually, I’m not leading them by example. So even I’m not behaving, or maybe they think I’m not behaving in that way. So in some situations, I started to behave in a way that I wanted to also receive from people in the team. 

Something else that I realized some time ago with the success of Space Engineers and other projects was that I was in a situation where I thought that I didn’t want to risk too much. I didn’t want to lose it all. 

So for example, now we have teams. We are growing. We have our own office. And then you start to think that if I make this next step, I can lose it all. I don’t want to be bankrupt or have nothing again like before. So that’s something that I realized. I knew that this is a kind of mental model that can bring me down. Because if I will only play it safe and not take risks, I cannot actually achieve the things that I want to achieve, such as general AI. 

So I started to actively think about – to remind myself that it will be okay if I lose it all. Let’s say, if trying these new ideas means that I will lose my company, that’s it. That’s okay. Like, I’m totally okay with this. So this is just an example.

Another Achilles’ heel that I discovered about myself was that, at some point, when I was trying to delegate a lot of things to other people, I didn’t have time to go over the details in their  proposals. I was just approving. After some time, I realized that I’m getting things that I don’t want or that I don’t like. And I was also responsible for those things. 

So after some time, I understood that if I’m improving something, I am either improving it because I believe that the person can make the decision – but I really need to believe it –  I need to have some proof, some evidence. Or I’m approving it if I understand the details of the project. If not, then I’m just not approving it. 

At some point last year, I also realized that many times in our team, that as we were getting bigger and with people being different, someone for example, would have an idea for a new feature. And there was always somebody else who was against that idea. At some point, I realized that I was abandoning new ideas just because some people would say no, no, no, that’s not a good idea. 

So I didn’t know if I was right or not. I’d like an idea but then someone else would be saying that this is a stupid idea. After a while, I realized this and started to remind myself that no, if I believe in something and somebody else doesn’t, we can discuss it. Maybe the person is right. Or if the person still believes, then I still want to try my idea. Either it works or it doesn’t. But I wouldn’t want to abandon an idea just because somebody doesn’t believe in it. 

Something about time management. 

So I always have less time than I need and more projects than I can handle. I cannot solve this and I think nobody here feels that we have enough time to achieve everything that we want to do. So we cannot solve this, but we can prioritize. What I’m doing – and this is one of the things that I already mentioned – is the context, reducing the context switching. So that’s one very useful trick. 

Another thing that I like is to put my tasks into a list that I can prioritize. I put the most important or the most urgent things on the top, and then basically go – the things that I want to lose the least, solve them first, and only when they are solved do I move on to the things that I can afford to lose. Having all these tasks only in one list is useful. 

Because if I have them distributed in multiple lists – something is in emails, something else in the calendar or something in some other files, it gets messy. I cannot really prioritize properly because I don’t see everything at once. But if I’m putting them into one list and ordering it so that the most important thing is first, then I’m able to solve it. Once I’ve solved it, I move on to the next item. This actually reduces the mental burden that you would otherwise have. 

It also reduces the stress that is there. For example, when you finish a task and you are in a situation where you need to decide what’s next. Many times it is tempting to just do some random thing or do something that is easy to do. Or some people just start cruising, you know, Facebook, or Instagram or TikTok because they don’t want to do the next task. So in order to avoid this, I use tasks and prioritization. 

When there is a deadline for tasks, either for myself or for somebody else, and there is still some time and I don’t want to miss it, I will put it in the calendar. I make sure that the things that I need are in the calendar. I really look at them. For example, if there is a deadline for a release and I need to have something finished for the release, I will put it in the calendar with some reminder to make sure that I do not forget it. 

Last point is, start making notes on specific projects or topics or even people. So for example, if I have somebody who is not in our company, but I’m communicating with them frequently – let’s say a law firm, I’m putting my own meeting notes into a document with dates and next steps. So the next time when I’m speaking with them, I can very quickly remember the last thing that we discussed and the next steps – this really helped me. To have one place where I can find all the relevant information. And it helped me to manage all these projects at the same time and not get lost in the details and information. 

And this is the end. So thank you very much. And thanks to my teammates who survived with me through this process because it wasn’t pleasant all the time. And also, thanks to Lucia Sickova and Simon Sicko from Pixel Federation, who’ve actually helped me quite a lot when I was discussing with them many of these leadership questions. So thank you. And now we have two minutes for questions.

Thank you for the talk. How did you approach learning what the other disciplines were doing? Because you started as a programmer, I expect that you need to know what artists are doing, their process, and what other disciplines like designers are doing.

Marek Rosa
So actually, in 2010 – and before and after – when I was starting the company, I was programming and also doing art. Of course it was basic art. I was also doing PR, sound design – all these things – I think the only thing I didn’t do was music. So that’s how I got to know those things. But of course, doing some simple art, either 2D or 3D – it’s not the same thing as being an experienced artist. That’s why I speak with artists in my company and try to learn from them. I also learn from presentations or some talks, or books. So I think that if I want to be a creative director, I need to understand everything in what we are doing and have some ideas.

Hello, thank you. My question is how do you deal with the fear of losing your tech skills, hard skills, especially when you take some elite roles?

Marek Rosa
So you mean how I cope with losing my programming skills after I became a CEO? That’s actually a good angle. I didn’t think about it this way. One way to answer this is that by stopping being a programmer, what I lost was the ability to do more programming, obviously, and have more control over the code. But what I gained is that I can now actually work with many more people – we currently have 100 people in our team – so my output is much higher. I lost something but I gained something else. And now I try to present the programming when we’re designing the new engine for our game. I cannot understand every little detail but I try to understand the most important things that I need to understand. And on those things, I make sure that I’m aligned with the, let’s say, engine lead or some other programmers. 

Thank you. How do you measure your output as a leader, as a manager, because as a programmer I just finish a task and that’s my output. As a manager, I do something but I don’t know, is it a good way for a company, for a project?

Marek Rosa
So, with a programmer, I think the benefit is that the feedback loop is much shorter. You do something and you see if it works or doesn’t work. It’s very pleasant and that’s something that I miss. I was programming something for myself maybe one or two years ago. I spent a few weeks – I took a sabbatical and it really felt good to just program something and see the result. I didn’t have to count on anyone, explain things to people, try to convince them, and then come back in a week to see the result. 

But as a leader, that’s exactly what you do. The feedback loops are much longer so you don’t see the results as quickly. Now you can see, let’s say, in a few months or even a few years for some of the things. For example, cultural changes are slower and much harder to see. If you are shaping the culture in your team, it’s not something that you can see and test. It’s something that you really can just kind of feel – you can maybe ask people what they think of this situation, if they are happy or not. But it’s very hard. You cannot measure it. It’s not like the speed of your car or something like that. It’s much harder.

So, as a leader, I don’t have a specific answer for you but I’m just saying that this is the kind of struggle that is there. What helped me with switching or changing my mindset was that I learned to become ok with this. For a long time I was sitting in two chairs because I was thinking, should I be a programmer – having people in the team but still programming myself and having 100% control – or should I be a leader and not do this micro-stuff and try to lead things from a high-level perspective?

What helped me was when I understood I needed to switch and really sit only on one chair. Not on the I’m-doing-it-myself-every-little-detail, but to be on a higher-level, forming things on much more, much longer feedback loops. Having less control, but still having more people available to me. So, this helped me, when I realized that I’m not going the solo programmer way and I’m going the leader or CEO way. 

Thank you.

Marek Rosa
Ok, time is up. Thank you very much and bye bye.

Keen Software House:

Space Engineers:

Leave a comment

Join GoodAI

Are you keen on making a meaningful impact? Interested in joining the GoodAI team?

View open positions