What would happen if you stopped paying people?

So I want to tell you about a chap called Rob Ashton. I don’t know Rob but he appears to be extremely excellent. Having got a bit narked off with his enterprise consultancy gig, Rob decided to toss it all in. Without a firm plan in plan in mind, Rob decided to make an offer to the world – anyone willing to cover his expenses could have Rob come and work for them for free. Initially I think the plan was to stick to Europe but things seem to have got out of hand and Rob got all over the place. You can read about it here.

Rob was very strict on the whole ‘not receiving payment’ thing, noting:-

I was offered pay for a number of roles while I was doing this, and turned it all down because I felt it would sully what I was trying to do. Also – I felt it would muck up the balance where the people I was working for really wanted me to be happy because it was all they were giving me.

And this me thinking, companies want to hire the best people they can. As a means to achieve this some companies come to the startling conclusion that if you want to hire and retain good people you need to be prepared to pay for them.

But this isn’t enough. Staff can only be as effective as the company allows them to be. If the company culture stifles productivity and those same staff, while more productive that others, are still not able to fully deliver.

What’s worse is that the company doesn’t realise this is happening, no company deliberately aims to clamp down on productivity. Things tick on the way they always have done, the star hires perform well relatively speaking, and staff stick around because taking a pay cut is difficult. So the warning signs are less obvious.

An interesting thought experiment would be to ask yourself

What would happen if you staff worked for free, what would you need to change?

Let’s ignore the practical implications of this statement, all I’m saying is, if you take money off the table what would keep your staff wanting to work at your company? This isn’t about extra perks and a ball pool, I’m including all extrinsic motivators. This is about identifying what it is about your organisation that demotivates, and identifying how the organisation could improve intrinsic motivation.

  • How would your approach to flexible working change?
  • How about performance review and professional development?
  • Most importantly, what would be the implications for your org chart?

The answers will highly dependent on context, but if we make the assumption that in many cases the goals of the staff member and company are aligned, then why wouldn’t a company want to act on the conclusions?

I think we are starting to see the results of this already in the form of a shift towards flatter hierarchies, ad-hoc work groups and acknowledgement that people are more important than process. Some companies lead the way such as Valve and Gore but any company could benefit from asking themselves this question.

Annual Performance Review: Emperor Palpatine & Darth Vadar

Darth Who?The value of Annual Reviews is a contentious subject, just ask Microsoft. In my view, so long as they are kept separate from pay reviews and form just a small part of the overall act of providing continuous feedback, I can see some value in them as a means to discuss long term progression.

A few years ago my company re-wrote our review template – I was concerned that my team might not take a great deal of interest in the new form, and heaven forbid, might not even read it before the reviews came about.

I felt that everyone would get more from the process if they had some idea of what to expect and how to use the template, so I filled in the form detailing the annual review that no doubt occurred between Emperor Palpatine and Darth Vadar in the aftermath of the original Stars Wars.

I share it here simply because I wish there was more HR material in the world based on Darth Vadar and Emperor Palpatine.

For those of you who consider the annual review to be an outdated process, bear in mind that this happened a long time ago in a galaxy far, far away.

Part 1: Overview of Role and Recent Projects

Vadar writes:

During the past six months I have focusing on the construction of the Death Star with a view to using it as a tool to dominate the Galaxy. The project is extremely complex and I worked closely with key stake holders to ensure that the design and subsequent deployment match business goals and directives.

Separately I have been working closely with the Galactic Fleet to isolate and crush what remains of the Rebel Alliance. This has involved detaining and interrogating key figures as well as embarking on an extensive search across the out reaches of the Empire.

Palpatine writes

I concur with Vader’s comments. It’s also worth noting that Vader has been actively recruiting and restructuring the Galatic fleet leadership team.

Part 2: Performance Overview

Objective #1 – Deliver a fully functional Death Star

Vadar writes:

How well did I perform against this objective?

I delivered a fully operational Death Star, which passed all user acceptance tests. It is true that the delivery was delayed and I put this down to the project management techniques employed in the early stages. Towards the end of the project I took a much more hands on role implementing a more iterative and incremental approach to delivery. In doing so it was possible to gain rapid feedback and ensure that value to the customer was maximised. Furthermore I made some tough decisions over poor performing members of the management team, introducing them to my ‘claw of death’.

Next Actions

I consider this objective complete, though note that following the destruction of the Death Star, we may need to build a new one.

