You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ability to weigh several factors when making technical decisions. Some factors that could be considered are maintainability, security implications, performance implications, effects on other consumers, extensibility and adaptability of system, etc.
One example of success in this area: You have been noticing a lot of bugs arising the output of <command 1> and <command 2>. Additionally, you often see stories in the backlog around adding the same sort of features to both commands. You look through the code and notice that even though both commands are following separate code paths they are trying to accomplish roughly similar things. You share your findings with the team, and embark on a path to explore how to have both commands to follow similar code paths. After coming up with a plan, you get buy-in from your PM and other engineers to do this refactor as part of a larger epic. While you do this refactor you consider the maintainability and longer term extensibility of the system while you consolidate these paths. Finally, over time you observe that the number of bugs around those 2 commands decrease, and the team feels more comfortable navigating around that part of the codebase.
Level
Skills
P1
Makes technical decisions, resulting in features that work to complete a story.
Follows along with their pair and report to other teammates on the reasons for certain technical decisions.
Observes and follows existing patterns/practices on the team.
P2
Surfaces and discusses various factors (e.g. maintainability, extensibility, security) when approaching a technical decision, with support from other pivots to make the final decision.
Makes sound technical decisions that conform to the team's existing architecture or vision.
P3
Factors in maintenance/impact on feedback loops/impact on readbility and onboarding as parameter when making technical decisions
Factors in support as parameter when making technical decisions
Factors in performance as a parameter when making technical decisions
Factors in extensibility as parameter when making technical decisions
Factors in security as parameter when making technical decisions
Factors in cost of change as a parameter when making technical decisions
Able to recognize risks of their proposed approaches when there are underlying unknowns; able to work with PM/leadership/experienced engineers to mitigate the risks and make a technical decision that moves the team forward
Able to recognize when new information emerges that requires changes in existing technical design; able to work with PM/leadership/experienced engineers to adapt existing technical decisions to the new information
P4
Takes an outcome-oriented mindset to technical decision-making.
Can articulate the tradeoffs and parameters (with priorities) that drove a technical decision
Bring others along on the decision-making journey, and teaches team members how to prioritize approaches and weigh-in several factors
Able to change course on decisions readily (in attitude) and easily (in artifacts produced) as new information emerges
Able to navigate uncertainty in underlying technical choices when making technical decisions
Able to explore options and make technical decisions (without painting project in the corner) when there are unknowns in the domain