Software disenchantment

How's This Company Thing Going Anyway


Earlier this year I wrote an article about how I rage-quit my software engineering job to start my own company. Since then, I've written a few more articles, but I haven't really discussed how the company is going.

And it is still going. As predicted, it was, and is, a rollercoaster ride.

The Good

I get to write Clojure every day! Sometimes it hits me how lucky I am. No more JavaScript or some other Blub language. Instead I get to be warmly embraced by the parentheses.

I also get to use my brain way more often that I was before. Not as much as when I used to make games, but way more than I was at the job I left. I often come up with algorithms, write recursive programs, and have to go on walks to figure things out. Heck, I even spent a few days in OpenGL land and fiddling with matrices.

I was concerned that I was undergoing cognitive decline at work. The things that required my brain power the most were all hobby projects, and the things I was doing at work lacked intellectual depth - gluing libraries together and making CRUD apps. Just like someone who used to do sports at school and gets an inactive office job gets out of shape and struggles to do basic things physically, people who do STEM at university and get corporate jobs where they don't use their brains get less sharp mentally.

I get to make things from scratch that can become libraries in their own right, because Lisp makes it so simple. For example, I spent a day writing something that wraps a form, and validates that fields match specs, and gives custom error messages, in 80 lines of code. At my last job I've integrated React form libraries multiple times and it's always been bug-ridden, time consuming, and filled with boilerplate. There are plenty of cases like this in this project. When I learn something from a book, I get to actually apply it.

Seeing people use my product is also a really good feeling. When you work in a corporate setting you're alienated from the product of your labour. You can't really take credit for much, most of the decisions aren't yours. But when you're one of the only people working on something, you get the credit and the blame. The responsibility is the reward. You can point to something and say "I did that", for good and for bad. And especially when I see people in person using my product and being really happy with it, there's a level of pride that is hard to get otherwise. It's also a vindication of my views of how things should be done.

Many of the great parts of this journey aren't the the things I'm doing now, they're the things I don't deal with anymore, now that I am no longer shackled by the Scrum Factory. No more meetings. No Standup. No Retro. No fucking story points or grooming sessions. No slack messages. No Timesheets. No Microsoft Teams. No Jira.

I don't have to worry about making the case for why we should do something. I just think about what I need to do, write it down, and do it. I reflect again when I test with users, and repeat as needed. I do have the occasional call and design discussion, but I've only done a handful of those in a few months.

There's no babysitting, worrying about polical capital, compromising, trying to prevent people from making moronic decisions.

Finally, this bears repeating, I'm not drowning in shitty npm dependency hell.

The Bad

In software it's a meme that estimates are always wrong, and things take longer than you expect, even when you know this. I've found that there is a product corollary: it takes even longer to get a certain effect from your users than you think.

Let's say it takes you a certain amount of time to add login functionality to your app, longer than you expect because third party systems don't play nice. Then, when you put it in front of users, they don't read, they use it wrong, they struggle to login, and you have to redo the login page. When you were estimating how long it would take you to do, you considered the technical factors behind the functionality. The idea that it would take a few iterations for the users to be able to take advantage of the functionality was not part of that schedule. And it couldn't be, you can't know ahead of time whether they will get it or how many iterations it will take for them to get it.

Or they can login, they use it once, and don't return. You assumed that it would take you a certain number of weeks to build the functionality then you can charge, but now you see you need to work on retention. And you don't know how long it will take because it's not just how long it takes you to build certain things, it's how long until you get the reaction you're looking for.

I've had to redo things several times, often taking a while to even realise they were not hitting the mark.

In fact, I had to create native desktop and mobile apps way sooner than expected because of an extra step that the web version required that was proving too much for many users. And sadly, these are electron / capacitor projects - in other words there is some npm and more web stuff in my life than I wanted. It's a bit of a moral failure, one that I can hopefully remedy one day. But it's a much smaller compromise than what I was doing before.

The Ugly

Fundraising. This is by far the least pleasant part of this startup stuff.

