Recently is a periodic retrospective.

Table of Contents



Curse of Knowledge: The inability to communicate your ideas because you wron gly assume others have the necessary background to understand what you’re talking about.

Base-Rate Neglect: Assuming the success rate of everyone who’s done what you’re about to try doesn’t apply to you, caused by overestimating the extent to which you do things differently than everyone else.

Hard-Easy Effect: Hard tasks promote overconfidence because the rewards are high and fun to dream about; easy tasks promote underconfidence because they’re boring and easy to put off.

Hedonic Treadmill: Expectations rise with results, so nothing feels as good as you’d imagine for as long as you’d expect.

Positive Illusions: Excessively rosy views about the decisions you’ve made to maintain self-esteem in a world where everyone makes bad decisions all the time.

Ostrich Effect: Avoiding negative information that might challenge views that you desperately want to be right.

Fluency Heuristic: Ideas that can be explained simply are more likely to be believed than those that are complex, even if the simple-sounding ideas are nonsense. It occurs because ideas that are easy to grasp are hard to distinguish from ideas you’re familiar with.

The only true authority stems from knowledge, not from position. Knowledge engenders authority, and authority engenders respect – so if you want respect in an egoless environment, cultivate knowledge.

Don’t be “the coder in the corner.” Don’t be the person in the dark office emerging only for soda. The coder in the corner is out of sight, out of touch, and out of control. This person has no voice in an open, collaborative environment. Get involved in conversations, and be a participant in your office community.

Fight for what you believe, but gracefully accept defeat. Understand that sometimes your ideas will be overruled. Even if you are right, don’t take revenge or say “I told you so.” Never make your dearly departed idea a martyr or rallying cry.

Follow the principles of extreme ownership.

You need to face the consequences of your mistakes and learn from your mistakes. If you don’t make mistakes, you won’t learn anything, and you won’t grow up

Novelty is a risk. Too much of it, and you’re almost certain to fail. But too little of it and you’re just a redundant copy of someone else — which is also a recipe for failure.

Be curious. Read widely. Try new things. What people call intelligence just boils down to curiosity.

We should all work on projects that interest us, where we have insights that others don’t have, and that motivate and inspire us and others.

You must work on something that inspires you and others, you must work on something with a significant impact, and you must do it in a way that makes getting where you want to go as easy as possible and keeps you there as long as possible.

If you can teach yourself how to solve problems, you have a bright career ahead of yourself. No matter where you live, you will find problems galore in need of solving. Those who would benefit from solutions of their problems will pay you handsomely to solve them.

Take initiative: The most common misconception in software is that there are grown-ups out there who are on top of things. Own your team’s and company’s mission. Don’t wait to be told; think about what needs doing and do it or advocate for it. Managers depend on the creativity and intelligence of their engineers, not figuring it all out themselves.

Unblock yourself: Learn to never, ever accept being blocked; find a way by persuasion, escalation, or technical creativity. Again, your job isn’t just to write the code and wait for everything else to fall into place; your job is to figure out how to create value with your efforts.

Own your project management: Understand the dependency graph for your project, ensure key pieces have owners, write good summaries of plans and status, and proactively inform stakeholders of plans and progress. Practice running meetings! All this enables you to take on much bigger projects and is great preparation for leadership.

Own your education: Pursue mastery of your craft. Your career should be a journey of constant growth, but no one else will ensure that you grow. Find a way to make learning part of your daily life (even 5 minutes/day); get on mailing lists, find papers and books that are worth reading, and read the manual cover to cover for technologies you work with. Consistency is key; build habits that will keep you growing throughout your career.

Communicate proactively: Regular, well-organized communication builds confidence and goodwill in collaborators; knowledge-sharing creates an atmosphere of learning and camaraderie. Shar e knowledge and set a regular cadence of informing stakeholders on project goals, progress, and obstacles. Give talks and speak up judiciously in meetings.

The key observation is that while your technical programming ability may plateau, the impact of your technical contributions doesn’t have to. Your ability to decide where to spend your efforts to maximize your impact — what code to write, what software to build, and which business problems to tackle — is unbounded. It’s this ability that distinguishes the most valuable and effective engineers from everyone else.

What makes for a world-class software engineer is the ability to consistently deliver business value. Effectively communicate with the non-technical stakeholders and be the bridge between technology and business goals. Make sure they’re aware of pros and cons of every development related decision.

You identify and solve problems that are core to the business, or you enable those around you to more effectively solve those core business problems. It’s in this alignment of your technical efforts with business value that your career grows.