[HN Gopher] Anti-Patterns in Startup Engineering Hiring
       ___________________________________________________________________
        
       Anti-Patterns in Startup Engineering Hiring
        
       Author : catapultis
       Score  : 58 points
       Date   : 2022-10-25 18:01 UTC (4 hours ago)
        
 (HTM) web link (blog.southparkcommons.com)
 (TXT) w3m dump (blog.southparkcommons.com)
        
       | Test0129 wrote:
       | > While this might allow you to refine your search criteria (and
       | probably have strong funnel metrics), it misses the point that
       | most frameworks are easy to learn and ramp up on. Great engineers
       | all have the capability to learn new languages and frameworks
       | easily.
       | 
       | There is just such a disconnect with reality here I am having a
       | hard time thinking the author has done any actual technical
       | recruiting. Sure, any engineer can pick up any language and
       | framework provided enough time. However, an expert in said
       | language or framework is familiar with the _nuance_. More often
       | than not if your problem is harder than slamming together off the
       | shelf components to fleece the consumers of their money the
       | nuance comes into play quickly.
       | 
       | > You really need to flip this on its head. As a startup, you
       | need to be comfortable taking risks on hires but also parting
       | ways if it isn't working out after 2-3 months. This will feel
       | hard, but in the medium-to-long run will feel a lot more
       | sustainable. Some of the best companies I have ever worked
       | with/for have operated this way and it leads a culture that
       | doesn't compromise on high-performance.
       | 
       | This advice works when you have infinite capital from VCs in a
       | market flush with free money. You probably spend 30-50k to hire
       | an engineer after paying for everything and all the labor
       | involved. You're saying to just throw this money away? Slow to
       | hire, slow to fire is the _only_ sustainable way to run a
       | company. If you want to  "flip the funnel on it's head" hire
       | contractors because the message I am getting here is "increase
       | developer churn". Moreover what even defines "high performance"?
       | I swear, these vulture capitalists are getting far too big for
       | their own britches.
        
         | ctvo wrote:
         | > There is just such a disconnect with reality here I am having
         | a hard time thinking the author has done any actual technical
         | recruiting.
         | 
         | I disagree.
         | 
         | I've hired (and like to think I'm part of this group) folks
         | that can comfortably pick up any domain, not just a language or
         | framework. That's to say, if I needed them to get depth on
         | compiler back-ends because that was part of our value
         | proposition, they could quickly get up to speed on the state of
         | the art and be productive. Maybe they'd start by reading
         | through LLVM documentation and code, understanding its
         | optimizations, and then catch up on the latest papers? Who
         | knows, but they'd have _some_ confidence in weeks.
         | 
         | Would they be on par with world class experts? No. And I don't
         | think the OP claimed this, but not being limited by languages
         | and frameworks isn't that rare.
        
         | BugsJustFindMe wrote:
         | > _There is just such a disconnect with reality here I am
         | having a hard time thinking the author has done any actual
         | technical recruiting._
         | 
         | Agreed. Not to mention that the author leans very heavily on
         | the notion of "great engineers" as if that describes even a
         | small fraction of candidates. In hundreds of technical
         | interviews across a decade of interviewing in multiple
         | industries, I can count on one hand the number of actually
         | great engineers I've encountered. 99% of everyone who calls
         | themselves a senior software engineer is mediocre at best. I'd
         | rather hire someone who can do the specific work I need them to
         | do who isn't otherwise very good at engineering, because that
         | means I can fill the role after two interviews instead of
         | twenty.
        
         | limelight wrote:
         | > There is just such a disconnect with reality here I am having
         | a hard time thinking the author has done any actual technical
         | recruiting.
         | 
         | There might be a disconnect, but I think it's probably not in
         | the direction you expect.
         | 
         | The vast majority of high-performing engineering teams (good
         | startups, big tech companies) _don 't_ hire standard SWEs for
         | specific language/framework expertise. The truth absolutely is
         | that languages are interoperable enough that someone who is
         | smart and understand the underlying principles can get up to
         | speed in a new ecosystem quickly.
        
         | adamsb6 wrote:
         | If you hire people that can't 80/20 their way to learning a new
         | framework or language within a few weeks, what are you going to
         | do with those folks when you need to adopt some new framework
         | or language? Replace them? Halt development for a few months?
        
         | [deleted]
        
         | watwut wrote:
         | I think that you are overstating the difficulty of solving new
         | nuanced problems and also of their frequency. New frameworks
         | dont have that much of a depth in them yet ... and old one are
         | super googlable. The hardest problems have zero to do with
         | frameworks and a lot to do with local codebase. Because you
         | cant google any part of those and generally code quality is
         | lower then those of highly acclaimed frameworks/languages.
         | 
         | > More often than not if your problem is harder than slamming
         | together off the shelf components to fleece the consumers of
         | their money the nuance comes into play quickly.
         | 
         | Most of what is harder then "slamming together off the shelf
         | components" is still not that difficult to solve. You cant do
         | it if you are super new, but you can actually do it after few
         | months in.
        
         | fabian2k wrote:
         | One of the bigger differences is speed, someone that has used a
         | specific framework a lot will likely be much faster in creating
         | new stuff in it than someone that never used it. A lot of
         | typical tasks will fall into the "I've done that before"
         | category, which does speed up things a lot.
         | 
         | For me the most time-consuming part when working with entirely
         | new technology is figuring out how to do certain parts. And for
         | some of them I will initially miss better approaches because I
         | didn't know about them. The other part that is time-consuming
         | are unexpected or complex behaviours that lead to bugs or
         | unexpected behaviour. Every framework has a bunch of stuff that
         | tends to surprise new developers, if you've already worked with
         | it those parts will likely be familiar.
        
         | kaesar14 wrote:
         | If you have at least one or two engineers familiar with the
         | language it is not hard to teach the rest of the team good
         | practices.
        
           | vosper wrote:
           | I don't think good practices is enough. It's all the little
           | bits of knowledge about what works and what's the right way
           | to do things that you pick up over years of working in and
           | around a framework. Could an excellent C++ dev become and
           | excellent developer working in React with Redux and
           | Typescript and NextJS and Material UI? Of course. And
           | probably less effort than training someone who's never
           | written code before. But that's way, way more than just
           | learning some good practices. It could be _years_ of
           | collective effort (or more likely, just slowly written not-
           | so-good-code) to bring a team up to an advanced or expert
           | level.
           | 
           | Hire for your stack is absolutely a good idea, unless you
           | have no other option.
        
             | tick_tock_tick wrote:
             | Going "up levels" or side to side is very easy compared to
             | "going down" it's a pain to teach and get people to truly
             | understand stuff like pointers if they've never touched
             | them.
        
             | fallingknife wrote:
             | Most of the benefit of hiring smart people in a startup is
             | not that they do brilliant things, but that they don't do
             | stupid things. So not really necessary that they be domain
             | experts in most cases.
        
               | Beltalowda wrote:
               | The thing is that even good engineers but inexperienced
               | with some language or environment are exactly the sort of
               | people likely to do "stupid things". People will shoehorn
               | patterns that work well in X into Y where it doesn't
               | really work, they misunderstand things, or don't know
               | something exists, or use things incorrectly leading to
               | subtle bugs, etc. And then a year later you discover "oh,
               | in hindsight now that I know more about this language
               | that was silly, but now we're stuck with it",
               | 
               | If we're talking about startups, then you often don't
               | really have time or staff to spend on training. You want
               | to be able to say "we need X!" and be confident it gets
               | implemented in a reasonable way that's not going to bite
               | you down the line. If you do have the money and staff to
               | train people, then by all means do so, but "super early
               | stage" startups (quoting the article): you're setting the
               | foundation of what the entire business will be built on
               | for _years_ to come and typically have a limited budget
               | to do that. You need people who can get things done
               | reasonably fast but also do it in a way that 's not going
               | to cause a lot of headaches in 2 years down the line, and
               | this takes a certain level of experience.
               | 
               | My advice for startups is exactly the opposite: use tools
               | and languages you're already familiar with, unless you
               | have a very good reason not to. Maybe there's some other
               | language that's a somewhat better fit, but being familiar
               | and experienced counts for a lot. I've seen a number of
               | startups really suffer from using $new_tech a few years
               | down the line simply because they used it badly on
               | account of being new to it.
        
               | fallingknife wrote:
               | I agree with most of what you're saying. I think at least
               | the first 2 engineers in the team should be experienced
               | in the stack. And nobody inexperienced should ever be
               | making initial design and architecture decisions.
               | 
               | The commenter I was responding to was saying it takes
               | years to learn that stuff and I disagree with that. Smart
               | engineers can get up to speed in a few months with an
               | experienced team.
        
               | Beltalowda wrote:
               | In a more established company that works well. In very
               | early stage startups? It can, but it's more of a risk.
               | Most early-stage startups are not well organised and the
               | typical situation is that you can do whatever with fairly
               | little oversight. The 3rd, 4th, or 5th engineer can still
               | make a right mess of things.
               | 
               | This applies even more so if your country has fairly
               | strict labour regulations by the way, where it's hard to
               | fire people; bit of a different discussion, but not
               | completely unrelated here.
        
           | djbusby wrote:
           | Anyone could paint-by-numbers a Monet. But only Monet could
           | create a new one.
           | 
           | You don't need painters, you need artists.
        
             | xcambar wrote:
             | This is unbelievably condescending.
             | 
             | I'll follow up on your false analogy to try to get you to
             | your mistake: even Monet had to learn before he became
             | Monet! Even Monet had to fight before he became Monet. He
             | even got rejected and created an art salon because he and
             | his peers were misunderstood by art intelligentsia.
             | 
             | So by rejecting engineers that you deem not worthy of being
             | artists, you're just putting yourself in the position of
             | the bourgeoisie that rejected Monet in the first place.
             | 
             | You're ignoring potential for talent. And really am I glad
             | you're doing that because I then get to train and hire
             | them.
        
             | drewcoo wrote:
             | Actually, you want a team of painters who work well
             | together.
             | 
             | Hiring only Monets doesn't scale. Could the dude have even
             | worked with himself?
             | 
             | https://www.mysanantonio.com/entertainment/arts-
             | culture/book...
        
             | kaesar14 wrote:
             | You don't need a team of people as skilled as Monet to make
             | a working software product. Incredibly condescending. And
             | good lucking ONLY hiring absolute masters for your
             | engineering team as you scale beyond like, one or two
             | hires. How many people in the world do you even think are
             | that skilled?
             | 
             | Plus people require and deserve investment. It's okay to
             | take in people who need development and turn them into
             | solid engineers.
        
           | julik wrote:
           | If the new hires do not reject the stack (or do the "this
           | would have been so much better if it were written in Y") - in
           | general, yes.
        
         | dimal wrote:
         | > Slow to hire, slow to fire is the only sustainable way to run
         | a company.
         | 
         | I disagree. Expanding the range of positives to decrease false
         | negatives does not mean that the goal is "increase developer
         | churn". Many startups seem to be so petrified of hiring the
         | wrong person that they miss out on a lot of people that would
         | be good enough or even great. And being "slow to hire" is not a
         | free option. The constant interviewing is a drain on current
         | resources' time and energy. It's a constant distraction. And
         | the longer you wait for the "perfect" person (who you never
         | find) that's time that you're not getting shit done because
         | you're understaffed. There's a balance, and too many companies
         | are paralyzed with indecision, leading to a default "no hire"
         | if someone isn't perfect. This is just arguing for a reasonable
         | recalibration of standards.
        
       | jampa wrote:
       | I agree with most of the things, but as someone whose
       | responsibility is hiring people, the hiring for a particular
       | toolchain or framework holds to some degree, for example, some
       | places want to tick every single box.
       | 
       | On the other hand, it is good to search for the affinity between
       | the languages. Python to Ruby can ramp up faster than Python to
       | C#/Java for example. So someone can have a harder time and in the
       | end, won't enjoy the overall framework and leave.
       | 
       | Another example: If you search for someone to take a Next.js
       | project, a React engineer would work well, a Vue engineer might
       | need more time but could also work, but a hardware engineer would
       | struggle and might need too much time to produce.
       | 
       | > Fire fast
       | 
       | 2-3 months is way too short for letting someone go, and it is the
       | problem for some startups nowadays.
       | 
       | Most companies onboarding documentation sucks or does not exist,
       | so you can hire a great engineer and think they are not.
       | 
       | There are great unicorn engineers that can manage themselves in
       | the project but most people need some help, feedback, and
       | guidance.
       | 
       | Also, most managers are afraid of giving feedback, I did some
       | consultancies with startups that had managers complaining a lot
       | about a certain engineer, already at the point to fire them. When
       | I asked "do they know that you are unhappy with them?" they
       | always say that they "implied" once or twice. When I give them
       | feedback the improvement is noticeable just in weeks.
       | 
       | Firing fast is sometimes just a cop-out to not give people proper
       | feedback and properly managing them.
        
         | catapultis wrote:
         | Interesting point on most managers not trying feedback first.
         | In a scenario where feedback is clear and early, would that
         | shorten your timeline for firing?
        
       | ShinySquirl wrote:
       | Having been a generalist at several startups throughout my career
       | , can totally agree the highest leverage folks are usually just
       | the smartest, not the most specialized.
        
         | planetsprite wrote:
         | What do you mean by smart? A well organized moderately smart
         | person is more productive to a company than a disorganized
         | genius. Someone who can hyper focus on their competent domains
         | is more effective than a super smart generalist who spreads
         | themselves too thin.
        
           | smcin wrote:
           | > _What do you mean by smart? A well organized moderately
           | smart person is more productive to a company than a
           | disorganized genius._
           | 
           | Maybe Yes, maybe No, depends entirely on the job function
           | they're in, the assumed style and heaviness of management and
           | how much communication (if any), let alone oversight, they
           | are obligated to have with their peers and subordinates. I
           | have seen people who rarely emerged from their room/cubicle
           | yet consistently produced brilliant code; versus people who
           | looked and sounded amazing in meetings yet didn't deliver.
           | There is definitely such a thing as too much communication,
           | btw, which Elon Musk points out regularly. Have you ever been
           | inside a company that talked and meeting'ed and memo'ed
           | itself to death? I have. Sometimes you need a crew that
           | simply quickly agree a sensible plan, shut up and build the
           | dang thing lightning-fast before the cash runs out and the
           | lights get turned off.
           | 
           | There are organization styles that thrive on lone wolves and
           | ICs and know how to manage them hands-off, and ones that
           | thrive on big-company style corporate 'team players'. There's
           | a place for everyone.
           | 
           | 'smart' IME is far less a measure of IQ/EQ and more 'robustly
           | adaptive to whatever arbitrary management structure you try
           | to force on them'.
        
           | polskibus wrote:
           | In startup context, when still experimenting with product-
           | market fit and trying to win early customers, you need
           | generalists to be able to quickly change direction when
           | necessary. Specialists have too much inertia in such cases.
        
             | ivan_gammel wrote:
             | When searching for product-market fit the last thing you
             | need is changing your tech stack on the fly. Generalist can
             | help you to bootstrap your initial stack if she has a good
             | knowledge of all components, but specialists allow you to
             | focus on what really matters, building foundation of your
             | ops while you experiment.
        
               | ghiculescu wrote:
               | A good generalist will not change your tech stack on the
               | fly. Of course that's a bad idea.
               | 
               | I think what GP meant is more like they will be willing
               | to change what they are working on day to day in response
               | to what you learn from the market, and will be fine with
               | throwing lots of things away if they don't work.
               | 
               | If you focus on foundational work too much that comes
               | with the trade off that you can't spend as much time
               | building features. It's common to see engineers fall into
               | this trap.
        
               | ivan_gammel wrote:
               | If we are not talking about one person team, frequent
               | context switching is counterproductive and same jobs are
               | better done by two specialists (e.g. FE and BE) than two
               | generalists. It's also a common trap to build a lot of
               | features without any evidence that users need them,
               | 30-40% of effort wasted on something that does not have
               | enough business value or on validating with code
               | hypotheses that could be validated by one email with
               | typeform.
        
       | mkl95 wrote:
       | > Hiring for a particular tool-chain or framework
       | 
       | Startups do this bait and switch thing where they hire people who
       | have no experience with their stack and domain, tell them it's OK
       | if it takes them a while to learn it, and then expect them to
       | magically learn it in a few months with no proper onboarding or
       | training. In most of these cases disappointment is unavoidable
       | both for the employer and their new hire.
        
       | throwaway0060FF wrote:
       | The author was the CTO for a company that's stock has been flat
       | or down since IPO. He made decisions and wrote a blog post here
       | about the strategy he thinks is best, but the justification here
       | seems to be confirmation bias and self confidence.
       | 
       |  _The team that built out Dropbox's (incredibly hard and complex)
       | custom replacement for Amazon S3 hadn't built distributed systems
       | for 20 years. They were strong generalists who had a passion for
       | learning and figured it out._
       | 
       | This is a misrepresentation. A PHD who co-authored papers on
       | distributed systems led the team.
       | 
       | https://www.usenix.org/legacy/event/usenix09/tech/full_paper...
       | 
       | Top experts experienced in running large scale infrastructure
       | from Facebook and Google supported the team.
        
       | jkingsbery wrote:
       | A few thoughts:
       | 
       | 1. There's been a big difference between mostly hiring
       | generalists, and _only_ hiring generalists. When you only hire
       | generalists, all those generalists are trying to figure out the
       | tech from scratch, which can be messy. If you have a specialist
       | in a tech stack and then otherwise hire mostly generalists, you
       | pair people who can learn quickly with someone who is capable of
       | teaching them - this is a great mix.
       | 
       | 2. Your hiring should reflect your goals. Sometimes startups
       | really do just need to get a prototype out as soon as possible.
       | But, sometimes, startups need help figuring out what kind of
       | thing they should build in the first place. Those are two
       | different skill sets, and not all engineers are great at helping
       | shape product decisions.
       | 
       | 3. While you need to consider the good and bad in all people, and
       | recognize there is no perfect candidate, hiring someone who isn't
       | a good fit for the role is often worse than not hiring someone at
       | a startup. If you have 12 months of runway and you're burning 2-3
       | months being distracted by a Smart Jerk, then you might be
       | jeopardizing your whole company.
       | 
       | 4. So-called soft skills should be taken into consideration. It's
       | not just someone's coding skills. Are they good at giving
       | feedback? Are they effective at working with others? Do they
       | demonstrate the ability to project plan?
        
       | noodle wrote:
       | > Hiring for a particular tool-chain or framework
       | 
       | Dunno about this one. This is very much so FAANG type of
       | thinking, not really (newer) startup type of thinking.
       | Sacrificing a few man-months to training is something that is
       | hard to do when that's a significant percent of your remaining
       | runway.
        
         | paulgb wrote:
         | I agree, but it's also a matter of degree and availability of
         | the skill you're looking for in the market. I wouldn't hire a
         | developer who has only touched Java to do React when there's
         | lots of React developers out there, but as a Rust shop I'm
         | happy to talk to a Go developer who seems open to learning Rust
         | on the job.
        
       | Communitivity wrote:
       | I agree with the anti-patterns described. Based on my experience
       | they are also anti-patterns for hiring at non-startups.
        
       ___________________________________________________________________
       (page generated 2022-10-25 23:00 UTC)