Pairwise: A retrospective

Back in 2019 I started an online learning platform to teach people code. The project is still online today and free to use: However, the project was a failure as a business. What follows are some learnings from this project.
The Pairwise user interface.
The Pairwise user interface.

An invigorating start

Education is, broadly speaking, one of my passions. I deeply believe that technology has the potential to transform education for the better, and although it’s off to a decent start we’ve only scratched the surface of what’s possible at the intersection of software and education.
In 2019 this had been my view for some time, so when a friend and former coworker (Sean) told me about his desire to create an online, self-serve vocational school for aspiring programmers I was more than a little intrigued.

An online course to become a software engineer

The idea was fairly simple: An online coding school with two key features we hadn’t seen elsewhere before:
  • A full-stack education
  • A roadmap for learning
Put another way, our product would teach people everything they need to get into the industry—frontend, backend, git, deployments, databases, etc.
Sean and I were both self-taught, and our experience learning the ropes of software engineering taught us that the current offerings are not great for beginners.
For example, Sean was a volunteer for FreeCodeCamp (FCC), a massive online learning platform where anyone can add new content. While an extremely useful resource, FCC lacked the structure that would have helped Sean move faster.
I myself learned quite a bit from CodeAcademy back in the day, and I also found the lack of direction counter productive.
When you don’t know where to start, a nudge in the right direction can be invaluable.
Moreover, lot’s of existing resources were somewhat superficial—teaching a language but not a rich enough suit of tools to take an empty directory and turn it into a usable product.

We built for months and months on high energy, then we started to crash.

Sean and I both came from a background of ‘building’ rather than ‘selling’, so it should be no surprise we focused on the former when starting out Pairwise. We made lots of excellent progress on the product relatively quickly too. Months passed. I won’t speak for Sean at this stage, but for my part the intrinsic motivation started to wane. I didn’t want to go on building this thing for many months more without any inkling that it was helping people.
I needed to see some traction.

As two technical cofounders, we didn’t know the first thing about marketing.

We didn’t know how to acquire users, so we turned to the obvious solution: Buy some ad space, measure retention.
Our retention metric was completion of code challenges. I.e. if a user completed a code challenge two days in a row then they had retained for that time period. If a user did not return to the site and complete at least one more code challenge, then they had churned.
We had some metrics in place. I give us points for this. However, our minimal ad spend + retention metrics quickly raised another question: Why were our users churning?

We spoke to users and got generally positive feedback…

… but our retention numbers were poor. It should come as no surprise—people will say nice things when you talk to them in person. Our user feedback sessions did not yield answers, or at least none that we picked up on.
The usual test for how serious a user is about your product is—will they buy it? Unfortunately it took us quite a while to add Stripe and implement payments. Prior to this we had no way to know if a user was really serious in their positive feedback.

We also started a meetup, but didn’t follow through

In addition to our paid ads in Google, we also briefly ran a local meet up for aspiring programmers. It was essentially office hours where we would work on our product but anyone could show up and ask questions (yes, productivity on our project was very low but that wasn’t the point).
However, once we got serious about creation of our course we dropped the ball here. We stopped hosting the meet ups, stopped posting updates to our FB group, etc.


  • Either sell first, then build, or do them in parallel
    • ‘Selling’ in the sense of acquiring users
  • Intrinsic motivation can only carry you so far
    • Must be augmented with traction, money, or both.
  • Cofounder selection should not be taken lightly
    • Sean and I shared a product vision, but could not agree on user acquisition.
    • We wanted to move the company (not the product) in different directions, and we needed the other on board to succeed.
    • Cofounders with different expertise may not face these problems. I.e. if a technical cofounder and a non-technical one.
    • I’ll have more to say on this in the post on
      Uncloud: A retrospective