Palpatine writes:

I agree that a functional Death Star was delivered. I am pleased that I was able to set a vision and direction and that the manifestation of that vision became a reality. I am also very pleased with the aesthetics, it almost looked like a real Moon.

While I was disappointed by the late delivery of the project I am much more concerned how such an obvious vulnerability found its way through the design reviews. I would have expected that this would have been picked up pretty much form the off. I am also deeply concerned by how it became possible for the Rebel Alliance to steal plans for the Death Star such that they were able to exploit the weakness. Furthermore the destruction of the Death Star has damaged our reputation as a Galactic force – how a single manned fighter was able to implode an entire space station is the stuff of science fiction.

Objective #2 – Crush the Rebel Alliance once and for all

Vadar writes

How well did I perform against this objective?

It’s fair to say that the Rebel Alliance cannot be described a ‘crushed’. I am happy with my overall approach, the Empire is very much in control of the Galaxy and the Rebel Alliance have not been able to secure an outpost, meaning that they are forced to move from temporary base to temporary base to evade a the might of the Galactic fleet. I feel strongly that it is only a matter of time before I have them trapped. That said I failed to account for key figures within the alliance, as well over looking a key vulnerability in the Death Star itself.

Next steps

I will embark upon a Galaxy wide search for the relocated rebel base, and continue with the aforementioned crushing

Palpatine writes

I agree that your general approach was thorough and methodical. I would have like to see more outright annihilation of innocent people but overall I am pleased with your execution.

Where I am less pleased is that you failed to adapt your plan to take into account key events, specifically the rebel attack on the Death Star and Luke Sky Walker’s ability to evade attack. It is unclear to me why you were not able to land a direct hit even when pursuing him along a narrow trench and supported by two of the finest pilots in the galactic fleet.

Part 3: Overall Rating

Vadar writes:

3 out of 5 – Effective contributor

Palpatine writes

2 out of 5 – Low Contributor, I feel that your overall performance was not up to the standard that I would expect from a Lord of the Sith.

Part 4: Feedback on Galactic Empire Inc

Vadar writes:

What I enjoy most about working here? I really like the almost unbounded opportunities to inflict misery and despair on pretty much anyone I like.

One thing I would change about Galactic Empires Inc. I think we need to review the weapons issued to our Storm Troopers, they seem faulty and rarely inflict any damage at all.

One thing I would like to see remain at Galactic Empires Inc. I think that our uniforms are pretty much the best in the industry. This is especially true for the Storm Troopers

Part 5: Future Development/Business Goals

Vadar writes

What I do well: Inspire terror in others.

What I want to improve: Despite being a master of the dark side of the force, I am still unable to consistently smite Knights of the Jedi.

How I would like my career to develop over time:Long term I’d like to move into a Supreme Leader of the Universe role

Palpatine responds

I agree with Vader’s comments, in particular I am keen to help him to improve his smiting skills. While I do not see Vader’s wish to move into Supreme Leader of the Universeship as unrealistic, such roles do not come up often.

Part 6 – Objectives

Objective #1: Create a new death star

Next Actions: Review the design docs to remove unlikely failure modes   Time frame for achievement:  This coming October

Objective #2: Crush the rebel alliance

Next Actions:  Discover the location of the rebel base Time frame for achievement: Next April

Palpatine summarises objectives:

Long term, Vader is looking to rule the entire universe, I see building the most devastating weapon ever created and crushing the only viable opposition as key stepping stones towards this goal.

Part 7: Record of discussion arising from the review discussion

Palpatine summarises

During the meeting we discussed my rating of Vader’s performance. While disappointed he understands that the loss of the Death Star played a big part in my overall decision.


Remember kids, appraisals should be:
  • Separate from pay reviews
  • A small part of a wider mechanism to provide staff with continuous
  • A two way street

I thought that 7 Digital had some good things to say on the subject

How to appraise a developer (part 3) – A worked example

This post forms part of series, if you’ve not done so already you may want to take a look part 1

Last time round I promised to provide a worked example of how the scheme might work, this post will chart the early careers of two fresh out of university  programmers, Alice and Bob. Alice and Bob are both smart people but have very different skill sets, Alice is a hard core dev and really has no desire to go into management, Bob on the other hand is weaker in terms of pure programming but is better with people and organisation.