When I first started working on my startup full time, I mostly focused on the product itself. I did a few fundraising efforts here and there. As a result, I made little progress in that area. Eventually I realised my runway was running out and I needed to take fundraising more seriously. So I switched to focusing entirely on fundraising. Instead of coding in the morning I was sending out applications. And instead of eating in the evening I was going to networking events. That was painful, but fortunately I had an employee moving the product forward, for some of the time.

All of a sudden the things I mentioned under "the good" were replaced by something far less pleasant, though at least necessary - unlike what I was doing before.

I dislike many things about fundraising, and they all ultimately stem from the fact that fundraising is about making gatekeepers happy.

Just like having a boss or a client, there is some person between you and the user, and they don't get it, they are not rational, but you have to do things to please them.

A life filled with that is a wasted life, where you don't do anything useful. Work spent here feels meaningless. Knowledge of fake things that are just there to please gatekeepers offends me - it's like I'm creating a mental clone inside my brain of people I find irrational - and they are irrational - instead of filling my brain with real knowledge.

But anyway, like with job applications, chances of success go up when you can actually talk to a human being rather than sending out faceless applications. And there's two ways of doing that: sending out a shit ton of applications and a few of them turn into calls, or get introduced to the right people in person - aka networking.

I did actually manage to raise money by someone I met in person, but that was lucky. This was at an event for people that would be interested in my product, and he happened to be an angel investor who thought my product was interesting. This is not a very scalable approach, and if I wanted to hire and have good runway I'd need to do more networking. But networking sucks.

The idea behind networking is that you want a thing, and you don't have that thing at home, so you try to hang out with people who have that thing in the hopes that they give it to you (presumably in exchange for something else). E.g you want a job, you go to hackathons and conferences to talk to people that are hiring. In this case, I want funding, I look for people who fund startups in exchange for equity.

Here's the problem. When you go somewhere to network, most people there are networking too. You want the food, but instead of finding food you find other people that want the food.

In most of these events there's no badge that distinguishes between investor and founder. You have to talk to a bunch of people and figure it out. You would think "just talk to old guys in suits", but most of the time they're founders. Fucking catfishers! There are some young people that work at VC firms, although they aren't high up enough to make decisions. Most people who turn out to be angel investors are unassuming middle aged people that you would walk past without noticing. Talking to a bunch of people, finding a way to politely extricate yourself when you see that they aren't what you're looking for, inserting yourself into a conversation, talking about yourself and what you do, well, for an introverted and probably autistic maker of technology, I'd rather build a fusion reactor than navigate that social maze.

This problem is compounded by UK culture. The UK in general is unimaginative, conservative, slow, beaurocratic, and unambitious, when compared to the US. This is devestating for startups, and explains why nothing Great comes out of Britain.

One extra month to come to a decision is the different between life and death for a startup. Expecting founders to sign things in triplicate well ahead of time is a great way to ensure startups can't succeed.

In certain parts of the US, if you tell people you're starting a company, what they have in mind is Google. In the UK, the thing they aspire to be is a "small business". As such, a lot of the narrative around their events and resources is framed around debt financing and "maybe you don't need finance" and "let's look at alternative ways" and "come back when you have revenue".

Despite this, London is responsible for a significant chunk of startup investment, just a lot smaller than San-Francisco. If you're not in the US, it's one of the best places to be, but you do have to be careful to make sure you're in the right rooms, lest you find yourself filling out forms to compete for £5k, which is pretty much nothing if you want time to make progress and also hire people.

I grew up without much money, and then came into some more money, and one thing about not having money is that you end up with "broke mind". When every bit counts, you develop habits and ideas around money that are designed to stop you being worse off, but don't actually help you get ahead in the long term. Time is worth much less than money in this mentality. People that keep this mental framing, even when they have more money, end up wasting their time on things that yield very little money, rather than spending a little and making a lot more. I'm not saying that poor people are poor because they "think poor", but that being poor requires thinking a certain way to survive, and that if you maintain this way of thinking you won't do much more than survive even if you aren't poor anymore.

High net worth individuals, and investors, think very differently about money, and you have to understand how they think if you want to interface with them, otherwise you end up selling a high fraction of your equity for pennies.

When I first started fundraising, I was looking for £100,000 for 12% equity, which is a lot of money to me. What I found was that many people wouldn't even talk to me when I ask for numbers that low. So I increased my ask to £150,000, for the same amount of equity, and got a lot more replies. Then again to £200,000. Also for the same equity, and same result. And then then to £250,000, but for 15% equity. To them a startup that is offering £100,000 for 12% is like a store that's selling shoes for £4, there must be something wrong with it.

And there's a practical reason - if that money runs out, there's less equity to sell to future investors, and it'll run out faster, so the startup is doubly more likely to fail. Shark tank is just a show, in reality if an investor negotiates a smaller amount for 50% equity, they are going to end up with 50% of nothing. The founder won't be able to raise more from anyone else, and even if they could they would have no incentive because they end up with very little equity in the event of an exit. If you're an investor and you let the founder keep most of the equity and give them good runway, they are incentivised to make the startup succeed because if they sell the startup they can make a lot of money.

Compared to these people, pretty much everyone has broke-mind, and you need to break out of that and ask for a quarter of a million with a straight face. The way to do that is to understand these people. And avoid the broke-mind events in the UK scene.

The problem is that it's not easy to tell at first blush which event is which. When I first started I filled my calendar with useless events. They describe themselves as for entrepeneurs, and that investors are there, but when you go no one is a founder, basically everyone is employed and a couple of people are even looking for jobs, there are a couple of people looking for clients, and the "investors" are regular people who are buying stocks and bonds and stuff. People are warm and friendly, they're hanging out, but you wasted an evening where you could have been working or resting.

The other hurdle with fundraising is the terminology - especially when it comes to sectors. When I've been applying to funding on different websites, one of the questions would ask what sector my company is. With options such as technology, SAAS, consumer, media, entertainment, etc. And as someone mostly focused on my product, technical stuff, and my customer, where my company fits with other companies and the fundraising landscape is not something I'm aware of or pay attention to. But if you're not attuned to how companies are grouped here, you'll find yourself trying to sell kebabs to vegetarians.

The vast majority of people I talked to are only interested in B2B SAAS or fintech, and the next main category was deeptech or impact or female founders (and from what I've heard, they mostly only back female founders if they're in femtech or wellness, not if a female founder wants to make the next Netflix). It's a B2B circlejerk - ultimately all money that goes into B2B comes from consumers at some point, but investors don't care about that. Even YCombinator, which is supposedly more enlightened than everyone else, primarily invests in B2B, even though over 90% of their returns are from a handful of B2C companies - Reddit, Dropbox, Airbnb.

So many people try to sell you things. From other startups "we can help you get on the cloud", to lawyers "here are a hundred legal traps you can fall into, hire us to protect you from that", to the most pernicious "your pitch deck sucks, hire us to make it better and send it to our network".

Not quite as ugly as fundraising, but a consequence of the reason I'm fundraising in the first place, is the cloud hanging over my future. The inability to make plans, the uncertainty.

Reflections On My last article

In my other article, I described how I've changed as a result of this company. I talked about a few traits, such as an emphasis on speed, increased risk tolerance, and decisiveness.

The stuff I said about speed is mostly accurate. The only caveat I would add is that I used to view speed as how quickly I got through my todo list, and what would happen is that something I thought was done, and technically was, did not have the desired effect with the user. They couldn't follow along, so I would have to redo it, but I didn't do that as early as I should have because in my mind it was done, and there were other things in my todo list. Now speed is about the feedback loop between myself and my users.

As for risk tolerance, the jury is still out on whether taking this risk was a good idea. I have spent most of my savings on this startup. And because I haven't been gargling the AI juice, I probably don't have very good job prospects. That being said, I am on team risk now. I would rather have a chance of getting what I want, than certain misery. I spent a few months paying for a friend to help me with this project, even though that reduced my runway and increased the risk. It was absolutely worth it, it made my product a lot better and she was able to do things I couldn't. Trying to be conservative in that case would have been a mistake.

