Skip to content

Instantly share code, notes, and snippets.

@guneysus
Forked from v0lkan/engineer.md
Created May 15, 2020 10:30
Show Gist options
  • Save guneysus/4ad8823834729bd31faada6ab2f87af6 to your computer and use it in GitHub Desktop.
Save guneysus/4ad8823834729bd31faada6ab2f87af6 to your computer and use it in GitHub Desktop.
The Evolution of a Software Engineer

This gist outlines the change in the depth and breadth of the tasks and responsibilities of a software engineer as she continuously improves herself.

I created this to supplement a discussion in an internal slack group; then I though the rest of the world might benefit from this too.

Contributions are always welcome.

Junior Engineer

  • Knowledge
    • Demonstrates a fundamental knowledge of technical specialty.
    • Writes code, completes programming and assists with the debugging of applications.
  • Productivity
    • Demonstrates the ability to learn quickly.
    • Initiates self tasks.
    • Is proactive.
    • Exhibits good prioritization of self tasks.
    • Exhibits good critical thinking.
    • Good-enough planning and estimating self work.
    • Can handle medium level problem solving on his/her own.
  • Quality of Work
    • Applies a test-driven approach.
    • Applies the concepts of CI/CD.
    • Mindful of making minimal cross-cutting concerns.
  • Collaboration
    • Is responsive.
    • Communicates effectively with peers.
    • Has willingness to learn from others.
    • Demonstrates curiosity to understand what other teams are doing.
  • Leadership
    • Demonstrates eagerness to proactively develop skills.
    • Contributes to team morale.
    • Manages self successfully.

Engineer

  • Knowledge
    • Maintains, modifies and enhances existing software, and participates in development and testing of new software application programs.
  • Productivity
    • Demonstrates the ability to work independently.
    • Understands self as well as team’s tasks, prioritization, and is able to maintain focus on key deliverables.
    • Accurate in planning and estimating work.
    • Proactively shares ideas on a team level.
    • Starts dealing with high level of complex problems without help.
  • Quality of Work
    • Achieves completeness in implementation.
    • Understands the notion of clean code and refactors and augments tasks along the way.
    • Very mindful of self work in terms of the impact on quality concerns.
    • Understands customer’s needs in terms of quality.
  • Collaboration
    • Promotes collaboration within the team.
    • Able to improve performance through feedback helpful to others.
    • Understands what other teams are engaging in.
  • Leadership
    • Owns tasks till delivery.
    • Add passion and excitement to team’s spirit.
    • Holds himself or herself accountable for his/her work.
    • Adds innovative ideas to the team’s goals.

Senior Engineer

  • Knowledge
    • Works within general practices to identify the product’s needs and potential enhancements; designs, develops, tests, and implements end-to-end solutions.
  • Productivity
    • Proactively shares ideas and collaborates on group level.
    • Familiar with a broad set of tools and technologies.
    • Leverages code-reuse as best as she can (including “open source”).
    • Handles complex problems and starts helping others.
  • Quality of Work
    • Highly focused on the customer’s success.
    • Designs for testability in mind.
  • Collaboration
    • Open and expressive.
    • Reviews her work and others’ work, and able to give effective feedback.
    • Willing to tackle any work necessary to get stuff done.
    • Has solid presentation skills.
    • Has a good understanding of cross-team activity.
  • Leadership
    • Has clout within the team.
    • Contributes effectively to a positive team morale.
    • Aligns personal efforts with business goals.
    • Provides feedback on product’s design and usability.
    • Proactively seeks opportunities to make the product better.

Staff Engineer

  • Knowledge
    • Plans design, develops, and implements new ideas and products.
    • Leads multiple projects or a major critical project.
    • Involved in cross-team groups, reviewing software’s impact on them.
  • Productivity
    • Adapts to changing priorities and situations.
    • Can rapidly prototype.
    • Influences goals beyond his/her group.
  • Quality of Work
    • Builds for interoperability.
    • Works proactively with the support teams, understanding their needs and wants.
    • Promotes an environment of security and quality in the product.
  • Collaboration
    • Communicates effectively across engineering teams and guides discussions with product people and other teams to make the product better.
    • Provides visibility into the team’s activities.
    • Proactively facilitates cross-functional groups to solve issues and problems.
    • Demonstrates a high tolerance to constructive feedback.
  • Leadership
    • Helps recruit top talent.
    • Holds on to a vision, while not being afraid to disrupt the status quo.
    • Has clout within the entire engineering org.
    • Responsible to provide effective feedback on the product’s strategy.
    • Thinks systematically.
    • Hold himself/herself responsible for the team’s work.
    • Gracefully handles pressure.
    • Mentors others inside the engineering group.

Principal Engineer

  • Knowledge
    • Advises and performs highly-complex research, designs and develops complex software architectures even with insufficient/unclear specifications.
    • Generally serves as an expert, providing management with technical guidance.
  • Productivity
    • Proactively builds and influences the company goals beyond his/her own organization.
    • Is the “go to” person to resolve complex cross-team problems.
  • Quality of Work
    • Drives discussions on building quality into specific products and integrated systems.
    • Promotes a quality environment outside his group, and evangelizes best practices.
  • Collaboration
    • Communicates effectively within engineering and across other departments and with customers when necessary.
    • A broader knowledge and familiarity with the products, teams, enabling him/her to articulate the product’s needs and technical challenges on a company level.
    • Demonstrates high self-awareness of impact on the product.
  • Leadership
    • Has clout across the company.
    • Aligns the team efforts with the business goals.
    • Looked at as the “content leader” inside the company.
    • Helps drive community involvement within the company.
    • Leads relevant feedback on the company’s roadmap.
    • Mentors and educates others in the company.

Distinguished Engineer

  • Knowledge
    • Industrially recognized as a guru and a thought leader.
    • Advises the senior management and provides a broad technical direction.
  • Productivity
    • Prolific with innovation, ideas.
    • Is disruptive.
    • Has extremely visible external communications.
    • Influences goals beyond the company, on an industry level.
  • Quality of Work
    • Makes significant long-term investments towards quality, informed by other departments outside the engineering group.
    • Promotes a quality approach and thinking on a company level not only within the current product, but also across a wide spectrum of products that the company produces.
  • Collaboration
    • Communicates effectively with executives.
    • Cooperates with partners and other stake holders to make sure the product value is maximized.
    • Has vast understanding of the Company’s products enables him/her to influence trends and strategically impact the business as well as represents the company at outside events.
  • Leadership
    • Establishes differentiators through innovation.
    • Has clout within the external technical communities.
    • Holds himself/herself accountable for major architectural decisions.
    • Looked at as the content leader both inside and outside the company.
    • Drives community involvement, speaking at events, organizing events and tech-talks.
    • Educates others in the community.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment