Hi developer friends—seeking advice from a developer perspective on how to mostly "fire myself" from the coding side of my profitable SaaS app by bringing on a part-time CTO. Advice on finding and supervising that person, and on how to figure out the technicalities and legalities of paying them?
Background: I am an amateur full-stack developer (on the side of being a full-time professional in another field). Over the past several years I've slowly assembled a web app that has just a couple of enterprise-level customers, each contributing a few thousand dollars to my MRR. At this point, the web app seems basically to work as intended. And it is really providing a valuable service to my customers.
The app is built using Django + Celery on the backend, and some JS/jQuery on the frontend. It is a total of about 7k–10k lines of backend code, and perhaps 3k lines of front-end code (Django templates + JS/JQuery). It's all hosted on Heroku.
The problem is, this situation entails that my customers are now actually relying on me to get this stuff right. And while I've done informal testing, the codebase is without proper (code-based) tests or virtually any of the other stuff that "proper software engineers" do. In fact, I hardly know what a "unit test" or an "integration test" is, let alone what these look like or how to write proper ones. (Also, less important, the frontend is not very aesthetically pleasing—I'm not a designer either.) So, ultimately (and necessarily given my skill level), you might call this a bit of a slap-dash codebase right now.
Oh, and, did I mention I'm busy with my day job?
I therefore have visions of bringing someone on as a "part-time CTO"—someone who knows Django and all the related relevant technologies/frameworks/tools like the back of their hand, and can improve/strengthen the codebase (adding testing, refactoring ugly code into best-practice code, etc.), add features, remove bugs, and ideally do some front-end design work too, all while keeping me abreast of the progress of the codebase enough (and maybe even teaching me a few things) such that I can keep on top of how the entire codebase works and make commits/add features myself. But I cannot pay a full-time salary to such a person (although doubtful it is truly necessary to do full-time work yet). I am also concerned about trusting a stranger with full access to the codebase—probably not because they might run off and build a competitor, but mostly because I would worry that I would hire someone who doesn't know what they're doing or who will otherwise be a waste of money and harm to the business, rather than helping it soar.
So, (1) I'm seeking advice on how to find and vet someone with the right coding skills and aptitude for such a position, and how to manage/supervise such a person once I think I might have found them.
Also, (2) do you have advice on a most appropriate pay structure for a situation like this, and how to arrange it? I know nothing about, and have no desire to deal with, either payroll or figuring out how to give up any equity in the company—but I guess I have to choose one, and in that case I certainly veer towards the cash option.
Hey man, I just thought i would give you a few things to think about.
I am a professional Dev by day and Indie hacker by night. Take my advice with a grain of Salt.
First lets get something out of the way, you need a dev who can do maintenance, refactoring, some devops work, some testing/QA, maybe even some BA stuff as well and finally some design.
You need somebody who has between 5 to 7 years of experience and should they be employed would probably make around 100k to 120K USD a year minimum with benefits.
What you are looking for is a unicorn. I am not saying you wont find one but if you did you ll have a hard time retaining them.
IMHO you have 3 options:
Option 1:
CS student or graduate with low level experience.
Pros : cheap and can work part time while looking for full time job
Cons: need a lot of hand holding and may not be able to do everything you require
Option 2:
Agency such as Toptal for example(I am not affiliated with them but heard good things)
Pros: only the best are hired by Toptal. No hand holding, can do 99% of the work you throw at them. Pay by the hour. No paperwork, no employee to manage.
Cons: very expensive
Option 3:
Find a technical co founder.
Pros: someone with a lot of experience. Can do the work.No hand holding.
Cons: loss of equity
So you see, you will have to give up something either cash or equity. Obviously in your case cash is better. However, put yourself in the shoes of an experienced dev who can do everything you require.
What is in it for them? Most likely they are making bank freelancing already or employed full time. Why would they give up their time to help you just to make a bit more money? As a Dev, i know i wouldn't unless you paid me something like 200 per hour USD.
So in my opinion you best bet is to find a technical co founder and lose 20 -30% equity, Maybe have some kind of profit sharing agreement in place.
Your app is a living, breathing thing, you cant just refactor/update it once and be done. The maintenance has to be constant so if you want somebody to stick with you for the long term, you need to put the right incentives in place.
I hope this helps you.
Option 3 is really the only choice.
You ABSOLUTELY need a technical founder if your product is even somewhat technical.
Thats what I am in my SAAS, basically technical founder, my co-founder focuses on marketing and other crap I hate. I do architecture and product. But for actual dev work I hire off shore since I hate front end work and I got a full time day job.
Thats what you need to do. 100% of 0 is 0.
Whatever it takes.
I think this is a perfect assessment. It is one of the wiser and more realistic posts I have seen on IndieHackers.
thanks for the kind words.
This does help. Thanks for the advice! How would you advise going about finding a technical co-founder? Searching on github or elsewhere (where?) for folks who seem to have the right experience based on their coding? Looking (where/how?) for people who've previously founded and exited companies with similar tech stacks successfully?
If i were you I would go to startup incubators, python meetups, or ask for recommendations from other people.
You could sponsor a hackathon or make a post on Linkedin.
its going to be hard but my last piece of advice is dont rush into it.
I dont think approaching people randomly on Github is the way to go but you could try reaching out on twitter.
Hi @Almedkj
I found this post quite interesting as I'm probably the exact kind of person you are aiming to "hire" - A full stack web developer with ~11 years of experience a lot of that with Python / Django (and Celery). At my previous job I was also the head of development so dealt with hiring and helping developers learn and improve.
With that in mind, I think @RandomSupernova78 has offered some really good food for thought. It's going to be tough to find a good match.
Instead of just reiterating their points I've instead tried to off some practical advice based on past experience.
---
Your post has quite a few bits to go into but let me start off with the questions at the bottom:
I've done a lot of hiring in the past but that was mostly using recruiters and I wouldn't advise that in your situation. They throw a lot of CV's at you, many of them not the correct fit and take a big cut if they can place someone. I've tried other job adverts including on StackOverflow but most of the replies we got from them had not even read the description.
My best advise, is to ask friends and colleagues but I'm not sure that is much help. There are also job boards (Upwork etc), forums, Reddit etc but I'm sure you have thought of all this so I'm not much help.
Again @RandomSupernova78 makes some really good points about how this is going to be difficult.
My big warning here is hiring takes a large amount of time even when you have resource and money behind you. You are going to have to work out a balance between needing someone and the risks of hiring that you mentioned.
---
This is going to be pretty tough, hiring someone "above" your skill level is always super tough. Good bullshitters can often get past your filter.
For starters ask for GitHub / BitBucket / GitLab profiles and examples of projects they have worked on. Some great developers won't be able to provide any projects as they work for a company with only private repos and they don't have time for personal projects (or they are private) but that is tough luck, you need to draw the line somewhere. Without issuing a technical test you need some kind of project you can look at to see what the code they write is like and at least a small bit of proof they can do what they say.
When checking there profile / projects, find 1 or 2 which hopefully relate to what you have (Django projects in your case) and look at a few bits:
views.py
). Can you read it and work out what it does? Is it PEP8 compliant?Another option is to ask if they have a technical blog, if they do the content of the blog can often help work out their skill.
Once you are happy with the above an interview is a must. The key here is to try and ask about things you at least know a little about so you can smell bullshit or ask someone to teach you something new to see how they explain things.
Ask about:
Remember you need to make sure you like this person. You will also want to explain what you and your SaaS does. They need to want to work for you as well.
One thing people get wrong with hiring and interviews is working out if a candidate is good enough to hire or not and if they like someone enough. Someone once said to me hiring is always a simple hard yes or hard no. If you are not sure then that is a no. Hiring the wrong person can kill a business.
---
I would honestly make this an interview question, work this one out together so you are both happy as everyone is different and wants a different amount of guidance and feedback.
Saying that a good starting point would be for you to create a backlog of some kind and go through it after teaching the new hire the product. Once that is done define a
definition of done
for each item in the backlog and monitor it through that.---
To start with I would hire the person as a consultant and have them raise an invoice for payment. Discuss with them first but do this for a day or 2. If you are both happy after those few days you can carry on.
This will probably mean you have to pay a little more for the first few days but it massively lowers your risk if they are not great. After a while longer you might want to bring up equity with them to lower / remove the rate but cross that bridge when you come to it. You will both also be able to get a more fair understanding of what they are worth to the business depending on how good they are.
This also fits in with a few of your other comments:
The only thing is you need to find someone that wants to work part time. Make this super clear when people are applying.
---
Now some other random comments
A few ideas on what to ask them to do here once they have started this:
Ask the hire to make pull requests for all changes - bugs fixes / features / tasks. You can then check out the changes and ask questions etc. The code can be merged before you look at the pull request (as you are not viewing them to approve code, only to learn) but it will give you code that you can study, learn from and ask questions about.
This is also the perfect time for code linters to run (to check styling) and automated tests as well.
Pull requests are the answer again although this time you make the pull request and ask the new hire to check your code to make sure it meets the new standard they have set.
---
As a rule developers (especially backend developers) are not always the best designers and are generally not good at UI or UX. There are load of exceptions to this rule but it's an assumption I make until I know more. Because of this, I would ask about design before you hire but I would not expect someone to the full stack skills you want and be a good designer.
I hope that helps in some way.
Thanks for this super thorough reply! Some thoughts/comments/questions:
Happy to help.
Oh, no doubt parts of your code does. In the end this is part of the reason you want to get someone else on board, as you know things are not perfect. You're a part-time coder and I'm guessing you have never had a boss who checks over your code telling you where you can improve. It's only possible to get better by coding more and getting help / tips. If it's been someone's job they will have got more experience on all fronts. Instead, this is a chance for you to learn.
Asking how to improve some code you have done is a great interview question. They can bullshit a little but you will at least find out if they can read your code and talk through why it's bad and how to improve it. Something you will want them doing quite a bit if you hire them.
Yep so PEP8 is the style guide that has some set rules for variable names, spacing, line length and more. Flake8 is a tool that you can run against your code where you will find all the different PEP8 issues. At first, this may feel pointless but honestly, everyone on a team learns to write PEP8 compliant code as they go readability really improves. There are also auto PEP8 formatters.
Then there are other things past PEP8 like idiomatic Python and other things that can be specific to your codebase. Rules you can decide to make code easier to understand as a team like how your use exceptions, decorators, DRY etc. Hiring someone who is super smart but writes really complex code isn't what you need, it will make code harder to read and learn so put some rules in place to keep code simple. For example, I normally have a rule which is "Passing functions to functions as an argument is generally a bad idea and should be a last resort". This is because it's generally harder for less experienced programmers to understand.
That is a good start. I'm not saying don't make big changes in the future or yea change that one page into a basic single page app with say AlphineJS or React when the hire is more settled. Just don't let anyone convince you that it is a good idea to move to a full React app straight away (which you seem to get). Don't get me wrong I love React, it's just a lot of work to switch and you have other things to be doing for now.
Sorry yep. I mean things like getting your code editor / IDE setup with Flake8 so it raises PEP8 warnings as you code so you can fix them on the fly. Getting the tests running and passing on your machine so you can get used to running (and writing them).
They will hopefully make changes, make sure part of the "definition of done" is making sure there is documentation on how to use the new cool stuff.
That's fine, Git branches and pull requests might seem scary but in their basic form, they are super simple and easy to use.
Yep if you are using GitHub / Bitbucket / GitLab you can give the person access to your repo but you can be the admin / owner. You will need to trust them but you can always remove their access to your GitHub repo and they will no longer be able to get the latest code, push changes etc. Although they will still have a local copy. You should have something in your contract with them about code being yours and deleting it once they no longer work for you.
As for Heroku... at first I would make sure you still control when you releases and be the tester and gatekeeper. When there is more trust then you can look at changing this of course.
I'm not saying they won't necessarily be able to help here. It is just someone with good design skills as well will be even harder to find. It's more you should probably see someone having actual design skills as a happy bonus.
I'm also talking about the actual look at feel of the app. Finding someone who can at least write HTML / CSS / Javascript is more likely than someone who can make a web page pretty and functional.
With the design stuff you can work together here even if you are both not super comfortable with design. Find widgets / components / inspiration you each like and talk about how to incorporate those ideas into your designs etc. With 2 people you can have 2 different ideas and work out which one is best. If you use this approach while focusing on making sure your site feel consistent then hopefully things will get better (although disagreements are likely)
Wow, amazing information here. Thank you.
@AvonBarksdale recently did the same and hired a part-time CTO for https://bubbabooking.com. He might have some useful tips.
The best way to figure out if they can really do the job is to define a small scope of work and pay them for that specific project. Why not try to define a set of tasks that would take you a week or so, hire someone who seems plausibly capable and see how well you work together?
You'll probably want a simple task-tracking system - GitHub issues might be fine to start, then something like Trello. Probably you'll find that you need a little time to adjust to doing work breakdowns well.
Start small and iterate, just like with your product! Pay per project at first, hire them full-time later if you are both happy. "Actual work delivered" >> CV, Interview.
Hi Almedkj, We are entrepreneurs and backend developers. I have 20 years of experience, currently a CTO, and provide fractional CTO advice. Please email me [email protected].
Since you have revenue, I would definitely opt for the cash option. Hold onto your equity.
Looking forward to hearing from you.
Thanks,
Nick
All good points here, so what is the shopify app you built? You can market it here too :)
Hah! Not a shopify app. It's a freestanding web app.
I recommend hiring a fractional CTO. I worked with these guys: www.broutonlab.com. You can try contacting them.
I think you are going to end up giving equity to someone.
If I was in your shoes, I would go looking for funding and then hire a skilled dev at market rates and lean on the VC's network for all the help I can get.
Hello, I'm a developer with 6 years of experience that is now researching how to "do" indieHacking.
Just throwing a wild idea, thinking outside the box a bit, maybe this gives you another perspective, based on how I would handled a similar situation in a professional environment.
Basically when I faced this situation in a codebase the first thought was ok, we need to refactor this.
Your codebase is small, i'm not gonna compare it to a monolith migrating to microservices, but here is the wild idea that resembles that:
What if you'd treat it as such? And just apply divide impera, instead of getting someone to dwell into it all and be a CTO, you could actually make a plan to create separate well defined components that will replace bits of your current app and outsource this effort. Or try finding someone to rebuild the functionalities for one piece of the app.
If things work out well you might propose a longer collaboration to that person and eventually involve them in the business as a developer.
It would also be easier to see if they do a good job and less risky as they won't have access to the full codebase, you just need to define some clear requirements and afterwards integrate that component into your current app. This might be hard if you have some spaghetti code (as my first app was, as a self-taught developer), but if your app will grow you will eventually have to refactor it (I actually ended up rebuilding my first app from scratch).
Again, this is just a brainstorming exercise, bouncing ideas, odds are this is quite silly for your current needs, but I don't have experience looking for someone to join my team or something so I thought I'd share this wild idea.
Good luck!
@Almedkj You can try out our CTO-as-a-Service model. Feel free to book a call with me using the below link.
https://calendly.com/nurturelabs/meetingrequest
Very interested in the responses because I'm in a similar situation (running a saas as an amateur coder). I don't have any insights, but do have some questions if you don't mind sharing:
How do you feel in general about coding? Do you enjoy it?
What makes you think you can't continue on as you have been?
What is your day job and what is preventing you from going full time on this? If your MRR is multiple $k per customer, another 1-2 customers would be quite meaningful
If you yourself went full time on it, would you still want to fire yourself from the coding part?
What's the status with your saas? What's your day job?
Thanks for sharing! So I'm in a bit of a different boat because I quit my job back in 2018 and then taught myself to code and build full-time (not with any strong intention of becoming an indie hacker, but because I'd always been curious about coding). I've been living mostly off of savings and I have a handful of apps for retail small businesses, including a couple in the Shopify app store. MRR is on track to hit $3k in the next month or so, and it's been growing more quickly in the past couple of months, mostly organically. My goal is $10k MRR by the end of this year which will take some marketing effort, but even without additional marketing I think I would land somewhere between $6-7k MRR.
I, like you, also don't know how to write a test or know how to do proper MVC or anything and am feeling mounting pressure as my apps get more and more customers - pressure less on the technical front per se, but more just on the fact that I am the entire business and if something happens it's all on me. And simply not even knowing what I don't know which is scary. I do have technical mentors / friends, but they are Rails heavy and I am using JS / Node / serverless.
One of my problems is, instead of doing marketing, I like building so I keep launching features / new apps which spreads me thinner in multiple ways. I'm also getting to a place where more and more of my time during the week is being spent on the phone or over email doing more of a pre-sales / sales / support role with customers and so I find I'm shipping less quickly. I love coding, but after 2+ years at it, there are also certain tasks where I've already done it all before (client, server request, 3rd party API, business logic, send back json, etc.), so building it is just going through the motions and a bit of a slog. And being a solo indie hacker, I hesitate to invest more heavily into learning the "proper ways" as it would slow me down in the short term - not sure if this is familiar at all to you.
So I don't necessarily need help quite yet, but probably soon will and in the coming months will also hopefully be able to afford it, and the advice in this thread is super helpful. As a side note, I'm also running low on cash and am possibly considering getting a day job to float me until MRR is closer to $10k, possibly using extra funds to outsource all coding until that point (both existing and new).
Interesting. That all sounds very familiar, though my core business is quite different from yours—not surprisingly, since there are many ways to make a buck online!
It sounds like you could definitely benefit from outsourcing, or more active prioritizing of what matters. I know some guests on the IH podcast have told @csallen that they did what was most interesting to them, and that worked just fine, but usually the path to real success lies in a more rational analysis of what actually needs to be done rather than focusing mostly on the most interesting parts of running the business.
It sounds like a day job would help with your cash problem but then possibly stunt the growth of your business. How will you find enough time even to maintain it? But I guess with a day job you can more easily pay someone? I suppose in the end it can be a tricky balancing act to figure out where to apply pressure to get the most leverage/growth for your company...
Thanks for the response - yes, I think deep I know if I'm going to turn this into an actual business then I need to eat more shit and focus on activities that are less desirable to me (for example actually learning marketing, outsourcing development). I fear slowing things down in the short term to make that first outsourced dev hire, even though I know it will ultimately create leverage if I find the right person.
Regarding cash from day job and stunting growth of business, that's my fear as well. Looking forward to hearing what you end up doing!
Add some contact information, I agree with what everyone wrote (no need to write everything all over again). I can share my experience as CEO looking for co-founder, and my experience as CTO in a video call
Added. Reach out! :)
Hey Alkedjk,
I've got 6+ years of dev experience in NYC and currently consult on the side in a tech lead/startup CTO role in addition to my full time job. What is the best way to contact you to see if I can help?
Cheers