Ten Principles for Growth as an Engineer

  1. Reason about business value: Reason like a CEO. Understand the value of your work to your company and take responsibility for reasoning about quality, feature-richness, and speed. Your job isn’t just to write code; your job is to make good decisions and help your company succeed, and that requires understanding what really matters.
  2. 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.
  3. 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.
  4. Improve your writing: Crisp technical writing eases collaboration and greatly improves your ability to persuade, inform, and teach. Remember who your audience is and what they know, write clearly and concisely, and almost always include a tl;dr above the fold.
  5. 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.
  6. 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.
  7. Master your tools: Mastery of editor, debugger, compiler, IDE, database, network tools, and Unix commands is incredibly empowering and likely the best way to increase your development speed. When you encounter a new technology or command, go deeper than you think you have to; you’ll learn tricks that will serve you well again and again.
  8. Communicate proactively: Regular, well-organized communication builds confidence and goodwill in collaborators; knowledge-sharing creates an atmosphere of learning and camaraderie. Share knowledge and set a regular cadence of informing stakeholders on project goals, progress, and obstacles. Give talks and speak up judiciously in meetings.
  9. Find opportunities to collaborate: Good collaboration both increases your leverage and improves your visibility in your organization. Advancing your craft as an engineer requires you to have an impact beyond the code you write, and advancing your career requires, to a certain degree, building a personal brand at your company. Cross-functional projects and professional, respectful collaboration are critical to both.
  10. Be professional and reliable: Think of yourself as a professional and act like one. Come to meetings on time and prepared, then pay attention. Deliver what you say you will and communicate proactively when things go wrong (they will). Keep your cool and express objections respectfully. Show your colleagues respect and appreciation. Minimize your complaining; bring the people around you up, not down. Everyone appreciates a true professional; more importantly, it’s the right way to behave.




Distributed systems enthusiast, outage debugger, former kernel hacker, engineer turned manager turned engineer.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Common Agile Mistakes

How Do SQL Database Engines Work?

Do you need a Computer Science Degree?

How to use high-performance local storage for AI workloads on AWS Outposts

Introducing Turbo: 5x faster than Yarn & NPM, and runs natively in-browser 🔥

Comparing Nuclio and AWS Lambda

Building and deploying lots of microservices using werf and GitLab CI

Recent troubleshooting cases from our SREs, part 2

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Dan Heller

Dan Heller

Distributed systems enthusiast, outage debugger, former kernel hacker, engineer turned manager turned engineer.

More from Medium

A Software Developer’s Guide to Negotiating Benefits During Interviews

Software Engineer jobs are in demand

Top Interview Topics for Software Engineers

Computer with code editor

Tenacity Makes Great Developers

Meta / Amazon / Google / Microsoft| Trim a Binary Search Tree | LeetCode-669: Medium | JavaScript…