Getting Pushed Out Through the Ceiling

Getting Pushed Out Through the Ceiling

My biggest dread would be to work at a place where I couldn’t code. I never imagined that it would happen in my own company.

When I grew up, I wanted to work with computers and I wanted to have fun doing it. To me, fun means solving interesting and challenging problems.

Creating RavenDB was an adventure of programming, encountering and slaying scores of challenges every week. It was painful. It was excruciating. It was intense. It was the hardest thing I ever had to do, oftentimes bringing me within a pinpoint of losing my mind.

But most of all it was fun.

As the years moved on, my role evolved from sole programmer, to chief programmer, to manager of the best programmers in the business, to CEO.

As CEO, I do many things, but programming is not chief among them. This was not my decision. I wanted to create a job for myself where I could code. Today, we have a good 30 developers on our team, the majority of them have been coding RavenDB for over 5 years and know her as well as I do.

Our growth as a development team reached the point where I could no longer keep track of what everyone was doing. Too many things were happening all at once. I couldn’t micromanage by supplementing everyone’s code to fit the RavenDB I originally designed. 

We got so big we needed an organizational structure, and being the CEO, I was pushed out through the ceiling. I was pushed up to managing my development team’s direction and scope rather than creating code myself.

Where Do I Go from Here?

Previously I could go and work on any feature, now I am observing what other people are doing and advising here and there. The best example is our native storage engine. About 5 years ago we created Voron, and I was one of the primary coders on this project. Today, we ran into a bug. This was the highest priority level bug we have. We got a whole bunch of people working on that.

I was not involved.

Karmel Indych, one of RavenDB finest developers, fixed the issue. I took a look and it was awesome. There was nothing for me to do but pat him on the back for a job well done. He took a piece of our database and mastered it. Earlier on this bug would typically require me to either get behind and push or solve it on my own. Today my team is big enough and mature enough to handle it themselves.

This is a credit to the guys who develop and improve RavenDB. It validates everything we are doing. It’s a great feeling because I am no longer a bottleneck, where everything has to stop, wait, and go through the Oren Eini customs both to finally pass. We have multiple lanes of developers who can service issues quickly to make RavenDB even more fluid.

The challenge for me is that while Karmel gets to do the fun stuff of finding a bug and fixing it, I am on the phone with marketing and sales talking about SERP Rankings and Banner Ads.

The challenge of succeeding at this level is to find a new level of fun.

Taking Fun to the Next Level

When you work on code alone, no matter how hard you work, there is only a certain velocity you can reach. The fun part comes when you have a team that can produce on an expert level and are all working on multiple projects. With me as the expert we had a velocity of 1. Now that I have plenty of experts, the velocity compounds. Before I could get behind and push a single big feature, and get frustrated by the routine of running the business, now I can gently direct multiple concurrent efforts and watch the overall velocity of the company soar.

Now that I know we can do so much more, I have the delight of dreaming. Things like sharding, time-series, managing petabytes of data in real-time have gone from the road map to the next right turn.

Instead of doing things on my own, I can direct, advise, and dream.

The large part of how I help is not to solve the technical issue, but to use my managerial authority to change the parameters of the issue. For example, you are working on something where you need to do X. X is really hard. I can say to a developer, “Let’s do Y. It gives us 95% of what we need. At this point, that’s enough. If we see that at some point we need more, we will do it.”

These types of decisions where we can find “good enough” solutions to problems are things only a manager can make. Developers are squeamish about turning in something that doesn’t meet the parameters set for a project. This is what I can do, make sure we meet the standard without going crazy and determining when the situation demands we have to go the extra mile, bring in an additional developer to help, advise myself, or redraw the project to find another route to X.

Solitaire as Serendipity

Alexander the Great once said, "I am not afraid of an army of lions led by a sheep; I am afraid of an army of sheep led by a lion."

That’s my ultimate goal: For my developers to come to me with their own parameters, and their own guidelines, and their own reasoning for why X is a lesser solution than Y and that the Y they came up with will do the job, only better than X. I want them to reduce me to being a rubber stamp who plays solitaire all afternoon while nodding with pride as they tell me how to better develop my . . . . their . . . . our database.

This is my fun spot. Not by coding, but by realigning how we go forward. This is how I get to go home and say to my wife, “I did something.” before she tells me to do something else, like the dishes!

Oren Eini is the CEO of RavenDB, a NoSQL Distributed Database that's Fully Transactional (ACID) both across your database and throughout your database cluster. RavenDB Cloud is the Managed Cloud Service (DBaaS) for easy use. 

No doubt you are the LION of the company 

Like
Reply
David Ben Horin

Columnist for Breathe Deeply

6y

Great article Oren! We should all become dreamers!

To view or add a comment, sign in

Others also viewed

Explore topics