If you want to build a software company, as a non-technical person, you come to a fork in the road very early in your journey to building a software company: how are you going to actually build the product?
Each path has pros and cons, and heralded success stories on both sides.
Here’s my situation, and I am going about it.
I do not know how to code. I have taken a General Assembly course on front end development, and I can hack together enough plug ins and HTML/CSS to get a basic wordpress site up, but once it moves to anything more than that, I can’t do much.
What I do have going for me is a willingness to learn, hands-on experience and a front row seat watching a non-technical solo founder launch and grow a very successful SaaS app (Jungle Scout), and a bit of savings to invest in the product development.
At the outset, my options were pretty straight forward:
Learn to code and build it myself – While I just stated that I have a willingness to learn, the truth is that I don’t have the willingness to learn how to code enough to build this MVP. My rationale is that my time would be more well-spent on higher leverage things, like customer development, marketing, sales, and seeing if this idea actually has traction. Moreover, how far could I really get with coding it myself? While I would love to have that skill set in my repertoire, I don’t think that I will. I guess it comes down to the philosophical question, focus on improving your strengths or your weaknesses? I am going to need other people on the team at some point if this thing is going to succeed, which brings me to my next option….
Find a technical co-founder – This is my top option, and still is. But it is such a critical decision with potentially huge implications down the road, that it’s not something that I am rushing in to. I attended a few conferences for bootstrapped entrepreneurs (MicroConf and The Dynamite Circle Austin) with vague hopes of finding a full stack python developer who has ambitions aligned with mine and a life situation that would allow for starting to build a seed of an idea. A tall order for sure, and despite asking around and keeping a keen eye open to any possibilities, nothing came about.
My plan here was not to jump in completely, but methodically move towards establishing a mutual fit–start with a few month paid contract or whatever, so that both parties would be fairly compensated. If that proved mutually agreeable, then proceed to talks of equity and partnership yada yada.
One method that I thought was pretty clever was to search on IndieHackers, an online community for bootstrapped entrepreneurs, and search for various phrases like Python, Django, Co-founder, etc. I had one promising connection, but alas, it fell through. But onwards…..
There are also various meet ups and sites for finding co-founders, but I have avoided put out an open call for finding a technical co-founder. One reason is that I prefer to be patient and take a sniper approach, rather than the catch-all approach. Plus, in reality there is no reason for a talented and accomplished developer to jump in to a project that is just a few crude wireframes and an elevator pitch. Which brings me to the last option, that I did go with….
Find a contractor – I don’t think that this is necessarily the best option, but I have seen it done successfully, and I think that if managed and approached in the right manner, it can work. But to state the obvious, bringing on a contractor who I’ve never met can be a crap shoot.
So here was my criteria:
Do It Right The First Time – Because I am paying someone to help me build the product that I envision, I’d really prefer to invest the time and money the first time around to get the technical build out done right the first time. I have heard of numerous accounts of working with junior engineers who hack together something that had to be completely scrapped within months. I’d like to be thoughtful about it the first time and get it right. Measure twice, cut once. I love that phrase.
Pay A Premium For Peace Of Mind – Part of the challenge of being non-technical is not having a discerning eye to call bullshit when it’s, well, bullshit. Give me a marketing interview, and I can understand the nuances of jargon vs. actual skill, but with any developer I’m out of my depth the second we stop talking about the weather. With sites like Upwork, there is no vetting outside of reviews of the developers, and even still, those have a varying degree of reliability. At my previous company, we had worked with a developer from TopTal and that worked out great. While there is a premium to work with the TopTal talent (I think it may be 20% or so), I think that it’s a worthwhile investment for short-term engagements where quality of work is important. And that’s certainly what I am aiming for with the MVP of Retainable!
Ruthlessly Prioritize – The simplest way to manage the scope of work, and the resulting costs, was to be very stingy with the features that I’d want to build in v1. Does having a Password Reset functionality actually add value to the customer experience? Do customers need the ability to edit their credit card information in app? Yeah, those things would be nice, but not mission-critical at this point. Keeping the mindset of minimalist Marie Kondo in mind, I trimmed back and pruned my MVP to just the bare bones. If it won’t bring joy to the user, then cut it!
The Process With Finding The Developer
There are a few companies that market themselves as having the best stable of freelance talent in the world. TopTal claims that only 3% of those developers (and other skill sets now like design, finance, product, etc) make it through.
Here’s the basic gist:
- top tier talent from around the world, matched with you based on your specific needs.
- developers will cost from $60-$90 per hour. The range is mainly based on their location and cost of living, not the seniority or skill set.
- no long term contracts necessary, wrap up a project or engagement whenever you want
- get paired with your “talent” (as they are called by TopTal) within 48 hours.
There were two companies that I contacted to find developers: TopTal and Codementor. I have heard a lot about TopTal (maybe it’s also their prevalent advertising as well that has infiltrated my mind), and I came across Codementor on various Google searches.
I reached out to both companies, and had initial conversations with an account rep from both companies (scheduled day of). They were both similar–high level conversations to understand the scope of the project, my goals, where I am at, and what would be an ideal fit (in developer skill set, location, cost, etc).
At this point, I had some detailed wireframes (to be covered in another post) and a good idea of what I was looking for: a full stack Python developer, who could do a javascript front end, and ideally with some data science and machine learning background. After speaking with a number of smart developer friends whom I trust, that was the general tech stack that I was told to look for. So I looked for it 😉
I was set up with 4 interviews, 2 from each company. I thought that that was a good number, as I didn’t have to suffer from the paradox of choice and not know which one would be the best fit. After all, wasn’t that the point of working with a company that vetted the talent for technical skill?
A Nice Bonus To Using TopTal
One thing that helped with the decision and social validation of TopTal is an affiliate link from Andrew Warner and Mixergy that offers a free 80 hours for any commitment of 80 hours (only for first time users). I assume that at most I’ll have something done in 2 months, at 40 hours per week. So that 80 hours is essentially a 25% discount on the MVP build out, a significant help in the development costs! Thanks for the link Andrew, and the actionable interviews!
The Interview Process
The nice thing about doing a video interview is that you can have your interview notes and questions lined up on your screen as you speak with them.
Because I had interviews set up nearly back to back, I wanted to have a uniform list of questions to ask, so that it’d be an easier comparison between the candidates.
I spoke with my friend who is a great developer on what questions to ask, and how to accurately assess know-how from BS.
Here are some of the things that we came up with:
- Infrastructure: The technical infrastructure is one of the first things, and most critical, that this developer would be tackling. Things like the framework (would we use Django or Flask, or some other Python framework), database, front end framework, and more. There is no “right” answer per se, but the thoughtfulness and rationale can highlight how thoroughly they will address these things in the future.
- Some of the questions to tease out their thoughts on the infrastructure:
- what is infrastructure to support pulling in teh data and stripe integration?
- what are most challenging aspects of the architecture and why?
- what type of database do you want to use with this?
- what type of tooling for alerting, monitoring, adn scaling?
- how would you select different DB’s and why?
- what are key drivers to making that decision?
- how do you pick the right database and architecture? what are you basing it on?
- how do you know if the data pipeline is working or if it breaks?
- Data Science:
- Finding a developer who is also a data scientist is a tall order. And not something that I expected. However, I was looking for someone who was familiar with building web apps that incorporated data science elements, which Retainable will have.
- Some of the questions that I had to get their thoughts and experiences on working with big data sets:
- How would you handle working with big data sets?
- What type of data science tooling would you leverage to build the MVP (ie AWS machine learning models)?
- Ie AWS machine learning models that do the heavy lifting for me
- What do you estimate the server costs to be? How can we best manage those costs?
- Can you tell me about a project you did that implemented elements of data science?
- Do you currently work with any data scientists or have any contacts that you like working with? My goal with this was that ideally they’d have a contact that they could bounce ideas off of, and potentially in the future bring on for some contract work.
- Product/Design experience: I have no experience in product or design, so this is something that I’d have to rely on the developer for. There is no expectation that the MVP would be beautifully designed, but I did hope that the wireframes would be sufficent guidance for what the design should be, and then rely on existing libraries and themes for the actual design.
- How do you approach the design aspect of the development project? My goal here is to verify that they’d be ok with the simple wireframes instead of high fidelity mock ups.
- What is your experience doing the design of web apps?
- Empathy/Integrity: This is a bit of a fluffy one maybe, but the goal is to understand whether they would intrinsically care about the project. So I suppose empathy for me (oh poor old me), but empathy for the customer and developing a product that addresses a customer pain point. I value integrity in this partner, as the work would be completely remote, I would not be tallying hours, but I would definitely be paying handsomely for hours worked. I think that beyond the skill set of being able to address the technical challenges, that this is hugely important to future success.
- One other quality related to this is the scrappy mentality–will they be willing to figure things out when unforeseen challenges arise? And will they be able to find the most cost-effective solution to it? Essentially, I’d love for the person to have the same MVP mentality that I have, of getting things done in an efficient yet complete way.
The Progress So Far (1.5 weeks in…)
The early progress and indications in working with a TopTal developer have been good. And for the price, that meets expectations.
When time is literally money, there is an urgency and importance to get things right the first time. I’m really trying to avoid any unnecessary back and forth communication or extra work and features that can be avoided. I will cover some of the management and communication process in more detail in the future, but some of the things that I am focusing on to start:
- Daily communication and accountability
- Clear communication and clear expectations are something that I focused on from the beginning. How often did he want to have meetings? How often was I hoping to speak with him? How long, and what would the context of the meetings be?
- We fortunately we are on the same page, and agreed on brief daily calls to discuss what was accomplished. Every day
- Weekly Sprints – To keep the scope of the project manageable, and break things down, we’ve taken the project in its entirety, and broken it down to weekly sprints. How much can reasonable get done in a week?
- Stories and features broken down to 3 hour increments at most – A lot can actually be accomplished in a week, which is a double edged sword. It just leaves more margin for error to go in the wrong direction if communciation channels aren’t tight. So we have taken our week and basically broken things down to tasks that are at most 3 hours. These bite-sized tasks are helpful for me to know how time and resources are being spent, and helpful for the developer to prioritize and focus.
- Project Management in Trello – A free project management tool, there are pre-made templates that provide a good framework for product and project management. The link is here.
- Daily pushes to Github and staging – This is where the rubber meets the road. There’s not much that I can do to assess quality or output by looking at the code repository in GitHub, but I can have a critical eye of the product on the staging server. And this is why he does daily pushes to staging, so that the daily progress is evident.
- Minimize communication outside of the above – I’ve seen the studies of how developers need to get in flow. And how disruptive it is, taking like 20 minutes to get back in a flow state. I think that this depends on the person, however I do know from first hand experience that a constant stream of slack pings can be highly distracting. I don’t want to be the cause of that, so I may drop a comment or two in Trello, but otherwise jot down any points and communicate them in our daily call.
- Don’t Ask For An Hourly Log – Initially I was tempted to ask for an hour-by-hour recap of how the 8 hours was spent over the course of the day. That is one feature of Upwork that is nice, seeing actual screenshots of work periodically. However, I opted not to do this, for several reasons:
- 1. It doesn’t incentivize the right behavior – Even though it is a temporary contractor relationship between me and the developer, I want to foster a feeling of partnership as much as possible. Micromanagement and counting minutes undermines that.
- 2. It’s not scalable – For me, I don’t think that I’d continue to monitor and ask for hourly updates. So why start something that I know that I won’t continue.
- 3. It’s not necessary (assuming I do other project management tasks listed above properly)
So that’s how things stand with the developer, and the project so far.
And I just received an invoice, which is a sobering reminder of the opportunity cost and financial investment in this project. Onwards!
Recent Comments