Level
1
Title
Software Engineer
Experience
0-3 years
|
Role Highlights
- You build small to medium sized well defined features
- You investigate and fix bugs, write tests.
- You communicate progress, identify blocking issues.
Domain Expertise
- You ask questions to support your own continuous learning.
- You learn from your own research and from those around you.
- You seize opportunities to increase your knowledge.
- You begin to understand the underlying OS and infrastructure your code runs on.
Programming / Problem Solving / Delivery
- You understand scope of work before taking on tasks.
- You recognize when you don't yet have the experience or knowledge to solve a problem and reach out to other engineers for help or guidance.
- You prepare to work on new tasks by planning an approach ahead of time and confirming it's well thought out.
- You write clean and readable code.
- You verify your work by writing tests as well as the old fashioned manual way.
- You collect and incorporate feedback (such as code reviews) to ship your work.
- You follow your team's best practices to bring your work to production.
- You take ownership of your work after it's released and quickly address issues as they arise.
- You participate in your team's planning and are learning to estimate how long work will take.
Communication
- You are learning to collaborate with team members in various roles (e.g. other engineers, PMs, designers)
- You know when to keep digging and when to ask for help. You know when you are stuck and need to be unblocked.
- When you learn something new, or figure out the solution to a problem, you let the team know and write documentation that helps others when they encounter similar issues if applicable.
|
Level
2
Title
Software Engineer
Experience
2-6 years
|
Role Highlights
- You build medium to large scale features, sometimes with not-so-well-defined requirements.
- You give higher-level status updates.
- You help mentor new hires.
- You understand why the things we build are important to the business.
- You collaborate with Product to give early feedback about user stories and sometimes fill in the blanks.
Domain Expertise
- You understand the technical concepts necessary to do your job effectively and are aware of industry trends in your domain.
- You have a good sense of where to find answers and are able to grow your own knowledge both with and without guidance.
- You have an intermediate understanding of the underlying OS and infrastructure your code runs on.
Programming / Problem Solving / Delivery
- You are able to read, comprehend and evolve other people's code.
- You almost always prefer the simpler solution over the “clever” one.
- You gravitate towards solutions that have the least amount of moving parts.
- You utilize new technologies, patterns, and the domain expertise of fellow engineers to supplement your own skills.
- You are learning to break down large problems into smaller, more manageable ones.
- You have strong debugging skills, allowing you to determine source of issues in unfamiliar code or systems.
- You estimate accurate timelines for tasks and deliver work at a steady, predictable pace to hit your deadlines.
- You pay close attention to code execution performance.
- You identify important tradeoffs, balance short-term needs with long-term goals, either independently or with your team.
Communication
- You collaborate effectively with your teammates, both a mentor and a mentee, and with others outside your team, and with people in other roles (e.g. PMs, designers, managers).
- You are able to take in vague requirements and ask the right questions to ensure they are clarified.
- You have a sense for when and how to appropriately and effectively offer feedback.
- You seek out and receive constructive criticism well and do not express territorialism over your work.
- You actively participate in interviewing and provide thoughtful feedback.
|
Level
3
Title
Senior Software Engineer
Experience
5-10 years
|
Role Highlights
- Your work extends to many parts of a product or system and sometimes across systems.
- You deliver projects independently or by leading your teammates to do so.
- You enable other engineers on your team to be successful.
- You sometimes challenge why the things we build are important to the business and can present alternatives.
Domain Expertise
- You have strong, well-founded opinions about how to build software in your domain, but you're adaptable and open to new ideas.
- You closely follow industry trends relevant to your domain and understand how to apply them to your work as appropriate.
- You share your knowledge with your coworkers.
- You have a strong understanding of the underlying OS and infrastructure your code runs on.
- You have accumulated a sizeable amount of knowledge but it finally dawns on you that percentage-wise your knowledge is declining ;)
Programming / Problem Solving / Delivery
- You are able to identify and solve issues even when they are not in your domain.
- Your technical planning has shown to reduce failure scenarios and identify edge cases early on.
- You break down complex problems into smaller, more manageable ones, and help others to do the same.
- You are adept at making decisions that involve a significant number of factors and have broad implications.
- You can collaborate on planning large amounts of work with reliable estimates of time, effort, and risk, and you help ensure your team can hit deadlines.
- You ensure performance and scalability are baked into your solutions and your team’s solutions.
- You understand how multiple projects - worked on by you and others - intersect and ensure minimal friction in their release.
- You work effectively at a variety of speeds: fast when risk is low and time is tight; more deliberately when a cautious and coordinated process is warranted.
- You know when to deviate from standard practices.
Communication
- You quickly extract core issues from discussions and meetings. Your presence makes meetings more productive.
- You are adept at giving and receiving constructive feedback and you both give and receive feedback clearly and with empathy.
- You explain technical concepts clearly and with patience, and adjust your communication based on the audience. You offer help when asked, but you also know when to step back and let others work things out on their own.
- You're an attentive and empathetic listener. You ensure that everyone you're working with gets a chance to share their thoughts and that they're heard.
|
Level
4
Title
Staff Software Engineer
Experience
8+ years
|
Role Highlights
- You choose new technologies.
- You have deep technical expertise in a business-critical area.
- You do serious research to evaluate and test options.
- You understand the implications and trade-offs of reliability, scalability, operational costs, ease of adoption, recruiting, etc.
Domain Expertise
- You use your expertise to improve Persado's capabilities in your domain.
- You actively share your knowledge and seek opportunities to teach others about your domain.
- You thoughtfully and practically introduce concepts and technologies from the industry to solve important problems.
- Work you have done or that is based on your expertise has consistently been successful. Your expertise helps projects and teams achieve and exceed their goals.
Programming / Problem Solving / Delivery
- Your solutions are consistently successful across multiple dimensions, including performance, scalability, robustness and maintainability.
- You create architecture that does not rely on you personally, and is robust against single points of failure, both in terms of systems and people.
- Your architectural proposals are informed by industry literature and you are able to develop enough domain expertise in the problem space to understand technological tradeoffs at a sufficiently deep level.
- You are able to look ahead 6-12 months to identify areas of greatest need for a particular large system or project, and turn this into a roadmap with actionable milestones.
- You bring together the work of multiple teams and individuals into a cohesive, achievable plan that aligns with goals and deadlines.
- You devise, apply, and share novel and nuanced ways to ensure the quality, production readiness, and continued health of complex systems.
- You incorporate awareness and understanding of work happening outside your team to minimize surprises and make projects more likely to succeed.
Communication
- Your documentation ensures that systems/architectures can be maintained or built upon by people who were not originally involved in building them.
- You help disparate groups of people collaborate, identify common goals, and reach consensus. Your facilitation skills keep conversations productive.
- You adapt your language to meet the needs of various levels of technical and non-technical audiences. Others seek you out because you're approachable, respectful, and they know they will learn from you.
- You not only practice mindful communication and active listening in your interactions but encourage these practices in others.
|