As for decisiveness, I mostly still agree with my past self. One decision that I wish I undid sooner was sticking with React Native. React Native was giving very poor performance for my particular product, because there was a lot of calculation on the frontend that couldn't be Just-In-Time compiled. And the web version was always ahead and it was this never-ending game of catch-up to get it ready to release. Eventually I relented and let my employee use Capacitor instead, despite my doubts, and that ended up being much better. If we went that way months before I would be much further ahead now. But I only know that with hindsight. If I changed my mind for decisions easier, I wouldn't be able to make as many of them. I think a good default is to stick to decisions unless confronted with good evidence, even if the occasional bad decision makes it through.

Some More Reflections

Direct Communication

I'm not supposed to say a lot of what I want to say. Socially, we're taught to be indirect. The problem is, what I'm supposed to say doesn't come naturally to me. It's a difficult mental translation process, figuring out how to wrap what I want to say with how I'm supposed to say it, that I often don't end up saying anything. The first draft is too blunt, the second draft is too bubbly to come out of my mouth, and the third draft is too much effort.

If you want something from someone, you can't just ask for it. You have to ask how they are first. Add some emojis, reply to their response, and then naturally weave in what you actually want.

This initially made it difficult for me to ask someone to work for me, to tell her what to do, to ask for funding, and to ask to partner with people and have a stall and all of that stuff.

I've made some headway in just asking for the thing I want, apologising less, and being direct. I'm still not comfortable doing this, but it has been quite useful, and I think it's probably a good life skill too.

In fact, I think I will require this from my employees, because being on the other side of indirect communication is annoying. I hate getting Slack messages that just say "hi" or "how are you doing", and I have to do this ridiculous social handshake to find out what they want. It's so refreshing when someone sends a message saying "Hi, do you know how X works".

Clear Communication

This started off as a solo project. I would think about what I need to do, then write these little todo lists and work my way through. Each task was terse, but I would know what I meant, they were really like flashcards for myself.

Later I hired someone else to work on it, and these terse task descriptions started to make problems. She would interpret what I wrote differently, and make the wrong thing. Or she would be too uncertain to proceed.

Writing something for someone else to reliably interpret without context is not easy, but it's worth doing. That said, there were also times when I underspecified what to do, and she made something that wasn't exactly what I was thinking, and it was actually better than what I had in mind. It addressed the core problem the task was trying to solve.

If I overspecify, I run the risk of only exactly the things I thought of being developed, and miss out on the opportunity to do even better. But, if I underspecify, I run the risk of the wrong things getting done. The trick is to specify the key invariants I want met, and leave enough leeway for things where I am less certain about how to do things, areas that are just suggestions.

Sales

I'm not a salesman. I don't like salesmen. I don't want to be a salesman.

I think this is the right attitude. I've had a lot of recent practice talking about my product to users. Pretty much all of my users signed up through word of mouth, either because they talked to me in person or they told each other. It's not a massive amount, only 200, but it's also pretty good for just talking to people in person once a month.

I don't think of what I'm doing as sales. They see the product, ask me about it, and I explain what it does, whilst trying to understand where they're coming from and what their habits are.

At first I was bad at this. I spent so long working on my product and thinking about it that it's hard to disentagle and explain it simply to someone who isn't steeped in it. But over time I got better at explaining it simply, figuring out how much someone knows and adjusting accordingly, and finding good metaphors to make people get it.

I would also watch them use the product, see what issues they have, and work on that for next time, looking at how much they use the product after.

Now I'm very confident that I can explain to any prospective user what my product does, and why it could be useful for them. I also have come up with marketing material that I really should make better use of in my app.

And the best part for me is that I'm not a pushy salesman, this is me answering people after they ask me questions, because my product is intriguing enough that they ask about it.

If I approached it from a sales mindset, I'd be so focused on "closing", that I wouldn't care about the users, and that would make me worse at this.

I went through something similar with pitching my startup. It was a whole new learning curve, because investors have far less context about the domain than prospective users, and they are interested in very different things, such as market size, traction, and growth strategies.

The process was similar though, after the first couple of times, I got better at giving answers people can understand, concisely. I found a good set of metaphors, and I thought deeply enough about the various questions that I wouldn't need to look up answers. I learnt how to use props and be more direct.

I don't like other founders

Most founders are full of shit.

I'm quite technical, and I can tell when people are making stuff up. Often when someone describes their product, I can tell how it's implemented. And if I can't, unless it's made by someone highly technical or in an area I know little about, it's because they're bullshitting. Virtually every founder I've met is orders of magnitude less technical than I am.

