Skip to content

Instantly share code, notes, and snippets.

@cooncesean
Last active December 1, 2016 23:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cooncesean/508ff22fa67833154b7409a66d0ddcb0 to your computer and use it in GitHub Desktop.
Save cooncesean/508ff22fa67833154b7409a66d0ddcb0 to your computer and use it in GitHub Desktop.
Presented at Guidebook's 12/1/2016 All-Hands meeting. This is paraphrased and originally penned by one of Facebook's original developers.

The Garden

Scope

As an engineer, your job is to build things that solve problems. When you first join the company, you're assigned small tasks and you solve them. As you grow professionally, the domain of these problems increases. If you were gardening, you would be pulling weeds or planting flowers. Increasing your scope does not mean pulling more weeds or planting more flowers. What it really means is looking up from the ground at the garden in its entirety, considering how your section fits in, and helping to decide the garden's master plan.

Agency

In order to do this effectively you must have agency. Agency is the capacity of a person to act in the world. As a Guidebook employee, having agency over your world is critical to fully exploring the boundaries of the problems in your domain. I'm referring both to the code you write and the interactions you have within the company. Within the framework of your role, you quickly develop an understanding of how certain components fit together. Use this knowledge:

  1. Instead of only fixing the bug you're assigned, consider how you can prevent that class of bug from ever happening again.
  2. Instead of implementing a new feature, consider how you can create a common abstraction between new and old ones that share 80% of the code.

This might take more effort up front but yields vastly greater results in the long run.

Ownership

At a higher level, take ownership over the entire company. Don't let your coworkers be less than the best that they can be. Understand the dynamics of decisions being made at every level and the trade-offs and factors that led to them. Understand temporary solutions and the priorities that necessitate them, but don't accept a decision that you feel is wrong without raising the issue and getting a better understanding. This is your garden and if you let people pull in the wrong direction the entire plan will fall into disarray.

Question

It's easy to fall into the mindset that you don't know everything, that everyone around you is smarter and more experienced, and that if you say something incorrect you'll be judged by your peers. This is not the case. When you have an idea, share it with your team, even if you're not confident it's the right one. Wrong ideas are often stepping stones to right ideas because they help define the real boundaries of the problem you're facing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment