• Understand the business aspect of your work, and what makes money. Eventually, only that matters.
  • Get involved with hiring for your team and company, and maintain a high bar for hiring quality candidates.
  • Design and develop systems appropriate to scale, extensibility, and scope of the problem.
  • Avoid over-engineering.
  • Question everything and ask “why” repetitively until you get to the root of problems and situations.
  • Demand accountability and ownership from others.
  • Once you understand the company’s needs, lead at least one high-impact project with a clear definition and target of successful delivery.
  • Work towards disambiguating ambiguous problem statements.
  • Cultivate relationships with other teams and develop trust.
  • Do not be adamant about your views. Listen to others and accept that there is more than one way to look at a problem statement, and multiple valid solutions to a problem.
  • Be involved with multiple projects as a consultant, a reviewer and/or a mentor.
  • Follow the principles of extreme ownership.
  • Have strong mentors to help you navigate and grow in the company.
  • Take projects with high risk and high rewards.
  • Strive for deep technical expertise in technologies used in your team.
  • Ask for stretch projects from your manager, or help her identify one for you.
  • Discuss the goals of your manager, and how you align your work with it.
  • Invest time in networking effectively with seniors, peers, and juniors.
  • Be a mentor to a couple of junior engineers. Increase your breadth of knowledge in the domain of your team/company.
  • Drive your one-on-ones. Maintain a list of topics for the next one-on-one discussion.
  • Discuss problems with your manager, but have some solutions beforehand.
  • Increase your breadth of knowledge in technology.
  • Explore emerging technologies by building small prototypes.
  • Read a few technical books every year.
  • Before suggesting the next big shiny technology for your production stack, understand its pros and cons thoroughly.
  • Schedule a regular one-on-one with your manager
  • Schedule a regular one-on-one with your skip level manager [Reminder] One-on-one usually is not a status meeting
  • Involve the manager in your personal life (just a little though)
  • Actively seek feedback from your manager
  • Keep your manager up-to-date in things you are involved with, but don’t get bogged down in unnecessary detail
  • Keep your manager up-to-date in things you are blocked on
  • Keep your manager up-to-date on people you have difficulty working with
  • Give constructive feedback to your manager
  • If you are overworked, let your manager know
  • If you are under-utilized, ask your manager for areas to explore
  • If you have an ineffective or neglectful manager, talk to your manager about your expectations
  • If you have a micromanager, talk to your manager about your expectations
  • If you have an abusive manager, talk to your skip manager or HR with data points
  • If you have an ineffective skip manager and ineffective manager, switch the team or company
  • If you do not have a cordial relationship with your manager, switch the team or company
  • [Reminder] Leverage = impact produced/time invested. Use leverage as a yardstick for effectiveness
  • Measure what you want to improve. Make efforts measurable
  • Maintain high visibility of projects which have a high risk
  • To deal with difficult folks, discuss with your managers and mentors
  • To deal with difficult folks, fall back to first principles
  • Be reachable to other engineers
  • Have a huge bias for action and delivery, but do not over-compromise on quality. Push back if required
  • Simplify code, systems, and architectures relentlessly
  • Demand high-quality work from others, but be pragmatic
  • Prioritize fixing tech-debt in code, systems, and architecture when the incremental cost to develop keeps rising
  • Document extensively, and demand it from others. Document “why” more than “how”
  • Avoid politics, but have right folks vouch for your work
  • When dealing with politics, fall back to first principles
  • If politics thrives due to team or company culture, switch
  • T]ry not to get involved in office gossip
  • Avoid stretching yourself too thin to be effective
  • Respect code and systems that came before you. There are reasons for every code and every guard that exists in production
  • Before you suggest major refactors, ensure you understand the system deeply
  • Resist the urge to refactor major systems to achieve simplification, because there’s a risk you will end up with a similarly complex system after some time