The Handbook

The Handbook

Our mission 🔗

Our mission is to accelerate progress in the medical device industry by

  • providing quality services to our clients
  • creating tools
  • sharing knowledge
with the ultimate purpose of improving patient health.

We do so while providing meaningful, flexible, and financially rewarding careers to our team.

Intended audience 🔗

This handbook describes how we develop great software while maintaining meaningful, flexible, and financially rewarding careers. We wrote it for a few different audiences.

  • If you are considering joining us, this handbook should help you make your decision by providing insight into how we work.
  • If you just joined us, this handbook should contain everything you need to know to hit the ground running. We’re excited that you’re on the team.
  • If you have been with us for a while, then you’re probably checking to see whether Black Friday is a company holiday (it is).
  • If you have hired us, this handbook may be rather dull, but we’re glad that you are curious about how we work.

This handbook is hosted in a git repository. If you have a question that you wish the handbook answered, let us know. Please make a suggestion in #general if you’re a team member, or email us. Team members can also submit pull requests with proposed changes.

Please note that links to the GitHub repository, Slack, and Notion are only accessible to Innolitics employees.

Our values 🔗

Our values guide our work. They are a starting point for conversation, although we recognize they can be in tension with one another. Our company values are to:

Pursue the why 🔗

  • We understand the purpose of a feature before implementing it, so that we don’t waste resources when more effective solutions may be available.
  • We don’t just hack our way through problems.
  • We aren't satisfied knowing that it works; we want to know why it works.
  • We view each system logically and without superstition—there is no magic.

Continue improving 🔗

  • We continually improve ourselves and our processes.
  • We seek projects that will provide us with an opportunity to learn.
  • We spend time most weeks learning and discussing topics related to our work.
  • We document our work to learn and share knowledge.
  • We experiment with new technologies to know which are the best tools for any job.

Do quality work 🔗

  • We make time for detailed, in-depth code reviews.
  • We write automated tests to guide our design and ensure our code continues working.
  • We write code that is as simple as possible for others to understand.
  • We make the time to design a good system architecture from the beginning.
  • We strive to make our regulatory and quality procedures add value beyond mere compliance.

Keep efficiency in mind 🔗

  • We add value by identifying work we don't need to do.
  • We take calculated regulatory and engineering risks to save time when it doesn't impact patient safety.

Treat our clients ethically 🔗

  • We don’t provide unrealistic project estimates to close deals.
  • We educate our clients so they can make good business decisions, never exploiting a lack of technical or regulatory expertise.
  • We recommend partner firms if we believe they would be more appropriate in addressing a client’s problem.
  • We write code that can be maintained economically, even if not by us.
  • We use technologies with our client's best interests in mind, even if said technologies are less appealing to us as engineers.

Keep patients and users in mind 🔗

  • We create devices that we'd feel comfortable using on our grandparents or children.
  • We strive to understand our users' needs; we want clinicians to love our devices.
  • We only work with clients who prioritize patient-safety and cybersecurity risks.

Communicate clearly 🔗

  • We write clear, professional, and unambiguous external communication.
  • We invest in improving our writing, presentation, and conversational skills.

Be responsible for our work 🔗

  • We follow through with our commitments.
  • We don’t leave broken code, even if we didn't write it ourselves.
  • We try to solve problems before asking for help, but we also know when to ask for it.

Be pleasant to work with 🔗

  • We help each other grow.
  • We compliment others when they do good work.
  • We do not complain.
  • We don’t dump our work on others.

Respect the autonomy of fellow team members 🔗

  • We avoid micromanagement.
  • We value logic and reasoning over seniority when making technical decisions.
  • We avoid prescribing solutions to a problem upfront; we give people breathing room to make safe mistakes and explore new ideas.

Make the world better 🔗

  • We work on projects we believe will make the world better.
  • We financially contribute to open source projects that we use.
  • We create open source tools to help others in our industry.