This example is a little artificial since, in order to show case the scheme, Alice and Bob are pretty much polar opposites. Real world examples will be much more subtle, though hopefully by demonstrating a toy example it will become clear how to apply the same ideas once real people are involved.

Day 1

Our story begins as Bob and Alice join FantastiCo as graduate programmers. At this stage it is only necessary to identify the Core Knowledge Areas for their respective roles.

Alice

Alice is working on FantastiCo’s core platform, she has no customer facing responsibilities and while she works within a larger team, has no responsibilities outside of the code that she produces.

Bob

Bob will be writing plugins to unleash the awesome power of the FantastiCo’s core platform, the plugins are typically developed with a lot of client interaction and while Bob will not be expected to deal with clients on day one, once he gets up to speed this will become a significant part of his job. At this point his Core Knowledge Areas are the same as Alice’s but also include the ‘Client Comms’ Knowledge area.

6 Months

Alice

Alice is progressing well and coming along as expected, she has made less progress in areas such as Quality and Design though at this stage this is really just a reflection that her role is not yet providing the necessary opportunities.

Bob

Bob is clearly a good communicator but there are concerns that he doesn’t spend enough time testing his code. Like Alice, Bob has not made very much progress in Design and Quality but at this stage this is not a concern.

18 Months

Alice

Alice is demonstrating considerable technical skill and this is reflected in a strong performance in Construction and Technology. She is starting to approach the criteria for progressing up to Software Developer ii. The best way to do this is look at moving Operations or Design up to full Practitioner. It is also worth noting that Alice is starting to develop Project Management skills despite this not forming part of her Core Knowledge Areas

Bob

Bob continues to develop well in communications and while not as strong at Construction he is close to reaching Practitioner status. He is still not making progress against Testing and Quality which is starting to limit his effectiveness. In order to be promoted to Software Developer ii he needs at least three Core Knowledge Areas at Practitioner and the remaining Core areas at least Introductory. He’s getting close but he needs to start taking more care in ensuring that his code does what he says it does. Like Alice, Bob is also making progress against Project Management.

2 Years

Alice

Based on the proposed Ladder Levels, Alice is now at the stage where she can be considered for promotion to Software Developer ii. Her manager is very a happy for this to happen and Alice is promoted.

Bob

Bob has shown improvement against Quality and Testing, but still does not have the practical skills to adequately test his code, ultimately this limits Bob’s overall effectiveness and blocks him being considered for promotion to Software Developer ii.

2.5 Years

Alice

Now that Alice is becoming increasingly able she is taken on more responsibility for Project Management, while she does not have formal project management responsibilities it is now an important part of her role and has been added to her Core Knowledge Areas.

Bob

Following his previous review Bob has worked hard to improve his testing skills and he is now ready for promotion to Software Developer ii. Bob has joined the mentoring scheme and this is reflected in his progress against Line Management.

4 Years

Alice

Alice is now a highly respected developer and is starting to approach the point we’re she can be considered for promotion to Software Developer iii. Note that despite the fact that she has started interviewing, Recruitment is not a core part of Alice’s role.

Bob

Bob has recently shifted roles and is the Technical Project Manager of a small team. As such his Core Knowledge Areas have changed, in Bob’s case it is appropriate to remove Construction and Testing. Note, Bob’s role has changed but he still remains at the same ladder level of ii, having said that his new role means that he has greater responsibility than he did as a Software Developer ii and is compensated accordingly.

5 Years

Alice

Alice has been promoted to Software developer iii but has also shifted roles to Tech Lead , her project manager considers her input into the personal development of team as an important part of her role and Line Management is now a Core Knowledge area, despite there being no expectation that Alice will progress past Introductory. The shift to Tech Lead brings with it greater responsibility and this is reflected in her compensation, it is important to note that Alice could have stayed as an individual contributor without this negatively affecting her ladder level.

Bob

Now as an experienced Project Manager, Bob has reached Technical Project Manager iii status. He has become rusty development wise and his score against these areas has deteriorated since Construction and Testing are no longer Core Knowledge Areas, this is not a problem.

Walk Through Conclusion

After 5 years Bob and Alice consider themselves to be peers despite following very different paths and having very different skills sets. Alice worked consistently well through out the period whereas Bob was initially held back by his skills in Testing and Quality.

Series Conclusion

