We’re hiring a Principal Software Engineer to join our team. Our Principal Software Engineers have extensive engineering experience and have contributed significantly to the development of multiple large-scale enterprise systems throughout their career. Our principal engineers are trusted advisors in all areas—to their project teams, Tandem clients, and the Tandem leadership team. Read on to learn about us, what it’s like to work with us, what we’re looking for, and our hiring process.
Tandem is a technology and innovation studio that specializes in product definition, custom software, and software managed services. We create custom software that inspires people and drives business forward. As a talented group of thinkers and makers from many disciplines, we are brought together by a shared goal: bring talented designers and engineers together to solve meaningful business problems. We always focus first on people — our clients, their customers, and our team — by collaborating to solve meaningful business challenges. We enjoy designing and building ambitious digital products and tools.
As a consultancy, we have the opportunity to solve a lot of different problems. We work directly with our clients in small teams, building and providing guidance on products, and collaborating with designers. Our unique approach to consulting leads to a better developer experience and a higher quality of work life.
As engineers, we love well-tested, maintainable, and clean code! We are always encouraging each other to write better code through pair programming and code reviews. We’re generalists and strive to make sure that we’re choosing the best technology to solve our clients’ problems. Right now we’re loving Postgres, Rails, and React as our greenfield tech stack, but we occasionally have projects in the Python, Java, .NET, Node, iOS, or ReactNative ecosystems. Nothing is off-limits, so we never turn down the opportunity to learn a new technology!
Our vision is to create a supportive, collaborative environment and empower people to deliver work they’re proud of. At Tandem, everyone teaches and everyone learns. Egos are low, and we're all genuinely interested in seeing everyone else succeed.
We would love to hear from you if you
- Have contributed to architecture decisions on multiple large-scale applications during your career
- Have an expert proficiency in multiple full stacks, including relational database, server-side framework, and client-side framework
- Excel at making complex relational data modeling decisions
- Are confident in your ability to advise and consult stakeholders on your decisions
- Believe in continuous integration and continuous development
- Have experience working in an agile development process
- Love to learn and look at challenges as learning opportunities
- Value a breadth of knowledge and enjoy being a generalist developer
- Delight in problem solving and strive to make the best decisions for the problem and information at hand
- Are excited about software testing and always ship well-tested code
- Align with our core values and genuinely want to do work that makes a positive impact
Our career levels and responsibilities are cumulative. For a full list of responsibilities, please check out our Software Engineering Career Path.
Responsibilities- Successfully plan and deliver complex, multi-team or system, long-term projects, including ones with external dependencies
- Serve as technical lead on projects which includes:
- Making technology selections
- Establishing architecture
- Managing the workload and work assignments of other team members while staying conscientious of individuals’ strengths, weaknesses, and goals and playing to these when managing work assignments
- Collaborating with design and/or product leads on scope and definition
- Contributing to the Project Weekly meeting
- Ultimately shepherding the execution of the technical vision of the project
- Provide strategic guidance to clients outside of the realm of pure technology, including: organizational design, process, hiring, digital transformation, legacy systems, etc.
- Consistently prioritize the “big picture”: thinking about systems and architecture and how choices impact the client and project team in the long-term
- Guide large-scale and long-term refactoring at the application, system, and infrastructure levels while supporting and coaching other team members
- Decompose large-scale enterprise systems and architectures in an easy to understand way for other team members
- Advocate for software testing practices and CI/CD implementations with other team members and with clients
- As an individual contributor, deliver code with complex error handling logic, including useful reraises, logging, and very few if any fatal exceptions
- Provide detailed documentation for your work most of the time, including PR descriptions, commit messages, README updates, or content in the project management tool with the goal of educating and mentoring your team members and clients
- Have advanced technical mastery of multiple languages and frameworks, and competency with a breadth of others
- Delegate implementation work to appropriately-leveled team members to meet project needs and grow their skills
- Collaborate with design, product, and other disciplines on the scope and definition of architecture, systems, projects, etc
- Establish trust with clients as a strategic advisor in matters of process, people, and product in addition to technology
- Navigate and resolve ambiguity at both the technical and business levels while supporting and coaching other team members
- Proactively identify strategies to add business value for clients, both within and outside of technical solutions
- Create opportunities and sponsor your team members to lead initiatives within your project
- Provide support and coaching to less experienced team members on technical implementations and strategies for client engagement
- Make highly effective use of delegation and team management to achieve success
- Adeptly use pairing as a mentorship and coaching strategy with other team members
We care deeply about our team and strive to provide flexibility and benefits so each person can prioritize the things they care about.
For example, our core working hours are from 10am-4pm in your local time zone. The goal of core hours is to ensure that we can pair and collaborate in a high-bandwidth way during the majority of our workday while allowing us the flexibility that real life requires. You may notice that 10am-4pm for five days doesn't add up to 40 hours - yet 40 is generally what we expect to do. How you organize your work time outside of core hours is at your discretion, whether this is early mornings, late evenings, or weekends (though weekend work is not recommended).
Our other benefits include
- Healthy work/life balance with no overtime requests
- Competitive annual salary
- 100% employer paid medical, dental, and vision plans for employee, spouse, and family
- 100% employer paid life insurance policy
- 100% employer paid short-term and long-term disability insurance
- 3 weeks of paid time off to start, increasing by 1 week each year up to 5 weeks off
- 3 paid conference days each year
- Annual learning budget for conferences, courses, online training, books, etc.
- Eligibility to enroll in the Tandem retirement plan with 3% employer matching after 6 months of employment
For a full list of all benefits and employment policies, please check out our Company Handbook.
Our hiring processWe use a 4 step process.
The first step in our process is to fill out our application form. You will be asked a few questions on that form. We value thoughtful responses and will disregard applications without them.
If we decide to move forward, we’ll follow up with you to schedule an initial phone screen with one of our engineers. Our phone screens are non-/low-technical. We won’t be grilling you on database design but are interested in learning about your career trajectory, professional experiences, and what interests you.
If that goes well, we’ll send you our take-home code challenge. We know that everyone has different responsibilities and priorities in life, and we want to give you the time you need to shine. You will have 10 days to complete your challenge and submit it.
Once submitted, we’ll do an internal code review to determine if we’d like to do an in-person interview. If we choose not to move forward, we’re happy to schedule a call for feedback.
Finally, the last step in our process is a remote in-person interview. You’ll have the chance to meet with many of our team members, extend your code challenge, pair with us on real clients and problems that we’re solving that day, and participate in a consulting challenge.
Who you’ll be working withTandem's team members come from diverse and nontraditional backgrounds. We support one another in our careers, and are working to achieve inclusivity across the technology industry. Learn more about our culture on the Tandem blog:
- We've embraced salary band transparency and ensure our accountability through regular independently conducted pay equity audits
- We pair program every day and prioritize empathy in our pairing practices
- We build each other up and combat imposter syndrome, stereotype threat, and the confidence gap
We don’t want to miss great candidates. Don’t let doubt deter you from joining our team. Don’t know what level you should apply for? Check out our career paths for common benchmarks to help you determine what level is best for you.
PLEASE NOTE: applications which do not include thoughtful responses to our application questions will be disregarded.