+4 votes
by (2.7k points)

How do technology companies like Google measure the performance of their engineers or software developers?


4 Answers

+5 votes
by (2.7k points)
 
Best answer

As you ask about the case of Google, I will explain the system used by this company in particular to control the performance and productivity of all your equipment. Google is based on an OKR system (Objectives and Key Results)and not only for a work environment but also for a personal one.

The objective of the OKRs is to make all the members of a team clear about what is expected of them, what objectives they have to reach and therefore what their desired level of productivity is. An additional characteristic of the OKRs is that each worker has their own objectives but these are public for the rest of the company, so that if a worker is hard pressed to reach his objectives, another one that has already overcome them can throw him a hand.

The OKRs are composed of two elements: The objectives and the key results.

  • The objectives are usually usually subjective and qualitative. For example: "Develop an application that exceeds the expectations of our users".
  • The key results are concrete, specific and measurable. For example: "Finish a module of the App in week 1" or "Get a valuation in UX over a 7 out of 10".

Each objective is accompanied by its key results that will determine how well the fulfillment of that objective progresses.

Companies such as Intel, Uber or Google use OKRs systems with great results. In addition, tools are now appearing that help us manage the OKRs in our teams in an effective way such as WeekDone (specifically for this) or TribeScale(among other equipment management functionalities).

In conclusion: With this system of key objectives and results it is not only easier to evaluate the productivity of the members of a team, but it is also ideal to detect possible difficulties when reaching objectives and to fix them before it is too late.


+3 votes
by (2.7k points)

Measuring productivity in software companies is the most difficult task to do because it is a metric that, in addition to being composed (calculated with the combination of measurements or other metrics), there is no consensus.

I do not know how they solve it exactly but I have seen it done in different ways:

  • Compliance with deadlines (CSI)
  • Compliance with estimates (CPI)
  • Cup of defects in development
  • Defects cup in UAT

And so several more definitions; As in any metric you should have your own definition based on the performance aspects of your business and especially those that you can measure.

Good question,

Regards!


+4 votes
by (2.7k points)

How do technology companies like Google measure the performance of their engineers or software developers?

First you must know that development is an art. Therefore, there is no exact science. It's a matter of strategy.

360 evaluation for each employee be a developer, PM, Director, CIO or CEO etc.

What is the evaluation of 360 ?, in which each person defines 3 objectives that must be consistent with the mission and vision of the company, and other 3 personal objectives to improve themselves as training, language, contribute something etc. And in turn, this same person would be evaluated by his boss, by himself, by his peers, by the client, by the supplier, etc. To value in different facets.

Ah but this is for a normal company. In Software Development likewise, what we need is to be a little more technical. As what ?, evaluate by its "tags" or parameters.

1) Junior Programmers, Analysts: Learn new things, they may have mistakes but they learn and document and consult with senior people. And they can also teach their peers and seniors. Your tag in general is 70% solve tickets, and 30% new projects. In general, they analyze and develop.

2) Senior Programmers: They learn new things, they over-specialize in something new, they encourage junior programmers to detect their strengths and learn more, and help solve problems in their free time. Your tag in general is 60% create new projects, 30% solve complex tickets that could not solve the juniors, and 10% teach or create new projects, can participate to create guidelines or recommendations guidelines for the team. In general: Analyze, Estimate Times, Develop and Implement solutions.

3) Masters Programmers: Very similar to the Senior, but if they can get into the core of a system, for example modify the symfony library to work better, or get and reverse engineer in Moodle and can deduce where they come from data and modify at the core level, or even Javascript can create their own frameworks or improvements at the level of pure Javascript, are those programmers who have published articles, blogs, and have participated in large projects or with some API have modified to use it millions of people. API's to manage money, traffic, and for high transactions like 3000 per minute like min etc. They are the ones who train seniors, create guidelines, etc.

Their tag is 40% They teach new things, publish books, articles or blogs or document guidelines, 50% new projects and 10% help to supervise big projects and push or catalyze for Masters and Senior Programmers to land and deliver their projects to time or fit at least.

4) PM. What a project leader does, is an intermediary who communicates constantly with the programmers, and asks their status every day. And with the clients they are always with the door open and they make feedback once a week with each client. And it feeds them the advance, and feedback of the tests with the responsible programmer (Senior or Masters).

5) CIO or CEO, either of which must make strategic decisions, and endorse.

What is the goal of Google, or any technology company ?. It makes it easier for each programmer on average to make more than what they spend within the company.

That give more solutions, instead of problems, and if they have problems that are not stuck ask for help, and know how to help each other as a team.

A company like Google has small groups of less than 10 people in each project, or subproject. Never more than 15 programmers. Because if there is no chaos. And because it is measured by results in each project that reach the goal, it is useful to the clients.

In my personal experience ...

I measure a programmer, for the ability to solve problems, and be more able to create new things, instead of solving problems every day tickets. And if you repeat the tickets again it is because your previous solution was not correct and re-rework again, and then make the Senior Programmer work these are the ones that spend more. Better still find the error in the testing phase, because an error detected in production by the client side is more expensive repair and correction of the system, true #apple or #microsoft ??.

And what you have to try to do, is that a programmer learns continuously, and every 100 lines of code so to speak has 1 error, and not 99 errors and 1 thing well. Well, these programmers go outside.

In Google 10 years ago I knew that each programmer makes approximately 300,000dlls on average to Google. This will give you an idea of ​​the performance that Google has with its own employees.

+5 votes
by (2.7k points)

In a 'traditional' company, your work will normally be evaluated by your superior; it is 'the boss' who decides if you have done well or badly and, on the other hand, it is the boss who decides on your professional career (if you must be promoted or fired or work in a different area.

In Google, the boss (the manager ) of each one is surely the person who most influences the performance of an engineer, but does not have as much weight in the decisions.

It influences a lot because one of its main missions is for the people in their charge to develop their skills to the maximum.

It decides little because decisions about the engineer (we refer mainly to those that affect salary and promotions) are taken by 'committees' formed by people who, in general, do not have a direct professional relationship with the engineer in question.

(Edit): The manager may assign a limited part of salary reviews at discretion; the most important part is associated with performance.

Going into details would make the answer too extensive, but as a rule the committees are expected to make their decisions based on 3 aspects:

  • Data: There is access to each line of written code; resolved incidences; generated documents; code reviews carried out ... It is the engineer's job to present the information in a concise and effective way so that it can be appreciated by the committee in question.
  • Evaluation of other engineers with whom we work: based as much as possible on data (this document facilitated my work, its code revisions avoided so many bugs ...).
  • Manager 's assessment (the part that weighs the least); It is used mainly to clarify doubts or to expand information on topics in which the committee is not familiar.

Of course, no system is perfect and there is always room for 'patties', subjectivities, loves and hatreds; but in general it is intended that the decisions have a support based on facts and are not the result of the opinion (and the philias and phobias) of a single person.


statcounter statistics counter
...