Konrad Niemiec
Appearances
Code Story
S9 E31: Konrad Niemiec, Lekko
We were just really focused on, oh, what is the best parts of these solutions that we can take and put together into a product most easily and deliver it to customers? But what we didn't have a great understanding about was what problems are we solving? Are we solving the problem of getting untested code out to production and being able to roll that back quickly?
Code Story
S9 E31: Konrad Niemiec, Lekko
So I think this is actually one of the mistakes we made where we were a little too worried about scalability at first. I think we were trying to get something out there that we thought was going to be the best system possible from day one, which I think frankly is pretty much almost never going to happen. Like you're going to have to iterate, you're going to have to put a first version out there.
Code Story
S9 E31: Konrad Niemiec, Lekko
So I think initially we focused a little too much on scalability and I think that may have slowed us down a little bit in the long run. You never really expect everything. You can't anticipate everything once you get out there and launch. So I do think that there are things we've learned that we didn't quite anticipate for in terms of certain aspects of scale.
Code Story
S9 E31: Konrad Niemiec, Lekko
But I think in general, an engineer has to, especially an engineer who has worked at a big tech company, who has been taught to build for scale. I think you actually need to fight that if you're at an early stage startup and try to say, we don't actually need to make this super rounded because users might not even want that. Or this might not even be what we end up building on in the future.
Code Story
S9 E31: Konrad Niemiec, Lekko
We might rewrite this in a few months anyways. So I think fighting that has actually been a priority of mine and something that we're trying to push with the team.
Code Story
S9 E31: Konrad Niemiec, Lekko
So I'm most proud of the fact that I think we're approaching this problem, which I think has been solved in a very similar way. If you look out across the ecosystem, I think in a fairly novel way, and I'm very excited about that. And I'm hoping that listeners of this podcast will get a chance to look at our website and try out our free forever tier that's launching this week.
Code Story
S9 E31: Konrad Niemiec, Lekko
and we can see that instead of having an external source of truth and some system which is difficult to debug we've really met engineers where they are and given them a novel editing experience and interaction experience with a dynamic configuration or a feature flagging tool and that's what i'm really proud of is i think we've found something that our initial users are really excited about and even i think similar ideas popping up in surrounding spaces which i'm really excited about
Code Story
S9 E31: Konrad Niemiec, Lekko
So I think one of the biggest mistakes we made from our first MVP to the second was we weren't really focused on what problems we're solving through our tool. Everyone on the team had seen dynamic configuration tools work really well internally at big tech companies.
Code Story
S9 E31: Konrad Niemiec, Lekko
And we were just really focused on, oh, what is the best parts of these solutions that we can take and put together into a product most easily and deliver it to customers? But what we didn't have a great understanding about was what problems are we solving? Are we solving the problem of getting untested code out to production and being able to roll that back quickly?
Code Story
S9 E31: Konrad Niemiec, Lekko
Are we solving the problem of a product manager or a customer success person or a sales person or an ops person making a change to software safely? Like what problems are we actually solving with this tool and who needs this the most? And who is that initial user base? That was our biggest mistake was we were really focused on the solution instead of the problems that we were solving.
Code Story
S9 E31: Konrad Niemiec, Lekko
I think frankly, the feature flagging space solves a ton of different problems and even just listing them out takes a while. But once we made that shift, I think that was when we were really focused on our second version of the product.
Code Story
S9 E31: Konrad Niemiec, Lekko
We focused on simplicity and easy to debug and great developer experience, which we were focused on the whole time, but really through the lens of simplicity, because one thing we realized is we built a product that was a great solution, but it was actually very complicated and hard to get started. I think that was our biggest mistake with the first MVP.
Code Story
S9 E31: Konrad Niemiec, Lekko
An approach in general, I think, which led to a very complicated product that was tough to onboard to and tough to use. So we're really excited to hopefully have people see that it's very straightforward to get started with Leko and they can feel that benefit right away.
Code Story
S9 E31: Konrad Niemiec, Lekko
The future, maybe in the medium term, I'm super excited about. After we launch our free forever tier, we're looking forward to launching our team plan later this year. And with that, we're going to take a bunch of our learnings from some of our early guide customers and really help businesses organize the configuration of their product at a high level.
Code Story
S9 E31: Konrad Niemiec, Lekko
So right now with this launch, we're focused on the developer tool and obviously handing off control of software to other teammates across the business. But how can we actually use this to define the high level configuration of our product? What are the allowable configurations? Is it having these five features and a limit of 10,000 reads a month? Is that the team plan?
Code Story
S9 E31: Konrad Niemiec, Lekko
And then the enterprise plan has a scalable one. You can basically use Lecko to define that at a high level. And what that lets you do is it lets teams understand avoid untested code slipping to customers. You can really scope down what you can test and integration test. And we think it'll really have benefits across the business all the way to kind of retention and revenue and things like that.
Code Story
S9 E31: Konrad Niemiec, Lekko
And we're also going to be launching more AI features that we're working on currently, which I think will help engineers interact with the tool and help folks outside of the engineering organization as well, who will be able to understand, hey, when I'm making a change, what is the estimated impact of my change? What is this actually going to do in my code? Can I preview that?
Code Story
S9 E31: Konrad Niemiec, Lekko
Can I easily reproduce that? Can I capture this intent of what I'm trying to do, what change I'm trying to make? So we're really excited about both the high-level product configuration that we're launching, as well as more AI features that are going to come soon.
Code Story
S9 E31: Konrad Niemiec, Lekko
So I have a few folks that I was thinking of, one of which is one of my mentors, Peter Edge. He's the founder of a company called Buff, and he's been a mentor of mine for many years. Initially, when we met at Uber before he left to start Buff, and I really look up to him in terms of
Code Story
S9 E31: Konrad Niemiec, Lekko
taking a tool that he's very excited about and very passionate about and has delivered value internally and being able to deliver that in the market and really find a place where developers are excited about it, teams are excited about it, but also able to build a community around this open source project that he's done a great job with Buff. I really look up to him.
Code Story
S9 E31: Konrad Niemiec, Lekko
My founder coach, John Zimmerman, is a great influence on me. And I think the introduction to the conscious leadership framework and the way that he approaches things, you know, not trying to approach every situation from fear and wanting to be right, but actually from growth and curiosity, which are fantastic. two of my biggest values, I think has been a huge influence on me.
Code Story
S9 E31: Konrad Niemiec, Lekko
And then also somebody like Tom Chen, who originally wrote this tooling at Uber, and I think has been a great help for me over the last few years as an angel investor in our company, but also a mentor to me.
Code Story
S9 E31: Konrad Niemiec, Lekko
really focus on your user and their problems. If you fall in love with the problem that you're trying to solve and really know it in and out, then you will obviously be more likely to solve that for your user, but you'll also be able to approach everything with a clear lens because you're just trying to help. And I think for a lot of technical founders like myself,
Code Story
S9 E31: Konrad Niemiec, Lekko
like resisting that urge to build, resisting that urge to build for scale and instead just truly understand that problem. I think that is the biggest advice I would give to that young entrepreneur. And I think I would give to myself to really just focus on that problem and make sure that you're approaching everything with just trying to solve that problem for your current or future customers.
Code Story
S9 E31: Konrad Niemiec, Lekko
Are we solving the problem of a product manager or a customer success person or a sales person or an ops person making a change to software safely? Like what problems are we actually solving with this tool and who needs this the most? And who is that initial user base? My name is Konrad Niemietz. I'm the founder and CEO of Lecko.
Code Story
S9 E31: Konrad Niemiec, Lekko
So Leko is a different take on the problems that feature flagging tools are trying to solve. And we're basing a lot of what we're doing on some implementations at big tech companies. Those systems are called dynamic configuration systems. And we're hoping to apply that to let engineers and teams that build software build their features in a way that gets out to customers as fast as possible.
Code Story
S9 E31: Konrad Niemiec, Lekko
without the complexity and the risk these downsides that traditional feature flagging tools do and frankly let engineers ship features in an imperfect world where things are changing all the time deadlines are shifting requirements are shifting you don't have the right test data you don't have the right integration tests we really hope that engineers can ship these features as correctly and safely but also as quickly as possible
Code Story
S9 E31: Konrad Niemiec, Lekko
So I was at Uber for a few years working on the self-driving team. We were trying to figure out how do we connect self-driving cars to Uber's network. And that was really exciting. But after a few years, I learned a lot and I wanted to be less of a cog in the machine and really make some impact. So I joined a small startup called Sisu. There, I was the 18th engineer.
Code Story
S9 E31: Konrad Niemiec, Lekko
And when I arrived, I was super surprised at how little of what I had at Uber was actually available to me as a regular software engineer. At Uber, I could click a button and things would just deploy. I didn't have to learn about Kubernetes or anything like that. But the one big thing that really jumped out to me was around feature flagging tooling, around dynamic configuration tooling.
Code Story
S9 E31: Konrad Niemiec, Lekko
At Uber, we had the system called Flipper. Engineers used this tooling to feature flag, but we used it for pretty much anything we needed to get out there because we needed things to be really safe at Uber. But we also wanted to hand off the definition of Uber the product to individual operations teams in each city. Uber scaled to, at this point, over 10,000 cities.
Code Story
S9 E31: Konrad Niemiec, Lekko
And if you think about it, if Uber needs to be slightly different in all those different cities, there's no way engineers can field all the different change requests. Oh, I need to change the surge zones. I need to change the pricing.
Code Story
S9 E31: Konrad Niemiec, Lekko
This tooling was a way to let other folks in the business who are making decisions around how the product looks, around what the business needs, and actually apply that directly to the software. And I think that's where Flipper really shined. When I came to Sisu, we had nothing like it at first. And we had these really terrible deploys that took a long time.
Code Story
S9 E31: Konrad Niemiec, Lekko
We were fielding requests from products left and right. And so we introduced a feature flagging tool, one of the leading ones on the market. And after implementing it, I realized that it both didn't solve all the problems I wanted it to, but also came with its own problems. After six months or so, a team of 20 engineers had over 100 flags. We had no clue what any of them did.
Code Story
S9 E31: Konrad Niemiec, Lekko
And the reality was we were just trying to move fast. And in doing our job, we ended up creating a very risky situation. We ended up taking down the system for some of our biggest customers. And we also had our teammates across the aisle in product and customer success and solutions architects also causing issues, which is not something we really wanted to.
Code Story
S9 E31: Konrad Niemiec, Lekko
So I was looking back at the tooling at Uber and I was thinking, why don't I have something like that? Like, why don't I have a dynamic configuration system like we had at Uber? And it turns out also is at Google and Facebook and DoorDash and a few of these other really large tech companies with a lot of engineering resources. So that was the kernel of the idea for Leko.
Code Story
S9 E31: Konrad Niemiec, Lekko
And that's how I got started. A little over two years ago, decided to venture out on my own at the time and try to solve this problem.
Code Story
S9 E31: Konrad Niemiec, Lekko
So we actually built two MVPs. So the thing we're launching right now, our free forever plan is actually the second iteration of their product. So first I'll talk about the first one. It took us around maybe six to nine months to build the initial iteration of the product. And we hosted most of the things on AWS. We used GitHub, of course.
Code Story
S9 E31: Konrad Niemiec, Lekko
And we were focused on a bunch of different problems and trying to figure out which frameworks should we focus on, which languages should people use. We first started with Go because that's what we were doing locally. But then we also wanted some front-end SDKs because we had a full-stack app. So we were really trying to figure out the breadth of things.
Code Story
S9 E31: Konrad Niemiec, Lekko
We ended up writing a component in Rust that helps users deploy things in their own infrastructure if they want some additional backup, which users can use now. And it took us around six to nine months for that first iteration of the product.
Code Story
S9 E31: Konrad Niemiec, Lekko
Yeah, so at first we were really trying to figure out, hey, how do we build a really scalable and usable system? Trying to unlock what is a good developer experience and what is something that appears simple, appears very intuitive, but is also obviously very difficult to build yourself and contains a lot of complexity under the hood was I think the biggest thing that we were struggling with.
Code Story
S9 E31: Konrad Niemiec, Lekko
How do you make something that checks all the boxes, has the features that a user expects, especially since we're coming in adjacent to an existing space?
Code Story
S9 E31: Konrad Niemiec, Lekko
Feature flagging tools and experimentation tools out there exist, so we needed to figure out which one of those existing requirements to pull into our current system, but then really focusing on how do we make this system simple and really easy to use for engineers.
Code Story
S9 E31: Konrad Niemiec, Lekko
I think the thing we were trying to do is how can we figure out the minimum thing that we can get users to use and to actually solve problems with. And I think that is the toughest piece, especially coming from large tech companies to a small organization. I was coming from Uber. We have one of the tech leads of Configurator, Facebook's dynamic configuration system on the team.
Code Story
S9 E31: Konrad Niemiec, Lekko
We have an angel investor, Tom, who was the creator of Flipper at Uber. And if you take a big tech mindset of a roadmap, you're just thinking about lists of requirements and what you might like in the system.
Code Story
S9 E31: Konrad Niemiec, Lekko
But really how we thought about it was what is the minimum thing that is going to solve the problems for our users and trying to be as ruthless as possible when it comes to the prioritization. Christina Noren, who's our product advisor, famously says there's no such thing as roadmaps.
Code Story
S9 E31: Konrad Niemiec, Lekko
So I won't exactly use that as my answer to your question, but I do think that we need to be just constantly reprioritizing and trying to figure out what problems are we solving? How can we get the simplest thing into users' hands as possible? And then once you have users...
Code Story
S9 E31: Konrad Niemiec, Lekko
then you can triage okay are we actually solving those problems and what are they telling us they need what problems are is that solving are those feature requests solving and then trying to prioritize there so at this point we have a forward-looking idea of a roadmap where we have a vision of the company we really think leko
Code Story
S9 E31: Konrad Niemiec, Lekko
It's going to change the way people build software and it's going to be much more dynamic and much safer. And it's going to be integrated across the business, taking into account the business needs and defining the product at a high level. But that there's some medium level of a roadmap that I think doesn't really exist for us right now, just because we're constantly reprioritizing.
Code Story
S9 E31: Konrad Niemiec, Lekko
You need to really want it. It's not just about technology.
Code Story
S9 E31: Konrad Niemiec, Lekko
Getting people who had actually experienced this and have both either felt the problems of missing this kind of tool or folks who have built this kind of thing and solved these problems internally at big tech companies was great. Like relevant experience, I think was important, but that's not the entire team.
Code Story
S9 E31: Konrad Niemiec, Lekko
So I think the two things that I really focus on, especially when interviewing and looking for team members is motivation is the first piece. You can tell by talking to somebody and asking them what they're proud about, how they're motivated. And if someone is motivated by really solving problems and building something that's really helpful for people, that's a huge part of what I look for.
Code Story
S9 E31: Konrad Niemiec, Lekko
And then the second thing is something that I think is not usually looked at a ton in early stage startups, but how people work interpersonally, like how they interact with each other. And when it comes to Interviewing, that's obviously tough.
Code Story
S9 E31: Konrad Niemiec, Lekko
One thing we do is we've instituted a trial system, which you've heard, I think, Linear and a few other smaller startups also institute this, where someone comes in for a week or a few days and tries to ship a feature and you can really get a sense of how they are to work with. But even when you ask about past conflicts, you can tell, does somebody have some nuance?
Code Story
S9 E31: Konrad Niemiec, Lekko
Are they trying to consider other people's opinions or do they have a very black and white opinion of things and they bucket you into either right or wrong? Unfortunately, you see that a lot with software engineers. Sometimes we try to reduce humans into a program.
Code Story
S9 E31: Konrad Niemiec, Lekko
And so trying to find folks who are really thinking about what effect do I have on the other people on the team, I think is very important for me as a leader and to cultivate that kind of culture on the team.