-
Notifications
You must be signed in to change notification settings - Fork 163
C0D3 Engineering
Song Zheng edited this page Sep 22, 2020
·
7 revisions
This page will document engineering relevant information.
- JS0-JS6 Completion.
- Unanimous c0d3 engineering team approval: While you are going through JS0 - JS6, make sure you are helping other students, reviewing submissions, and asking questions. This is what we use to evaluate if we want to work with you.
- Make sure you pick from our existing products and make sure engineering knows which product you plan to work on.
- Every product should have an engineering wiki for onboarding specific to the product. If there isn't, create one! Your first task when you join any engineering team is to improve documentation (this task never ends, you should always do your part to improve documentation).
- For the product you work on, make sure to review pull requests every day. This is the best way to engage with engineering to learn more about the product and understand what goes on. Example Pull Request 1 and Example Pull Request 2
- Reviewing Pull Request - First read the description to understand what it does. If it doesn't make sense, ask. Then think about how you would implement the feature / issue. Then look at the code changes and compare the implementation with what you would have done. This should open up a few opportunities for discussions with the author. Discuss, talk, and then approve the pull request or suggest changes.
- Go through the issue list for your project and see if there are any bugs you can pickup! If you don't understand an issue, ask about it! When joining a new team, the best way to get your feet wet is to solve a few bugs.
- Once you have solved a few issues and are ready to build your own feature, make sure to write a design doc for every feature. Checkout Example 1 and Example 2
Steps for sending your first Pull Request
- Show up for weekly sprint planning for your product. If the time does not work for you, work with the team to propose a new time.
- Communicate. Make sure you follow the leadership principles below. If you are interviewing with other companies or need some time off, make sure to let the engineering team know so urgent features could be picked up by someone else.
- Before building features, write a design doc (Examples above)
- Small Pull Requests. Make sure your pull requests are small and easy to read. If your feature is complex, you must break it down into parts. Here's an example of part 1 of a 3 part pull request. We have never seen a pull request that is too small but too many pull requests that are too big. If it is too big, it may be hard for someone to allocate a few hours to review your code so your code may never get merged in. If you need help breaking down your pull requests, ask!
We value Amazon's Leadership Principles. Memorize them, they are ordered by priority.
- Customer Obsession - Leaders start with the customer and work backwards. They work vigorously to earn and keep customer trust. Although leaders pay attention to competitors, they obsess over customers.
- Ownership - Leaders are owners. They think long term and don’t sacrifice long-term value for short-term results. They act on behalf of the entire company, beyond just their own team. They never say “that’s not my job."
- Invent and Simplify - Leaders expect and require innovation and invention from their teams and always find ways to simplify. They are externally aware, look for new ideas from everywhere, and are not limited by “not invented here." As we do new things, we accept that we may be misunderstood for long periods of time.
- Are Right, A Lot - Leaders are right a lot. They have strong judgment and good instincts. They seek diverse perspectives and work to disconfirm their beliefs.
- Learn and Be Curious - Leaders are never done learning and always seek to improve themselves. They are curious about new possibilities and act to explore them.
- Develop the Best - Leaders develop leaders and take seriously their role in coaching others.
- Insist on the Highest Standards - Leaders have relentlessly high standards — many people may think these standards are unreasonably high. Leaders are continually raising the bar and drive their teams to deliver high quality products, services, and processes. Leaders ensure that defects do not get sent down the line and that problems are fixed so they stay fixed.
- Think Big - Thinking small is a self-fulfilling prophecy. Leaders create and communicate a bold direction that inspires results. They think differently and look around corners for ways to serve customers.
- Bias for Action - Many decisions and actions are reversible and do not need extensive study. We value calculated risk taking.
- Frugality - Accomplish more with less. Constraints breed resourcefulness, self-sufficiency, and invention. There are no extra points for growing headcount, budget size, or fixed expense.
- Earn Trust - Leaders listen attentively, speak candidly, and treat others respectfully. They are vocally self-critical, even when doing so is awkward or embarrassing. Leaders do not believe their or their team’s body odor smells of perfume. They benchmark themselves and their teams against the best.
- Dive Deep - Leaders operate at all levels, stay connected to the details, audit frequently, and are skeptical when metrics and anecdote differ. No task is beneath them.
- Have Backbone; Disagree and Commit - Leaders are obligated to respectfully challenge decisions when they disagree, even when doing so is uncomfortable or exhausting. Leaders have conviction and are tenacious. They do not compromise for the sake of social cohesion. Once a decision is determined, they commit wholly.
- Deliver Results - Leaders focus on the key inputs for their business and deliver them with the right quality and in a timely fashion. Despite setbacks, they rise to the occasion and never settle.
Think you know these principles? Make sure you have answers to these questions to prove it!
-
System Setup - Includes
git
,bash
etc. - VIM Config
- Computer Setup - List of applications that are useful to install