Principal Software Engineer

Do you want to work on meaningful and challenging medical device projects in an environment where code quality matters? Do you want to work on a team that values continued learning and takes pride in our craft? We're a growing, fully-distributed medical-device software firm. We're looking for a principal software engineer who can manage and mentor a small team of engineers and communicate with clients to refine vague requirements.

The salary for the position is $145k - $190k/year, depending on your ability and experience.

Who are we looking for?

It is required that you:

It would be nice if you have:

How success will be measured

Your success as a principal software engineer at Innolitics will be measured along three axes: First, by the value, and perception of this value, you provide to our clients. Second, by the technical and professional growth of the engineers on your team. Third, by your contributions to Innolitics' mission via business development. Each of these three axes are discussed in more detail below.

You'll be directly responsible for one or more client projects. We want to impact the world—our work is our vocation. Thus, we measure our success by our client's ability to bring useful medical devices onto the market. To do this, we must add value to our clients through our work. This isn't enough though. If our clients are going to be happy working with us, they also need to be satisfied with our adding value. Client Satisfaction = Perception - Expectations. You'll need to build the trust and respect of our clients over time, so we can increase our impact. Sometimes adding value requires ruffling feathers and having difficult conversations about tradeoffs, timelines, or bad technology.

Many of our clients are startups. You'll need to learn about their business needs and help them define the device requirements, which are often vague or unknown. If we're building exactly what the client asks us to build, we're probably not doing our job.

You'll be responsible for managing and mentoring other engineers on your projects. This means reviewing pull requests, holding one-on-ones, and conducting performance reviews. Your goal will be to help the people on your team grow and expand their skills quickly, delegating tasks that are just on the edge of what they're able to accomplish. You'll be responsible for training your reports through 10x lessons. You'll also be responsible for creating new 10x lessons as needed.

Typically you'll be most technically involved with projects early in the life-cycle, helping identify key requirements, sketching rough UI designs, making key architectural decisions, and documenting all of this. You'll also be responsible for managing the software process. As the requirements and architecture progresses, your involvement will gradually decrease as you delegate more of the work to your engineers.

Beyond your work with clients, you'll also be involved with hiring and training. You'll also be responsible for identifying ways we can provide more value to existing clients.

Your first 90 days

We recognize this role requires a lot of skills, and you likely won't have all of them. Thus, for your first 90 days you'll split your time between intensive training and working on a client projects. You'll be working closely alongside David or Yujan, working through some of our 10x lessons, as well as reading a lot of background material.

Our on-boarding reading list includes:

The first few months will require a good bit of outside reading time, but after the initial hump our goal is to have the hours load drop to 45 hours/week (most of our engineers are only expected to work 40 hours/week). Anything beyond this will be paid according to our overtime policy

To begin with you'll focus on a single client project. You may also work solo for a while, but the reason we're looking for a principal senior engineer is so that, eventually you'll be able to manage two or three client projects each with one or two engineers dedicated to the project.

How you’ll work with us

Work on something that matters

We only work on fulfilling projects—ones that we believe make the world a better place. For example, our current projects include software for radiation oncology clinics, a startup building an medical device to detect ear infections, open-source software used by neurosurgeons and researchers, software for tracking metastatic cancer, and several other interesting projects.

You can see past projects in our portfolio.

Flexibility to move

We've been entirely remote from the start, and we plan on keeping it that way. You can live wherever you want within the United States except California, Alaska, and Hawaii, and you must be authorized to work in the United States. We strongly prefer that you won't move within your first year on the team, to reduce our tax and accounting overhead.

Paid time off

We typically provide two weeks of paid time off your first year, three weeks your second and third years, and four weeks for each year after that. We are open to swapping a few weeks vacation time for a lower salary. If you are interested in this, let us know.

We encourage you to use it. We recognize that happy and well-rested engineers are successful engineers. We only ask that if you go somewhere exotic for vacation, you share photos with your co-workers!

The Innolitics retreats

We meet once each year to have some fun and get face time with one another. The retreats usually begin Thursday afternoon and end Saturday afternoon. The destination always changes. Previous retreats have been in Austin, Nashville, Dallas, New York City, Boulder, Houston, Los Angeles, and San Francisco. Typically we rent a large Airbnb for the entire team (although this is becoming more challenging as we grow).

Up your game

We invest in the personal and professional development of all our team members. We dedicate two and a half hours on Wednesday afternoons to ongoing learning. We use this time to learn about new tools and techniques and discuss a wide array of topics related to our field. Here is a list of our previous learning topics; it's OK if you are unfamiliar with these topics, but they should interest you.


We provide a 401(k), with Traditional and Roth options. Innolitics contributes 3% of salary per year to your 401(k) once you've worked with us for 6 months, and that money vests immediately. The 401(k) plan includes very low-cost index mutual funds, and we cover all the plan costs.

We provide company health insurance (read more about this in our handbook).

We offer bonuses based on performance-milestones and company profitability.

We reimburse internet costs up to $100/month and provide a $500/year equipment stipend.

Our company handbook

Our company handbook contains a lot of useful information about how we work. Please feel free to browse through it if you are interested.

How to apply

  1. Complete this coding quiz. It should take less than 30 minutes to complete. Include your email and full name with the quiz, and please only start and submit a single response
  2. Write a cover letter, introduce yourself, and explain why Innolitics and this position in particular interests you and why you are a great fit. Please include your preferred start date and the state you live in. Include links to projects you've built (or anything else that makes you look good), and describe your role in building them. If they’re internal projects, you can skip the link part.
  3. Include your resume in your email.
  4. Email the cover letter and resume to after you have completed the coding quiz. Use the same email you used when performing the coding quiz.

We look forward to hearing from you!

Next steps

We will try to review your coding quiz submission, cover letter, and resume within five business days of receiving it. If we feel that you are a good fit for the position, we will contact you and schedule a 45-minute phone call. If we don't feel you are a good fit, we will let you know that too. Due to the large volume of applications we typically receive, if you don't follow all of the instructions above, we may not respond.