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