It’s not often that we talk in terms of superlatives. In fact, we tend to avoid them.
Part of our approach in fostering an ethical revolution in recruiting is simply (gasp!) telling the truth, removing the shiny-bow approach, and just speaking openly about the needs of all parties, and determining if there is a fit. No harm, no foul if there’s not.
One of the most critical factors for all of the candidates who are considering a transition in their careers (AND for our clients trying to attract top talent) is the articulation of cultural and engineering team values, and of course how they manifest within the organization on a daily basis.
We’ve just started a retained search for a Lead Engineer for a Denver based startup, BiggerPockets and through our deep-dive requirements gathering discussion, we came to find what are likely the most comprehensive, simple and elegant explanations of engineering and cultural values in an organization that we’ve seen in our twenty years in this business.
We’ve shared these values statements with seasoned hiring managers and engineers all over the country, and the reaction has been incredibly and resoundingly positive.
Congrats to the team at BiggerPockets for this thoughtful document, which should provide a great peak into daily life at BP.
It’s important to note that while an excellent summary of the way they look at the world, this is an evolving document. Similarly, engineering organizations may borrow some but not all of these philosophies. What is right for you, right now, may not be right for you in a few years and vice versa.
With a nearly unprecedented rating of 4.6 out of 5 on Glassdoor, it’s evident BiggerPockets is indeed practicing what they preach.
Our Core Cultural Values
- Family over everything
- Serve others with purpose
- Build authentic relationships
- Value unique perspectives
- Challenge what’s possible
- Keep things fun and get it done
Our Engineering Philosophy
- Have fun!
- Write code for humans first, computers second.
- Great code is easy to read and comprehensible, anyone can write code a computer can understand, good programmers write code that humans can understand.
- Always Be Testing. Great tests are like an instruction manual, they document how your code is meant to be used; tests also offer verification, if it’s not tested, how do we know it works?
- Don’t prematurely optimize, if it’s not a bottleneck, don’t spend time optimizing like it is
- Don’t prematurely refactor; duplication is far cheaper than the wrong abstraction.
- Homogeneous teams are boring- let your personality show, allow others to share their ideas and their personalities, embrace a diversity of thought, be inclusive of new people, especially if they don’t look or act like you, embrace new ideas and new ways of thinking, and let it all show in your work.
- Prefer simple designs; build small, self-contained units that are responsible for one thing only; strive for boringness; avoid incomprehensible “magic”
- We’re not interested in being trailblazers, keep an eye on trends, but prefer established tech, acknowledge the hot new thing, but wait for it to mature.
- Make everyone around you better; become a catalyst, by helping everyone around you improve, you become exponentially better than simply the sum of your working hours.
- Communicate clearly; communicate pragmatically. Don’t assume people know what you know. We love bullet points.
- We are all peers; whether you’ve been here for a decade or a day, your input is sought. When everyone participates in the process, everyone learns (for example in peer review).
- Protect our users data, protect our product. Be proactive in securing your work, be diligent in securing others’.
- Protect privacy – don’t expose any personal data we don’t need to no matter how insignificant it may seem.
- Protect our users time – users can choose leave to a competitor within seconds, don’t give them time to by shipping frustratingly slow software.
- Resist change that would compromise the above- you are the final layer between ideas and the user. Don’t hesitate to resist change requests; argue passionately, but respectfully. Explain yourself, cite precedent, offer alternatives, but above all respect the original motivation.
- Optimise for programmer happiness- we use Ruby because it is designed around human needs, not computer needs. It is explicitly optimized for programmer happiness and we should strive to continue that trend in our own work.
- Art is welcome- programming is a science, but our work needn’t always be antiseptic. A little artistry can be refreshing sometimes, but remember, real artists ship.
- Workaholics aren’t heroes- they don’t save the day, they just use it up. People rarely solve problems by brute forcing them with sheer hours.