Enjoy our work, and relax 🔗

  • We want everyone on our team to find their work to be meaningful.
  • We provide a flexible work environment.
  • We love working with talented people, regardless of their age, gender, race, ethnicity, sexual orientation, or background.
  • We push back on unrealistic deadlines.
  • We encourage vacation to maintain a sustainable workload.

How we refine and enact our values 🔗

We suspect most of these values are not controversial. Still, if you disagree with any of them, or if you would like us to add or modify any of them, please initiate a discussion! Here are a few examples of how our values have changed over time:

  • After we hired our first developer, we added “We love working with talented people, regardless of their age, ethnicity, sexual-orientation, or background”. A few months later we added “gender” to the list.

  • We added “We financially contribute to open source projects that we use” to the list because, as a profitable company that uses many such projects, we feel we should give back.

  • We clarified “We write automated tests to ensure our code works (and continues to work)” by rewriting it as “We write automated tests to guide our design and ensure our code continues working.” This is to highlight our belief that tests not only help catch bugs but also improve our designs.

  • Originally, one of our values read: “We don’t prescribe solutions to problems; we allow developers to independently discover their solutions first”. After some discussion, we changed this to: “We avoid prescribing solutions to problems upfront; instead we prefer to let developers independently explore their ideas first.”

    We did this because we realized that sometimes it’s too time consuming to let everyone to explore their solution—especially junior developers working on problems that have been solved many times already. Here, we believe it can make sense for the more experienced developer to prescribe a solution upfront. We prefer to have junior developers find their solution first because it’s educational and can lead to better solutions (perhaps a new technology was recently developed, or the junior developer comes up with a new approach).

  • This last example highlights that many situations we run into as developers aren’t black-and-white. Our values form a foundation for discussion, but are often in tension with one another. Another example of this tension can be seen between “We experiment with new technologies to know the best tool for the job” and “We use technologies with our client’s best interest in mind, even if said technologies are less appealing to us as developers.”

Most importantly, if you feel we aren’t following our values, say something! It’s essential that you say what you think. For example, several months after adding our commitment to contribute to open source software, we still hadn’t done so. Someone brought this up, and in response we set up our open source contribution page.

Medical device software services 🔗

We love developing medical device software. Our work helps doctors diagnose and treat clinical patients and assists researchers in making breakthroughs in the lab. We believe that software has the potential to transform the medical device industry, and we’re excited to be front and center in this transformation.

Medical device software is a specialized field, so we don’t expect everyone who joins our team to have a strong background in it. Many of our projects have challenges that aren’t unique to the medical device industry. That being said, you do need to be interested in medical devices and have a desire to learn more to be a successful part of our software team.

Very occasionally we accept projects that are outside of the medical device domain if there is a strategic business reason to do so.

Our team 🔗

We’re a small team of fifteen full-time members as of August 2022. We plan on substantially growing the company over the next few years.

Working on a small team means we have relatively little structure and more personal responsibility. As an early member of our team, you’ll have the opportunity to grow with the company and influence how it develops.

We are fully distributed 🔗

We are a fully distributed company. We don’t have a central office, and most of our communication occurs in Slack, video calls, and email.

A fully distributed company encourages everyone to focus on their value-add instead of hours worked; value-add is more visible than extended hours in a distributed setting.

It’s more difficult to develop strong relationships with a distributed team because we can’t grab a beer after work or chat in person. There are a few ways we alleviate this. The first is via conversations on #random. Next are our 10x discussions about various medical device and programming topics. Finally, we have retreats once a year. More about these last two items in a bit.

Project structure 🔗

We work on projects of varying sizes. Our typical engagement lasts about a year, although we’ve been working with a few for several years. Typically, you’ll be assigned to a single project at a time.

