Rather than time spent or indvidiual experiences, I go back to the knowledge, skills, and behavior of a senior engineer. Not only what you know, but how you show up for your team.
Knowledge
- Best practices of application design
- New technologies, services and tools
- Application of architectural patterns
- Presents different options for application design along with their pros and cons
- Effective use of modeling or diagraming tools to present information to technical and non-technical audiences
- Standard Reading
- Patterns of Enterprise Architecture Patterns of Enterprise Integration Working Effectively with Legacy Code Service Design Patterns Domain Driven Design
Skill
- Can review code from engineers at the same level or lower and approve pull requests
- Can create a personal development plan for a less experienced developer
- Selecting appropriate reference architectural patterns where applicable and available
- Effective documentation and communication to technical and non-technical audiences
- Validate system designs against business specifications
- Creating well defined interfaces between systems per department best practice
- Identify and diagnose performance problems using a profiler
- Coaching and mentoring of less experienced developers
Behavior
- Design the solution structure of applications
- Debugging tools - can setup and configure the remote debugger
- Determines best patterns when appropriate evaluates trade-off of design options
- Refactors legacy code into patterns
- Recognizes that code must be re-written based on reviews, and enforces re-writes if not
- Directs the reading of less experienced developers
- Follows industry bloggers
- Optimizes code to create performant solutions
- Builds security and access control into the design principles
- Guides and influences engineering department
- Regularly mentors and coaches’ developers
- Regularly reviews code of others