Skip to content

Instantly share code, notes, and snippets.

@miguelff
Created July 27, 2016 11:09
Show Gist options
  • Save miguelff/8f46ff4d46a5b42d3ee591b8ec7af7c7 to your computer and use it in GitHub Desktop.
Save miguelff/8f46ff4d46a5b42d3ee591b8ec7af7c7 to your computer and use it in GitHub Desktop.
platform-data-tooling.md
## Platform-data tooling
This document describes the set of tools and processes used by @github/platform-data to satisfy their operational needs, and accomplish their [goals](https://github.com/github/platform-data#our-goals-and-values) in an effective and efficient way.
#### Operational needs (goals alignment)
What we do defines our needs. Our main goal is to make sure GitHub is resilient and keeps being fast even if there is "a million of them", to do it, we carry on the following activities:
* **Modelling**: Given a new feature, design and implement data models and access patterns that are both fast and scalable.
* **Reviewing:** Given a proposed PR, advise and provide alternatives on maintainability or performance improvements.
* **Monitoring:** Predict when a certain data access pattern starts compromising availability or performance, and act upon it, by fixing buggy application behaviors, or improving existing code and data models.
* **Refactoring:** Improve the design of an existing feature to accomodate new use cases, be more performant, or more efficient.
* **Knowlege-sharing:** Transversal to all the above, communicate proactively the way we work so data-efficiency, scalability and other key skills of this team permeate the rest of the organization.
#### Goals for the tools and processes
To empathize with our colleagues and users when making those decisions, understanding that there are requirements in the product that need to be fulfilled but that performance and availability can't be compromised.
To improve the quality, maintainability and readability of our code base. To choose the best tool for the job and make sure that every decision we make has been proven to work using tools like Scientist, writing unit and integration tests and writing documentation.
To provide positive impact by documenting decisions and educating our colleagues on our areas of expertise. Being kind with everyone we work with and build tools and processes that'll help others to perform their jobs better.
To make sure that we ship code that helps improves the scalability of the code base and empower our colleagues to do so, even when we may need to "slow down to speed up".
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment