“How are you hiring engineers? What can I do to hire someone with (XYZ) skill?” These are the types of questions I hear from virtually every new engineering manager or founder who is looking to make her first few hires. Surprisingly, it’s a lot rarer that I hear this question: “How can I set up an environment where the people that work on my team continuously grow and innovate?”
Failing to answer this question is a huge mistake that a lot of us at young companies, including myself, have made. But, having an answer for your company will make it attractive to candidates and increase the longevity and productivity of those engineers you DO hire.
At Prolific Interactive, we decided to focus on a singular way to build this environment:
Make the company a PEOPLE company.
This can seem a bit obvious, but it is not. We are an agency, where typical business models usually involve profit margins, continuing business, and client management as top priorities. Your startup may be product or user-growth focused. Shifting from that mentality to pro-actively solving problems about the internal environment for your team may be a bit of a departure.
We decided to focus on making the experience of working at Prolific be superb and learning-focused, predicting that through the growth, creativity, and high standards of our employees a lot of other things tend to fall into place. For the engineering team we structure the department around this ideal and drive it using a few principles:
Professional Growth is Directly Linked with Teamwork
If the company is doing well, employees should have the chance to grow with it. Conversely, the company will grow as employees are doing better.
At Prolific, the strong emphasis on people is built into that growth path. Not only do engineers start taking place in increasingly larger company process improvements, but their seniority is also attached to their ability to mentor and be generally great with their co-workers.
The typical career path for most of our engineers is the following:
- Interns – We take our internship program seriously here because a lot of our interns end up becoming full-time engineers. Having interns also gives the rest of the engineers an opportunity to get hands-on experience teaching their craft.
- (iOS / Android) Engineers – These engineers lead by example. They deliver awesome products and are also awesome to work with. They feel comfortable communicating with partners, designers, and product managers.
- Senior Engineers – Lead the technical side of our product teams, which consist of 2-3 engineers or interns. They are experts in solving problems where technology meets the people who are implementing it.
- Lead Engineers – Once an engineer has proven to be at least able to oversee a smaller team, he or she now has the choice to move into either technical leadership or a management track. Even for technical leaders, the experience managing a small team allows them to think of solutions that actually work for the people around them, not just in code.
Mentorship is Foundational
Based on this growth path, it becomes apparent that mentorship plays a large role at Prolific Interactive. If you do not have an internship or apprenticeship program, thoughtbot put together a great blog about how they set up theirs, and ours is quite similar. We also have a mentorship structure for all levels.
Since our product teams are the fundamental building blocks of the company, this is the primary place where a mentorship structure needs to take hold. We also make sure that these teams are physically located right next to each other with limited remote work to remove communication barriers.
The technical side of the team at a Prolific product team looks like:
The direct training that Senior Engineers give to other Engineers on their team that help them be better mentors and communicators. These are done via 1 on 1s, leading by example, and pair programming.
The technical training that Senior Engineers give to other Engineers or Interns. Again these are done through 1 on 1s, leading by example, and pair programming.
The technical example that Engineers set for Interns. This mentorship is more organic, but still requires leading by example and pair programming.
The main tools of mentorship for the engineers are:
- 1 on 1s – These are regularly scheduled meetings where mentors and mentees can talk about individual needs and development. These should touch on personal, technical, and communication issues, and build trust between the parties.
- Leading by Example – A great work ethic, positive attitude, and innovation should not be hidden, but celebrated. Through code reviews, product demos, internal dev talks, and blog posts, there are ample opportunities for all team members to set an example.
- Pair Programming – When done right, pair programming is one of the primary methods of mentorship for engineers. We like to ensure that pairing also includes theoretical and architectural discussions and white-boarding as well, so that more junior members of the team can start thinking on the same level.
Mentorship is the primary education tool for a people-focused engineering department. We also have a general budget for individual learning, but, education as a whole must permeate the environment in subtle, indirect ways as well. We do this by incorporating education touch points into the daily process for our engineers.
Opportunities for injecting education:
- Peer Code Reviews – Our code-reviews are mandatory, efficient, and aren’t just used for quality control. They are a tool that makes ideas public. Junior engineers immediately start reviewing senior engineers code too, although with less expectations, and focus on learning by example so they can move quickly into a peer-to-peer relationship with their fellow engineers. Peer reviews expose other engineers to new technologies actually being used in practice. We also try to encourage reviewers to get out of bitbucket and github often for complex reviews, get out a whiteboard, talk through it face-to-face, and get everyone on the team behind the solution.
- Internal DevTalks – Expanding on the peer-to-peer relationship, we also host semi-formal internal DevTalks by concentration. These give our engineers a forum to discuss interesting things they are doing between teams, not just within their own product team. We take votes here about standards and have open-minded, democratic discussions about how we’d like to structure our projects. The DevTalks are also a place where newer, fresher faces can work hard to learn their topics so that they’re presented clearly and thoroughly.
- Hands-on Practice for Communication – A people-focused engineering team’s lifeblood is communication, not just through some of the standardized processes like DevTalks and Code Reviews, but we must also rely that every single individual is working on their personal communication habits, which can only be improved with continuous practice at every part of the job.
We have an opportunity as an agency to work with external partners often, and making all engineers partner-facing means they practice listening well, communicating ideas productively, keeping the engagement positive and collaborative, and being knowledgeable, succinct and clear constantly. Our company blog along with the internal DevTalks also serve as great practice grounds tools for our engineers to practice the soft skills like writing and presenting.
Last, but not least, a people-focused engineering team views the differences between individuals. Many of the processes in this post set the general direction for how career growth, mentorship, and education can be achieved at our organization, but making sure that an engineer has these addressed on their own terms supersedes the prescription of the organization. These processes are there to create a positive environment, not a means of controlling how people work. Furthermore, part of a great people-focused team is also about re-evaluating what works for each individual and for the group as a whole on a regular basis.
These are the strategies that have worked for Prolific Interactive thus far, and have helped us create an environment that fosters growth and learning. It’s not necessarily what will work at every company, but promoting the basic, people-focused ideal should be an imperative, so build a structure that meets it and your business. How will you make this happen for your team?