Derek Kershner

How-We-Work
Onboarding
Standards

Software Team Principles

Team over Individual

Learning, success, and productivity, and more specifically, exactly how they should be achieved: as a team.

"How" matters as much as "What"

"How" can be either tactical or interpersonal, and the two quotes are examples of the difference:

A good programmer is someone who looks both ways before crossing a one-way street.

Doug Linder

I don't care how much you know until I know how much you care.

Saying

All effort should be placed towards the overall team's long term success, productivity, and learning, including, but not limited to, the expense of individual success and productivity. There are several principles and strategies to help achieve this. Never prioritize speed, either in trying to "go faster" with a task or an interpersonal conflict, at the expense of any of the previous.

Ask for Help (Learn from Others)

Software is hard.

Donald Knuth, author of The Art of Computer Programming

If you need help, ask for it. Pair programming is encouraged during tough situations. Programming is hard, respect it, and trust your teammates enough to reveal you could use the help. Do not protect your turf. Having questions is not a bad thing, not asking questions is likely to slow you down wondering, more than the time required to explain.

Give Help (Learn by Teaching)

If someone asks for your help, give it, and recognize their bravery in admitting that they require it. If you think someone needs help, offer it.

It is acceptable to ask for time to hold or finish your context, it is not acceptable to leave your fellow Engineer in the lurch, code reviews included.

You are not your Code (No individual is perfect, but teams can come close)

A critique, even a large one, is a form of love. If the other person didn't care, it would be less effort to say nothing than to confront a problem. Respect and engender the difficulty of the gift they have provided you by truly giving each consideration. Egoless Programming

No Surprises (Honesty over Politeness/Hope)

We would rather be painfully aware than ignorantly bliss. We would rather disappoint immediately than cling to hope for as long as possible.

Say Something (Honesty at all costs)

If you see something wrong, say something. If you disagree, do so openly. Care about those around you by directly challenging, expecially if it is your boss. Be as radically candid as you can be, but err on the side of saying something, even if you end up being obnoxiously aggressive. Everyone unintentionally makes poor decisions, even (especially?) those more experienced, do not let an opportunity to enlighten someone pass by.

Without awareness, nothing improves.

On the flip side, accept and expect feedback while knowing that the person is doing so to be clear, not to be mean. Respect others viewpoints and know that we cannot, and likely will not ever achieve full consensus, but we can achieve process consensus. Be heard, but be willing to accept other viewpoints.

Where possible, though this is rarer, recognize when you have made a mistake, and make those known as well. If someone is making a mistake they made known to you, reward them for their courage, do not come down on them even harder.

Process consensus in when the process to coming to a decision can be agreed upon, followed, and executed even if not everyone completely agrees, but they can believe in it.

Pragmatic Estimates and Commitments (Accountability)

Do or do not, there is no try

Yoda

Don't incorporate hope into your estimates, ensure you have an 80% chance of meeting the timeline you set out. Your team and company rely on you to come through, ensure that you are not setting yourself, and therefore them, up for failure.

Mental Health over Potential Burnout

We are not machines, and require balance, breaks, and healthy communication to be our best.

We are a Remote Team

Being remote comes with a lot of great items, like increased autonomy, concentration, and just flat less waste. This is, however, a privelige we must earn every day, because it also comes with downsides, like isolation, lower communication and collaboration (creativity). Do not hesistate to have in person conversation, just as though the person was sitting right next to you, even if it isn't about work.

Burnout

Putting "the iron to the fire" can only last so long, make sure to monitor this for yourself regularly. No one is going to promise that you won't be requested to "pour on the effort" at times, but you have our permission to request a break at any time you feel at risk of burnout. You are no good to anyone in a burnt state.

Mutual Respect for Time

Time is our most valuable asset, use it well.

Don't be Late

Every moment others spent waiting for you is not only time wasted, but also lost respect. Punctuality is important to our team.

Status / Focus Time / Do Not Disturb

Make sure your Teams status is accurate, this is your only way of indicating what you are doing, which is the only way others can respect your wishes. Do not be afraid to set aside blocks of time to focus, but don't expect others to be able to read your mind. Update your teams status, put on do not disturb, and minimize the windows until you are ready to come up for air.

Don't forget to come up for air though, code reviews and helping others is just as important as individual productivity.

In addition, Teams, at time of writing, offers no scheduled messages, so be sure to also place your Do Not Disturb settings correctly to prevent notifications at night or in the evenings/weekends.

We will also be attempting to have No Meeting days of the week. Make sure to use these to your fullest ability to create long blocks of time for the most complex of your projects.

Why do I need to be here?

Always be asking this question. Note that this is one time where a bit of politeness will go a long way. The other person obviously had a thought process for inviting you, so ask in order to understand, not to demean.

If someone asks this question of you, do not receive it as an insult. Give it real thought and a solid explanation, or else admit not being able to foresee the direction and release them from the obligation. We don't have many meetings, but even few can be too many.

If a fundamental disagreement occurs in this area, please discuss with your boss.