Skip to content

A collection of my guiding thoughts, principles, and best practices

Notifications You must be signed in to change notification settings

najork/principles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

Principles

A collection of guiding thoughts, principles, and best practices. This is intended to be a living document which evolves over time as I'm exposed to new opinions and ideas.


Core Beliefs

  1. Frameworks unlock superpowers. Create them. Rely on them. Repetition creates permanence.
  2. Write stuff down. Preferably in an easily-searchable medium. Doing so allows me to digest nascent thoughts and convert them into well-formed, organized content. It has the added bonus of persisting state outside of my mind in a manner which is easily sharable and retrievable.
  3. Rely on tools which free up cognitive space. Block time on the calendar for tasks as well as meetings. Maintain a to do list. Create a single source of truth for each category of mental state. Memory is ephemeral. Assume that things will not get done unless they are either completed in the moment or stored somewhere persistent.
  4. Create strategies for the short- and long-term but not the medium-term. The medium-term is too uncertain to plan for.

Engineering

  1. Keep it simple.
  2. The amount of energy that goes into getting something right the first time around should be directly correlated to how difficult it is to change.
  3. That said, build things with the expectation that you’ll get it wrong the first time. Build them in a manner that makes mistakes cheap and easy to fix. Optimize on getting feedback quickly and iterating.
  4. Either do the quick-and-dirty thing which buys a lot of time, or the long-term thing. Prefer the extremes. Avoid the middle.

Leadership

  1. Find what makes people exceptional. Understand what motivates them. Figure out how to shine a spotlight on the positives and ensure systems exist to mitigate the negatives.
  2. Learn from the principle of auftragstaktik, tactics where the emphasis is on the outcome of a mission rather than the specific means of achieving it. Hire individuals who can take a declarative objective and independently drive toward a thoughtful and well-designed solution. A corollary to this principle is that imperative instructions are the nemesis of scaling organizations.
  3. Provide direct feedback in a timely manner in order to build trust and enable growth. Use the “observation, impact, question/request” framework to deliver the feedback. Be succinct and land on the question/request in 15 seconds or less.
  4. Build a sense of camaraderie. Accountability to one another is an incredibly powerful motivator. People might be willing to let down the company, but are far less likely to let down their friends. Culture is invaluable.
  5. Create systems for growing people in both a tactical and strategic manner. Feedback enables tactical growth and can occur in the moment or via regular recurring one-on-one meetings. Transparency around the behaviors and traits expected from individuals in various roles and at different levels provides the foundation for strategic growth. Meet with everybody on at least a semi-annual cadence to review their accomplishments, discuss their long-term growth goals, and have a conversation about what they should start doing, stop doing, or keep doing to achieve them.
  6. Titles are made up but can sometimes help frame a role and unlock a new level of upside.
  7. Retrospect on successes and failures to learn from them. Apply this across the gamut from organizational processes to engineering decisions and business outcomes.
  8. Write proposals for meaningful changes. Ensure that all stakeholders agree on the problem, scope, and outcome before discussing solutions. This comes with an added bonus of creating historical context behind key decisions. Ambiguity is the enemy. Failure occurs in the grey area.
  9. Iterate quickly and ensure that feedback loops exist to optimize outcomes. Leverage the hive mind to land on better solutions.
  10. Build flywheels. Create self-sustaining processes and systems which require minimal input energy to keep them running.
  11. Task tracking creates transparency, which in turn enables autonomy. Tasks should be tracked in a consistent and visible manner. Assume that untracked tasks will never get completed. I’m a fan of Asana.
  12. Conduct short-term planning at a regular cadence and set expectations around sticking to the plan. I don’t expect updates every step of the way, nor do I expect people to ask for permission before beginning a new or unplanned task, as long as the plan we’ve established doesn’t change. This requires people to pull me in to discuss when things aren’t going according to plan or if the plan needs to change.
  13. Conduct long-term planning at a regular cadence as well. I’m a fan of using OKRs with a four-month planning cycle.
  14. Create KPI tripwires to ensure team health. These KPI tripwires must be easily measured and monitored. Exceeding them triggers a discussion about whether support work needs to preempt planned work. Engineers getting paged every night are not happy engineers.
  15. Synchronous time is invaluable for creative problem solving. A whiteboard is worth its weight in gold. You should almost certainly be leveraging both of these whenever a new project kicks off.
  16. Leave meetings with next steps, owners, and timelines. Create a paper trail for transparency and accountability.
  17. Communicate wins. Ensure that individuals are recognized for their hard work.

About

A collection of my guiding thoughts, principles, and best practices

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published