Each project has a project lead who is ultimately responsible for its success. This person’s responsibilities include:

  • Being the main point of contact for the client
  • Making sure there is someone to step in as main point of contact if they will be unavailable (e.g., on vacation)
  • Advocating for the client’s happiness to the group (e.g., if the project could use some extra resources to meet a deadline)
  • Relaying to the group which tasks need to be accomplished on the project (during planning meetings, as well as when unexpected items come up during the week)
  • Organizing tasks in the project management tool and tracking deadlines
  • Facilitating discussion regarding the proper tech stack to use on a project.

We usually have client progress meetings on Mondays, with additional meetings as necessary in any given week.

10x Time 🔗

On the first Wednesday of each month we have company-wide announcements and a few teams present a demo of their work.

On other Wednesdays we hold a group discussion from 3:00 – 5:00 PM CT. Each week there’s a “10x Archon” who decides on the format and guides the discussion. Often we’ll discuss an article, video, or book chapter. We try to pick topics that are fun, interesting, and will make us better developers. You can see a list of our previous discussions here.

If you don’t want to spend your 10x time in the group discussions, you can also spend the time on independent learning. All team members receive a budget for learning time, which we refer to as 10x time. Thus budget resets at the end of each month.

See the 10x Time SOP for full details.

Innolitics library 🔗

When you join Innolitics, you will be given access to the Innolitics Library. It includes a variety of articles, standards, and books about medical device regulations, DICOM, and other topics.

Writing articles 🔗

In addition to 10x time, another great way to continue learning and growing is to write articles for our website.

See our article writing SOP for details about the process.

Retreats 🔗

Meant for Innolitics employees only, we meet once each year to have some fun and get face time with one another. Each retreat usually begins Thursday afternoon and ends Saturday afternoon, with the destination usually changing. The company covers your travel, housing, and food. We discuss the dates and destinations in the #retreat channel to ensure the retreat does not conflict with anyone’s schedule. People often delay their flight back and make a long weekend or vacation out of the trip.

Unless there is a very good reason (and please let us know as soon as possible), everyone is expected to attend each retreat.

You can view (and upload) photos from previous company retreats and events here. Please do not share these photos on social media.

Travel 🔗

We usually work in a distributed environment. However, sometimes our client work also requires us to travel for kickoff or design meetings. Usually these sessions are short (just a few days), with such meetings being rare. We expect every team member to be able to travel from time to time within the US.

Reimbursements 🔗

We reimburse for travel, food, transportation, and accommodation expenses.

If you care for a dependent (e.g., child, elderly person, person with a disability), and have to pay for care while you are on a company trip, we will reimburse up to $100 a day for the cost of care.

See our Reimbursements SOP for details about requesting reimbursements.

Moving 🔗

Part of our mission is to provide flexible working conditions for everyone on our team. This includes the flexibility to move without changing jobs.

If you move within the same state, please be sure to update your address in Gusto.

If you’re considering moving to another state, please discuss this with a partner at least two months in advance. Due to complicated labor laws and tax implications that vary by state, we can’t guarantee we can support every move. The chances are high that we can, and we’ll try hard to make it work one way or another, but the earlier you discuss your proposed move, the better.

Also, be sure where you’re moving has good internet options; since we work remotely, it’s your responsibility to ensure you have reliable internet. Ideally you’ll have two providers to choose from.

Flexible schedules 🔗

One of the perks of working on a distributed team is enjoying a flexible work schedule. Because of this, sometimes we’ll take off during the week but then make it up over the weekend or in the evenings. Also, sometimes it’s convenient to work on a holiday and instead to take off another day. Some people like sleeping in really late and working in the evenings. Other people like working four 10-hour days instead of five 8-hour days.

While we value having a flexible work schedule, this doesn’t mean we can work anytime we wish.

  • Everyone should be available for our 10x discussions.
  • Everyone must be flexible enough to make client meetings. We try to schedule these on Mondays, this varies from project to project and some clients have more meetings than others. (E.g., occassionally we’ll have clients with daily standups.)
  • To some degree your work hours must overlap with the hours of other team members working on a project. This is important to ensure that code is reviewed promptly and that timely communication can occur.
  • All else being equal, it’s best to work weekdays during the mornings and afternoons.
  • If you need to miss a client meeting or one or more days of work due to a personal emergency, please notify your manager as soon as you can.

