-
Notifications
You must be signed in to change notification settings - Fork 678
Document principles #50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| # Principles | ||
|
|
||
| ### Communication | ||
|
|
||
| Design systems provide a vocabulary between design and engineering, the language we use should be correct but not at the expense of providing clarity. Use words and descriptions that both designers and engineers can understand. | ||
|
|
||
| * Be a bridge not a barrier. Use vocabulary that provides meaning to both designers and engineers. | ||
| * Choose language that provides mutual understanding between engineering and design over specificity. | ||
| * Support new vocabulary with descriptions and examples. | ||
| * Be consistent in the application of vocabulary in written and verbal communication to reinforce understandings. | ||
| * Articulate what you are aiming to achieve as well as what you are not doing. | ||
|
|
||
| ### Judgment | ||
|
|
||
| There's often more than one way to do things, and there aren't always best-practice examples to follow. Despite this we still need to make decisions and keep moving forward. To deal with an uncertain future and still move forward we should have _strong opinions, weakly held_. | ||
|
|
||
| * Make decisions that move us forward rather than halting progress due to ambiguity or difference of opinion. | ||
| * Make decisions based on long term goals rather than this week's ship. | ||
| * Evaluate technology by the risk they present, not just the solution they offer. High risk deserves careful consideration, low risk deserves less attention. | ||
| * Have opinions and arguments for them, but remain open to seeing and hearing evidence that clashes with them when those opinions become wrong. | ||
| * Prioritize solutions for people who use the system and how it serves the customers who use products built with the system. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🙌 |
||
| * Seek feedback on code review often, and more often when a solution takes you down a new path. | ||
| * Take time to provide good code review, encompassing the above values when providing feedback. | ||
|
|
||
| ### Innovation | ||
|
|
||
| * Treat everything as an experiment. Make small incremental steps that provide proof towards goals, or disprove them. | ||
| * Ship often. We learn more from tangible outcomes than something that only lives as an idea. | ||
| * Work on reducing complexity and simplifying solutions to enable us to innovate faster. | ||
|
|
||
| ### Implementation | ||
|
|
||
| * Engineer just enough of a solution, value declarative over abstraction. | ||
| * A little verbosity is better than clever code. Avoid implementations that reduce the ability for people to contribute. | ||
| * Automate and abstract when repetition is a hindrance. | ||
| * Seek feedback on implementations as often as possible. | ||
| * Everything is a component. | ||
| * Provide flexibility, but within the boundaries of the system. | ||
| * Assume that people will break the rules, and provide safe ways for them to do so. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could also add a point here about writing code that is easy to read, as IMO that also falls under both internal and external communication. Something like "Whenever possible, write easily readable code. Readable code speeds up the development process and enables us to work smoothly with other teams.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah I was thinking that would be better covered in
Implementationbut open to suggestions!