Engineering Culture

Values

Guiding Principles

Team Values

Continuous Improvement ?

Teamwork

Respect

Technical Excellence

Innovation ?

Transparency ?

Learning & Self Improvement

Quality

• Trust – Forms the basis of our world view

• Collaboration – Allows us to change the world

• Innovation – With a healthy perspective on the past allows us to innovate with impact

• Results – Carrying out our commitments large and small forms the foundation of trust

• Quality – Elegance is our calling card both in how we build solutions and how our users experience them

• Adaptability – We embrace an ever-changing world and work in short iterations so that if the world changes we can planfully acomodate the change

• Nice – We respect each other and come to work to have fun

Put trust in finished production ready code

Quality is uncompromisable

Embrace lightweight and efficient processes to enable communication, coordination and scale

• We each come to work committed, collaborative, and assuming positive intent

We believe we live in a moment of opportunity and take action accordingly

We put the product and customer first, team second and the individual will be fine

We see success and setbacks as equal opportunities and we learn from both

We welcome curiosity and open discussion

Our relationships are strengthened through effective conflict by skillful means

We engage in active listening to ensure trust, understanding and collaboration

Commitments of any size are sacred

We communicate effectively and efficiently, we recognize that time is our most presource resource

Our environment attracts the world’s best ed tech experts

Our value created far exceeds the sum of our individual contributions

Our notes so far

data driven decisions

project management

Under promise, Over deliver

Involve Engineers Early

planning

commitments

deliver customer value

Transparency

Respectful understanding that everyone is different

Accountability

individual

team

Matt's Ideas

plan before acting but act to help you plan

Never be the smartest person in the room.

excellence in how we build, deploy, run and monitor the application is as important as features

Get feedback from architecture and other developers. Helps you grow and catch potential issues early

req gathering

understand the critical path for the project

understand dependencies

have alternatives planned from the get-go

be comfortable to say no

share best practices with your teammates

if something is out of your control to improve, escalate it

request training, or time to learn before it is required for story work

tests and integration tests are a must

what do we log

what to monitor

manage risk

plans for when things go wrong

failover

automate recovery of expected failure modes

how do we track improvement?

cross training

More than one engineer should know how each component works in detail

disaster recovery

pair programming

whiteboarding

Documentation

minimum to get new engineer onboarded

call-out any "gotchas" or weird code

run and debug configurations and parameters

Best Practices

Interfaces

API contracts

structured logging

work with team to develop

decide on the best approach before doing lots of implementation

prototype first

talk with other engineers about what you are working on to identify areas that could have unified approah

KISS - Keep it simple stupid

if a problem complex code, invest the time to find simplest solution

avoid throwing more code at issues if possible

other teams we work with

our teammates

Trust

Stay Positive & Calm

At the core of our software engineering culture has to be accountability and self-direction. In other words, we need everyone’s wisdom and we need to hear it. If we see a problem, raise a problem. If as a team you do not feel right about your backlog, let's talk it through. It is your voice and your insights that make our plans real. And please trust me when I say MHE is a place where we can raise concerns and problem solve together.
-SL