Skip to content
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

goals / platforms #66

Closed
wants to merge 8 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 103 additions & 22 deletions src/docs/goals/platforms.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,106 @@ title: "Platform"
featured: ../images/featured/goals.png
---

## WORK IN PROGRESS NOTES

- Synthesize the product function
- Justifying funding for the platform team can be difficult as it is indirect
business value
- Aux Eng allows you to staff a platform team up with senior talent while still
directly contributing to business outcomes
- Knowing the right problems to solve can be difficult. Being embedded brings
challenges, low hanging fruit to the surface.
- Impossible for a senior engineer to know what it's like to be a junior
engineer, or not know the platform
- Seeing a junior engineer struggle makes points of friction clear
- Engineers experiencing pain don't always realize when something is easy to
improve.
- Giving Aux Engineers 1 day per week to make self-directed investments /
explorations in the platform gives them is powerful
- Self-direction is powerful. Process adds friction
- Short feedback loops. Experience pain -> Solve problem
- Writing documentation can be draining, but not nearly as much when you are
solving a problem just experienced first hand
- You feel like you're helping someone
- That person validates and expresses gratitude. Feels rewarding
In Auxiliary Engineering, we move out to consumer teams from a product team to
solve problems and learn more about our products. The tools and products that
an engineering support team puts out are that team's _platform_. Our goal in
doing this is to enrich the platform, and the experience of those using it.

A Python Platform team would provide tools that make Python simple to use and
operate. A team focused on testing may maintain a continuous integration
pipeline infrastructure, or testing frameworks. A Kubernetes-centric team may
provide templates and automation to make interacting with Kubernetes simple for
critical team operations and application development.

Our goals through Aux Eng provide benefits to any team developing or maintaining
a platform.

## Product, Platform, Aux Eng

In [lean software development](http://theleanstartup.com/principles), a software
team builds code that might solve a problem. The team then measures the result
through usage analytics or data on the effect their code may have on their
users. The team _learns_ from those measurements, and synthesizes ideas on
what to build next.

We believe in this methodology. A goal of any engagement in AuxEng is to
provide measurement and learning during engagements, then fresh ideas and
methodology for building off-engagement.

### During Engagements

When an engineer works with another team, they are pair programming with the
intended users of a platform. Part of that experience includes seeing where
their products fall short or don't solve a problem effectively. If it takes
20 minutes to learn how to use a tool that saves 20 minutes, people will likely
not use that tool. An Aux Engineer can learn this during an engagement, then
learn the ways that their users _expect_ software or platforms to work (this
is a less-data-driven approach to _measuring_ the success of any built
changes). The Aux Engineer can relay feedback and proposed changes during or
after the engagement (sharing _learning_) to appropriately serve real users
engaging with a platform.

The contributions an Aux Engineer can glean are hugely valuable. Keep in mind:
they're doing this not only to serve a platform team's product and roadmap.
Aux Eng actively moves the needs of the business forward, faster, by connecting
experts in a domain/platform with others that need help engaging in that space.
In our experience, that exposure from our team into our user teams is as
valuable as building a critical change into our platform.

### Off-Engagements

As we've served our goals effectively on-engagement, it's important to
highlight the goals off-engagement. The perspective that an Aux Engineer brings
back to a team during an engagement is important. The perspective they can bring
when they're not pairing 4 days a week with another team is just as vital to
team success and productivity.

It's a goal of Aux Eng programs to bring perspective and understanding of the
software landscape and engineering culture back to a platform team. After
working with teams in one or many spaces separate from the platform team,
an engineer will convey difficulty that real teams have using products and
processes back to a platform team. Our goal is to ultimately influence a
product roadmap or design choices in a system toward the needs of actual users.

## Platform Team Influence

Another goal of Aux Eng is to build stronger relationships across an
organization or ecosystem. By engaging with users directly, and putting time in
to understand their problems, a team practicing Aux Eng reaps benefits of
empathy and respect.

### Adoption and Understanding

It's a fact of software engineering life that we use software we didn't
write ourselves. This might come from adoption of open source, a vendor's
offering, or that of a platform team in the organization. In any case, it's
common for engineers to have a hard time navigating docs or learning about a
tool or framework to solve their problem.

It's a goal of Aux Eng to provide clarity for engineers in these moments of
adoption and potential frustration. By engaging with engineers directly,
solving problems alongside them, and providing reasoning and understanding for
why tools and platforms work the way they do, we remove much of the learning
curve and frustration for our products. We also provide a deeper understanding
for the choices and tradeoffs made in adoption of a platform.

We do this not only to benefit the teams with knowledge of the software we
write and recommend. We provide this service so we, as subject matter experts,
never become fully complacent in how we expect our users to think and feel
about the product offering our platform teams provide.

### Building Relationships

Maintaining relationships as a team serving other teams is crucial. Without
users to get feedback from, or use software at all, a platform team is not
fully serving their purpose. When we engage with a team, we spend time pair
programming and navigating the problems they deal with on a regular basis. The
understanding of those problems and shared experience will build empathy and
foundations for a long-standing mutually beneficial relationship.

It's a goal of every Aux Engagement to find "champions" — enthusiastic users or
adopters of our systems — who regularly provide input and offer feedback on how
the platform is working for our engineering population. Learning about how
changes affect users, how adoption is growing, and gauging general sentiment
from these advocates helps us make better directional and strategic decisions
on how to operate and maintain our platform.