Tips For Technical Startup Founders | Startup School

Diana Hu, a YC partner and former Azure Reality CTO, walks technical founders through three stages: prototype quickly to test ideas, launch an MVP fast by doing unscalable things and prioritizing iteration speed, then chase product-market fit with analytics and user interviews. She stresses bias toward action, using existing tools, and how your job shifts from coding to hiring once you hit PMF.
Chapters
Welcome everyone to how to Build and Succeed as a Technical Founder for the Startup School Talk. Quick intro. I'm Diana Hu, I'm currently a group partner at YC and previously I was a co founder and CTO for Azure Reality which was a startup building augmented reality SDK for game developers and we eventually had an exit and sold to Niantic where I was the director of engineering and heading up all of the AR platform there. So I know a few things about building something from with just an idea to then a prototype to launching an MVP which is like a bit duct tapey to then scaling it and getting to product market fit and scaling systems to millions of users. So what are we gonna cover in this talk is three stages. First is what is the role of the technical founder and who are they? Number two, how do you build in each of the different stages where all of you are in startup school? Ideating, which is just an idea, you're just getting started building an MVP once you got some validation and getting it to launch and then launch where you wanna iterate product market fit and then I'll have a small section on how the role of the technical founder evolves.
Post product market fit.
I won't cover it too much because a lot of you in startup school are mostly in this earlier stage and I'm excited to give this talk because I compiled it from many conversations and chats with many YC technical founders from Algolia segment Optimizely Wayup. So I'm excited for all of their inputs and examples in here. All right, the technical founder. Sometimes I hear non technical founders say I need somebody to build my app, so that isn't going to cut it. A technical founder is a partner in this whole journey of a startup and it requires really intense level of commitment and you aren't just a devotee. What does a technical founder do? They lead a lot of the building of the product of course, and also talking with users. And sometimes I get the question of who is the CEO or CTO for a technical founder and this is a nuanced answer. It really depends on the type of product, the industry you're in, the complete scale composition of the team to figure out who the CEO or CTO is. And I've seen technical founders be the CEO, the CTO or various other roles. And what does the role of the technical founder look like in the early stages? It looks a lot like being a lead developer. Like if you've been a lead developer at a company, you are in charge of putting the project together and building it and getting it out to the finish line. Or if you're contributing to an open source project and you're the main developer, you make all the tech choices. But there's some key differences from being a lead developer. You got to do all the tech things. Like if you're doing software, you're going to have to do the front end, the back end, DevOps, the website, the UX, even it to provision the Google accounts, anything. If you're building hardware and maybe you're just familiar with electrical and working with Eagle cad, you'll have to get familiar with the mechanical too. And you'll of course as part of doing all the tech things, you'll have to talk with users to really get those insights to iterate. And you're going to have a bias towards building a good enough versus the perfect architecture because if you worked at a big company, you might have been rewarded for the perfect architecture, but not for a startup. You're going to have bias towards action and moving quickly and actually deciding with a lot of incomplete information. You're going to get comfortable with technical debt, inefficient processes and a lot of ugly code and basically lots of chaos. And all of this is to say is the technical founder is committed to the success of your company and that means doing whatever it takes to get it to work. And it's not going to cut it. If you're an employee at a company, I sometimes hear, oh, this task or this thing is not in my pay grade. No, that's not going to cut it here. You got to do it this next session on how to build. The first stage is the ideating stage, where you just have an idea of what you want to build. And the goal here is to build a prototype as soon as possible with the singular focus to build something to show and demo to users. And it doesn't even have to work fully. In parallel, your CEO co founder will be finding a list of users in these next couple days to tapped meetings to show the prototype when it's ready.
So the principle here is to build very quickly in a matter of days. And sometimes I hear it's like oh, Diana, a day prototype. That seems impossible.
How do you do it?
And one way of doing it is building on top of a lot of.
Prototyping software and you keep it super, super simple. So for example, if you're a software company, you will build a clickable prototype.
Perhaps using something like Figma or invision.
If you're a dev tools company, you may Just have a script that you wrote in an afternoon and just launch it on the terminal. If you're a hardware company or hard tech, it is possible to build a prototype. Maybe it takes you a little bit longer, but the key here is 3D renderings to really show you the promise of what the product is. And the example I have here is a company called Remora that is helping trucks capture carbon with this attachment. And that example of that rendering was enough to get their users excited about their product, even though it's hard tech.
So I'll give you a couple examples of prototypes in the early days. This company optimizely, went through YC on winter 10 and they put this prototype literally in a couple of days. And the reason why is that they had applied with YC with a very different idea. They started with a Twitter referral widget and that idea didn't work and they quickly found out why. So they strapped together very quickly this prototype. And it was because the founders, Pete and Dan, and Dan was actually heading analytics for the Obama campaign and he recalled that he was called to optimize one of the funding pages and thought, huh, this could be a startup. So they put it very quickly together and it was the first visual editor by creating an A B test that that was just a JavaScript file that lived on S3. I literally just opened option command J if you're in Chrome and they literally run manually the AB test there and it would work. Of course nobody could use it except the founders, but it was enough to show it to marketers who were the target users to optimize sites to get the user excited. So this was built in just few days.
Other example is my startup, Azure Reality.
So since we're building more harder tech, we had to get computer vision algorithms running on phones and we got that done in a few weeks. That was a lot easier to show a demo of what AR is, as you saw on the video, than just explaining and hand waving and made selling.
And explaining so much easier.
Now what are some common mistakes on prototypes? You don't want to overbuild at this stage. I seen people have this bias and they tell me hey Diana. But users don't see it or it's not good enough. This prototype doesn't show the whole vision. This is a mistake when founder thinks you need a full MVP on the stage and not really. The other mistake is obviously not talking or listening to users. Soon enough you're going to get uncomfortable and show this prototypey duck typey thing that you just Slapped together and that's okay, you're going to get feedback. The other one at this stage as the example for optimizely, when founders get too attached to idea, when the feedback from users is somewhat obvious that it's not quite there, not something that users want, and it's not letting go of bad ideas. Okay, so now into the next section. So imagine you have this prototype, you talk to people and there's enough interest. Then you move on to the next stage of actually building an MVP that works to get it to launch. And the goal is basically build it to launch and it should be done also very quickly, ideally in a matter of can be done a few days to weeks or sometimes months, but ideally more in the weeks range for most software companies. Again, exceptions to hardware and deep tech companies. So the goal here at this stage is to build something that you will get commitment from users to use your product. And ideally what that commitment looks like is getting them to pay. And the reason why you have a prototype is while you're building this, your co founder or CEO could be talking to users and showing the prototype and even getting commitments to use it once it's ready to launch. So I'm gonna do a bit of a diversion here because sometimes founders get excited. It's like, oh, I showed this prototype, people are excited and there's so much to build. Is hiring a good idea? The first instinct is like, okay, I got this prototype, got people excited, I'm gonna hire people to help me to build it. As a first time founder, it's like, oh my God, this is a fit, people want it. Is it a good idea? It really depends. It's going to actually slow you down in terms of launching quickly because if you're hiring from a pool of people and engineers that you don't know, it takes over a month or more to find someone good. And it's hard to find people at this stage where it's very nebulous and chaotic. So it's going to make you move slowly. And the other more insidious thing is going to make you not develop some of the insights about your product, because your product will evolve. If someone else in your team is building that and not the founders, you're going to miss that key. Learning about your tech that could have a gold nugget, but it was not built by you. I mean, there's exceptions to this. I think you can hire a bit later when you have things more built out, but at this stage it's still difficult. So I'll give You an example here, Justin, TV and Twitch. It was just the four founders and three very good technical founders at the beginning. Three for the mvp. It was just the founders building software as software engineers. And the magic was Justin, Emmett and Kyle building different parts of the system. You had Kyle who become an awesome, fearless engineer tackling the hard problems of video streaming and then Emmett doing all the database work Justin with the web and that was enough to get it to launch. I mean I'll give you an exception. After they launched, they did hire good engineers. But the key thing about this, they were very good at not caring about the resume. They tried to really find the misfits engineers that Google overlooked and those turned out to be amazing. So Amon and Gillem were very comfortable and awesome engineers and they took on a lot of the video web in just three months since joining. You want people like that that can just take off and run. All right, so now going back into the principles for for building towards your MVP. Principle 1 is the classic Polgram essay on do things that don't scale. Basically find clever hacks to launch quickly in the spirit of doing things that don't scale. And the Drake posting edition of this, avoid things like automatic self onboarding because that adds a lot of engineering. Building a scalable backend, automated scripts, those sounds great at some point, but not the stage. And the hack perhaps could be manually onboarding. You're literally editing the database and adding the users or the entries and the data on the other counter to your thing is insane custom support. It's just you, the founders at the front line doing the work, doing things that don't scale. A classic sample is with Stripe. This is the site when they launch. Very simple. They had the API for developers to send payments. But on the back end the thing that did not scale, it was literally the founders processing every manual request and failing bank forms to process the payments at the beginning. And that was good enough to get.
Them to launch sooner.
Now principle number two, there's this famous Create9010 solution that was coined by Paul Buchite, who was one of the group partners here at YC and original inventor of Gmail. The first version is not going to be the final remember and it will very likely a lot of the code.
Be rewritten and that's okay.
Push off as many features to post launch. And by launching quickly, I created a 9010 solution. I don't mean creating bugs. You still want it good enough, but.
You want to restrict the product to.
Work on limited dimensions which could be like Situations, type of data you handle, functionality, type of users you support, could.
Be the type of data, the number of devices, or it could be geo. Find a way to slice the problem to simplify it. And this can be your secret superpower.
As a startup at the beginning, because.
You can move a lot quickly and large companies can't afford to do this. Or even if your startup gets big, you have like lawyers and finance teams and sales team that make you kind of just move slow. So I'll give you a couple examples here.
Doordash at the beginning, they slapped it in one afternoon and they were actually called Palo Alto Delivery. And they took PDFs from menus and.
Literally put their phone number.
That phone number there is, is actually from one of the founders. And the site is not dynamic, static.
It'S literally just plain HTML and CSS and PDF. That was their front end.
They didn't bother with building a back end. The back end, quote unquote, was literally just Google Forms and Google Docs where they coordinated all the orders. And they didn't even build anything to.
Track all the drivers or eta.
They did that with using fancy on your iPhone. Find my friends to track where each of the deliveries were.
That was enough. So this was put together literally in.
One afternoon and they were able to launch. The very genius thing they did is that because they were Stanford students, they constrained it to work only on Palo Alto. And counterintuitively, by focusing on Palo Alto and getting that right as they grew, it got them to focus and get delivery and unit economics right in the suburbs, right at the beginning so that they could scale that and get that right versus the competition, which was focusing on metro cities like GrubHub, which made them. Now you saw how the story played out. The unit economics and the ops was much harder and they didn't get it right. So funny thing about focusing at the beginning and getting those right can get you to focus and do things right that later on can serve you well. So now at this stage, how do you choose a tech stack? So one thing is to balance what makes sense for your product and your personal expertise and to ship as quickly as you can. Keep it simple. Don't just choose a cool new programming language just to learn it for your startup. Choose what you're dangerous enough and comfortable to launch quickly. Which brings me to the next principle. Choose the tech for iteration, speed. And the other thing is also, it's very Easy to build MVPs very quickly by using third party frameworks and API tools. And you don't need to do a lot of those work. For example authentication, you have things like auth0 payments, you have stripe cross platform support and rendering, you have things like react native cloud infrastructure, you have aws, GCP landing pages, you have webflow, backend, backend, serverless, you have Lambdas or Firebase or hosted database. In the past, startups would run out of money before even launching because they had to build everything from scratch and ship from metal. Don't just try to be the kind of cool engineer, just build things from scratch. No, just use all these frameworks. But I know ctos tell me, oh, it's too expensive to use this third party APIs or it's too slow, it doesn't scale to use XYZ. So what I'm going to say to this, I mean there's two sides of the story with using third party. I mean to move quickly. But it doesn't mean this. This is a great meme that Sean Wang, who's the head of developer experience that Airbyte posted. The funny thing about it is you have at the beginning quartile kind of the noob that just learned PHP or just JavaScript and just kind of use it to build the toy car series. Engineers make fun of the NOOB because oh PHP language doesn't scale or JavaScript and all these things. It's like oh PHP is not a good language, blah blah. And then the middle or average or midwit engineer is like, okay, I'm going to put my big engineer pants and do what Google would do and build something optimal and scalable and use something for the back end like Kafka, linker, Rust, Ima, Prometheus, Kubernetes, Envoy, Bigran or hundreds of microservices. Okay, that's the average technical founder. The average startup dies. So that's not a good outcome. Now the funny thing, you got the Jedi master and when you squint, their solutions look the same. Like the noob one they chose also PHP and JavaScript, but they choose it for different reasons, not because they just learned it, but they recognize this is because they can move a lot quicker. And what I'm going to emphasize here is that if you build a company and it works and you get users good enough, the tech choices don't matter as much. You can solve your way out of it. Like Facebook famously was built on PHP because Mark was very familiar with that. And of course PHP doesn't quite scale.
Or is very performant.
But if you're Facebook and you get to that scale of the number of users they got, you can solve your way out. And that's when they built a custom transpiler called Hip Hop to make PHP Compound C so that it would optimize. See, so that was just Jedi Move. And even for JavaScript there's the V8.
Engine which makes it pretty performant.
So I think it's fine. Way UP was a 2015 company at YC that helps companies hire diverse companies and is a job board for college students. So jj, the cto, although he didn't formally study computer science or engineering at UPenn, he did taught himself how to program and freelance for a couple years before he started WayApp. And JJ chose again as a Jedi Master, chose technology for iteration speed. He chose Django and Python, although a.
Lot of other peers were telling him.
To go and use Ruby on Rails. And I think in 2015 Ruby on Rails were 10 times more popular by Google Trends and that was fine.
That didn't kill the company at all.
I mean that was the right choice for them because he could move quickly and get this out of the door very quickly and kept it simple in the back end postgres, Python, Heroku and.
That worked out well for them.
Now I'm going to summarize here.
The only tech choices that matter are.
The ones tied to your customer promises.
For example, at Azure we in fact.
Rewrote and threw away a lot of the code multiple times as we scale in different stages of our tech. But the promise that we maintained to our customers was at the API level in Unity and game engines. And that's the thing that we cannot throw away. But everything else we rewrote and that's fine. All right, now we're gonna go part three. So you have the mvp. You built it and launched it. Now you launched it. So what happens in this stage? Your goal here in the launch stage is to iterate to get towards product market fit. So principle number one is to quickly iterate with hard and soft data.
Use hard data as a tech founder to make sure you have set up a dashboard with analytics that tracks your main KPI.
And again here choose technology for your analytics stack. For speed, keep it super simple, something like Google Analytics, Amplitude, Mixpanel and don't go overboard with something super complex like Logstash, Prometheus. These are great for large companies, but not at your stage, you don't have that load.
Again, use soft data but keep talking to users after you launch and marry.
These two to know why users stay.
Or churn and ask to figure out.
What new problems your users have to iterate and build.
WePay, another YC company.
When they launched they were a B2C payments product, kind of a little bit like Venmo ish. But the thing is that it never really took off, they iterated. So in terms of analytics, they saw.
Some of the features that we're launching.
Like messaging, nobody cared, nobody used.
And they found out in terms of.
A lot of the payments, their biggest user was GoFundMe. Back then they also talked to users.
They talked to GoFundMe who didn't care.
For any of this B2C UI stuff. They just cared to get the payments. And then they discovered a better opportunity.
To be an API and basically pivoted.
Into it and they got the first version. And again applying the principles that did at scale. They didn't even have technical docs and.
They worked with GoFundMe to get this version and this API version was the one that actually took off and got them to product market fit. Principle number two in this launch stage is to continuously launch. Perfect example of this is Segment who started as a very different product. They were classroom analytics. Similar story, they struggled with this first idea, didn't really work out until they launch a stripped out version of just their back end which was actually Segment. And see the impressive number of launches they did. Their very first launch was back in December 2012. That was their very first post and you saw the engagement in Hacker News very high. That was a bit of a hint of a product market fit. And they got excited and they pivoted to this and kept launching every week. They had a total of five launches in a span of a month or so. And they kept adding features and iterating. They added support for more things. When they launched it only supported Google Analytics, Mixpanel and Intercom and by listening.
To the users they added Node, PHP.
Support and WordPress and it kept on going. And it took them to be then a unicorn that eventually had an exit to Twilio for over $3 billion. Pretty impressive too. Now the last principle here, what I want to say for when you launch, there's this funny state where you have tech build, so you want to balance building versus fixing. You want to make thoughtful choices between fixing bugs or adding new features or addressing technical debt. And what I want to say, tech debt is totally fine. You got to get comfortable a little bit with that heat of your tech burning. Totally okay. You got to fear the right things and that is towards getting you product market fit. Sometimes that tiny Bug in rendering maybe is not critical for you at this point to fix. In fact, a lot of early products are very broken. You're probably very familiar with Pokemon Go. When it launched in 2016, nobody could log into the game and guess what? That did not kill the company at all. In fact, to this day Pokemon I think last year made over a billion dollars in revenue. That did not kill them. And I'll give a little background what was happening on the tech. It was very, very straightforward. They had a load balancer that was on Google cloud and they had a backend and they had a TCP termination.
And HTTP requests that were done with their NGINX to route to the different servers that were the afe, the application.
Front end to manage all the requests.
And the issue with there was that as users were connected, they didn't get terminated until they got to the nginx.
And then as a result client also had retries.
And that what happened when you had such a huge load? In fact, I think Pokemon Go by the first month after launching they had.
The same number of active as Twitter, which took them 10 years to get there.
And they got there in one month. Of course things would break.
It was basically a lot of users trying to log in was kind of creating a bit of a DDoS attack. Now to summarize a bit on when you launch some of the common mistakes after launching and I myself have made CTO doge sad. It is tempting to build and say what would Google do that's almost certainly a trap would try to build like a big company or hiring to try to move quickly. Sometimes I think this is more of a nuanced question, can be a mistake or the other thing is focusing too much on fixing, refactoring and not building features towards iterating to product market fit, not discovering insights from users. Sometimes I see CTOs like okay, we launch, I get to hunker down and.
Just get into building.
Totally no again your role as a technical founder very different. You gotta be involved in the journey and really understand the insights of why users stay or leave your products. You have to keep talking to them. And the other mistake I see is like, oh, we're just building features for the product, but you also need to build tech to grow. In fact, some of the best growth hacks were engineers paired up with sales and growth folks who are non technical.
So now the last section on how the role evolves. So assuming you got product market fit, what happens? This is this point where you can actually then put on your big engineering pants and figure out pieces of the.
Tech that need to be built to scale.
And the tech will break, which is actually a good thing breaking because of too much demand. And that's totally okay.
As my example from Pokemon Go, you'll.
Find the pieces that need to be rework refactor. This is when you do it, not before now, not before product market fit. You'll decide also what the engineering culture will look like. This is a stage where you actually.
Do more of the hiring.
And here you're probably going to evolve from leading a small team of engineers to hiring.
Your first hires are going to be people that you know. And at this point your role really.
Changes because you'll start having communication overhead.
And this is when you realize your role morphs. Between 2 to 5, you still get time to code about 7 years. When you get to 5 to 10, you only have less than 50% and beyond 10, you probably won't really have time to code and have to decide how to structure things and whether you're going to remain as architect type of role or you want to be more of the people role and be more of a VP of Edge. Now to summarize here the talk first stage ideating. The goal is to build a prototype as soon as possible and the principle is built very quickly in a matter of days.
Stage two, you're in the process of building an mvp, which I think a.
Lot of you are in this or the previous one. The goal is to build as quickly to launch in a matter of few weeks. The principles are do things that don't scale, create a 9010 solution, choose the tech for iteration, speed, and the last one is once you launch all of the previous ideas on 9010 solution, do things that don't scale still apply and add these onto it. The goal is to get an iteration towards product market fit. So you're going to also quickly iterate with hard and soft data, with analytics and user interviews. You're going to continuously launch and you're going to find the fine balance between building and fixing and where tech debt is totally fine, feel the heat for that. Tech debt is totally fine. And if there's only one takeaway from this whole talk is that startups move quickly. So thank you everyone.
More from Lorenzo

Netflix founder Reed Hastings explains why “family” is a bad metaphor for your startup

Netflix founder Reed Hastings explains why “family” is a bad metaphor for your startup

Stripe founder John Collison explains his product principle of “talking up to the user”

Stripe CEO Patrick Collison shares the tactics he used for finding product/market fit

Stripe CEO Patrick Collison shares the tactics he used for finding product/market fit

Sam Altman explains his two biggest mistakes when he started investing in startups

Naval Ravikant on Elon Musk: “The great entrepreneurs are always willing to start over”

Jeff Bezos explains Amazon’s process for expanding into new products like Kindle and AWS


