Dropbox Engineering Career Framework
dropbox.github.io
dropbox.github.io
There's really only 3 non-exec roles in a software company, only 2 of them cut code, and one is just a placeholder for the junior devs.
Want to know how to keep people? Give them a little pay rise every 6 months and let them own a part of the product instead of having a no-responsibility JIRA burn and churn roster.
This works for most people, but some are hyper-focused on comp and will ask every few weeks about why they're not leveling up and making more.
My answer to that question would be three parts:
1. Make sure that you agree on what success looks like, at the micro and macro levels.
2. Discuss what that person needs to achieve success for both of you - mentoring, training, tooling, access, time, money, whatever.
3. Frequently make sure they actually have what they need.
When people are regularly missing out on what you call success, you’ll probably get rid of them. When they’re missing out on what they call success, they’ll get rid of you by leaving. Don’t assume you’ve understood what they think success looks like until you’ve really discussed it with them individually.
I’ve had exceptional coders who were able and willing to make valuable contributions to the codebase, but needed to spoonfed the requirements. Maybe success in your team is a sense of ownership, in which case that person may not be right for your team - and that’s ok. Just don’t try shoehorning them into something they don’t want to do and expect successful results.
A ton of people want a calm, quiet, peaceful workplace with not a lot of pressure.
If people need to "beg" for a payrise, then you're doing it all wrong anyway.
And once you've hired them, it's what 1 to 1s for, instead of "give me a status update on all your projects".
Everyone gets the same raise as long as they aren't obviously failing? A lot of people who have a more competitive personality would be completely demotivated by something like that.
I feel the urge to constantly outdo oneself and everybody else tends to burn people out (it has burned out me), and innovation or change just to complete a checkmark on a CV can lead to unnecessary and abandoned projects. Like it happens a lot at Google for example.
I find this worldview to be very detrimental to teamwork. People are different, we have diverse motivations and personalities, and we have to find ways to use this diversity to our mutual advantage, instead of trying saying that some of those are right and some are wrong.
I strongly disagree, constant competition and a desire to be the best/most payed in a team dissolves cooperation. Why should I contribute to a team if person A tries to "win teamwork". I'm not saying you do that, and I'm not saying I believe that, because:
> People are different, we have diverse motivations and personalities, and we have to find ways to use this diversity to our mutual advantage, instead of trying saying that some of those are right and some are wrong.
I absolute agree with that statement. Mutual advantage to me is exactly that, even if I know someone else is smarter than me and can produce more quality work than me, the fact that I still contribute to the team success should mean I also get regular raises. Even if I only do the menial work those go-getters deem not worth their time.
Getting regular raises for contributing to the everyday work of a company is appreciation, and I gladly continue to the company if I feel valued. But not at the expense of my physical or mental health. If have the feeling I constantly have to outsmart and outdo everyone else just to keep my job and stagnate, my appreciation for the company drops. It's worst when the company instills the feeling that I'm replaceable at a whim if I don't put it 110%.
Again, I'm not saying you think that way. I'm saying that cooperation and inter team competition are orthogonal, but in my experience competition can demotivate people who otherwise deliver regular, good work. Not exceptional, and exceptional isn't always needed. Constant good work is more valuable to me that irregular exceptional.
I understand that you wouldn't be motivated by competition, and that's fine. I wouldn't want to work in a company that forces everybody to compete. That's actually my point: working in a company that builds it motivation structure that suits only one personality type is wrong, whatever personality type that is.
What you pay me changes my family experience, so I care deeply about it. What you pay someone else doesn’t, so I don’t care about the latter.
I know someone who quit a job at Boeing years ago in part because he was at the bottom of the pay ladder doing tons of work while the highest paid non-manager in his department didn't do anything except keep the printers stocked with paper.
Throwing incentives on competitive people can be toxic, but the opposite problem is that when high performers don't get rewarded the organization will rot.
I'm genuinely wondering what people on the other side of this debate think about this. If you like having systems like this in your organization, what is it that you like about it?
I feel like in my case it would totally discourage me from actually trying to make the company do better and instead would make me focus too much on trying to please people who rate me on these criteria. But I guess maybe that happens in a large organization anyways. And I guess in that case it's nice to have at least some (albeit not perfect) set of rules. Is that kind of the idea for having these?
The downside is everyone becomes a cog in the machine, with nobody being treated like an individual with their own strengths, weaknesses, needs, fears, and aspirations.
Being treated as a fungible human resource is as much a corporate culture issue, as it is a management issue. The creation of explicit levels and expectations is immaterial here. I’d argue the lack of levels, removes rewards and further dehumanizes individuals by literally treating them all the same.
This is just a bunch of corporate malarkey, let’s be brutally nakedly honest here. The fact is that this is just a more SV version of corporate bullshit with emojis - same exact thing you find in an old corporation like GE or IBM, just dressed up differently.
But it can help big companies in two ways:
1. You can assess bad managers against the framework, show how they are not delivering it, and remove an excuse that they “didn’t realise”.
2. Help good managers see what’s required in common situations.
For what it’s worth, I agree with you that this is often corporate malarkey. Typically, the company doesn’t live up to the framework - it’s merely wallpapering for their own biases, which still come through anyway. But I understand why they try, and it sometimes works better than others. Not doing anything would probably be even worse. And all other solutions have their own problems. At enterprise level, there is no universal solution.
I laughed out loud, just like real life Dilbert. I can imagine how these meetings would go. I think we gotta take this bullshit lightly and not get too caught up in its utility (there is none, even though you’re trying and I can empathize). Just act like it’s all great, do work, go home. I presume most people know it’s bullshit but still roll with it. I pity those who don’t. Gotta love enterprise life and it’s depressing if we don’t take it lightly. Office Space reminded us in a hysterical way.
Appraisals are always highly subjective and frameworks like these are simply ways for the company to build a narrative of meritocracy and fairness. It's arguable how well it works though, because people generally see through such charades. But for some reason it's taboo to admit the inherent subjectivity in this process.
Doing this kind of thing can't be the only thing do as a company to improve culture, just like a coding style document won't magically improve a codebase.
But, as part of a wider attempt to make things better, it can be useful.
On the other hand, I’m also somewhat glad that this shit is in published form and not some secondhand version pieced together by ex Dropboxers. I personally liked that it lays out what kind of a developer they expect at different levels.
I guess what I’m saying is that I like this as a guide rather than as a rule.
What is it like working at a smaller company? I would love to except I imagine the pay would be worse (in my country - non USA)
I can understand this is a reasonable response when you're given the task of evaluating people and pay them accordingly.
Still, this is exactly the reason I hate being an employee. I don't think the employee model is really good, in general.
In the end the role title is meaningless and if a contributor doing good work threatens to leave, it's usually cheaper to bump his pay than to pay for a recruiter's fee, interviewing, onboarding and risk of bad hires.
This doesn't work with weird hiring rules in crazy places (Eg. Amazon's expectation of firing a certain number of people).
So strangely, it was the employees that requested and pushed for this. Personally, back then I was not interested in the whole thing. Still not that into it, but I'd be more on the fence.
It more or less works, but getting a raise/bonus or not just feels like playing blind bingo most of the time. I once had a manager explain that regardless of the actual project results, because the product people felt stressed and unsure of delivery he wouldn’t give good ratings to the team members. Fighting it back we were just told that he was the one in charge of the criteria.
Career frameworks are vague and there’s still tons of politics in applying it, but at least you have a fighting chance to argue about what you were expected to do, what you did, and about how much you should receive accordingly (these levels are usually associated with salary/bonus scales)
PS: to address the obvious point, if one is constantly fighting, leaving for a better place is the best option, but in a large enough company you could instead change manager. Having a grid setting where you stand in the org also help these horizontal moves.
I like it. There are limitations and the frameworks can be misaligned with the ideal goals, but in general it provides the following benefits.
1. You aren't completely at the whim of your manager. Managers need to actually document what you did and why that aligns with whatever level on these frameworks. Other managers can provide oversight on this. The alternative is that career success is 100% opaque and based on the feelings of one person.
2. It helps me as a manager do performance evaluations. I'm glad to have a framework than to just go based on my feelings, because my feelings are often wrong.
3. It can help shift priorities for an organization that is working on the wrong stuff. This is hard and requires careful language and training, but in an ideal world these sorts of frameworks allow people to align their personal career goals with the goals of the company.
If you can make the company do better without pleasing the framework, then the framework may be wrong or perhaps your priorities are wrong. I've seen the latter plenty of times. Somebody insists that their work is just obviously impactful and therefore they don't need to measure anything but they are forced to measure it due to framework requirements and, surprise surprise, what they did wasn't that important after all.
This is the biggest important part. When your compensation, access to good projects, and career growth depend entirely on your manager, and you are not in the "in group," it's worse than demotivating--it's a feeling of hopelessness. You can document everything you did as evidence and none of it matters because your manager just doesn't like you. If you're lucky, you're at a company that encourages moving around and you can hope to luck into a better manager, because that's your only way out of the prison.
EDIT:
Unlike most of the commenters here, I love these written ladders, and I sincerely wish more companies did them. I would seriously favor companies that had written ladders over companies where it's hidden mysticism. When you are a "ladder climber" work personality, it is imperative that you can actually comprehend the actual requirements for getting to the next level--otherwise, how do you do get there? Guessing? When promotion happens at your manager's whim, it seems to have less to do with your work output and more to do with how well you brown nosed and smooth talked.
When people (often terrible leaders) try to distill the framework into a checklist of activities, things tend to go quite badly.
I like it because I see it as a guide that helps people understand how to grow and also a framework for fair compensation.
Without guidance many people, especially early in their career, will not grow as fast as they want to grow. They will need to find other ways to get this guidance, such as a good mentor. Some people learn better with a mentor, some people learn better with a framework.
Without a compensation framework, it's hard to reason about whether people are fairly compensated across the board. So what happens is that people start to develop these anyways. If not done explicitly that means that everyone has to independently do the work of coming up with their own framework and then everyone ends up with different frameworks, resulting in things being less fair. A shared understanding and a shared language can be really helpful.
I don't like it because I feel like it will inevitably change from guidance to a checklist. And then it gets political and competitive. Just like you said, people definitely start focusing on the rating. A lot. I think there could be ways to combat this, but I think it's a difficult problem.
I think no matter what you implement, there's a tradeoff. For example, my current thought is that I want it to be more about guidance and less about compensation. So it's guidance on where to grow (if you aren't sure) and de-emphasize the compensation part. How do you do that? I think you basically need to make the guidance more general and then tailor it to a person. Therefore the guidance will be more hand wavy so you sacrifice some fairness. By de-emphasizing compensation, you'd probably also be making people who thrive on promotions and leveling up less happy.
I would honestly love to hear people's thoughts on this as I'm thinking about defining levels in the next few months.
I laughed when I read this description. The religious undertone tells me everything that I need to know about the company. Almost cult like?
Just my impression.
> holistic (adj.) from holism ... 1926... from Greek holos "whole" (from PIE root *sol- "whole, well-kept") + -ism.
https://www.etymonline.com/word/holism
HN comments are reaching new levels of bad, there's literally nothing fishy about that professional goal and it's what you should be aiming for as a principal dev.
Synonyms: metaphysical, otherworldly, paranormal, preternatural, supernatural, transcendental, unearthly
But once such frameworks are introduced, they are difficult to get rid of.
Consequently, I see the introduction of these frameworks as a committal culture step which should not be taken lightly.
At my company we also have a very similar engineering career framework, but the goal isn't to push everyone into boxes, but rather to help engineers understand what it means to have a large impact on an organization. This usually translates to more cross-team responsibilities and deliverables over longer periods of time.
“Oh! But we have a flat organization”, you (cough Netflix cough) say. No you don’t. You have a shadow hierarchy. It’s there. The rubrics still exist. The “politics” and hurt feelings still exist. It’s just that the reasons are kept hidden, perhaps to make promotions more arbitrary and capricious. Does having an actual career make promotions and performance reviews objective? Of course not. Does it make promotions and performance reviews more aligned across the company? Yeah it does.
This is as much a tool for management, as it is for ICs.
I assume at this point there's so much cross-pollination going on between tech companies that many companies resemble one another operationally.
This must be a new local maxima that everybody is trending towards.
Heck, I worked at a stogy financial company way back in 2003, (Fidelity), and had similar grades for engineering (4 grades), then Director, or VP for the highest level.
The Dropbox post would have been much more interesting if it had salary ranges attached to it. Otherwise it is just kinda fluff.
And also with the same matrices. The framework is just the same, with the same griping about the language being slippery among those who use it ;-).
It was converted into the number/matrix setup from the earlier system with Senior, etc., some years ago.
Also this looks pretty on par with the companies I've worked for.
I wonder if a looser, more broadly-defined set of definitions might work better, recognising that people can add value in different ways.
What other mechanisms exist for combatting nepotism, feeling too abstracted from the mission etc in a larger company?
Does a company like SpaceX with lots of people working towards big clear goals and where comp isn’t in the set of top reasons for choosing to work there use a levelling framework like this?
I work in a company of 10 where we all have strong drive towards the company goals. I’m worried that we will lose this as we grow but I can’t see any clear alternatives. I wonder whether you could build a company that operates like a loosely-coupled network of smaller teams with internal accounting so that teams are compensated based on some kind of internal team valuation (similar to how startup valuations are set by the ‘market’). Probably a terrible idea!
If the metric used for promotion is time served, in what way is that stopping unqualified people from being pushed up the ranks?
That's...not how the military works at all. I suppose it might appear approximately that way if you look only at the officer corps and, within that corps, only at survivors of the up-or-out policy. But, while their are minimum time bounds, subjective assessment of fitness (i.e., demonstrated ability) is the main key to selection for promotion.
Richard Brandson famously limited each of his companies to 50 employees. I’d like to hear how it went.
> What other mechanisms exist for combatting nepotism, feeling too abstracted from the mission etc in a larger company?
Assuming that this solves those things at all, I'm not so sure.
It lets senior management avoid uncomfortable conversations about power relations while also creating a lack of clarity for individual contributors about what their subteam’s mission even is.
Lolz
Different people want different things. A lot of people want to code and to be left alone. A lot of other people don't. They want to feel they are progressing towards something. Good frameworks usually state: we consider you as a senior if you are doing X & Y consistently. This helps people aligning their actions/work with a level. The group of people that usually don't care about this things, might start doing so, when their title (e.g. "Software Engineer") lacks the "senior" keyword and they are applying for a senior role elsewhere. This might seem nitpicking, but you would be surprised how many people don't even pass the first screening because they don't have the "senior" prefix. In bigger companies monetary compensation is assigned according to the person's level. In smaller companies, not so much. Everyone has the same title, and people can have significantly different salaries. A good career framework makes it very clear to everyone that if you want to earn between X and Y you need to be at a particular level.
As for the framework itself, I am big fan of giving examples. Say for instance on IC3: "I’m able to navigate ambiguity and remain resilient through ups and downs". I would love if they assigned a somewhat real example: "I am able to complete tasks, even when the acceptance criteria is not 100% clear.". They did well with the separation of the different functions: QA, Software Eng, Security Eng & Reliability Eng. A lot of places bundle some of these together and leave people scratching their head.
- Why do they have 4 SWE levels?
- Why is there no Senior SWE level?
- Why is there no Junior SWE level?
It seems like IC1 = Intern, IC2 = Junior, IC3 = Developer, IC4 = Senior. No idea why they're not named closer to that.
Also, do people think that these role descriptions are actually helpful? I find them extremely vague and generally unhelpful in determining if I'm performing at a particular level.
- IC1 Software Engineer
- IC2 Software Engineer
- IC3 Software Engineer
- IC4 Software Engineer
- IC5 Staff Software Engineer
- IC6 Principal Software Engineer
- IC7 Sr. Principal Software Engineer
(This is on a desktop browser. Maybe you're only seeing 4 levels because you're on a mobile browser and the rest is cut off. Or maybe you indeed saw 4 levels and the site has been updated since your post.)
It's possible that they "bumped up" the intern and junior titles all into "Software Engineer" as a form of title inflation.
There are also other conventions we - as a society - try to break away from. So discussion and alternatives to conventions is something completely fine.
IC1 sounds like it's for new grads. Junior doesn't seem to be a popular title in the bay area. One or two are probably Senior levels.
I find it useful for how they change. Work complexity grows, timelines go from some tasks to multi-year projects, and you are expected to work more outside your team and mentor engineers.
It doesn't really give you a path to get promoted though.
IC2 = mid-tier (usually 2-5 yoe)
IC3 = senior (usually minimum of 5 yoe (this maps to L5 at google))
IC4 = senior/tech lead
...
levels.fyi is also helpful for comparing with other companies.
I hope this is true. There were too many times where things started out as a general guideline but gradually turned into a rigid checklist where one must tick all the boxes to get a promotion/raise.
One basic idea; a) recognition of level based on observed impact, as opposed to b) promotion to power as reward for effort/loyalty. With a), management is not a "final destination" of engineering careers. Old/sloppy organizations seem to devolve into b).
The instructions here seem to be written with this in mind, and directed to everyone in the org.
is there any way to turn a series of pages in to a PDF? like a recursive wget and then pipe through pandoc?
pdfunite page*.pdf output.pdf
I have had decent results using pdftk as well to do pdf surgery so that's another option.In this case, if you do a recursive wget I think it should "just work" because the files are named in a friendly way.
So, putting it all together:
wget -r 'https://dropbox.github.io/dbx-career-framework/overview.html'
cd dropbox.github.io/dbx-career-framework
ls ic*software*.html | sed 's/.html$//' | while read f ; do
pandoc --pdf-engine=wkhtmltopdf $f.html -o $f.pdf
done
pdfunite ic*.pdf output.pdf
[1] ie the ordering of the output of "ls" is the order you want the pages in the output pdfYou can hack together some scripts to do the basics yourself, but archiving arbitrary pages is pretty difficult to get right.
First, click the reader view in Firefox, then select all, then paste it into a new Obsidian page. It's really good at keeping a nice formatting and importing pictures etc. You can then export the result to PDF if so desired.
I guess it’s a Google or MS thing, or perhaps a modification of US government pay grades (GS-1, GS-2, …)
Senior Engineer probably wouldn't have reports though - that just means you know enough to not make mistakes. Staff and up would run projects and have at least unofficial reports.
People in these roles end up creating bureaucracy (but only for others) as a way to justify their job.
It's very typical to have a blog-driven performance review.