The scheme’s original aims were to

  • Provide junior and mid range staff something to aim at and work to.
  • Provide senior staff who do not wish to enter management an alternate career path without the fear of adversely affecting their seniority or salary.
  • Be flexible enough to account for nuances in the role of individuals

I think the scheme as it stands makes some real progress against these goals but there is still plenty to be done. Future work might include improving the examples section, refining the Knowledge Areas and tuning the criteria for ladder levels.

This is the last post in the series, I’d be very interested to hear of the experiences of others trying to solve a similar problem, please feel free to get in touch via comments or if you would prefer via email (neil at this domain).

How to appraise a developer (resources)

This post provides support and resources for the ‘How to appraise a developer’ series, If you haven’t read the series this post will make no sense whatsoever.

There are two main sections

Suggested Knowledge Areas

Knowledge Area Description
Coding The creation of software according to a specified design. The primary activity is creating code and configuration data to implement functionality using the selected languages, technologies, and environments.
Design The bridge between requirements and construction, design defines the structure and dynamic state of the system at many levels of abstraction and through many views.
Technology The use of tools, technology, methodologies, and techniques for software engineering.
Operations System installation, deployment, migration and investigation. Working safely with live systems.
Requirements Working with partners/commercial colleagues on an ongoing basis to translate their ideas into something that can be tackled in software.
Quality Activities performed associated with providing confidence that a software item conforms or will conform to technical requirements. Quality is related to testing but considers broader questions such as what strategies necessary to ensure systems work as expected.
Testing Practical means to verify behaviour of a component through unit testing, system/functional testing or manually. Testing is related to Quality but focusses on the practical aspects.
Documentation Activities associated with recording or expressing information about a how a system works.
User Interface Design Designing clear, discoverable user interfaces so that Partners are able to make full use of our systems.
Internal Relations Ability to communicate with and relate to those within the company.
Client Relations Ability to communicate with and relate to clients.
Supplier Relations Ability to communicate with and relate to technical suppliers.
Project Management Resource,task and process management, essentially making sure the right things get done.
Line Management Pastoral care, support and development – most commonly relating to direct reports.
Recruitment Includes CV assessment, interviewing, strategic direct recruitment.

Capability Examples

Below follows some examples to help with assessing a individual’s Capability level for a given Knowledge Area.

The examples are not exhaustive and should be added to over time, what’s more it is not necessary for the employee to satisfy all examples. The examples aim to answers questions like “What does a Practitioner in Design look like?”

Before diving into Knowledge Areas specific examples it’s worth considering the following broad guidelines that can be applied across all Knowledge Areas.

Introductory Rarely coaches others.
Looks to the team for support and guidance.
Practitioner Occasionally coaches others, usually those at Introductory level
Occasionally introduces new ideas and practices to the team.
Leadership Regularly coaches others, their own skills and expertise are amplified through the help that they provide.
Regularly introduces new ideas into the team with examples of where these ideas have been adopted.

Coding

Introductory Can complete simple 1 week (ish) well spec’d tasks/stories alone with some guidance from outside.
Can complete a medium complexity series of tasks/stories spanning a few weeks starting with a fairly loose spec, working along side a more experienced developer.
Practitioner Can complete a medium complexity series of tasks/stories spanning a few weeks starting with a fairly loose spec.
Proposes alternate and superior approaches to problems.
Leadership Takes the lead for large and complicated projects.
Takes the lead on high profile or time critical projects.

Design

Introductory Suggests sensible designs for small stand alone pieces of work.
Practitioner Can be relied upon to reliably produce sensible designs for loosely spec’d medium size projects.
Is sensitive to trades offs between flexibility at the cost of complexity.
Understands the need for maintainable extensible design work.
Leadership Takes the lead for the team’s most difficult design work.
Their work often has system wide architectural implications.
Can point to a number of projects where their design has stood the test of time.

Technology

Introductory Is aware of the technologies used by the team and has some idea of the reasons why one might be more appropriate than another.
Is not expected to make technology decisions, but should have opinions on what technologies they might use for their own tasks.
Has some experience of the technologies used by their immediate team.
Practitioner Has a good level of experience of all technologies that the immediate team make use of.
Has had exposure to technologies not actively used by the immediate team
Can reach decisions about library choice for some supporting technology, should we use JMock, EasyMock or Moquito as a Mocking framework?
Leadership Can make broad reaching project level technolgy decisions – what are the implications of upgrading to MySQL 5, is it sensible to do so?

