In 2020, author Jocko Willink published his book “The Code. the Evaluation. the Protocols: Striving to Become an Eminently Qualified Human”. In this book he leveraged the evaluation criteria the United States Navy leverages as part of their yearly performance evaluations. In this are listed seven areas of evaluation as to what makes up the eminently qualified sailor.
These included areas such as Knowledge, Quality, Character, Initiative and several others along with a grading scale of 1-5 with 1 being “Below Standards” and 5 being “Greatly Exceeds Standards”. Without regurgitating the contents of the form, it is a stringent criteria that seems almost designed to not award the highest score in order just to “pass people through” the evaluation process. Instead, causing the evaluator to put more thought into the evaluation.
In his own book, he takes this approach for doing self-evaluations to determine where you are on the spectrum of an Eminently Qualified Human, taking this evaluation criteria to life as opposed to the military.
The result is a remarkable set of parameters and standards that are admirable to hold yourself to but in reality are, frankly, nearly impossible to achieve.
This had me thinking what it would take to be an Eminently Qualified Developer. I’ll preface this by saying, I do not consider myself to be one. Like anyone, I have my strengths and weaknesses, but the overall point is to give a high bar in the hopes it will guide and motivate you to be the strongest developer you can.
This is, by no means, scientific and is based on my own observations and life of experience working in the software engineering field. If you have any thoughts, I’d welcome them via the contact form located here.
The five evaluation criteria I am using are: Knowledge, Work Quality, Creativity, Execution, and Teamwork.
Each of these has their own set of methods and evaluations needed for you to determine, for yourself, if you are the Eminently Qualified Developer.
What the Scores Mean:
- 1.0 – Below standards or lacking significant progress towards stated goals listed in each area.
- 2.0 – Progress being made: Does not yet meet the 3.0 standard
- 3.0 – Meets basic standards for performance listed in each section.
- 4.0 – Above Standards: Exceeds most 3.0 standards
- 5.0 – Meets or exceeds all standards for most of the specific items listed for each area.
Knowledge: Technical Knowledge and Application
|1.0||Lacking knowledge of the technology being evaluated.|
Unable to provide basic solutions to common problems.
Inability to work independently to investigate methods or solutions.
Unable to understand basic concepts and troubleshooting techniques.
|2.0||Willingness to learn technologies identified as gaps.|
Contributes ideas toward standard operating procedures.
Ability to troubleshoot simple problems within experienced technology.
|3.0||Strong working knowledge of technology|
Ability and willingness to share methods and ideas for product/project advancement.
Able to work independently with minimal supervision.
Ability to accurately troubleshoot problems and do research to provide solutions.
|4.0||Established project contributor with a willingness to mentor and train developers.|
Superior troubleshooting skills able to resolve issues for team all team projects, not just their own.
Take steps toward the certification for their primary technology or additional facets within that technology.
|5.0||Recognized contributor to solutions for not only your projects but able to provide technical expertise to other team members and external projects.|
Ability to triage and resolve complex problems with your own work as well as work contributed both within the team or from third parties.
Ability to work and provide peer-leadership.
Always seeking to learn new technologies and/or languages and attempt certifications for them.
Quality: The Standards by Which You Produce Release Products
|1.0||Inability to produce or work product contains significant issues and bugs that need to be resolved by others.|
Always misses technical deadlines thereby delaying release efforts by the team.
Requires unnecessary amounts of supervision in order to stay on task.
Never tests their own work.
|2.0||Frequently diverts from assigned tasks.|
Occasionally misses technical deadlines or requires additional developers to complete tasks.
Needs supervision to stay on track.
Tests, but does so manually or in a non automated way. Relies on others for automated test integration.
|3.0||Always stays on task and on track|
Does not miss stated deadlines or is able to accurately revise deadlines in an agile way.
Requires minimal supervision or consultation to accomplish tasks.
Runs unit and functional tests before handing items off to quality teams.
|4.0||Able to contribute to tasking and planning as well as dependable on delivering products.|
Able to provide thoughts and opinions on acceptance criteria and be able to identify clarity is needed for the production of more accurate work.
Always runs automated and scripted tests before passing on to quality assurance teams
|5.0||Forward thinking and able to see issues during task planning allowing for task refinement or revisions of acceptance criteria.|
Exceeds stated deadlines to allow for more testing.
Able to counsel and supervise junior developers in achieving top quality work.
Comes up with test criteria for their own as well as other’s work and provides mentorship and guidance on best practices for testing software.
Creativity: Innovation and Ability to Contribute creatively to Your Projects
|1.0||No significant contributions.|
Stagnant in terms of ideas or provides no original ideas at all.
|2.0||Working to mitigate creative deficiencies and putting forth the effort to learn and contribute new ideas.|
Able to take direction from others as to possible avenues of thought or growth. Able to recognize the planted seed.
|3.0||Ability to contribute regularly and provide new ideas and guidance for the team.|
Seeks to refine and improve mindset to think outside-the-box and provide alternatives to stale ideas.
|4.0||Always ready to provide new ideas or innovative solutions.|
Innovations and solutions are superior and accepted by other members of the team.
Able to provide alternatives and new solutions to other contributed work.
|5.0||Provides guidance, leadership and creative ideas to third parties.|
Sought out by others internal to the team as well as externally to provide technical designs.
Execution: The Ability to Deliver
|1.0||Delivers nothing or vastly sub-par work that misses stated goals and deadlines.|
Code always being sent back for re-work or re-development.
|2.0||Occasionally misses deadlines or budgeted resources for a task.|
Mis-judges the levels of efforts on their assigned tasks.
Makes most deadlines and budgets associated with their projects or tasks.
|3.0||Worked with others to complete tasks that may be outside their skill level.|
Usually delivers their work on time and within stated budgets or time allocations knowing when things go into risk for the purposes of planning by superiors.
|4.0||Delivers on time and on budget.|
Ability to mitigate risk to the project by providing solutions to complex issues that arise during development.
|5.0||Always delivers on time and on budget.|
Develops and produces the standard by which deadlines and requirements are met.
Delivers superior, bug-remediated work that never has to be hot-fixed by other developers.
Teamwork: Playing Nicely with Other Developers and Customers
|1.0||Quarrelsome or argumentative with other team members about items related and unrelated to work.|
Frequently passive aggressive or sarcastic in toxic ways.
Detracts from the culture or environment of the team.
Isolates themselves and does not show up for scheduled meetings.
|2.0||Able to get along with others but not overly invested in the company culture or environment.|
Prefers to isolate or work from home and attend meetings remotely.
Sometimes passive aggressive.
|3.0||Amenable and agreeable to the culture without being a kiss-ass.|
Works well with team members and managers.
Does not engage in passive aggressive nor is platitudinal.
|4.0||Can be trusted to be put in front of customers without worry that they will make unnecessary or unprofessional comments or remarks.|
Gets along well with team members and management.
|5.0||Has impeccable relationships with customers and vendors.|
Facilitates relationship building and team-building interactions across the organization.
Trusted unconditionally by co-workers and management and looked to for leadership of the culture of the organization.
The example by which others should conduct themselves during and outside of their working environment.
I make no claim to the highest marks but these are the standards I have come up with for my own expectations and goal setting. Put short, these are the goals and values I strive for every day. And, like many, I fall short a lot.
These items are designed to be difficult. And it would be nearly impossible to meet the highest standard across all five categories. The idea is to provide the ideal. What you want to strive for in your work and in your life as a developer.
As developers, we recognize our learning is never finished. There are always ideas and alternative ways to resolve problems or provide innovative solutions. Our minds and thoughts should always be open, but focused on being the absolute best versions of ourselves.
By continuing our education, mental and emotional growth and maturity as individuals we can provide the highest level of service and quality to our customers. Where do you fall on these criteria? How would you grade yourself on the scale of 1 to Eminently Qualified Developer?