I like this. Put another way "we are a team not a family."
I worked at Netflix full-time (More than 3 years)
Pros
They pay a ridiculous amount of money.
Cons
Horrible culture, everyone is afraid they will get fired any second. People hire their own friends/groups or people with less skills/experience so they can defend themselves against weaker employees and throw them under the bus. Lord help you if you don't know anyone when you get hired to form a posse' with.
Advice to Management
Stop with all your nonsense pitch deck, it's dated, old and you aren't hired the best talent away from Google, FB, Amazon....the sooner you realize you are just a content company, and maybe pay reasonable salaries with reasonable fostering environment the better. Just ask yourself: how many employees would leave if you cut their salary. Probably every one.
> Horrible culture, everyone is afraid they will get fired any second. People hire their own friends/groups or people with less skills/experience so they can defend themselves against weaker employees and throw them under the bus. Lord help you if you don't know anyone when you get hired to form a posse' with.
Classic goal subordination.
I'd argue most above average but not stellar workers would not put up with Netflix's implicit demands.
Note: a constantly looming threat of being fired might be involved in it too.
As a consequence, a company could strategically use "fire fast" by claiming it as a policy but not doing it. This would attract the people who perceive themselves as high performers, with minimal impact on employee morale.
Constant firing can also negatively affect your personal reputation. As a manager your job is to get people to succeed. Firing someone means that ultimately you failed in that. Sometimes this is unavoidable; there are times when people just aren't redeemable. Sometimes it's not. Good managers know the difference, but you have to remember that every time you let someone go for cause, that person probably didn't see it that way. That person has friends who work other places and all of them have a long memory. If word gets out that you quickly remove people who you can't seem to handle, people will want to stop working for you.
There are a lot of seriously hurt, confused, uninformed, misinformed, damaged, hurting people out there who are so badly lost they are seriously constrained in what they can do.
Now, to be more clear, where they are constrained can be quite narrow and not broad. So, day in and day out, they can look fine. But for some real work in some well defined context, they can flop -- really be just unable to perform. Again, this can be tough to see without a lot of experience with them.
So, for firing, if you have a person who seems okay or even good in many ways but, still, somehow just can't do the job, with explanations, help, training, discussions, counseling, guidance, leadership, etc., then don't (A) be too surprised, (B) blame yourself or say that the fault is that of the organization, (C) conclude that you should try one more effort to fix the problem, (D) conclude that, of course, you should be able to fix the problem, etc.
Maybe reassign them to some work they can do, if can find that -- and sometimes it's possible.
Otherwise, just go ahead and conclude that they are unable to do the work, at least any of the work you have for them to do; don't be too surprised at this situation or conclusion; and let them go. Give them back to their families, the mental health community, the welfare system, or some such.
The big point is: Such broken people are surprisingly common.
For one level deeper, an explanation can be that their problems are not really cognitive or rational but emotional. And the main emotions can be fears, commonly from their being misinformed, uninformed, having had bad experiences, confused from what they have been through, etc.
People read Glassdoor. If your company earns a rep for rapidly and casually dismissing people, you will see good resumes dry up. In our case, the quality of candidates has nosedived. It's not clear why a strong candidate would join a company that opts to fire people so casually.
A good developer is not necessarily one that knows everything but has competence and can learn fast. I've worked with smart junior developers and developers with years worth of experience that couldn't cut it when given a novel to them problem.
OTOH, I do think firing is a bit of a last resort. A lot of people can be coached to perform better. I support firing as a last resort when other reasonable methods have failed.
Besides, a good organization hires mostly right candidates. Firing should be really exceptional.
I disagree - if you have overworked people, that is usually a red flag that you need more personnel and planning failed. It doesn’t necessarily mean you should be hiring right at the moment, but it is a significant alarm bell that you should seriously consider starting to hire or you’re going to chase away engineers.
> I disagree - if you have overworked people, that is usually a red flag.
Overworked people is a red flag indeed, but it is usually a symptom of a deeper problem that is unlikely to be solved with more hires. I think the author hits the nail on the head here -- first and foremost hire for future opportunities.
The problem was unsustainable methods of doing everything. Every job was unique for no good reason. It was all managed by hand, monitoring monitored the wrong things.
Each existing thing generated a ton of work due to how it was setup and required constant tweaking. Any new thing just piled additional work on, often causing issues with what already existed.
Because of the lack of any kind of system or useful documentation new employees only made things worse as they tried to understand what existed, had to ask constant questions, or failed to take into account hidden gotchas that they had no way to watch out for.
Until they started standardizing and stabalizing the base things couldn’t be improved.
Yes there are times you have 10 developers worth of work and 5 developers. But there are times you have 4 developers worth of work and 6 developers worth of mess they have to tip-toe around, but only 5 people.
Even if the work life balance is fine, it's very difficult to stay motivated when you are constantly chasing bugs and never getting to actually build anything, or your manager is having to defend your team against second guessing from the outside. Having too many things to do and not enough people to do it can really kill morale.
Not necessarily. Accepting a new project or extra responsibilities in exchange for a generous sum may increase your company's workload unexpectedly, which leads to overworked people while the company struggles with the hiring process. Another example is losing a team member right before crunch time.
Someone might now jump and say 'sometimes crunch time is necessary!', and I would reply that if you're in crunch time you've just demonstrated the exact issue I'm describing.
I think he's essentially restating 'the mythical man month' for a modern environment.
If someone burns out as a result of the bungled planning, then the project can potentially be doomed without hiring (or even doomed anyway) - one should almost immediately reevaluate when one comes into this situation unless there was some sort of agreement beforehand.
19. If you are not able to hire and fire people, leave. Or stay for the retirement fund if you can stomach it.
"the way the author discusses people and pretty much everything in the "Yourself" category makes me think this unnamed multinational is a sweatshop overseas. I've worked (temporarily) with people who try to bring this thinking to Silicon Valley
#19 makes sense me to too. If you can’t hire/fire then you’re not really in charge. How can you manage your team if other people have the ultimate veto on your strongest management options?
I love that metaphor.
If we deliver a broken product, than that is a failure to cut scope adequately. Do that once or twice and suffer through the consequences and you will learn not to let it happen again.
And therein lies the conflict that this post doesn't really address or resolve: there's rarely a discernible difference in revenue between a high quality release and a buggy, low quality release, but the profit margin of the former can be (and often is) much lower. A great real world example of this is PUBG.
-- Carl von Clausewitz (On War?)
I have, however, also encountered arbitrary deadlines that people hang onto for no good reason.
Here's a good rule of thumb: Ask them to explain what has to be done, and then count the number of times they say "it should be pretty straightforward".
Consider those multipliers of complexity.
Lots of topics vary wildly in complexity, depending on what's actually expected of the developer. For example, I could see how implementing an authentication system might take as little as a few hours to as much as a few months.
I think developers sometimes get overconfident when they can just reach for a library to do anything they need, so they underestimate the complexity of having to implement everything themselves. I've seen tons of great examples of this while doing frontend work. Need a typeahead component? Just pull in some plugin or library and wire it up, frontend development is so easy! But if you actually go implement your own you quickly realize there's lots of details to consider in order to make it accessible and user-friendly. Working with local data? Might want to go brush up on search algorithms. Throw in a bit of extra fun if you need to support multiple languages.
But yes - for measuring success, it's a terrible metric. One should prefer a project to be delayed, but proper, than delivered on time, but broken.
Features are done when they're done (for a given definition of "done"). Once we're satisfied with what we have, we release it. Otherwise we keep working, or we scope down.
Strict deadlines are seemingly based on financial period expectations, rather than on what actually produces better software, and thus, ironically, more revenue for the same stockholders who were demanding a date. It seems more of a short-term strategy than long-term.
Anyway, that's my pessimistic, armchair interpretation of it.
I know you specifically say "for a competent team", but I just wanted to mention that for a lot of teams, the quote above is absolutely true.
Ok, if you already are measuring impact and has a correct prioritization of it above anything else, adding delivery date and time spent won't hurt. But if you don't prioritize it above anything else, you are simply begging for a huge failure.
Because the world certainly needs more sociopathic management advice.
But, in general, I agree with you.
Some of these ideals don’t translate well to smaller scale. A 5 person team doesn’t have to work out much except the work. How do you get 1000 people to agree on a plan, an IDE, a language, and to row in the same direction? Not magic. Study and practice.
In my career, I've seen shocking, astounding, career, organization, and company threatening examples of nearly everything he mentions, and to me his reactions are terrific and make a lot of sense.
But, likely as you mentioned, need lots of real world examples from which he has extracted general, "abstract" lessons.
He has terrific stuff. He is an excellent observer and, then, analyst of what the heck he saw.
I put the text in my collection of management essays and regard it as by a wide margin the best management advice I've found for my startup: Currently I'm a sole, solo founder, so far have done it all, including all the important work and a lot of grunt work, but if my startup is successful then I'll have to hire and manage, all of it. Sure, eventually I'll get a COO and delegate a lot to them, but, still I'll have to know what's going on. And there will have to be more software development; I'll have to manage that either directly or through, say, a CTO or CIO, and that essay is the best advice I've seen so far.
Other good advice is in Brooks, The Mythical Man-Month. Brooks is deeper in technical issues; the OP is better in the human and management issues which, IMHO, is where the real problems really are.
Oh, by the way, I still believe that nearly all the best ideas in software management I've heard about are old (although I do have along list of questions where the old stuff doesn't give good answers and where I haven't seen good answers either old or new). So, e.g., I have essentially no faith in "agile" or "object-oriented". And I believe that (A) code without good documentation is essentially worthless, (B) the documentation is more work than the code, and (C) between the code and the documentation, if I had to save just one, it would be the documentation. So, in particular, for the work, the most important part of it is writing documentation; writing the code is the lesser part. And (D) my view of writing code is that it's simple: Start with a good description of (i) the programming language to be used and (ii) good descriptions of the functions, classes, APIs, etc. to be used, and between these two by far the more difficult is (ii). [No, right, usually it's not automatically simple, not at all; instead, in the end it should look and be simple, and that can take a lot of hard work.] Then from the documentation get the really crucial stuff -- what the heck the code is to do. It is the documentation that makes clear the issues of threading, locking, roll back, exceptional condition handling from small scale to large, the UI/UX, etc. Those issues are to be clear in appropriate parts of the documentation and not to be worked out only during the coding. So, e.g., try to get most of the coding down to (a) allocate storage, (b) the usual control structures if-then-else, do-while, select-when, (c) call-return, (d) clear architecture on exceptional condition handling, logging, etc., and (e) the functions, classes, APIs, etc.
From what I learned from before the OP, although the OP has it better but maybe not as explicit, here are two lessons:
First Lesson.
"Why should I"? If you see a person in an organization and some work they might do, ideas they might have, etc. you have to ask the question, how will that person answer the question "Why should I". What's important here for a manager is not how YOU would answer this question but how you would anticipate that subordinate, other person, would answer the question. To be cynical, just because some area A is in the person's area of work, for some work X, will they actually do X and do it well? First way to know is, how would that person answer "Why should I do X"? To be cynical and likely often realistic, without a good answer, the person may simply neglect to do X.
E.g., there is the old Ross Perot joke: Most organizations, when they see a snake, form a committee on snakes. In a good organization, when someone sees a snake, they kill it. Well, then, the answer to "Why should I kill the snake" is that Perot had a good organization.
Second Lesson.
There is a field, with courses, in public administration, business schools, and parts of sociology called organizational behavior. There one of the better ideas is goal subordination. Well, the OP is awash in cases of goal subordination. The idea of goal subordination, and common for middle managers, is to "subordinate" the "goals" of the organization to the "goals" of that middle manager. So, the manager does what he believes is good for his career even if it is bad for the organization. So, an exercise is to read the OP essay and list and explain the places where the author is suggesting goal subordination.
There's much more to say, but, trust me, the OP is talking about stuff that is darned real.
For me, I want my startup to work. A big, huge advantage of being founder and 100% owner is that I don't have to explain stuff to some BoD that, as in the OP, has no chance of understanding reality. So, I'd constantly have to create "company theater" for the BoD, and that would be so wasteful it could kill my company.
My point here generalizes and is generalized in the OP: The crucial details of a serious real problem and its best solution are typically too difficult for communicating up a management chain or even just from a CEO to a BoD. The OP is correct. So, as sole founder and 100% owner, I don't have to try to communicate to a BoD that has no hope of understanding or waste effort on company theater. Instead, I just concentrate on making my company successful. If I am successful, then the main evidence visible externally will be just the financial, brand, etc. success, a lot of which the news media will likely heavily distort; the real reason the company was successful will be known just to me and maybe a COO or CTO if I get really good ones.
> Don’t let entropy get at your daily routine. Avoid entropy-driven work
In a physical sense, my understanding of entropy is that it's a degenerative phenomenon, a lowest common denominator - it doesn't create anything. This point means avoiding distracting or sporadic work, which is a test of discipline. But the rest of this point and others further down using words like 'entropy-driven' work are meaningless.
I'm sure there's a good point to be made here about valuable work in large corporations, but the (over)use of the word entropy has lost me.
Mine are always perceived as such :-(
I studied my old CEO's communication style, holding it up against how many of my peers communicated. I noticed that he got right to the point, expecting other people to assume he considered multiple ancillary points. My (lower status) peers' emails would meander, and read like they wanted to show their superiors how good/smart they were at their job, and that they thought of every last thing.
The high status person didn't feel the need to pre-emptively brain dump.
My larger point is if your emails are perceived in such a way, it's worth improving.
I personally think this really improves my communication. In a workplace where people are expected to read through dozens of emails each day, it makes a difference in the information that's finally conveyed to my colleagues, which is often what matters the most to me.
The last part is key. If I don't list the things I've thought off, and write a briefer email, I guarantee I will get any of the following:
1. Followup emails with questions because they don't understand.
2. Emails of the type "Did you consider...?". This is the primary reason my emails can be lengthy, so that I can list all the things I considered so that I don't get questions asking about them.
3. Even worse, people not emailing me, but with them misunderstanding and doing the wrong thing, and then saying "Well I thought you meant..." leading me to ask "Where in my email did you get the idea that...?"
Do note that I'm not in a "superior" position. These are mostly emails to peers.
Interesting. I wish there was a bit more detail on how you organize them to do so...
Giving people freedom and allowance for failure, not having a strict "I am the boss" micromanaging hierarchy on the team.
Reward people for taking initiative. Find work that people want to do, and give them time to do it on their own but only if they self organize all of it, this builds necessary skills.
Taking someone who looks like they may have leadership potential aside and asking them to take on a small feature.
Combine all these together and you'll come in one day and find your team in a huddle tackling tasks together.
Requirements: Not being an insecure manager. Knowing that your value to the team and org is not in telling people what to do, but rather in helping them do what needs to be done. Sometimes this means communicating directives from on high, other times it means getting the team the resources that they've determined they need.
> When the plan is foggy, that’s the moment to communicate as broadly as possible. In fact you should not frame it as a plan, you frame it as the situation and the final state you want to achieve. When you have a detailed plan, that’s when you DON’T need to communicate broadly. So, clearly state the situation and clearly state the foggy goal to everyone who will listen.
This is a great way to clarify a complex problem, draw out and resolve disagreements in understanding, enlist others’ help, and methodically arrive at the optimal solution. It also works well for all kinds of problems, whether they be engineering-related, organizational, or interpersonal.
I have often experienced the following but could never have described it as elegantly:
> Incompetence is fiercely gregarious while knowledge is often fractious; the reason for this is that raw ideas transfer more easily through untrained minds than refined ideas transfer through trained minds. There’s a reason why large organisations focus so much on simple messages, pity that difficult problems often have simple solutions that don’t work.
This resonated with me and definitely gave me food for thought. Raw ideas with uninformed opinions can easily percolate throughout organizations and even across the industry. Feels like something we as a society need to more actively guard against.
> 20. The Sith are right, rage propels. But the Jedi are right, you must not let it control yourself. What nobody tells you is that the rage game is intrinsically tiring and rage will take control as soon as you get too tired, so stop well before.
37. Don't assume everyone reading your article gets the Star Wars reference.
>Being overworked is not a good reason to hire. Instead, hire to be ready to catch opportunities, not to survive the current battles.
That's why we as programmers should say no to overwork, because only then will they see the need to hire. I only do overwork when some unexpected disaster happens, or when there is a sudden huge opportunity. In the other cases, they should plan better or hire more people, simple as that.
Your anecdote is rule 24 in practice. Good job.
I like this, really fed up with everyone comparing software development with construction work and/or building a house. Don't compare those, apples to oranges. Sure, borrow the best, most appropriate things, techniques, methodologies, approaches and not just from construction. Just don't compare.
(That's not intended as a pedant's review of the article, just a note on the title presented on HN, which was praised in a recent thread for making even small changes to improve the grammar and quality of the site.)
I think this one depends on one's personality. I know people who have been relatively successful in their role for years who still regularly express impostor syndrome.
[0] How time flies! https://minnenratta.wordpress.com/2005/12/23/le-proporzioni-...
...or, teams self-organize unless you have organized them not to, in which case, if you want them to self-organize, you have to hire an Agile coach and start putting up posters telling people what it means to be "self directed" and fire everyone who is insufficiently short-term in their thinking.
/s
> Delivery dates have often irrelevant but very simple to understand impacts. Good and bad solutions have dramatic but very difficult to understand impacts.
we don't lack the technology, just that there is no good strategy at that level.
When you select for sociopaths, you get sociopaths.