Operations

Introductory Can spot obvious problems and make sensible first stabs at resolution.
Knows when to escalate a problem within the team.
Can provide basic support to those outside of the team e.g. A first line support team
Can perform system redeploys, noticing obvious problems, however needs the support of team to fall back on.
Practitioner Confident in the use of investigative tools, events logs also Wireshark or Jprofiler to diagnose and fix problems.
Is capable of deploying systems in isolation.
Leadership Handles the teams’s most complex operational issues, potentially diagnosing bugs in libraries that the team relies upon.
The person turned to for the ‘oh bugger’ moment.

Quality

Introductory Understands the rationale behind dedicating time to quality be this unit testing, pair programming, integration testing or otherwise.
Practitioner Regularly suggests ways in which improve the overall quality of the team’s work.
Encourages all members of the team to adopt practices to improve quality.
Leadership Considers the team’s long term strategy.
Can point to series of effective changes that they have instigated to improve quality.

Testing

Introductory Understands the importance of unit and integration testing.
Adheres to the team’s testing expectations
Is capable of writing tests where the code lends itself to testing, struggles in more complicated scenarios.
Practitioner Is capable of writing unit tests in all cases where it is sane to do so, making use of additional libraries over and above JUnit where appropriate.
Has a good understanding over what to test for, and writes tests in away that reduces maintenance load over refactoring.
Through system level testing can build a trusted series regression tests.
Where appropriate can devise manual test to reliable verify the behaviour of the system
Leadership Handles or advises on the team’s most complicated testing challenges, suggesting edge cases and reviewing testing strategies.

Requirements

Introductory Can spot subtle ambiguities in projects on which they are working and asks for clarification.
Practitioner Can work with parties outside of the team to nail down exactly what is wanted, offering advice where the requester is unsure or unclear.
Leadership Is trusted with requirements capture for the team’s largest projects.
Is able to identify alternate approaches to delivering large blocks of functionality.

Documentation

Introductory Where prompted can write clear descriptions of system behaviour.
With guidance can pitch documentation for the intended audience.
Uses code comments to explain how the code works
Practitioner Understands when and where to document
Does not over document
Code comments often explains why rather than what the code does
Leadership Notices where documentation is missing in a structural sense, creating new wiki/web pages as appropriate
Through good doc design, encourages continual maintenance since doc is often used.
Looks for ways to doc in an automated fashion

UI Design

Introductory Adheres to the team UI style
Considers the impact of their UI decisions
Can propose sensible ideas for simple UIs
Practitioner Proposes sane workable designs for complicated UIs
Leadership Takes the lead for the most complex UI challenges faced by the team.

Supplier Relations

Introductory Can raise well bounded faults.
Can express themselves clearly to suppliers
Typically chooses to communicate asynchronously over email (or similar)
Practitioner Chooses a suitable communication means though is confident to use a real time method.
Can follow up and present a clear argument where the supplier does not agree with our assessment of a fault.
Leadership Draws upon a network of contacts to circumvent bottle necks to achieve their goal quickly.
Through excellent interactions improves our relationships.
Understands when and how to raise matter through commercial channels

Internal Relations

Introductory Can express themselves clearly at a team level.
Practitioner Pitches their communication to a suitable level taking into account their audience and the context.
Has dealings with multiple departments within the company
Leadership Talk confidently to senior members of the company in different departments/countries.
Handles difficult or sensitive issues on behalf of their team.

Client Relations

Introductory Typically chooses to communicate asynchronously
Understand the difference between internal discussion and client facing communication.
Practitioner Understands that some information is sensitive and should not always be given to clients.
Can get to bottom of what clients are *really* asking for.
Can say ‘no’ in a constructive way
Chooses a suitable communication means though is confident to use a real time method.
Leadership Handles sensitive issues with large clients.

Line Management

Introductory Mentors junior members of the team
Assigned to help new members of the team to get up to speed
Practitioner Has formalised Line Management responsibilities
Leadership Line manages other managers.
Introduces new ideas to other line managers
Track record of handling sensitive or difficult line management issues

Project Management

Introductory Can keep track of non trivial lumps of functionality, perhaps they are not the only person working on the project.
Can provide sensible estimates and commitments for non trivial blocks of functionality.
Practitioner Has formalised project management responsibilities. Manages team projects on behalf of the team.
Leadership Manages multiple teams, provides advice and guidance for other PMs
A track record of successfully delivered blocks of functionality.