A good chef can taste something for the first time and make a pretty good guess as to how the dish was made. A musician can listen to a song and tell the chords and instruments. People involved in making things are able to appreciate things in that area more deeply than "mere recipients". A bodybuilder can tell when someone is making up feats to brag to people.

I can usually find out very quickly how technical someone is. I talk to them, ask a few questions, and talk about what I'm doing. If the conversation flows, they guess how I do certain things, I guess how they do certain things and they go into more detail, they're technical. If they give me a blank look, and have no idea how things work, they aren't. I'm not as bamboozable as the general public when it comes to these things. When a product says it uses AI and machine learning to match blah blah blah, my spidey sense tells me they don't have a large enough dataset or enough data from the user interactions to do anything useful there, and if I'm talking to someone in person and I mention things like "feature engineering" and "f1 score", I often find they have no idea what they're doing.

I know more about some technical areas than others. And in some I'm pretty much in the dark. But usually I can build a mental model of how something works very quickly.

Not every founder fails that test, but many of them do.

Unfortunately, there are other ways to be full of shit, and founders use all of them. Depending on what a product is for, I may not be able to tell if it's bullshit, because my experience is largely in programming and most products are for other domains.

If a founder says accountants spend 30% of their time dealing with issue X, I can't tell if it's bullshit or true. But if they mention something programming adjacent, or something where I have experience or insight into, I can tell whether the problem is real or not, and whether their solution is useful. And so many founders fail that test.

Here's the problem. Investors can't tell. They don't have the technical know-how to recognise when someone is pitching a perpetual motion machine, and they don't have the domain expertise to see when someone is selling a solution to a problem that doesn't exist. To their credit, many investors prefer to invest in sectors that they have worked in, although that does come with it's own problems and there is still quite a lot of investment in charlatans.

Even worse, many customers pay for things that aren't useful. How is that possible? For the same reason that people eat at McDonalds voluntarily. People aren't rational, even when they know better. And in this case they often don't know better. The customers don't have the technical expertise to spot smoke and mirrors. And, if the product is B2B, the people responsible for purchasing decisions are almost never the people with the problem who would use the product.

This manifests itself in two ways. Suppose a B2B product is made for programmers and it's actually useful, but you have to understand programming to see why it's useful. The people who sign off on purchasing decisions don't understand programming and therefore just see the product as a cost and don't buy it. Suppose another product is not useful, and you have to understand programming to see why it's not useful, but it promises to write code 10x faster, or replace the need for SQL with drag and drop widgets, the people who make purchasing decisions get this dumb greedy look in their eye and spend money on something that makes things worse.

This is responsible for so much inefficiency around the world, and dishonest founders deserve a lot of blame here. They take a lot of money that is supposed to be deployed towards useful ends and blow it, and leave less money for the honest useful founders.

I'm not talking about people who have different takes on how things are going to play out. I'm talking about straight up bullshitters. Many of the founders I've met are complete bullshitters. Of those that aren't, there are some that I like, but I dislike most of them.

Most founders are mercenaries. They don't really care about what they're doing. They don't care about the techology, they just use whatever. They don't care about their product. They have no principles. They're instrumentalists. They want to make something but have no idea what. They ask "how do I come up with ideas?". They make things for other people for the sake of it, and then change their mind a bunch of times.

There was a recent story circling its way through LinkedIn of this AI meeting notes startup, where they said that it was just the founders joining meetings and taking notes and pretending to be AI. And most people treated them as an example of what a startup founder should do. Look how scrappy they are! This is how you validate your idea before wasting time building it! The idea that lying to your customers is bad, or that you can know your idea is good because you're using it yourself, is completely foreign to them.

This is an issue because it makes it harder to network. Why go somewhere to see people I probably don't like? Networking with founders is a useful thing, because I can learn from them, save time, and be introduced to investors or other useful people.

Strategy

A lot of programming is tactical. How do I make this thing work. Occasionally you join a game jam using your game engine, and realise that you are missing some essential things needed to make a game, such as a good level editor, and you approach that more strategically.

