The practice of engineering at Ride Report is guided by our company mission and core beliefs. When in doubt, ask yourself if you're working toward our collective mission in alignment with our company values.

For more specifics about how our mission influences our work on the day-to-day, we've defined engineering guidelines and practices designed to guide developers' work.

Guiding Principles

1. Reevaluate often

Effective product iteration allows us to respond to our customers' needs and wants, enables us to learn more from real-world conditions, and offers more opportunities to try new things without undue risk. The ability to build quickly, deploy often, and adapt in response to feedback is core to our success. We often make choices based on incomplete information in the interest of moving forward. This is with the understanding that any decision can (and probably will) be revisited and revised, no matter how old. Value early release over perfection, but continue to collect information, and don't be afraid to question how and why things are done. Have the humility to drop a project or delete code if it's not providing value.

Everyone on the team shares the responsibility to continually reevaluate the work you're doing individually, and also to engage in compassionate dialogue with others about how to best move forward with their own work. Help others on your team navigate the balance between considering myriad potential solutions, and recognizing when it's time to simply decide and move forward. Sometimes the answer is to spend an extra day refactoring or writing tests, and sometimes the answer is to ship what you have, and file a ticket to revisit your code later.

2. Offer and respond to feedback

The best solutions can't be arrived at in a vacuum, so we interact with each other's work, and proactively invite feedback on our own work. When someone shares a PR or release, you have an opportunity to familiarize yourself with someone else's code or an area of the product that you're not familiar with. Use this as an opportunity to offer a new perspective that could shine light on how to make the work better, or to reflect on how you can improve your own work from the conversations you observe. There are many ways to engage with feedback--regularly check in with folks on your team via Slack, in person, or through GitHub to observe and create channels of feedback.

3. Make communication and documentation explicit

Just as citizens can't engage if the meeting agenda isn't public, our team members can't contribute if the criteria & information used to make a decision isn't available. For this reason, we always seek to share and write down the logic and information behind a decision.

When we share decisions explicitly, we see these benefits:

This includes but is not limited to: