The Handbook

Our mission is:

To provide high-quality medical imaging software services to our clients and meaningful, flexible, and financially rewarding career opportunities to everyone on our team.

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

If you are considering joining us, this handbook should help you decide 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 are excited that you are on the team.

If you have been with us for a while, then you are 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 are glad that you are curious about how we work.

This handbook is hosted in a public git repository. Please suggest improvements! You can do so by submitting a pull request or making a suggestion in #general. For example, you have a question that you wish the handbook answered, let us know. If you are an existing employee and you think you can improve how we work, create a pull request.

Our Values

We do our best to keep our values at the center of how we work. Our company values are to:

Pursue a deep understanding.

Continue learning.

Build quality software.

Treat our clients ethically.

Understand the business context.

Communicate clearly.

Be responsible for our work.

Be pleasant to work with.

Respect the autonomy of fellow developers.

Make the world better.

Enjoy our work, and relax.

We suspect most of these values are not controversial. Still, if you disagree with any of them, or if you want us to add or modify any of them, please initiate a discussion! Here are three 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 open source projects, we feel we should give back.

We clarified “we write automated tests to ensure our code works (and continues to work)” by re-writing it as “we write automated tests to guide our design and ensure our code continues working” to highlight our belief that tests have multiple purposes.

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 up-front solutions to problems; we prefer allowing developers to independently explore their ideas first”. This change was made because we realized that sometimes it is too time consuming to allow everyone to explore their solution, especially junior developers working on problems that have been solved many times in the past. In these cases, we believe it can make sense for the more experienced developer to prescribe a solution up-front. We prefer to have junior developers to find their solution first because it is educational and can lead to better solutions (perhaps a new technology was developed recently, or the junior developer comes up with a new approach).

This last example highlights that many situations we run into as developers are not black-and-white. Our values are a foundation for discussion, but often we are weighing competing goods. For example, “We enjoy experimenting with new technologies so that we can use the best tools for the job” and “We use technologies with the best interest of our clients in mind, even if they are less appealing to us as developers” can be competing goods.

Most importantly, if you feel that we are not following our values, say something! We can not stress this enough. It is essential that you say what you think.

Several months after adding our commitment to contribute to open source software, we still had not done so. Someone brought this up, and in response we setup our open source contribution page.

Medical Imaging Software Services

We love working on medical imaging software. Our work helps doctors diagnose and treat patients in the clinic and helps researchers make breakthroughs in the lab. We believe that software has the potential to transform the medical imaging industry, and we are excited to be front and center in this transformation.

Medical imaging 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 are not unique to the medical imaging. That being said, you do need to be interested in medical imaging, have some mathematical background, and have a desire to learn more to be a successful part of our software team.

We Are a Fully Remote Team

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

Working remotely allows for a flexible work schedule. For example, David’s wife is a nurse. She works night shifts and during many weekends, but is frequently off during the work week. If David did not have the flexible schedule that remote work affords, he would see his wife much less often. As it is, he can work longer days when she works, and work shorter days when she is off. Also, because he works from home, he can see her when she wakes up in the afternoons.

Although flexible work schedules are possible for non-remote workers, they are harder to arrange or take advantage of. When everyone is working in the same location, there is a lot of pressure to be “visible” at meetings and during the typical work day. Going on an afternoon errand run is often impractical. Conversely, when a company employs only some remote workers, it is easy for those workers to get left out of meetings and company activities.

An all-remote company encourages everyone to focus on their value-added instead of hours worked because value-added is more visible than long hours in a remote setting.

There are many more benefits to working remotely which we will not list here. However, there are also important-to-mention disadvantages to working remotely.

Working from home is not for everyone; it can be lonely, and it is easy to go stir crazy. It is more difficult to separate work from your personal life.

If you have never worked remotely before, it is worth thinking through how you will manage or respond to these various issues. Some people prefer to work from a co-working space on some days. Other people like working from coffee shops in the mornings—Andrew usually does this. David has two “users” on his MacBook, one for his personal life, and one for work. This allows him to turn off email and Slack notifications when he stops working for the day by switching users.

It is more difficult to develop strong relationships with remote teammates 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 imaging and programming topics. Finally, we have retreats at least twice a year. More about our 10x discussions and our retreats in a bit.

We Are a Small but Growing Team

We are a small team. Currently Innolitics has six full time members. Andrew, David, Yujan (the Founding Partners), Willy (Senior Developer), Zach (Junior Developer), and Reece (Junior Developer).

We are planning on growing the company substantially 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 will have the opportunity to grow with the company, and to influence how the company develops.

Project Structure

We work on projects of varying sizes. Our typical engagement lasts about six months, although we have been working with some of our clients for several years. Typically, everyone is assigned to a single project at a time.

Each project has a project lead who is ultimately responsible for the success of the project. The project lead’s responsibilities include:

We usually have client progress meetings on Mondays, and additional meetings as necessary throughout the week.

10x Time

On Wednesdays from 2:30 - 5:00 PM CST we have 10x time (we choose Wednesdays so that we can travel on Monday or Friday). Some weeks we’ll skip 10x time if there is an impending deadline or many folks are on vacation.