Work and development environment 🔗

Once again, although we value flexibility, we do require everyone to have a mostly distraction-free work space with fast internet. It is important to be able to take unscheduled calls with team members. This requirement is somewhat gray, so here are a few examples:

  • An occasional client call in a coffee shop is okay, but its not okay make a coffee shop your office. Coffee shops have significant background noise and tend to have poor internet connections.
  • It’s expected that when you work from home with young kids that they will occasionally interrupt you. However, it is not acceptable to be the primary child care provider during your working hours.
  • It’s okay to work in the public area of a co-working space, so long as it’s mostly quiet and you have a quiet place to take client calls.

Many of our projects can be worked on using any operating system and using your computer of choice. However, some projects require specific operating systems (e.g., Windows), and others may even require us to work on a corporate laptop provided by their IT department and to follow their best practices. Other projects require some small medical equipment. In all cases we will purchase any required equipment, but be aware that your workspace might need space for an additional equipment.

Performance reviews 🔗

Innolitics has mid-year and end-of-year reviews.

When you join our team, we’ll set up a private Notion page, your “Home Page,” that is only visible to partners and you. This document will record notes from your reviews and any one-on-one meetings. See the Performance Review SOP for details about the procedure.

Performance improvement 🔗

We provide prompt feedback when there are performance shortfalls. Timely feedback ensures no one has to wonder if they are performing well, and problems can be addressed before they grow.

If your performance is insufficient for your position for a sustained period of time, such that you are in danger of losing your job due to the shortfall, you will be informed as soon as this becomes apparent. As part of this conversation, we will work with you to develop specific and measurable improvement goals and a realistic timeline for meeting them. We note that some performance shortfalls require a more subjective evaluation of improvement. In these cases, specific and measurable goals may not be possible, but we will be explicit about our expectations wherever possible.

Coding best practices 🔗

Please read through our Coding Philosophy and Best Practices.

Information security 🔗

Our information security policy is on a separate page.

Communication tools 🔗

Each of the sections below is covered in greater detail in the Internal Communication SOP and External Communication SOP.

Email 🔗

Email is best for non-urgent communication that requires a formal or well thought-out response.

Otherwise, Notion and Slack are usually the better options.

Slack 🔗

Slack is best for most everyday communication and we use it regularly here, for both internal and external communication.

To get the most of out of Slack, we focus on a few core principles. We believe that Slack communication should be:

  • Respectful
  • Timely and proactive
  • Transparent

Following these principles ensures that Slack is productive, effective, and enjoyable to use.

Video communication 🔗

We use Zoom for our most of our video calls; we use Slack as a backup.

When on a video client call with a client, we ask that you follow some standard etiquette and best practices.

External communication 🔗

Quality technical work does not equal quality service.

While our clients care about the technical quality of our work, it’s often the level of service we provide that makes them enjoy working with us.

Clients really appreciate clear and prompt communication - which is why we emphasize responding to emails quickly, communicating clearly, and generally being respectful of our clients’ time.

For details, see the External Communication SOP.

Timezones and weeks 🔗

It’s usually best to include a time zone when indicating times. That said, assume that times are Central time (CT) in the absence of a specific time zone.

Do not specify standard or daylight time. Too many times someone might cite CST when daylight time is in effect. In that event CDT would be technically correct, but referring to the always-correct CT is adequate—recipients will know when daylight savings time is in effect. (Note that some places, such as Arizona, never adjust for daylight savings time. In relation to the rest of the US, part of the year the state is on Mountain time, the remainder it’s on Pacific time.)

