Skip to content

Latest commit

 

History

History
165 lines (84 loc) · 5.36 KB

software_engineer.md

File metadata and controls

165 lines (84 loc) · 5.36 KB

Technical Skills / Team Expectations

Planning / Preparation / Context

  • Is aware of high-level business priorities and roadmap.

    • Can articulate how present initiatives and current work fit into the larger objectives.
  • Is able to articulate individual workload and task status.

    • What have I completed?

    • What am I working on now?

    • What have I planned for the future?

    • How long are these tasks likely to take?

    • How does this impact others? Near-term plans? Longer term roadmap?

  • Is aware of current and upcoming initiatives, relative progress and timeline, and who is responsible for leading/working each of these.

    • Can identify dependencies and interconnectivity between own work and other initiatives.

    • Collaborates with peers working other initiatives when necessary to mitigate risk.

  • Seeks adequate articulation of scope, context, architecture plans, and rationale and high-level goals before starting new work.

  • Ensures that work is done in small (as possible), shippable pieces

    • When tasks are not sufficiently decomposed, works with seniors or management to produce slice plan or more atomic stories.

    • Understands when to use global or customer-specific feature flagging to isolate shipped code.

  • Partners with initiative leads and/or manager to author any artifacts needed to communicate plans to the team and to stakeholders.

Producing

  • Writes intelligible, high-quality code that is:

    • Readable (enough)

    • Performant (enough)

    • Secure (enough)

    • Idiomatic (enough)

  • Creates well-crafted commits and pull requests that follow these guidelines, in descending order of importance:

    • Each commit represents a single conceptual change

    • Keep tests green from commit-to-commit (bisectable)

    • Contain concise, intelligible, and informative commit messages

    • Tell the larger story for reviewers, QA, and future-selves

    • Are individually revertable, when possible, or can be reverted up-to-and-including-this-commit and still have a working code base.

  • Constantly improves the codebase.

    • When legacy, poorly-written, cumbersome, or confusing code is encountered, leaves things better than they were found (within reason).
  • Is aware of and contributes to team-driven best practices around front- and back-end code style.

  • Adheres to team-agreed best practices surrounding code reviews, pull requests and quality assurance efforts.

  • Seeks out collaboration, pairing, or input from Senior Developers, Initiative Leads or Manager when unsure of how to approach a given problem or task.

Reviewing

  • Reviews the work of others with an eye toward best practices.

  • Treats assigned code reviews as a first-class work object.

    • Completes code reviews in a timely fashion.

    • Checks on progress.

  • Provides constructive, helpful feedback focused on making our codebase better and teaching others.

  • Respectfully defends own rationale for choices if/when challenged during code review.

  • Graciously acknowledges when reviewers' suggestion(s) make the code better.

  • Makes changes effectively and in a timely manner.

Shipping

  • Articulates risks, dependencies, deployment steps in each Pull Request.

  • Ensures post-deployment dependencies are understood and met (migrations, rake tasks, scripts, etc.).

  • Ensures work can be deployed with minimal downtime.

  • Is occasionally available for after-hours work to support deployments, new feature rollouts, maintenance, or production issues.

Professionalism* *

  • Regularly communicates status to the rest of the team, esp. when working remotely.

    • What you're working on.

    • Who you're working with.

  • Engages in respectful, inclusive communication when interacting with peers.

  • Respects other’s time and walks the fine line of knowing when to stretch and when to ask for help.

  • Aware of and respects of the strengths and weaknesses of others.

  • Aware of flex time / WFH / PTO privileges and exercises them responsibly and with an eye toward impact on the team. For example:

    • How does this affect my pair?

    • How does this affect my initiative?

    • Will others need to meet with me before I take time off?

  • Able to diplomatically and respectfully argue in favor own code / architecture / strategy decisions when challenged.

  • Routinely on time for meetings, particularly the morning stand-up.

  • Escalates issues to initiative or team lead when necessary.

Continuous Improvement

Self

  • Meets with Engineering Manager regularly on a one-to-one basis.

  • Proactively seeks out opportunities to learn new skills or deepen existing ones.

  • Maintains short-, medium-, long-term professional development goals (which may change over time), and records progress against goals in a consumable way.

  • Showcases work to the rest of the company at the bi-weekly demo.

Team

  • Identifies and proposes process improvements, whether within the Engineering team or TTM as a whole.

  • Shares knowledge about areas of subject-matter expertise via:

    • Pairing

    • Lunch and learns

    • Articles in Meta

  • Proposes changes to team values and expectations or team mission as team evolves.

Community

  • Maintains an active presence in the development community at large:

    • OSS projects.

    • Attending or organizing meetups.

    • Giving talks at meetups or conferences.

    • Publishing dev-related content to social media.