Launch HN: GitStart (YC S19) – Remote junior devs working on production PRs
235 points| hzia | 2 years ago
We recruit devs who want to grow from remote countries, to work full-time on these tickets and review each other’s PRs. For tech teams it’s pay as you go, and they only pay if they merge the PRs (we pay our devs a base regardless). GitStart is very personal to me because I struggled myself to start my career as a junior dev. Being born in Pakistan made it super hard to find my first remote job. Things changed with Google Summer of Code, which was the first time I got paid to contribute to a large production codebase.
When I became a staff engineer, I started mentoring junior devs on their solo projects. I then realized what they really needed was production code experience, so I started sending them tickets from my backlog to grow them through code reviews. I also paid them for it. They learned a lot and I got a lot done, which started GitStart.
That’s why, in the description above, we say “devs who want to grow”. This is key to what we do—we are not just a body shop or middleman, and we don’t charge by the hour. We provide useful mentorship to junior devs. We want to be a meaningful part of their career path.
Our thesis (to use that slightly pretentious word) is that the economics work better this way as well. There is a lot of junior dev talent in these countries whose potential will bever be realized by hourly piecework. What’s needed are longer term relationships and work engagements, over the course of which a junior dev can learn and grow on a large production codebase. Much of this has to do with learning the culture of effective tech teams.
On the other side, effective tech teams don’t want hourly piecework either. Clients tell us they love having developers dedicated to their project, becoming more familiar with the code over time. This is the way for value to be maximized on both sides.
A number of commercial open source repos already use us, so you can check out some of the PRs created by GitStart here:
Cal.com: https://github.com/calcom/cal.com/pulls?q=is%3Apr+author%3Ag...
SourceGraph: https://github.com/sourcegraph/sourcegraph/pulls?q=is%3Apr+a...
StoryBooks: https://github.com/storybookjs/storybook/pulls?q=is%3Apr+aut...
Strapi: https://github.com/strapi/strapi/pulls?q=is%3Aclosed+is%3Apr...
Supabase: https://github.com/supabase/supabase/pulls?q=is%3Apr+author%...
Twenty: https://github.com/twentyhq/twenty/pulls?q=is%3Apr+author%3A...
Our main technical challenge has been securing code sharing. One solution was building GitSlice, which enables creating sub-repos that sync with the upstream repo. When GitStart devs create PRs on the platform, GitSlice syncs them upstream while pulling back CI/CD checks and review comments. This enables our devs to contribute with limited codebase access.
To prevent slices from breaking, we verify they run within a docker container, which also enables us to build review environments. Fun fact: we managed to support native iOS and Android codebases by building and running them on appetize.io instead of docker.
There have been countless attempts at this space so we would love to hear your feedback on how we approached this problem or your past experiences working with junior devs in this way. We look forward to a good conversation!
[+] [-] thecodrr|2 years ago|reply
I talked to them about this and they said they'd work on it etc. etc. Not sure if anything has changed in that regard or not.
[0] https://github.com/streetwriters/notesnook
[1] https://developercertificate.org/
[+] [-] abstractcontrol|2 years ago|reply
I'd really like an avenue to get into the US market as a remote worker, but am being unfairly treated by this job market. It is a pity as I am both a highly skilled programmer and have nearly a decade of experience. I'd consider this service if it could serve to showcase my skills, but if I am not going to get any credit for doing the work personally, there doesn't seem to be much point to it.
[+] [-] thaumasiotes|2 years ago|reply
I read the certificate. It isn't long:
Where does this require that the submitter not be an organization? Even if you're fully committed to that idea, the obvious approach would appear to be:(1) GitStart releases their patch under the open source license of the project's choice.
(2) An employee of GitStart submits it, in their official capacity, to the project, asserting under clause (b) that the contribution is based on (consists entirely of) previous work that is covered under an appropriate license.
[+] [-] hzia|2 years ago|reply
The problem lies in the definition that “committer most NOT be an organization” which would require us to do a full review of our legal contract with devs so that this condition is upheld properly
[+] [-] Kiro|2 years ago|reply
[+] [-] dirtybirdnj|2 years ago|reply
At a lot of jobs I've dealt with using contractors, there was an internal concern that people external "didn't care" enough. How do you plan on addressing this concern?
It's a system that will depend a lot on trust, and it may be difficult to build that with companies whos DNA does not lend them to trust outsiders AT ALL let alone let them come in and muck with production level code (letting juniors do it!)
I'm playing devils advocate, like I said I think your idea is cool and worth exploring. Not enough companies invest in juniors to grow them into their full potential, and I commend you for this effort. Good luck.
[+] [-] hzia|2 years ago|reply
That’s correct. Either you are a full time employee, or you get second-class culture even if you are part of internal slack. It’s very hard to get external contractors to be excited when they dont get the swag / on-sites and share the culture.
Which is why we want to have devs belong first class citizens in the GitStart Community, and join all hands / game nights and learn from others. And our integrations push through PRs and all the updates to engineering teams.
[+] [-] wallmountedtv|2 years ago|reply
While GitStart pays their developers, that alone could encourage better habits, I fear it could also enable this chasing reward mentality harder, setting the juniors up for failure, as well as frustrating the customer with having to deny and review multiple low-quailty PRs.
How is this avoided? This seems heavily at risk to cause more headache than help.
[+] [-] bradly|2 years ago|reply
From my experience hiring, both full-time employees and contractors can not care; it felt more about the individual's character than their employment status.
[+] [-] charlesTwenty|2 years ago|reply
1) Code quality is good, I would compare it to a very good junior engineer (I suspect some senior engineers are reviewing the code before shipping it!). We are reviewing all PRs and it usually takes 1 or 2 round of feedbacks before merge.
2) Gitstart developers are very reactive on pull-requests, their response time is not a bottleneck
3) You will need to be very accurate about your features. I think Gitstart direclty makes sense for open-source projects as this is part of the culture to discuss everything on issues, to share resources (figmas, specs, technical vision). If your company already has a culture of documenting most of the knowledge async, this should be a good fit.
[+] [-] hzia|2 years ago|reply
You are spot on that GitStart works really well for teams that have a culture or a strong intention of doing that
[+] [-] amykhar|2 years ago|reply
[+] [-] joshmanders|2 years ago|reply
[+] [-] wutania|2 years ago|reply
the developers are typically folks who wouldn’t be able to get a remote job otherwise due to universities not being globally recognized or english is not super fluent. many developers grow a lot during their time at gitstart and eventually move on to getting jobs at places like Google, Amazon too. they support any developer to grow (there’s a team dedicated to figure out growth paths for each developer on the platform)
disclaimer: i used to work at gitstart
[+] [-] yakshaving_jgt|2 years ago|reply
[+] [-] killerstorm|2 years ago|reply
[+] [-] Kiro|2 years ago|reply
[+] [-] rsstack|2 years ago|reply
When seeing $10/credit, I thought a PR this small would be just one or two credits. I'd totally pay $150 to fix 10-15 such small bugs, but only one? Am I missing something?
[+] [-] hzia|2 years ago|reply
In this particular case there was technical discovery on a non-trivial approach to patch an npm package (which didn't work out)
But above aside, one can get a lot more milage out of GitStart if small fixes are bundled together. As that means all of them share the cost of QA (across devices), bundled code review and less context switch overhead.
[+] [-] michaelt|2 years ago|reply
When your employer onboards new hires, do they have a commit merged into main in their first 90 minutes with the company?
Software development is an expensive business, and some companies are used to paying this much and more. The no-fix-no-fee pricing model would also command a premium over hourly work.
[+] [-] outsidetheparty|2 years ago|reply
* "Do work, but get paid only if we use it" feels potentially exploitative. You do mention a "base pay" rate but I wonder how it compares to the "merged PR" rate?
* Code quality and adherence to internal code standards is challenging for external contributions. Open source projects, of course, are already used to this, so it's not surprising to see that's where the bulk of your current customer base lives; it's more difficult to see how this would work with other types of organization -- I'd be concerned that I'm spending more time in code review and such than I'd gain in contributed lines of code.
* The whole setup seems to fit in an uncomfortable middle ground between just hiring an offshore developer directly or through a traditional outsourcing firm, on the one hand; and hourly piecework on the other. The only advantage I see to this sort of arrangement on the hiring end compared to regular old long-contract outsourcing is that I don't have to pay for work I don't end up using, but that circles me right back to the "exploitative" part.
[+] [-] hzia|2 years ago|reply
90% of compensation for devs is base and does not depend on the “merge PR” rate (which is in-fact 95%)
> * Code quality and adherence to internal code standards is challenging for external contributions
> The whole setup seems to fit in an uncomfortable middle ground
Majority of our customers are in-fact private and not OSS. We can unfortunately only share the latter. But it is targeted towards engineering teams that have already started to invest into DevEx and building tooling to make contribution easier We do help to set that up if customers sign up on the Team or Enterprise plan as a first sprint to add all these guardrails in place.
I agree that junior devs today are heavily exploited by existing freelance and outsourcing platforms where it's a race to the cheapest contractor in the market. For teams who want to freelance, we are not a good fit (and most likely more expensive). Where we do shine is an in-house team that does not have the bandwidth to hand-hold each external contractor one by one to become productive. And with that focus, our devs get to enjoy a fixed base stipend, career ladder internally to grow and successfully joining our customers and / or larger corps like Meta, Google and so on
[+] [-] iFelix|2 years ago|reply
(Note: I was not asked to post this)
[+] [-] bitlad|2 years ago|reply
- This does not work beyond OSS projects. This is literally a compliance leaders nightmare. I just don't know who is touching the code, how and where ahead of time, no background checks etc.
- Secondly, this feels like a nice way to "growth hack" you Github stars and fake some metrics for VCs. Your pitchdeck can 100s of contributors and 1000s of stars without really creating much value.
[+] [-] hzia|2 years ago|reply
Because of that, 90% of users of our commercial usage today is still close-source, and biggest customer base are from heavily regulated industries like insurance, finance, and even commercial banking, with 2 of them having > $15B each under management.
Now, as you pointed out, we had to implement and background checks, audit logs and have direct full-time relationship with devs through our subsidiaries.
But what made the biggest difference was our security tooling like GitSlice, which along with dev environments cuts down majority of risk exposure.
I would be really curious why you think something like this wont work for private repos?
[+] [-] alfalfasprout|2 years ago|reply
I have yet to have a super positive experience with the quality of work of offshore contractors either internally hired or via an external consulting company.
[+] [-] grork|2 years ago|reply
But I also feel there is a little bit of a pandora’s box here.
The model you’re creating here is more structured ‘gig economy’ path for software dev. Sure, you’ve got things like UpWork, and other freelance products, but the purchasers (e.g., business) are effectively taking a risky bet on the work which can tamper commitment to purchasing work that way.
But with ‘no merge, no fee’ could create a very strange dynamic where companies will opportunistically throw work over the wall and create bounty-like dynamics. I don’t know if this is particularly bad for the purchaser, but for the seller that could lead to some challenges overtime (race to the bottom etc)
[+] [-] awesomeMilou|2 years ago|reply
On this page. The error is coming from your GraphQL backend:
{ "errors": [ { "message": "has invalid format", "path": [ "createDeveloperProfile" ] } ], "data": { "createDeveloperProfile": null } }
[+] [-] madeofpalk|2 years ago|reply
Worth acknowledging that GitStart has, at least in the past, submitted PRs to open source projects unsolicited in an attempt to bolster their reputation.
We found their PRs to be of extremely rough quality - exactly what you would expect from junior offshore developers - and it took up a non-trivial amount of our time to deal with the contributions and get them into a state where they could be merged. We would also often find 10+ email addresses associated with a single one-line change commit, which I found quite odd.
While I/we encourage contributions from developers of all levels, it felt super iffy that we were investing in coaching the junior developers of the YC/VC-backed startup, only for them to use us for cred.
In the end I believe we blocked GitStart from our repo.
[+] [-] hzia|2 years ago|reply
I remember your case personally and reached out to you over email to apologize at that time last year. If there is anything else did wrong, please let us know
[+] [-] derefr|2 years ago|reply
To be charitable: could have been that the commit started off big and complex, getting modified and reviewed by several people over time... before one person finally figured out how to simplify it down to one line — and so then they rebase-squashed it down to just that line, rather than polluting your commit history with all the intervening nonsense.
[+] [-] estebarb|2 years ago|reply
It is sad that developers from global south usually have to perform at a much higher level than their peers at the north, just because unfounded prejudices.
[+] [-] moneywoes|2 years ago|reply
[+] [-] andrewfromx|2 years ago|reply
[+] [-] ayewo|2 years ago|reply
Is GitStart a significant pivot from what you started with?
[+] [-] sdesol|2 years ago|reply
88 PRs created: https://reviews.gitsense.com/insights/github?p=days-open&q=a...
70 merged: https://reviews.gitsense.com/insights/github?p=days-open&q=a...
7 rejected: (closed/not merged) https://reviews.gitsense.com/insights/github?p=days-open&q=a...
Interesting take away is, the merge rate is quite high, but since we can assume these PRs were created for a reason, can we also say 7 not being merged is also bad?
Full Disclosure: This is my tool
[+] [-] hzia|2 years ago|reply
I think basic NLP on the PR decision may be able to automatically differentiate them
[+] [-] ye-olde-sysrq|2 years ago|reply
In general, jr devs are net-negative. (If they're not, they're not junior! promote them!). They are an investment, they are learning and growing. It will take a senior longer to review, mentor, and coach them to a PR that the senior could've gone straight to that same PR. The whole point is that eventually you've grown another senior dev who will return big multiples on their compensation.
This sounds like you're just going to be spending sr dev time reviewing and rejecting, to have de minimis backlog items (there's a reason they're in the backlog and not prioritized) fixed, and you're not even growing a senior dev, which is the whole point.
Plus, IME most companies carry so much cultural context that being exposed to it for exactly 1 ticket + not having inside people to ask questions means this will be an uphill battle.
[+] [-] hzia|2 years ago|reply
With GitStart, we take everything else away entirely (dev envs, preview links, mentorship, trainings etc), with strong processes to make sure PRs are heavily reviewed internally with solid QA before its pushed upstream. I think this drastically reduces cost of working with juniors to the point that its “profitable”
Right now it’s not for everyone, especially for companies where there not enough motivation internally to craft good tickets or having enough backlog thats critical enough to make use of GitStart.
Now everything aside, we actually have seen cases where devs internally grow within, apply to our customers and become full time hires! We dont bind our devs at all to join our customers directly and instead celebrate it when it happens!
[+] [-] hdjjhhvvhga|2 years ago|reply
[+] [-] ritzaco|2 years ago|reply
> One solution was building GitSlice, which enables creating sub-repos that sync with the upstream repo. When GitStart devs create PRs on the platform, GitSlice syncs them upstream while pulling back CI/CD checks and review comments. This enables our devs to contribute with limited codebase access.
Is this an internal tool or something you also make (or plan to make) available? We have this problem too at Ritza (a technical writing agency), where often our customers have a mono-repo with a docs/ subfolder that we need access too. Currently we solve this with some custom bash scripts and cron to sync just a subfolder to an internal copy, but is far from perfect and still involves some manual cherry-picking.
[+] [-] hzia|2 years ago|reply
We go much further than CopyBara by syncing CI / CD pipelines, syncing review comments and so on.
We are considering launching GitSlice as product on its own. If you are interested, email me and I can keep you updated when its ready to test (hamza [at] gitstart [dot] com)
[+] [-] brap|2 years ago|reply
Yeah, I don’t care.
I don’t mean to be harsh, but if I have to justify spending my company’s money on this, this is definitely not something I’m going to say. This isn’t charity, and I’m looking for quality code.
[+] [-] bradly|2 years ago|reply
[+] [-] hzia|2 years ago|reply
The reason we have not done that is because we get all devs to commit full time on the platform, and thats a deal breaker for senior devs. Part time doesnt work well for juniors to reasonable grow on the platform, but I can defn see that working for seniors.
Curiously, how you do see your normal day look like if you could something like GitStart on the side as a part time senior?
[+] [-] hzia|2 years ago|reply
In the last month, we have rejected quite a few tickets that may have been easily tackled by a senior dev. Including technical documentation for infra, K8S, CLI agents to collect runtime traces, fixing flaky E2E tests and so on.
Hola at me if you are interested! (email in bio)
[+] [-] wavemode|2 years ago|reply
[+] [-] quadcore|2 years ago|reply
From the comments I read I can tell the receiving devs can easily become grumpy if things are not as they want to the semi-colon.
A few ideas to solve that problem.
1. Have an internal team of experienced devs who make CRs and onboard the team of juniors on a new projects. From my experience, after a couple mistakes or misfit code, juniors adapt themselves, learn and end-up doing perfectly well.
2. When you submit a PR, submit a process with it (in a readme of some sort) with instructions on how the receiving devs should proceed with the PR. If they are not happy with it, maybe they can just say "not happy with it" and you take on yourself to figure out why. That sort of instructions. The last thing you want is them complaining they spend more time on it than simply coding it.
Im pretty sure the management of the human interface here is key because the only way this can work is if you've got off-the-charts feedbacks. You need processes for that (you probably do already).