Our business week starts on Monday and ends on Sunday. Week numbers follow the ISO8601 standard, which can be different from the Gregorian calendar. Keep these standards in mind when reporting billable hours.

Standups 🔗

To retain flexible work schedules, we do not have a morning stand-up meeting unless a client requests one. Instead, we post our progress and plan for the day in the Slack #standup channel. See Notion SOP for details about the format.

Paid time off (PTO) is used for vacation and sick time. Members typically receive two weeks of PTO during their first year, three weeks for year two and three, and four weeks per year thereafter.

See the Paid Time Off SOP for details about how to request PTO.

Most importantly, when you go on vacation we would love if you share photos or a short video in #vacation-pics 😜.

Holidays 🔗

Our standard company holidays are:

  • New Years Day
  • Memorial Day
  • July Fourth
  • Labor Day
  • Thanksgiving Day
  • Black Friday (the day after Thanksgiving)
  • Christmas Eve
  • Christmas Day

If holidays fall on a weekend we usually observe them on the closest weekday. See the Gusto company calendar for the precise holiday schedule.

Everyone may exchange two standard holidays for holidays of their choice. These holidays are chosen during on-boarding, and are thus fixed. Note that our standard holiday schedule is what is shown in Gusto. Thus, you’ll need to adapt your schedule accordingly. You may also have your floating holiday listed here in the handbook:

  • Martin Luther King Jr. Day
  • Washington’s Birthday
  • Columbus Day
  • Veteran’s Day

Payments and compensation 🔗

We run payroll every two weeks using Gusto. The last payroll of the year includes any annual bonuses.

Time tracking 🔗

We bill most of our clients by the hour, so you’ll need to track your time. We use Harvest to do this.

See the Time-Tracking SOP for details about this procedure.

Equipment, internet, and learning reimbursements 🔗

New hires may either opt to buy a new laptop when they join or to take an extra $1000 in equipment reimbursement when they join. Note that for Junior Engineers in particular we’ll usually require that you buy a MacBook Pro. Windows is difficult for us to support since most of us use macOS, and Linux has its own challenges. More senior engineers can use whatever type of computer they’re most productive on.

We reimburse:

  • Equipment expenses up to $750/year/person (e.g., laptops, monitors, a nice chair, coworking costs, etc.)
  • Internet bills up to $100/month
  • Learning material (e.g., books, online-courses, etc.)

We’ll need receipts for one internet bill each year and for any reimbursable equipment expenses. If you have multiple providers, each less than $100, send receipts for both, and we’ll reimburse you up to the maximum.

The equipment expense reimbursement renews on January 1 each year. Unspent reimbursement rolls over to the next year. New employees receive full credit for the year in which they join but cannot receive reimbursement until they have been employed by Innolitics for at least 30 calendar days. The reimbursement program began in 2019. Should you leave Innolitics, you can keep the gear purchased using the equipment reimbursement.

We’ll reimburse the cost of learning material (e.g., books or courses).

Retirement savings 🔗

We have a 401(k) plan that allows for traditional and Roth contributions. We provide an automatic 3% of your salary to the plan whether or not you choose to invest. Our 401(k) plan provider is Guideline, and it has many low-fee mutual funds available. You become eligible to contribute to the plan after six months of employment.

Health insurance 🔗

We offer health insurance to all full-time employees on our team. Our carrier is Blue Cross and Blue Shield of Texas, and we provide the following plans:

  • BCBS Advantage Bronze HMO 7350 [B661]
  • BCBS Choice Bronze PPO 5750 (HDHP) [B660]
  • BCBS Choice Silver PPO 3000/7350 [S661]
  • BCBS Choice Gold PPO 1250 [G654]
  • BCBS Choice Platinum PPO 250 [P620]

Innolitics will pay $1,196/year of the cost of health insurance, regardless of which plan you choose. If you opt out our company health insurance, we will provide a recurring reimbursement of an equivalent amount. The amount that we reimburse for health insurance will change from year to year, although we do not expect that it will change substantially.