We have two types of 10x time:

  1. Discuss an article, video, or book chapter. Everyone reads the chapter from 2:30 - 4:00, and we discuss on a group video call from 4:00 - 5:00 PM CST.
  2. Three-week mini-project. During the first two weeks we work on the project and discuss in Slack. On the third week, we work from 2:30 - 4:00 and discuss from 4:00 - 5:00 PM CST. If you prefer, and your client obligations allow it, feel free to lump all three learning sessions into the third week (i.e. work on the mini project all day).

Usually, only a single partner will participate in mini-projects. Also, we suggest pushing your mini-project work onto GitHub.

We try to pick topics that are fun and interesting and will make us better developers.

Please feel free to suggest topics in #learning. If we end up using your suggestion, please add a new item to our list of previous discussions. We try to choose the discussion material or mini-project Friday afternoon of the previous week.

You can see a list of our previous discussions here.

Innolitics Retreats

We meet two times 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. We cover the travel, housing, and food during the retreats.

Unless there is a very good reason (and please let us know as soon as possible), everyone is expected to attend all of our retreats.

Flexible Work Schedules

We value our flexible work schedules, however, this does not mean that we can work anytime we wish.

Evaluations

Performance evaluations occur every six months from your join date. Notes from the performance evaluations are stored in a google document, and are only visible to partners and yourself. Notes from the previous evaluations, and in particular areas of improvement, are reviewed at the start of the next review.

If you are new, we will also have an evaluation once you have been with us for three months to ensure that you are enjoying your new position.

Communication Tools

We use email, Slack, and Skype for internal communication.

Email

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

Slack

Slack is best for most everyday communication. Here are some rules of thumb for Slack communication:

Skype

We use Skype for all internal video calls because we have found it to be more reliable than other video conferencing services.

The person who initially mentions starting a call in Slack should initiate the call; this convention avoids delays that can occur when both members are waiting for the other person to call.

When on a client call, follow some video call etiquette:

Client Communication

Respond to client emails promptly during the business week, even if it is just to say that you will respond in full at a later time. We have found that one of, if not the most important factor, influencing client happiness is quick and clear responses to emails.

Informal writing is sufficient for internal emails. However, when emailing clients, please pay extra attention to your grammar and spelling.

Standups

To retain flexible work schedules, we do not usually have a morning “standup” unless the client requests one. Instead, we post our progress in #standup.

The frequency and level of detail included in your standups should depend on the project and the team. If you are tightly collaborating with several other people, it may be worth posting progress updates daily. If you are the sole person on a project, a weekly update is likely sufficient. Please post updates at least once each week. It is nice for everyone else on the team to be aware of your work.

If team members or your project lead request that you post standups more frequently, please do it.

A typical standup should include:

Members typically receive two weeks of paid time off during their first year, three weeks for their second and third year, and four weeks each year after that.

We also have Christmas Eve, Christmas Day, Thanksgiving Day, Black Friday, Memorial Day, July 4th, Labor Day and New Years Day off. If these Holidays fall on weekends, we observe them on the closest weekday. Please note that this list does not directly match the US federal holidays. For example, we do NOT observe Columbus day (a federal holiday), while we do observe Black Friday (not a federal holiday).

Notify your project lead in advance when you want to take a vacation, and be sure to request it using Gusto. Since we’re a relatively small operation, the more notice, the better.

One of the perks of working remotely is having a flexible work schedule. Because of this, sometimes we will take off during the week but will make it up over the weekend or in the evenings without taking vacation time. Taking off during the week depends on the demands of the project you are currently assigned to; for example, often we have client meetings during the week.

Payments and Compensation

We run payroll every two weeks. The last payroll of the year will include any annual bonuses. Payments are made using Gusto.

We discuss raises during every other six-month review.

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 (free money!!). Our 401(k) plan provider is Vanguard, and the plan has many low-fee mutual funds available. You become eligible to contribute to the plan after six months of employment.

No Health Insurance

We do not currently provide company health insurance.

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.

Passwords

Securing company passwords is imperative. Many of the projects we work on involve patient data, and an essential aspect part of securing this data is to be careful with our passwords because most software breaches are due to human error and not technical issues. For this reason, we all must take password management seriously (while acknowledging that it can be a pain). Here are some good policies for password management:

Onboarding

Accounts

When you first join our team, we will setup the following accounts for you:

  1. Google Apps - email, calendar, online file sharing, documents
  2. Gusto - payroll and PTO
  3. LastPass - password management
  4. Slack - team chat
  5. Vanguard - your 401(k)

You will also need to setup a Skype and Github account if you don’t already have them.

Business Cards

We will mail you a box of business cards.

Coding Best Practices

Please read through our Coding Philosophy and Best Practices.

This handbook is intended to provide a general overview of the company’s policies and procedures. Nothing in this handbook is to be interpreted as a contract, expressed or implied.

We may revise, suspend, revoke, terminate, change or remove, prospectively or retroactively, 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, at the company’s sole discretion.