Recruitment

Introductory Assesses CVs
Can interview along side a more experienced recruiter
Practitioner Able to interview 1st rounds solo
Provides advice on CV review
Implements and develops direct recruitment projects
Leadership Develops interview/ CV assessment system
Instigates new direct recruitment initiatives
Meets with agents
Experienced final round interviewer

How to appraise a developer (part 2)

This post forms part of a series, if you’ve not done so already you might want to check out part 1.

So last time I talked about why on earth you might want a performance appraisal process, this time around I want to go over the scheme I came up with. At this point, I’d like to stress that an annual review is useless without continual follow up via day-to-day interactions as well as specific time set aside for 1-1s. Furthermore, without good management you will always fail, whatever the process.

The key aims of such a scheme are to

  • Provide junior and mid range staff something to aim at and work to.
  • Provide senior staff who do not wish to enter management an alternate career path without the fear of adversely affecting their seniority or salary.
  • Be flexible enough to account for nuances in the role of individuals

Warning

This post contains phrases like ‘Core Knowledge Area’ and ‘Capability Level’, I have managed to avoid ‘Leverage Synergies’ but you get the idea. You have been warned.

Areas of investigation

Before starting it seemed sensible to see if there was anything already out there that I could make use of. By far and a way the best resource I found was the Construx Professional Development Ladder, which in turn is heavily based on SWEBOK.

I also looked into Dreyfus modelling, which is a way of characterising improvement in a particular skill and used by coaches of all disciplines, from what I can tell the SWEBOK (and Construx) capability levels are based on the Dreyfus approach.

Overview of the scheme

Overall performance is split into a number of Knowledge Areas, this means that strong or poor performance in one area does not affect performance in another unrelated area. Once defined, Knowledge Areas are assessed against standardised Capability Levels and the resulting spread of skills is reduced to an overall Ladder Level.

This means that people with wildly different roles can be expressed in terms of one another, this is absolutely crucial in tackling the question of progression for senior developers who do not have formal management responsibilities.

The appraisee has full visibility over the analysis which forms the basis for further professional development and only the final aggregated level is made public.

Knowledge Areas

Before anything can be done it’s necessary to find a way to break down the role into specific skills, this means that feedback can be provided in a very targeted manner. Good appraisers do this naturally but since the feedback needs to be quantifiable the extra layer of formality is necessary.

I’ve identified 15 knowledge areas, these are largely based on the SWEBOK areas with a few additions/alterations to reflect my specific working environment. Were I thinking about including a wider range of roles (e.g. Sys Admin or Support) or to consider such a scheme for another company, then this table would need to be adapted.

The full list lives here, but a couple of examples include :-

Knowledge Area Description
Coding The creation of software according to a specified design. The primary activity is creating code and configuration data to implement functionality using the selected languages, technologies, and environments.
Design The bridge between requirements and construction, design defines the structure and dynamic state of the system at many levels of abstraction and through many views.
Technology The use of tools, technology, methodologies, and techniques for software engineering.
Operations System installation, deployment, migration and investigation. Working safely with live systems.

Core Knowledge Areas

It is not the case that all developers should expect to score highly in all areas, in fact the point of the scheme is to recognise variance in roles. As such some Knowledge Areas will be unavailable to some appraisees, Recruitment is a good example. However it is important to recognise that some Knowledge Areas areas are central to the performance of the individual regardless of what else they are able to contribute and that they are expected to score well in these areas. For example it is hard to envision a Software Developer for whom Coding is not a core skill however it may not be necessarily be a core skill for a Project Manager.

For each individual the appraiser must select a a group of Core Knowledge Areas to reflect what is most important about the role. Roughly ten Core Knowledge Areas from the total fifteen feels about right.

Capability Levels

Once the Core Knowledge Areas have been identified, it is time to grade each level. This part is fraught with problems and I’d be kidding myself if I thought this step could be completely fair. However I found the following to be a serviceable starting point.

Capability Level Description
Introductory The employee performs or is capable of performing basic work in an area, generally under supervision. The employee is taking effective steps to develop his or her knowledge and skills. In general the employee looks for support and guidance from the immediate team
Practitioner The employee performs effective, independent work in an area, serves as a role model for less expert employees, and occasionally coaches others.
Leadership The employee performs exemplary work in an area. The employee regularly coach employees and provides project as well as tech team level leadership. The employee is recognized within the company as a major resource in the knowledge area

