www.joelonsoftware.com/articles/fog0000000038.html
Printer Friendly Version At Fog Creek Software, the way we make sure that people are paid fairly a nd rewarded for excellent work is based on a professional ladder.
Fog Creek explicitly recognizes that many good software engineers have no desire whatsoever to do "management" or to take on a formal personnel m anagement role. One of the purposes of the Fog Creek Professional Ladder is to create a career path with promotions for engineers who simply do not want to do management stuff at all. We want to avoid the trap that m any companies fall into of forcing good programmers to stop programming and start managing people, if that's not what they want to do. For various irrational reasons, nobody likes to be a level 1 or 2, so HR departments have always historically started the numbering with a higher number. So all Fog Creek software engineers are ranked at one of severa l different levels, level 8 through level 15. Then they work their way up to: * Level 12, which is full professional status. Our official titles will be: Technical Intern (9-12) Member of Technical Staff (13-15) Fog Creek Fellow "Member of Technical Staff", aka MTS, is the classic title that all re searchers at Bell Labs were given in their heyday. When we decide to hire someone, the interviewers who were involved in the "hire" decision will sit down with the candidates resume and salary his tory and figure out what level they will start at. After that, every six months, Fog Creek management will review the performance of everyone in the company with the goal of making sure that people are at the right l evel. It is most important to make sure that people are grouped in the s ame level with other engineers who are their true peers. At this point i t might be appropriate to promote some people to a higher level. We will also compare our salaries within each level to the competitive norms to make sure we are paying market salaries, at which point people might re ceive a raise. A word about performance reviews Many companies use regular, formal performance reviews as a "carrot/stick " incentive system to obtain performance.
Their goal is simp ly to make sure people stay at the right level and are recognized when t heir work improves with experience. Everybody is different, and their skills and aptitudes may show up in dif ferent ways. One excellent contributor might write a ton of great code; another's strength might be in getting teams to jell and work together. It's impossible to use hard-and-fast metrics to decide where someone fit s in, and these kinds of metrics tend to accidentally incentivize the wr ong things. Instead, we have a bunch of heuristics which tend to provide an accumulation of evidence that a given engineer belongs in a given ca tegory. When we're done applying them, we look at some of the other peop le in that category to determine if we got the right result. Nothing is carved in stone except the principle that within each group, people shou ld be true peers. Transparency Policy In the interest of fairness, Fog Creek's compensation policy is open, pub lic, simple, and accountable. Many companies try to obfuscate the rules they use for determining compensation in hopes that they won't get caugh t paying some people too much and others too little. Some companies actu ally consider it a firing offense to reveal your salary! We feel that in the long run, this can only hurt us through negative mora le, high turnover, and destructive office politics. Therefore, the polic y in this document is publicly available. People have a right to know wh at the levels are and what they mean. Everybody has a right to know what their colleagues' levels are. Similarly, the rules we use to determine salaries based on levels and oth er factors are simply, easy to understand, and public knowledge. Yes, that means you can figure out what your coworker is making. People in public service, the army, the police, and unions can all figu re out what their coworkers are making. This transparency policy is a go od thing that forces Fog Creek management to keep things fair. Determining Levels Here are the heuristics we use in determining what level someone is at. Years of experience * Summer interns, high school kids, people still in college: Level 8 * New college grad or new to professional software engineering: Level 9 * 1-3 years: Level 10 * 2-8 years: Level 11 * 6 years or more: Level 12 or higher Enabler * Someone who serves as a leader or catalyst, who consistently and exce ptionally enables other people to do their jobs better: one higher level than they would otherwise deserve, not to exceed level 12. This is meant to recognize people who motivate, rally the troops, improve morale, and provide leadership beyond their normal level. It doesn't go beyond level 12 because level 12-15 should be doing this anyway. Academic experience We don't care too much about degrees, because they don't correspond all that well with skills for software engineers. A lot of newly-minted PhD s are sorely lacking in practical software engineering experience that some BAs with one year experience may have.
These people sit around thinking "lofty thoughts about mar kets, products, the competition, and the like. They determine the general direction of the company and set the short-term and long-term financial and non-financial objectives of the company." The people who have to figure out how to execute on the str ategist's ideas and "send the troops into battle". The people who "make things happen in the right way, at the right time, with the right people, at the highest quality, etc." My own category for interns who are basically learning how to do things. Level 8 See the book for guidelines on deciding where someone fits. Programming Maturity These categories are stolen from Construx, who, in turn, stole them from Microsoft (so there). Level 8 * Someone who works under some supervision and occasionally writes prod uction code. Level 9 * Someone who has some background in software engineering and is qualif ied to write production code without much supervision, although they probably aren't designing anything. This person will be expected to learn the software development lifecycle practices, methods, conventions, and standards of the computer industry.
This person proposes design approaches for review and agreement from peers and his or her supervisor. This person has worked on one or more shipping projects, and has experience in each of the basic software development lifecycle steps needed to ship a product. This person is very competent in nearly all code-centered, detailed-design centered, and task-centered areas, and demonstrates additional competencies in other software lifecycle areas. This person has a track record of consistently rendering clear technical judgment and routinely considers architecture-level and project-planning issues. They ensure that projects are conducted in ways that benefit the project objectives, the people participating in the project, and Fog Creeks long-term interests. They are innovative, consistent, and contribute beyond the assigned tasks.
Competence extends to architecture, user interface design, project planning, and other project-level issues. They are committed to a self-study program, reading books and journals. This person takes total ownership for all aspects of their project and makes many unique contributions. This persons decisions have a significant impact on Fog Creek's profitability and overall well-being. They routinely provide technical direction to other groups and people. Their competence extends well beyond project-level issues to company-level issues. Teamwork skills are excellent at the project, company, and industry-partner levels. This person contributes regularly to the industry through publishing papers, making conference presentations, teaching classes, and participating in technical committees. T his person consistently works to design and produce groundbreaking, world-class products, or in advanced research. Components of Compensation Salary Fog Creek will maintain a simple schedule of salaries based on level. We don't really know how to di...
|