Discover more from Dom's Blog
Learning to code
My non-traditional journey learning to code.
My journey can be broken into three parts:
Business school and discovering “no-code”
Business school & no-code
While at Harvard Business School, I joined a winter program called Startup Bootcamp. I joined two friends as a team of three and we brainstormed some ideas. We started with a fintech idea, but after our research proved it was a bad idea, and with little time left, we decided to just have fun and do a travel recommendations app. Yes, a travel app… the most classic of classic business school startup ideas.
As a sidenote, I don’t think programs like this work. It is basically “playing startup” with your classmates. The only way to learn how to start a company, is to start a company and fail a lot along the way.
After settling on our idea, we needed to test it. The problem? None of us knew how to build anything. This is an issue with business school: lots of ideas with none of the skills to bring them to fruition. I was familiar with Balsamiq and InVision, so I figured there must be something one-step above that could build functional prototypes. I started poking around the internet and I found this tool called Glide - turn a Google Sheet into an app. Perfect!
This is right at the beginning of the whole the “no-code” movement. While Squarespace and others have been around, Glide was one of the first app-focused no-code tools. Now there are many no-code tools for any type of web or mobile app.
We quickly sourced recommendations from friends and built a working prototype of the app, called Recs. Glide made it easy to make a beautiful, professional-looking app. I was blown away… and addicted. This was the first thing I personally built, that people used, and it felt great. Our idea didn’t go much further than the short program, but I went on to build more projects with these “no-code” tools (see here).
With each of these projects my skillset advanced. Going from a pure static website, to a website + CMS, to an app with user profiles and a database. But, as I advanced, I also started to hit the limits of these tools. Most no-code tools are not extensible, so the limits are hard limits. This was frustrating. For each project, I had a vision in my mind’s eye, only to hit a hard limit and be forced to compromise. I’m stubborn, I don’t like compromise. When I have a vision, I want to create it exactly as I see it.
At the time, I was also starting the process of looking for an internship between my two years at business school. After talking to a few startups, I wasn’t particularly excited or inspired. I was feeling a bit lost. As I thought about what to do, I remembered a framework I had learned recently: the four kinds of luck (from a podcast, not my expensive business school 😜). Specifically, type four: luck from your unique character. In short, by being the best at something, luck finds you.
This opened the aperture for my thoughts on the summer. The summer between each year at business school is most commonly used for internships, but in reality it is 12 weeks where you can do whatever you want. This is where I had the idea of a coding bootcamp. Not that I was going to be the best developer, but by combining software engineering with my existing skillset, I become a much more unique, skilled individual. Also, aside from all the theoretical stuff, what was going to have a bigger impact on my life and career? 8-12 weeks as an intern at a startup or learning to code? When framed like this, it was an easy answer.
I joined General Assembly’s 12 week full-time software engineering bootcamp. It was the only bootcamp that fit perfectly into my summer. I started on the Monday after classes ended and the bootcamp completed on the Friday before classes started. Because I worried about not having work experience during this time, I also did part-time work for a startup (another no/low-code tool called WayScript). It was a lot, but I learned an immense amount in a relatively short period of time.
While I learned a ton, I completed the bootcamp with mixed feelings. Was that the best use of my time? Had I actually learned these skills to a meaningful degree? It was only 12 weeks afterall and I certainly didn’t feel like a solid programmer. I brushed those feelings aside. Only time would tell.
Nearing the end of business school, I was planning to join a startup and continue my career. Then ole COVID reared its head, which put a halt to most startup hiring. There was much uncertainty and the best strategy for companies was to extend their runway (i.e. not hire and increase burn). Instead, I joined Rock Summer Fellows, a HBS program where they give you a stipend to start a company. I helped my friend build her idea, Stir Fry, using both no-code tools and some custom code. In parallel, I started building AppCity - a marketplace for business software/apps.
Speaking to my lack of confidence as a developer, I actually built the first version of AppCity in Webflow, leveraging their custom code module to extend the capabilities of the tool. But, after hitting many limits and creating a frakenstein of a prototype, I hit a fork in the road. The current “stack” simply wasn’t going to work. There were too many compromises to fit within the limits of Webflow and I wouldn’t be able to bring my vision to life. Should I quit and get a job? Or should I start over and code the project from scratch? I chose the latter.
This is where I learned the difference between knowing how to code and knowing how to build a product from scratch. They are two separate, complementary skillsets. To build a product, you need to make key decisions on the technologies you use and the trade-offs. You need to learn how to combine various frameworks and tools to create something of value. I leveraged YouTube to learn the best stack for my use case (this video in particular - thanks Harry!). I picked NextJS (version of React) because of its SEO capabilities, which were particularly import for the space. I already knew SQL, so I picked Supabase (SQL-based backend as a service) for the database. Since I was using NextJS, Vercel was the obvious choice for hosting.
I also learned about Tailwind and UI kits. Styling apps is tough and CSS is confusing. Most projects from my bootcamp looked very Web 1.0. I wondered how the hell companies created such great looking websites? The answer: CSS frameworks and UI kits. Tailwind and the Tailwind UI Kit were game-changers for me. With these, I was able to style and build a great looking website.
I feel very lucky these tools were available. At the time, most were new and they all offer amazing DX. With my skillset at the time, I couldn’t have done it without these tools.
For the next several months I hacked away at AppCity, leveraging YouTube, StackOverflow, and Google to improve. I had to teach myself React again - we only spent two weeks on it during my bootcamp and I had forgotten most of it.
Bootcamps are great to learn the basics, but to truly learn and take your skills to the next level, it’s best to build something. Having an end goal is helpful motivation to keep learning.
Finally I launched AppCity.com and since, it has slowly grown to 1,000 monthly active users. More importantly, I now feel confident as a developer and product builder. I can easily see the progression when I look at components I built at the beginning versus now. Also, I’m proud of how AppCity turned out - it’s very close to the vision I had in my head.
An ongoing journey
I have no idea how AppCity will go, but at a minimum it has helped me progress as a product builder. I’ve found that focusing on the gain, rather than the gap, has helped me enjoy the journey through many ups and downs. I still have a lot to learn, but I’ve found a path I’m happy pursuing.