By Andrew Denta
I like being productive. How can I waste zero time delivering valuable software to my customers? How can I get an extra 2-3 cycles of customer feedback before my competitors get a v1 out the door? I’m Andrew, a software engineer at Criya. At Criya we are helping creators monetize their skills. If you are trying to sell a physical product online, you use Shopify. If you are trying to sell something less tangible, like interior design or photography services, use Criya!
I met CEO Deb Dutta in the early days when she was getting Criya off the ground. I was impressed how she had hacked together a v0 on Wordpress over several months. She wanted to launch an ambitious new version in the first 30 days of 2022. We went live with the first customer January 10th, have been growing like crazy, and are excited to continue building 🚀🚀🚀.
Here are my thoughts on what to prioritize in the early days of building a software product from scratch. Some of this is intuitive. Some of this is probably the crazy ramblings of a twenty six year old who is in wayyy over his head.
Testing your code makes it easy to build reliable software quickly. I’m always amazed how controversial this can be among software engineers. Tests don’t slow down development, they speed it up. Tests answer the question, “When I deploy this code, is my app going to break?” Without tests, teams ship a lot more bugs, and end up needing to troubleshoot after customers complain something is broken.
https://lh6.googleusercontent.com/hrh578c5tERm3yGmNEm8F1-6HbZVTSqHB4OLN-Ph3T6jj_JrzcdF2Zzoi6-4hHZyYLAuvA_qVdKmxsbltJVJMi9wjTBnaYHcDMy6O_6Da4sM2hDj63wh2D6ZlMbGlRmPQuaynumi
I’m also mostly talking about big, slow, heavy integration tests. I just checked, and we have 97 total tests in the Criya codebase so far. These tests make up what I like to call the inverse testing period. 74 end to end integration tests. 14 service/controller/third party tests. 9 honest, unit tests.
You just get more bang for your buck when you write integration tests. You can write a single integration test that tests multiple parts of a process, instead of spending time unit testing each part of the process. I do most of my work in ruby on rails, so my tools of choice are rspec, capybara & cuprite. I’ve heard good things about the YC startup Reflect, and the open source product Cypress.
When something is hard, don’t roll up your sleeves and start coding. Ask yourself, “who can I pay to do this for me?”. The two biggest problems that come to mind are authentication and search.
For authentication, I use Clerk.dev. I use their built-in libraries, so adding auth to my app is as easy as mounting a <SignIn/>
component in React, and storing a clerk_id
in postgres. Passwords never touch our servers. When we eventually get around to supporting logging in with Google or Instagram, it’ll be as easy as flipping a switch in Clerk!. The team is also incredibly responsive in their discord.
Building a simple ‘Index’ page, where you are just listing records from a database is pretty straightforward. Building out a robust faceted search page that can sort, rank, & filter with a search bar, now that takes time. I like using instantsearch to build search pages. I back instantsearch with typesense. Typesense is an indexed search database like Algolia, but it doesn’t cost a bazillion dollars. For the scale we are at, a search stack this mature is a bit overkill. I wish someone smarter than me would write some sort of ruby gem to connect instantsearch directly to postgres so all my data could live in one place, but until that happens, typesense def solves a problem.
We host on https://render.com. I like it! It’s basically a better & more affordable heroku. But by far the best part of Render is John. John is a customer success guy at Render who really knows his stuff. Like we were getting a weird issue, where things would be a bit unstable around deployments, and John was like, “Does it manifest like this? https://www.youtube.com/watch?v=eoZ-mSzEx5M”. As a customer this was the best! He knew exactly what was going on, and how to fix it. Anytime I have a question about Render, I’m going straight to John.
If you are bored, want to not be bored, and think building for the creator economy is interesting, come work with us! We are hosting some virtual open houses this week, check out the dates & times here. Come with your cameras and mics off for a live Q&A session, deep dive of our stack, and opportunity to learn more about our business and culture at Criya.