- More about this team: growth engineering
- Why we have a dedicated “Growth engineering” team
- How this team collaborates with others
- How this team collaborates with the core application engineers
- Our tools for growth engineering
- About Visor’s engineering culture & collaboration
- Code collaboration & CI/CD
- Quality
- Project management
- Design collaboration
- Our stack
- Work & life balance
- You + Visor: A Perfect Fit?
- 30-Minute Phone Call Screen with Visor’s Talent Lead
- What success looks like
- Role-specific topics for engineering candidates
- Technical interviews at Visor
- Overview
- How we conduct the interview
- How you should prepare
- How you’ll be evaluated
- Role-specific tips for the Senior Software Engineer, Full Stack (Growth) position
- Take-home project
- Overview
- Compensation
- The general schedule
- Kickoff meeting
- Completing the project
- Presenting your work
- What success looks like
- Role-specific notes for the Senior Software Engineer, Full Stack (Growth) position
- Team interview
- Overview
- What success looks like
- FAQs
- How long does the software engineer interview process typically last?
- What happens if you can't solve all the problems in a software engineer interview?
- Tips for software engineer interview success
- Talk through your thinking and ask for help
- Show us your cognitive abilities
- Show us your drive to build
- Show us your passion for technology
We’re very excited you’re considering a role at Visor on our engineering team. This guide will provide information to make your candidate experience seamless.
More about this team: growth engineering
You’re being considered for a position on Visor’s growth engineering team. We consider every part of the customer’s experience to be a part of our product. That includes both the core application (the actual Visor collaboration software) as well as our other customer-facing experiences in our ecosystem. However, we’ve chosen to split our engineering team between those who build and maintain the core application (”application engineering”) and those who build and maintain our ecosystem (”growth engineering”).
Why we have a dedicated “Growth engineering” team
While some companies have an engineering team that occasionally works on growth engineering tasks, we believe the work of growth engineering is so important that we should have a team dedicated entirely to this high-priority work.
The following are areas owned by growth engineering:
- The billing and subscription management system
- Our marketing automation system (including email marketing)
- The onboarding checklist, guides, and helpers inside the core application
- Our marketing website (www.visor.us)
- Our landing pages for SEM
- Our blog
- Our template system
- Our knowledge base & video guides
- The telemetry and analytics systems across the entire ecosystem
How this team collaborates with others
As a member of Visor’s growth engineering team, you’ll be a business-minded engineer. You’ll need to understand the principles of marketing applied by your colleagues on the marketing team. And you’ll be the bridge between marketing & growth goals and engineering implementation. You can expect to work cross-functionally with content marketers, digital marketers, product marketers, product managers, and designers.
For example, Visor’s main strategy for acquiring customers is based on inbound marketing. Our goal is to make it likely that customers will easily find us when browsing online for solutions to problems our product solves. While our marketing team will be focused on ensuring our content improves our ability to rank in searches (SEO), our growth engineering team will be responsible for choosing and maintaining an architecture that boosts SEO. And you’ll be collaborating with the others to ensure that everything we do connects in a way that maximizes SEO — from product release notes to email marketing.
How this team collaborates with the core application engineers
Given our scale, it will still feel like we have just one engineering team. We’ll still meet all together (typically for 3x per week standups). We also share the same planning and pipeline for work. The main difference is just regarding what priorities each team takes on.
Our tools for growth engineering
Here are some of the technologies we work with today:
- HubSpot
- Stripe
- Salesforce
- Google Ads
- Metabase
- Webflow
- Vimeo
We’ve also built many in-house solutions, including for:
- In-app analytics and telemetry
- Onboarding checklists
- Feature explainer guides
- Video tutorials
About Visor’s engineering culture & collaboration
Our founder, Mike, was our very first engineer. He wrote a substantial portion of Visor’s main architecture — including the front-end SPA and the the architecture of the realtime data layer that powers Visor’s collaborative spreadsheet. It should come as no surprise, then, that engineering is a highly-valued part of Visor’s team and culture.
While Mike doesn’t code regularly anymore, we build with a balanced approach between a scrappy startup with minimal process to a mid-size company with some automation and systems in place to create order and predictability. While we maintain high standards, we organize and manage our engineering team with the empathy that comes from having been in the trenches.
Code collaboration & CI/CD
We use Github for code collaboration with mandatory PRs and code reviews before anything makes its way into the product. In the repository for our front end, we have an env/dev
and env/prod
branch. PRs merge into env/dev
, after being reviewed by at least one more team member. Merging into env/dev
automatically deploys the front-end to a staging environment. We then create PRs to merge env/dev
into env/prod
for each release. We release generally as soon as we have updates to push, which varies depending on the scale of the projects we’re working on and the scale of our team. We will generally release at least three times per week.
Quality
We currently run human testing for QA, since the foundation of the product has been moving a bit too quickly for us to make use of more automated E2E testing. We’re actively considering ways to improve our efforts around QA.
Project management
We use Jira for project management. And, of course, we use Visor as a way to organize, plan, and communicate about our work for a given week. We use a kanban-like approach — each week we plan out the work we’d like to have ready for engineering. And then the engineering team will meet up periodically during the week to divide up the work.
Design collaboration
We use Figma for design and Zeplin for design documentation.
Our stack
Our front-end uses VueJS (2.7) and deploys via AWS Cloudfront for all static assets. We aggressively use code splitting to reduce bundle size. We maintain our own UI library, which has its own repo and gets included in our main front-end repo as a Git submodule.
Our back-end is split across about 12 different services, each of which has its own repo and deploys via AWS elastic beanstalk to auto-scaling environments. We use Python + Django for our back-end. We generally use Postgres for persistence, with Redis + Celery for our queues.
We’ve built our own realtime data engine atop Postgres, which we call CloudStore. You can read more about CloudStore in our blog posts (part 1, part 2, part 3) and our explainer video.
We use AWS API Gateway to manage our sockets, which power CloudStore’s realtime data engine.
We have an in-house data warehouse running on AWS redshift, which is where we send our telemetry data from the product (via a custom-built telemetry engine).
We maintain documentation in our internal Notion workspace. All engineers are asked to maintain this source of truth. This is also a critical resource we use for onboarding new team members.
Work & life balance
To learn more about Visor’s engineering culture and how we think about balance, please check out this interview with Patrick Shanley, our Principal Software Engineer:
You + Visor: A Perfect Fit?
The following outlines Visor’s initial screening process for candidates.
30-Minute Phone Call Screen with Visor’s Talent Lead
- Call with our Community & Talent Lead
- Confirm that you are legally authorized to work in the United States (without requiring Visa sponsorship)
- Discuss your timing and where you are in the process of finding your next opportunity
- Share any salary expectations you have and confirm that you understand the salary range posted for your role
- Discuss the specific skills and talents you have related to this role
- What qualities are you looking for in the person you hire for this job?
- What are the location expectations for this role?
- How would you describe the company culture?
The phone screening portion of the interviews usually begins with a brief conversation with our community & talent associate. You can expect to chat about your interest in this role, motivation for looking for a new role, and your search timeline. The goal is to confirm a high-level fit. Please be ready to:
If our Community & Talent Lead decides to proceed, we’ll schedule the next conversation with our founder.
What success looks like
These calls are helpful for information gathering. We’re looking for your honesty and want to ensure that you’ll be happy with the role, and that we’ll feel that you may be a good fit for it based on your interest and experience.
Role-specific topics for engineering candidates
On these screening calls, you will not be asked to code or otherwise tested on your knowledge. However, please be ready to talk about the technologies you know best and what types of projects you have worked on recently.
Technical interviews at Visor
Overview
We believe that the technical interview should serve both of us as we get to know each other better and determine whether there’s a fit. We’re not looking to necessarily test the depths of your knowledge about esoteric programming concepts or language quirks. We do not conduct LeetCode interviews. What we are looking for are the very brightest engineers who can learn effectively, think quickly, communicate clearly, and solve problems elegantly.
Our technical interview seeks to provide us an opportunity to see how you approach day-to-day programming in a collaborative environment. It consists of two sections across two 60-minute interviews:
- Reading a specification document and implementing code to match
- Reading code that was written by someone else, understanding how it works, fixing problems, and adding new features
Our assessment is designed to closely mirror actual work and provide opportunities for us to collaborate together on the exercise.
How we conduct the interview
We’ll conduct the interview over Zoom. We’ll ask that you remain on-camera and remain unmuted during the entirety of the interview. We may ask that you use your webcam (without any simulated background) to show us your surroundings and ensure that there are no other people in the room with you.
We will record the call for review by additional Visor team members. On the call, you’ll be asked to open a browser window to a CodeSandbox link, where the exercise will take place, and share your screen via Zoom so we can collaborate together.
The interview will be entirely in JavaScript. You should have familiarity with all ES6 language features, as some may be necessary to complete the exercises. There will be no HTML or rendering components to these exercises — they will just print their results to the console.
Section 1: Writing code according to a spec document
The first section of the interview will assess how well you can read a spec document and implement the module described. In this section, you’ll build a javascript class that represents a utility module with certain behaviors. This section is split into 5 parts, each of which builds on the last. You’ll need to complete each part before proceeding to the next. The parts grow more difficult as the interview proceeds. All 5 parts of this section can be completed within 60 minutes, but occasionally more time will be needed and spill into a potential second round technical interview. During the entirety of this section, you’ll be asked to speak aloud as you’re solving the exercises.
The first round of the technical interviews will be complete after this section is complete (or the end of the first 60 minutes, whichever comes first). Your interviewer may review the recorded call with additional colleagues before providing feedback on the interview. We will get back to you within 2 days. At this time, the interviewer will confirm if you’ll be asked to participate in the second round of the technical interview.
Section 2: Reading code written by someone else and improving it
The second section of the interview will assess how well you can read code, understand it, and build on it. During this exercise, you’ll be presented with a Javascript file that is poorly documented. You’ll be asked first to read the code and explain what it does to the interviewer. The goal isn’t for you to explain what the code actually does but rather what the function of this module seems to be. From there, you’ll be asked to identify and fix bugs in this code. And then you’ll be asked to add new functionality to this.
How you should prepare
How you’ll be evaluated
We’re looking for the following:
- How well we communicate together during the exercise
- How well you can think and learn
- How well you can follow the specifications of the exercise
- How quickly you can write code
- How well you can understand abstractions and object-oriented programming
- How well you write code (accurate, free of errors, simple)
- How comfortable you seem writing Javascript
Role-specific tips for the Senior Software Engineer, Full Stack (Growth) position
We run identical technical interviews for members of our core application engineering team and our growth engineering team. That’s because our technical interview is designed to test your general cognitive abilities — not necessarily any specific knowledge you have.
Here are some important topics that may come up on our technical interviews:
- Classes
- Promises
- Symbols
- Proxies
- Arrow functions
- The … operator (rest/spread)
- Maps / Sets
- Default parameters
- Arrays
- Strings
- Dates
- Scope & hoisting
- Debugging
You’ll have an opportunity to demonstrate your specific skills relevant to this engineering team later in the interview process during the take-home project.
Take-home project
Overview
We believe the most effective way to determine how well we’d work together is to actually try it. That’s why we’ve included a collaborative take-home project as part of our interview process for all positions.
Compensation
We value your time and have built in a compensation component to all our projects to show you that we mean it. All take-home projects are structured as consulting projects with a $175 flat-rate compensation attached to them. In order to be eligible for this compensation, you’ll be asked to sign Visor’s standard consulting agreement before you begin work. The general time estimate for Visor take-home projects ranges from 5 to 10 hours.
The general schedule
The take-home project consists of two meetings: a 30-minute kickoff and a 30-minute presentation (followed by a Q&A). You’ll do your work on the project between these two meetings. Typically we like to give all candidates about one calendar week to work on the project, but we can be flexible based on your schedule — planning on less or more time.
Kickoff meeting
During the kickoff meeting, you will receive a set of instructions about a project that is specific to your role. You’ll review these instructions live on a video call with your interviewer. In the most productive of these kickoff calls, the candidates begin some planning work together with the interviewer. Please use this as an opportunity to ask questions you need to help you complete the project (you are also encouraged to follow up with additional questions during the course of your project work). At the end of this kickoff, we’ll schedule the presentation meeting.
Completing the project
The principle behind the take-home project is to see how well we work together. As such, you are expected to check in about your progress during the time between the kickoff and the presentation. Candidates who succeed during these projects are typically the ones that engage in the most conversation with the Visor team during their work.
Presenting your work
During the presentation, be prepared to walk through your work and how you met the expectations of the assignment. Your interviewer will ask you follow-up questions to explain your work. Please deliver your project in a way that can be shared after this meeting with other members of the Visor team.
What success looks like
The take-home project is helpful in determining your ability to execute in a real-world scenario akin to those we experience at Visor. We will gauge how well you understand the core requirements of the problem statement, assumptions you make in the process, and your ability to explain how the deliverable may fit into the larger product strategy.
Role-specific notes for the Senior Software Engineer, Full Stack (Growth) position
The take-home project for growth engineers involves creating a ground-up system for enabling non-technical marketers to quickly create stylish, SEO-optimized landing pages. You’ll be asked to use VueJS and design a system.
We’ll provide more information to you when you get to this point in the interview process.
Team interview
Overview
Our team will conduct a 90-minute interview with you. Our goal is to get to know how you interact with various team members that you’ll work with cross-functionally. We’ll chat about all facets of the Visor product, ecosystem, organization, and culture.
What success looks like
At the end of the day, we’re a team comprised of very real people who come from different backgrounds with a shared purpose of collaborating together in the hopes of building something of value for lots of people. We all approach each other with honesty, openness, curiosity, and support. We ask that you approach this conversation from a place of honesty and vulnerability. We’re aiming to build a rapport, and to find out how you can become a culture add to our team. We’re looking for signs of your passion, drive, and commitment to our cultural values. You’ll earn bonus points if you demonstrate you’ve read this by mentioning “EPIC Drive,” our cultural values, during the part of the team meeting when everyone is together.
FAQs
How long does the software engineer interview process typically last?
What happens if you can't solve all the problems in a software engineer interview?
Tips for software engineer interview success
Keep the following in mind when preparing for your Visor engineering interview.
Talk through your thinking and ask for help
We’re all in this together, and we need to be able to communicate clearly and help each other. A critical part of succeeding on our team is having strong communication skills. That means being able to explain things clearly and also ask for help when you’re stuck. Our interviews are made to mock real-world work, so don’t treat them like independent tests. Ask your interviewer questions.
Show us your cognitive abilities
Building a company is all about figuring out hard, new problems. As a result, we’re looking to hire team members who don’t just know how to write code in languages they know but also know how to solve unexpected problems. Let your intelligence shine through. Tell us more about your academic achievements that demonstrate your cognitive abilities. Or show us your intelligence by communicating very clearly as you’re solving the problems in our technical interview.
Show us your drive to build
Early-stage businesses like ours depend on everyone on the team being driven to build a great business. And that means building an engineering team of builders — people who don’t just want to close Jira tickets but actually want to see something new exist. Show us that you are driven and motivated to do more than punch in and punch out.
Show us your passion for technology
Visor’s solving real, hard technical problems at the forefront of technology. We’re at the scale where we need our early employees to have a wide knowledge of technology and engineering to enable clever problem solving. Show us how you’re passionate about technology — so much so that it’s more than just what you do for your career, it’s a part of who you are.