Innolitics employees may contact Gusto’s Benefits Care team at benefits@gusto.com or (800) 683-8526 for questions about our insurance.

Sabbatical 🔗

An aspect of our mission is to provide flexible careers for everyone on our team. We are tentatively offering the option for everyone to take unpaid sabbaticals. This benefit is tentative because we don’t yet know how this policy will work in practice.

Your manager will need to approve any sabbatical. Factors we will consider include:

  • length
  • client projects
  • whether other people are also on sabbatical
  • how long you have been with Innolitics
  • how often you take sabbatical

If you’re considering taking a sabbatical, advise us as early as possible so we can better plan. As we better understand the implications of the policy, we’ll likely add more structure to it. There is also a chance we decide we have to remove it.

Part-time leave 🔗

You’re entitled to take part-time leave if you’ve worked for Innolitics for a year or longer. During part-time leave you work half a normal workload; your compensation accrues at half its normal rate. On an annual basis, part-time leave is limited to one contiguous block of time ranging from two weeks to three months. To the degree possible, please communicate your part-time leave plans with your manager beforehand so we can adjust client workloads appropriately.

Parental leave 🔗

We offer up to two weeks of fully-paid leave to non-birthing parents (i.e., fathers and adoptive parents) and up to four weeks of fully-paid leave to birthing mothers. Parental leave is only available for full-time employees.

Depending on the project you’re on, you may be able to divide your time off into separate chunks or work part-time for twice as many weeks. Please discuss your plans with your manager beforehand.

Parental leave accrues linearly starting from when you join Innolitics or when you last returned from parental leave. Here are a few examples:

  • If you just joined Innolitics, you won’t be eligible for parental leave.
  • If you joined Innolitics six months prior to your significant other giving birth, you’ll be eligible for one week of paid parental leave.
  • If you joined Innolitics six months prior to giving birth, you’ll be eligible for two weeks of paid parental leave.

If you live somewhere that offers a government-sponsored paid family leave program, we’ll contribute the difference between what the plan offers and what we offer for as many weeks as you’re eligible through our plan. For example, if you’re eligible for two weeks as part of our parental leave but your state offers six weeks at 2/3 your salary, we’ll cover the additional 1/3 of your salary for the first two of the six weeks.

Open source contributions 🔗

Each quarter we donate $500 to an open source project. We decide which project through discussions with everyone in the company. You can see previous projects we have donated to here.

Labor law posters 🔗

We don’t have physical offices where we can hang labor law posters, so we store them in a Notion database. Please review the federal, state, and local posters that apply to you; ask if you have any questions.

This handbook is intended to provide a general overview of Innolitics’ policies and procedures. Nothing contained within it is to be interpreted as a contract, whether expressed or implied.

We may revise, suspend, revoke, terminate, change, or remove any of the policies or procedures of the company, whether outlined in this handbook or elsewhere, in whole or in part, with or without notice at any time, and at Innolitics’ sole discretion.

  1. Our mission
  2. Intended audience
  3. Our values
  4. How we refine and enact our values
  5. Medical device software services
  6. Our team
  7. We are fully distributed
  8. Project structure
  9. 10x Time
  10. Innolitics library
  11. Writing articles
  12. Retreats
  13. Travel
  14. Reimbursements
  15. Moving
  16. Flexible schedules
  17. Work and development environment
  18. Performance reviews
  19. Performance improvement
  20. Coding best practices
  21. Information security
  22. Communication tools
  23. External communication
  24. Timezones and weeks
  25. Standups
  26. Paid Time Off (PTO)
  27. Holidays
  28. Payments and compensation
  29. Time tracking
  30. Equipment, internet, and learning reimbursements
  31. Retirement savings
  32. Health insurance
  33. Sabbatical
  34. Part-time leave
  35. Parental leave
  36. Open source contributions
  37. Labor law posters
  38. Legal