Author here: you're right, nothing revolutionary here in technique. Most/all of our actual process is ripped straight out of http://sockpuppet.org/blog/2015/03/06/the-hiring-post/. But my experience, over the course of Spreedly interacting with 100+ candidates over the past few years, is that just doing pretty standard things well, with attention to detail, is in itself revolutionary. We hear story after story from candidates about other companies they have or are interviewing at that are completely disrespectful in how they're treating candidates. Whether this is cargo culting, lack of time to do things right, or a righteous belief that it's OK to treat candidates poorly, I can't say, but it's pretty disgraceful.
So, I wrote this little thing both since I needed to write it down for my coworkers anyhow - this is how we do things, showing respect for candidates by keeping reciprocity, incrementalism, and relevance in view - but also in the hopes that it's one more brick in a wall of "you're worthy of respect" for candidates.
The post itself wasn't about our actual process, though I did use examples from it; I hope to write about the actual process later. But I will note that my experience of phone screens is apparently very different from yours: I've experience them as a chance to pre-grill and filter candidates, and ours is 100% not that. I ask zero questions, but instead just talk about what we do and answer any and all questions candidates have. You're right that doing an intro call with each candidate isn't scaling, but we're not replacing me with HR, but instead have a live weekly intro call that candidates can join where I talk about the company and they can ask questions via text and I answer them on the spot.
And for what it's worth: "the current market dynamics" in tech hiring SUCK. So long as I have any say, we'll be playing moneyball by ignoring them and instead just continuing to iterate based on what actually works.
just doing pretty standard things well, with attention to detail, is in itself revolutionary
This is exactly it! The challenge in hiring isn't coming up with a good process, it's making sure that process is actually executed well across the company.
Fair enough. I respect your point of view. I hope you engrain this mentality in your team for future hires and/or when they start their own companies. It's a solid perspective, sorry for being critical.
How do you deal with feedback for the candidate? Are there legal concerns for disclosing too much?
I hope it has a lasting impact beyond Spreedly, too. The impact of founding a company shouldn't just be on customers; if we act in an upright manner, hopefully employees, vendors, partners, the families of all of the above, and a cascade of future endeavors will be positively improved.
RE feedback, we try to give it and make it meaningful, so for instance the pre-defined, objective grading criteria we use for work samples lends itself well to us being able to highlight why someone isn't a good match.
There may be a slight possibility that giving clear feedback opens us up to some sort of liability, but (a) a respectful process ends up documenting itself really well as a side effect (how else are you going to keep up with all the details?), (b) a respectful process hopefully leaves even candidates who weren't a fit feeling like they got a fair shot and thus not inclined to come after us for a perceived slight, (c) I think the fear around giving feedback is more about how uncomfortable it makes us feel vs. an actual legal risk, and (d) I hate not getting feedback when I fail and as a founder and executive I have the clout to take some risk and do what's right.
Love this: like 99designs for code. Bet you'll get a lot of pushback on this "devaluing coding" just like 99designs has for design, which just means you're on the right track. Of course it doesn't; it just commoditizes basic coding skills, and more importantly makes the accessible to a wider set of people.
I especially liked the example that was scraping data off a bunch of pages and returning a spreadsheet/csv of the results; that's a great example of something a smart business person that thinks algorithmically can identify, but can't/won't implement themselves. I actually wonder if it would work well to target this service specifically at algorithmically minded business folks.
Hope this works well for you - great idea, and looks well executed so far.
This doesn't seem like 99designs does it? As far as I understand, 99designs pins 100s of designers against each others making many logos of which to choose from, which means that most of them works for free.
This website is one team making what the client asks for, there's no competition.
> Unless that's what's happening behind the scenes.
I think something like that is what's happening behind the scenes. Maybe not the competition/spec work aspect, but certainly they're going to be outsourcing to loads of the cheapest workers they can find.
Spreedly already supports vaulting bank account information, and while the number of gateways that we support passing bank account info to is still limited, we're growing that rapidly at the moment.
Our gateway support is heavily influenced by customers, so anyone who has a gateway they'd like to pass bank account info to that we don't support today shouldn't hesitate to drop us a line.
Thanks! The name's "test/unit", but I won't hold it against you ;-). It's pretty sweet that people have gotten so much mileage out of code I wrote, and if it's helped us as a profession - even a little bit - to write better code, I'm thrilled.
Which essay I already knew about and chose to willfully ignore when I titled the OP. We could chat over beers sometime as to whether I'm a bad person for doing so :-)
I think a lot of it depends on context. In a private repo I'm right there with you. But when I look at a public repo with a lot of contributors, I want to know what the "logical" history is a lot more than I want to know about the three steps it took to get a feature ready for public consumption.
And one of the major benefits of git is that you can do short, small commits often, to your private repo. When your fix or feature add is ready, you can squash them into a more coherent commit that builds and passes tests (so that it doesn't break bisect) and push it to the public repo.
I don't understand the bisect argument, maybe I'm missing something but can't you just skip everything that doesn't build and pass the tests? Returning a 125 from your script automatically skips the commit.
And how do you know that wasn't the commit you were looking for? The whole point of bisect is that you don't have to do a manual bug hunt; you can create a script that tests for the thing you are looking for. If it's something static sure, that's easy. But if it's something more complicated and you don't know what's causing it (a prime candidate for bisect), you will need to build and analyze the behavior of the built executable. Non-building commit = more manual bughunting.
But aren't we talking about squashing those commits? You're not going to lose anything by skipping commits between PRs instead of squashing everything between PRs into one commit, you can only narrow it down more.
> you can create a script that tests for the thing you are looking for.
Yes, which you can tell to skip anything that doesn't compile/pass tests. Return 125 from your script and it'll be skipped.
> Non-building commit = more manual bughunting.
But you can just do a loop of "make || git skip" and skip everything that doesn't commit, surely. Or if you're using a script, just return 125 for things you want to skip.
Well, quoting from that message, "If it's not ready, you send patches around". I think the big difference is that I'm willing to take patches that aren't ready and get them ready, whereas I'm sure Linus usually pushes back on the contributor to clean up their stuff. And I do think merges are super useful in a lot of cases, but Linus added `git am` too, and I like using all the tools at my disposal when they fit.
Maybe, but... probably not. The thing is, I want to work with the changes locally before they get included. So it can't be a 100% web workflow. That said, there might be ways the web UI could make the transition to the CLI easier, and it would be great if Github promoted the `git am` flow on the PR pages as well.
These quality issues become a problem sooner than I would have thought, and Linux is big enough that they can just demand contributors know their stuff. But I found that in between "hobby project of my own" and "huge project where people beg me to contribute", there's a big space of "big enough that it gets contributions, but small enough that it's not worth turning contributors away for small quality issues". And I love that hub + `git am` lets me take those contributions but still maintain the workflow I want on the project.
FWIW hub is even handy for the "add a remote for the fork, check out the fork branch" flow, since it lets you just `git remote add ntalbott` instead of having to find or derive the full url for the remote.
So, I wrote this little thing both since I needed to write it down for my coworkers anyhow - this is how we do things, showing respect for candidates by keeping reciprocity, incrementalism, and relevance in view - but also in the hopes that it's one more brick in a wall of "you're worthy of respect" for candidates.
The post itself wasn't about our actual process, though I did use examples from it; I hope to write about the actual process later. But I will note that my experience of phone screens is apparently very different from yours: I've experience them as a chance to pre-grill and filter candidates, and ours is 100% not that. I ask zero questions, but instead just talk about what we do and answer any and all questions candidates have. You're right that doing an intro call with each candidate isn't scaling, but we're not replacing me with HR, but instead have a live weekly intro call that candidates can join where I talk about the company and they can ask questions via text and I answer them on the spot.
And for what it's worth: "the current market dynamics" in tech hiring SUCK. So long as I have any say, we'll be playing moneyball by ignoring them and instead just continuing to iterate based on what actually works.