Recruitment template: Project lead developer
For each candidate, create a google sheet with columns Attribute, Strengths, and Weaknesses where the evidence for these can be noted for review.
Attribute
How to evaluate
Experience with our stack
    Python
    Django, Flask
    Javascript, ES6
    jQuery, React/Vue
    CSS, SASS
    Postgres
    ETL, data processing
    git, github, PR workflow
Are they able to pick up the bits they don't know or have deep experience on?
    Ask
    Look at their code contributions on github
    Do they use a range of languages?
    Do they use a range of frameworks?
Disqualifying criteria:
    No browser Javascript experience - as a proxy for web programming ability - if they haven't done Javascript in the browser, they're probably missing all kinds of things you need to know for the web like DNS, HTTP, browser request and page load/execution cycle. We don't have time for people to learn that on the job.
Tech choices and legacy
    when do they use a framework or library and when do they roll their own?
    when do they rewrite and when do they refactor or evolve?
Looking at their code:
    Do they use frameworks and libraries? In the relevant idiomatic way?
    Are their changes generally small, relevant adjustments to the code, or big swathes of relevant and irrelevant changes?
Their experience verbally:
    How do they choose between framework and hand-written?
    How do they choose which framework?
    Specific choices they've made
    Edge cases they've experienced?
    e.g. When do you build a CMS that can be used in multiple places, and when do you add a simple table with a title and an HTML field with a WYSIWYG editor in front?
Warning flags:
    Feeling trapped in an org's tech stack, not having the freedom to use the new fandangled. There are valid cases in this - it should ideally be explored as a tech choice discussion for a given case.
Maintain software quality, keep the code maintainable, keep to our development guidelines. Particularly
    clean software design
    testing
    project dev setup
Hold the team to the appropriate level of quality
Looking at their code:
    Do they name things clearly?
    Is there intent in how they structure code?
    Do they use common design patterns? Is it clear which?
    Do they document sufficiently? Excessively?
Their experience verbally:
    "What do you need to do on a project so that the speed of making changes doesn't reduce significantly as the project grows?"
    "What is your approach to structuring code to keep it maintainable?"
    "When do you use automated tests and when is it better not to?"
    "How do you make it easy for new developers to join a project and get running quickly?"
    "How do you get the implementing team to maintain the level of quality needed for the project?"
    How do you determine the appropriate level of quality for a project? What should be allowed to "slip"
Devops skills needed for our stack
    Docker
    Ansible
    Dokku/heroku
    Service/uptime monitoring
Ask if and how they've used these.
Technical ownership, management, leadership
    Technical specification - ensure technical requirements are clear for freelancers, e.g. on upwork
    Help project manager select qualified freelancers
    Code integration and quality - review proposed implementations and merge and deploy when ready
    Plan and manage task deadlines
    Create and maintain a sense of team and camaradery with the other devs, even if they're freelancers/contractors
    Ensure dev team is working towards the intent in the user stories, supporting PO in communicating this to the team.
Look at their public contributions (github, stackoverflow, social media)
    Do they communicate clearly in issues, pull requests, code reviews?
    Do they communicate kindly and respectfully?
Ask
    "Have you been responsible for technical delivery on a project before? What were your main activities in this regard?"
    "Have you outsourced to contractors/freelancers/consultants before? What's important to ensure success?"
    "How do you ensure that the scope of the deliverable is specific enough to be able to hold someone to account and ensure the problem is actually solved?"
    "How do you translate project requirements or user stories into tasks an intermediate-level developer can implement on?"
    "How do you ensure that someone has actually implemented what's needed and met the whole scope?"
      We tend to look for automated tests specific to the task at hand, and verify that the test actually verifies the intended functionality.
    "Have you experienced morale or motivation or productivity tanking on a team you've led? How did yo address that?"
Disqualifying criteria:
    Never led a technical team - we can't afford people learning this on the job when they're in a leadership position.
Technical problem solving - Able to explore functional and non-functional requirements and constraints with Product Owner and Project Manager to help make appropriate compromises to achieve the best outcome on a small budget
Ask about their experience:
    Have they had projects where some of the project team have assumed a technical solution (e.g. client says: "I'd like a page, with a button here, and..." but there were actually a number of ways of implementing what's needed?
      What were the tradeoffs?
      How did they guide the client/PO/PM to make an appropriate choice?
      What should the client/PO know about the implementation and what should they keep out of?
      How did they raise the matter of potential better solutions?
    Will they suggest options for solving the problem at hand or do they blindly build what they're told?
    How do they figure out a compromise between solution options, requirements, and constraints like budget and time?
Our scale - Able to be productive on our short-lived projects and/or tight budgets. That means
    able to focus on the task at hand and deliver the essence of it ASAP, and not get distracted and e.g. building a new framework or recompiling the kernel or whatever, when we just need a button on a page.
    able to identify when something will run over the allotted time, and figure out what the best solution is with the project manager and product owner - whether to cut scope, change direction, or increase the budget for the task.
Ask about their experience:
    What experience have they had of working with constraints e.g. bootstrapped or scrappy startups (as opposed to apparently endless enterprise dev budgets or startups with gazzilions in seed funding)
    Ask about projects where they were in a position of making key technical decisions
      What were the tradeoffs?
      When did they have to choose between something really cool and impressive and something quick and simple (but useful)? How did they make that call? What were the tradeoffs?
    Have they ever had a project where the budget was pretty much blown, but there were still contractual obligations that needed to be delivered, now on a tigher-than-expected budget? How did they tackle that?
      It's not that we expect to blow budgets, but this is a resource-constrained situation where something still has to be delivered. We're interested in what gets delivered, and how that decision is made.
Backup question to promote discussion:
Give a hypothetical, e.g. "Aleph is a flask and react-based search tool. It ingests many file formats, indexes them for full text search, and stores them files in S3. It currently serves the full PDF which sometimes means downloading 100MB to view one page. We have a budget of three days of dev time to make it serve one page at a time. What are our options? How do we avoid them just saying "sure, no problem" and learning nothing from the question?
Last modified 4mo ago
Copy link