In the future it may be necessary to define a level of achievement above Leadership, in which case it could be defined as “The employee is universally acknowledged by those who have achieved Leadership in a particular knowledge area to be a company expert in the area – essentially providing leadership for those already at Leadership level”.

Mapping actual performance to Capability Levels is made much easier through example and I’ve included a selection broken down by Knowledge Area here. In the general sense I have found the following to be a good guide.

Introductory Rarely coaches others.
Looks to the team for support and guidance.
Practitioner Occasionally coaches others, usually those at Introductory level
Occasionally introduces new ideas and practices to the team.
Leadership Regularly coaches others, their own skills and expertise are amplified through the help that they provide.
Regularly introduces new ideas into the team with examples of where these ideas have been adopted.

Ladder Levels

Once the appraisee’s Knowledge Area’s have been defined and assessed an overall ladder level can be assigned. This is important because this is the only part of the scheme that it made public to the company as a whole. In my current context three levels feels most natural. Other teams may benefit from a higher resolution.

Level Requirements Description
i Default grad level Entry level position, makes a positive contribution to the team but requires support and guidance from those around them.
ii 3 areas at Practitioner and Introductory in all other Core Knowledge Areas A key member for their team, they are able to work with little guidance and act as a trusted peer to other grade iis as well as providing support to those less experienced. Team members on this grade will have a few years commercial experience.
iii 3 areas at Leadership, 8 areas at Leadership and Practitioner combined and finally Introductory in all other Core Knowledge Areas A leader at development team level and a significant contributor to the tech team as a whole.

Summing up

So in summary, look at the appraisee’s role, pick the most important attributes and mark them as ‘Core’. Then grade them against all Knowledge Areas, this forms the basis for further professional development. Turn the handle and convert the assessment into a ladder level and hey presto people with disparate job roles can be recognised for their seniority regardless of whether they are pure devs or pure managers, or most probably some combination of the two.

As with anything, I’m always keen to reduce process to the barest minimum possible without things  descending into chaos and I’m aware that at first glance this scheme might feel quite heavy. However without formally breaking down a role, I can’t see a fair and transparent way to appraise technical staff.

Next time round I’ll post some worked examples of how to apply this in practice.

How to appraise a developer (part 1)

So you have a group of young, smart, driven developers working within a much larger team of young, smart and driven developers. This is in many ways ‘great’, particularly since over time these smart driven developers will drop the ‘young’ part and then things really start cooking.

The thing I’ve noticed is, in groups larger than those that can be counted on fingers and toes, there is a very real need not only to have really good feedback over progression, but also for that progress to be recognised publicly.

Most companies address this need via job titles and annual reviews, in many cases they don’t do a great job and in truth do more harm than good.

My current place has grown rapidly from start up roots and for most of my time there everyone vaguely technical had the same title and we didn’t worry too much about it. As time went on we needed a little more structure and a combined project manager/tech lead/line manager role sprung up.

The difficulty being, that suddenly it then appeared that the only way to get ahead was to move into the management role. Having your best developers move into management for no better reason than it being the only option is toxic. It was clear that it was time to map out a technical path for those who wanted to stay close to the code.

The problem is if you do this, then you need a way to tell people where they are today and what they need to be doing to be considered for the next rung up. If this is going to work it’s going to need to be very flexible otherwise you’ll be forcing people to follow the ladder rather than their own natural progression. Let’s keep motivation intrinsic, kids.

Ordinarily when faced with a really tricky management problem the interwebs are awash with great advice. You need to hire great people? No problem, my meetings suck, easily solved, I’m scared to deploy, are you kidding? But on the subject of an objective method of providing developers feedback, that can then be used to feed into pay reviews and job titles, mainly silence.

I say mainly silence, that’s not fair, there’s SWEBOC that inspired Joel Spolsky and Construx, there’s also the quirky but smart Programmer Competency Matrix.

So I decided to write my own, and I thought I’d share it here. Maybe I can even get some feedback.

So the challenge,

The scheme must satisfy the following :-

  • Provide junior and mid range staff something to aim at and work to.
  • Provide senior staff who do not wish to enter management an alternate career path without the fear of adversely affecting their seniority or salary.
  • Be flexible enough to account for nuances in the role of individuals

In part two I’ll outline what I came up with.