But when you are designing a product, not as a role, but to make it succeed as a company, you have to be strategic. You can't just reactively fix bugs, you have to project to what you want, and work backwards from there, intentionally leaving out some details.

In chess a lot of people, myself included, play tactically. They start with their position, go through a list of candidate moves, and then calculate a sequence of moves and see if they end up with more, less, or equal material to their opponents.

Playing strategically is different. You mentally subtract some pieces from the board for both sides, without thinking about how you accomplish these trades, and think about who is preferred. You see that if you trade your rooks, you have a bishop and they have a knight, but there is play in both sides of the board so the bishop can move ariybd easily and the knight is kind of useless, so you figure out how you'll make those trades happen. Or you see that you have equal material, but your opponent has 4 vs two pawns on the Queenside, supported by their rook so they will be able to make a Queen, and you have to make sure that trade does not happen.

The product version is similar. Instead of just fixing bugs or "oh let's add this", I look for medium term goals. £100M ARR is for daydreams and investors, what I do over the next few weeks has nothing to do with that. I have a reasonable medium term goal like "make a few thousand every month", and work backwards from there. I need X many people to pay Y, every month. To get there I need retention, and to get there I need habit building. If I implement these features I can make users build a habit, so that afterwards I can charge and they will be likely to pay.

For this to work, you have to be good enough at tactics to know which details you don't need to think about yet for your strategy. You can't have a step that's the equivalent of "first we find a way to travel faster than light, and then...". It has to be more like "first we use public transport to get from A to B, and then we..."

This is something I've learnt from both spherical cow physics, and debugging. When I have a complex multi-step program, where an earlier step performs some calculation and a latter step uses it, and I'm not sure if I am doing the first calculation correctly, I hardcode the result after caculating it manually, and see if that that fixes the issue. If it does, then I focus on the initial calculation, if it doesn't, then I focus on the part that uses the calculation, then go back and actually fix the calculation. For example, I was recently dealing with an issue where notifications weren't sending at the right time, and that could be because I'm getting the timezone wrong, or storing it incorrectly, or converting it incorrectly, or not passing it properly when calculating the timestamp to send the notification. I hardcoded it to UTC near the final step and tested with that before revisiting the earlier steps.

Without a grounding in tactics, strategy is fantasy. Without strategy, tactics are blind.

Strategy also helps you stay focused, when there are hundreds of things you could be doing, and when people are chiming in with different suggestions all over the place.

Food, Exercise, Sleep, and Life and Stuff

I knew when I made this decision that there would be sacrifices. I'd be forgoing a life of leisure and self-care in pursuit of something very demanding and risky.

In another essay I'll talk about the work life balance debate. Here I just want to say that there are some life things that are pretty impactful on work, and those are important.

Food and sleep are the two most clear things when it comes to ability to do good work. Bad sleep, you wake up late, you're groggy, you get less done. Doing mentally demanding work is exhausting, and there comes a point where I just can't think anymore, and start getting headaches if I skip too many meals. Different foods have different impacts on mental energy and alertness.

Food is also a very useful way of dealing with two other problems that can get in the way of work: stress and monotony.

You have a lot to do in very little time. That's stressful. But you also don't have weekends, that's monotonous. And food is such an easy way to deal with both of these things. A good meal is a cheap way to relax that doesn't take too much time or effort or money. And spending a little more time treating yourself every now and then can stop your days from blending in too much.

The fact is, if you're building a consumer application, your customers are out there living life. And you won't understand them if you never do that. If you don't have hobbies and use apps yourself - e.g DuoLingo, chess.com, Strava. Chess.com has been a great source on inspiration for me, but only because I used it a lot. I'm also trying to study DuoLingo from a distance.

That's All Folks!

I would hear about how second time founders are more likely to succeed because they've learnt from their mistakes, and would think I could short-circuit that and learn from their mistakes. But I get it now. My mistakes bother me, but I am doing well with my first startup. My first investor came through, and I now have £25,000 to work with. It's not enough by itself, but I can at least hire for a short period, keep working, and raise more money.

I will take a break from patting myself on the back and go to sleep, so I can get back to work tomorrow.

Back to home