The saddest realization I've had working at companies is how power-hungry people are, how little respect the people in power often have for those "below" them, and how important politics is even in a field like engineering that you'd expect to be meritocratic. Sweeping decisions are often made in a small room of a few "higher-ups" without any input or regard for those "below" them. Providing counter-arguments that question the decisions of the executive caste is often seen as a threat (how dare you question your leader?). The shy and humble rockstar coder who kicks ass gets little recognition while the smooth-talking sycophant gets accolades and climbs the ladder.
Corporations are authoritarian tyrannies with strict hierarchies. America was founded on the principles of democracy, but we tolerate tyranny in our workplace. The only way to change this is to remove the asymmetric dependency of the employee on the employer (eg. UBI).
I personally love it when higher-ups make a decision without consulting me. Because then I have zero skin in the game. I don't work ridiculous hours. When I am involved in decision making, then I make sure project succeeds. Sometimes that means working late hours, taking pro-active steps to remove blockers etc.
But if I am told what to do without consulting me, then I don't care. There is a lot less stress on me. If it appears decision was stupid and project will not meet deadline, I make sure everyone knows and rarely ever put in more than 40 hours on such projects.
When I started out, my goal was to have a meeting every week and to include everyone. It was a waste of time. People would throw out ideas they had no intent to pursue, and when they were not talking would start fiddling with their phones.
You'd be surprised how many people don't value other people's time, or even other people's ideas. It's easy to imagine you could make a difference or be that difference, but if you truly believed you should have a say, then you should make it known, and either prove yourself, or find a job that comes with the satisfaction you desire. Like, maybe a more team oriented environment.
The truth is, especially at a large tech company, you are replaceable. No one is asking for your personal touch be it at a Foxconn assembly line or an engineer at Cisco. Unless of course, your job title includes "designer" or "architect" etc. But otherwise you're there to do the impersonal work you agreed to do for the impersonal money they're paying you. That's all a job is. You get more for better skills and more experience / less risk. All they are looking for is a guarantee that the work will get done.
This isn't to say you shouldn't have fun or that you shouldn't make the most of it. It's just saying that if fun or "most" entails being heard by execs or barking up the tree, then you will pay for it one way or the other; either with your emotional well being, or with lower pay due to greater overhead for being noisy and needy.
Managers are paid human sound barriers that permit lower quality hires for less pay. This is an important role, as are those being managed. But to think you can get past the manager who's very job is to silence you is the wrong approach. Don't raise your voice or kick harder. You need to become a manager. Either that or go work at a smaller company where the CEO sits across the room.
At the end of the day, the "subordinates" are the ones actually doing the far majority of the work, and they far outnumber the managers. I don't see why the workers shouldn't at least have a seat at the table when the decisions are being debated that would affect them. Often the managers are so removed from the work that they lack a lot of the insights from the front lines.
The most common rebuttal I hear when I bring this up is, like you said, "too many people makes things inefficient". Bullshit. Sure a decision ultimately needs to be made, but there's no reason one shouldn't be allowed to provide input.
And in my experience, I do think it's more about people wanting to feel powerful, and fear of losing this power (eg. like the other commenter who mentioned fear of "power inversion"). The people in power are generally the most sycophantic, and thus have the least interest in interacting with or relinquishing power to subordinates because it doesn't personally benefit their position of power or ladder-climbing question.
If a bunch of executives make a bad decision, then "oh well, there's no way we could've known". If a bunch of executives make a bad decision after a meeting with subordinates who questioned their decision, then it makes the executives look bad and threatens their judgement and position of authority. So from a selfish perspective, it's better to keep the minions out.
I've been in this situation a few times and it's very hard to push back on a decision that's been 'made' even if it's not appropriate for the team you're on.
Democracy is coming to the last bastion of dictatorship in modern western world. It won't be pretty - but it will lead to better companies
The problem is exposure. Those people will capture all of the upside if they get it right, and their subordinates will take the downside when they don't.
In this field, we can in fact move, so "love it or leave it" is not a hollow demand. People in some other fields are far more stuck. A military officer's career is over if he says no to the hierarchy he is part of. He may find work after the army or navy, but it will be very different work, effectively the start of a different career. We on the other hand can move pretty much down the street and do very similar work.
While America was founded on the principles of democracy, didn't they make sure that only a select group of people could participate?
In that way, it's similar to how companies are run, with a select group of people making decisions.
For example, very few people are willing to leave their cushy jobs and grind it out a few years at a startup that might fail.
And sadly, I believe that even with UBI, people will still play their power games, do politics, all that. There might be less of it, but either that is part of human nature (if there is such a thing), or else it would take a massive change in society to make petty turf wars and office politics disappear.
Probably if we're talking engineering bureaus in late 1980-es. But even then the setting is quite Dilbert-esque. At best, the democracy was like you can go to hair salon at working time, but not like you can affect any management decisions or working process in any way.
It can be in part explained by the fact that there was no relationship between how productive or hard-working the bureau or individual is and how good payment is. In fact, at the salary was most of time constant for any given profession, the situation didn't incentivise hard working, so it's not a surprise if there was little production pressure at workplace. Which leads to one of reasons of failure of the USSR.
The key to have an impact is not to pose critical questions, but to make constructive suggestions. Instead of saying "you are doing this wrong", suggest how to do better. Good leaders appreciate and encourage this, in particular if the request comes in an actionable format, i.e. "I suggest to do X in order to achieve Y" is much better than "decision Z is stupid".
When Steve Jobs Refused To Give Early Apple Employees Stock, Steve Wozniak Offered Them $10 Million Of His
http://www.businessinsider.com/steve-wozniak-gave-early-appl...
In a workplace, if you are unhappy with how the management run the company, you vote with your feet and leave, nobody's forcing you to stay.
If you want to hire people, drop the attitude of "we don't want people who aren't willing to prove how much they want to work here". Instead, give them every reason to want to work for you.
"OH, the candidate dropped out of our recruiting process? But he was only at interview four after 6 weeks.... well it doesn't matter because clearly he didn't want to work here enough - we want people who really want to work here and are willing to do what it takes to get a job with us."
Even worse: "But he'd only done our coding test after 5 weeks, there's still three interviews to go."
The recruiter usually gets a phone call at this point "Got anyone else, this time someone who actually wants to work here?"
It seems a lot of C*Os forget this after a while. For a lot of rank and file employees the stock price makes no difference.
>> "(By coincidence, the CEO was an intern at one of my startups more than two decades ago.)"
Admittedly, this isn't adding to the discussion at hand. Just one amateur writer picking apart another's writing style, but...
Is it just me, or do those lines serve no purpose except to boost the author's own ego and sense of self-importance?
I feel like they don't serve the reader in taking away the lesson in the least. They really strike me as an attempt to remind the reader of the writer's own value and importance.
Maybe I'm being too cynical...
A) Repeating what Steve told him and Steve had changed his mind about that advice?
B) Repeating what Steve told him but in the wrong context?
When a product innovation company turns to medium size, the process comes in with the executives and soon after innovation dies, but the product market value is realized and efficient. The problem comes if the leadership isn't repeating the cycle.
A company can thrive if they stay innovative and invest in new products always though, most of those companies are engineer led because it leads to happy development/value-creation: Amazon, Google, Microsoft (except for the Ballmer era), Valve/Epic in the gaming industry etc.
[1] http://www.cs.cmu.edu/~chuck/jokepg/joke_19970213_01.txt
One of his lines (verbal in person, not on paper) was "If you don't want to work here, there are plenty of people that do."
He was the only boss I've ever had that made me consider leaving a job I'd had for 7+ years (at the time) simply because of who my manager was. Needless to say, about a year later when he called a meeting to announce that he was leaving for a competitor, my back popped as my shoulders un-tensed.
I scheduled a 1:1 with his boss. Half hour meeting, didn't tell my boss what we talked about beyond "a discussion about my career". My manager didn't even come up in the meeting.
Instant improvement in manager's behavior. Assholes know they're assholes, and the appearance of connectedness (along with deliberate efforts to keep them off kilter) is usually enough to keep them in line.
The only power you have in this case is to go elsewhere.
It went something like this.
Dev: Can we get 2 21" monitors for developers?
CFO: Why? Laptop LCD and that old 19" monitor seem to work together just fine.
Dev: Yeah, but we can be more productive if each dev can get 2 x 21 inch monitors.
CFO: Uhh, no. I get more year end bonus for every dollar I save for the company. So maybe we will revisit this later?
Doing work with a 3rd party firm on some simple dev work (integration into a few partner APIs). We're a big Azure customer, 3rd party knows this. Gives us ARM templates for resources needed to deploy.
Get on the phone with the IT folks internally, state we need these ARM templates deployed and monitored. Queue two week (plus) process, 100 questions, and department to department costs (all of it is outsourced) which are quite outrageous.
The costs are so high that they probably wash any revenue/profit from the partnership.
You know what? I have access to one of our Azure subscriptions. I'll just do it myself guys, to hell with the consequences.
Usually this results in noise later, but screw it, I made us money now versus incurring additional cost and made some money later.
Thankfully I work for someone who thinks making money is more important than self-imposed rules that in most cases just slow us down.
Problem is that, without that bureaucracy sometimes ,'defectors' as Bruce Schneier would call them, will take advantage of those systems and use them for their own personal gain. The "this is why we can't have nice things" rings true for a lot of things related to purchase, money, benefits, etc.
Same is true for many of these processes that are put in place. Everyone just needs to remember once in awhile that we all work for the same place, and all want to make money.
Best of luck either way, just remember humans aren't rational agents by any use of the word.
So I see what you're saying, but it's not an issue here.
As an aside, one shortcut to weeding out shitty companies is to simply filter out companies that say shit like, "we are on a mission to change the world." That's a guaranteed bad time.
I just want to work on interesting business problems, just like many others just want to work on interesting technical problems.
How could there even be dozens of companies that you'd want to work for at any given time?
Still, having done my training at a slightly Dilbert-esque multinational corporation, I made a point of working for small-ish companies since.
Of course, small-ish companies bring their own share of problems, but all in all, I prefer that smaller companies tend to be less bureaucratic.
And I like the personal touch - at one company (~15 people), the CEO/co-owner walked up to each employee every morning and greeted them, shaking their hand. He was in some aspects a fairly difficult boss, but that little gesture made up for most of the difficulty.
The problem with a company treating employees like they were arbitrarily replaceable is that employees will treat the company the same way. If a company wants employees to identify with the company, to want to work at that specific company, it has to do better than that.
Do not confuse difficulty with prudence. Your organization will become slow and ossified by default unless you take specific steps to maintain flexibility. One of these steps is to install a culture of change. Things that are easily undone should not require approval to be done in the first place.
Do not allow long-timers in your organization use "caution" or "good engineering practice" as an excuse to slow everyone else down. Emphasize that the most important part of software development is moving fast. Let new people try new things. Minimize the number of people who can say "no".
Most of all, do not just _believe_ people who talk about best practices and software "quality" and stuff like that. Most of the time, they're just finding fancy-sounding ways of saying "nothing should change unless I say so".
You really can't make categorical statements like "formal process is the enemy". You put formal process into place, and that creates a dialectic where you're waiting for someone to come in and champion the antithesis: "formal process is the enemy". Then that works for a bit until it doesn't and someone synthesizes: "sometimes formal is better sometimes informal is better". Then that becomes the thesis.
Then there's a new dialectic in place. Someone will come in and say "the character of our company is such that we're generally better with formal processes". Then someone synthesizes that, and suggests that all processes are on a trajectory from formal to informal and the company is good at expediting that.
Then someone realizes we need a process for regular deformalization.
This continues forever. None of these ideas are really that much more generically true than any other.
So to embrace Hegel, the goal is just to question yourself as far as you reasonably can, so as to get the best view on the current situation and only the current situation. Make a choice and move on, knowing the next situation is likely to be different.
Edit: I should add this is the process by which we hurry into The Future, which some people might point out means turning our backs on Everything That Is Holy and is therefore a tool of Satan, but I'll leave you to explore that with the rapidly growing universe of anti-Hegelian YouTubers.
Being unwilling to adopt a necessary amount of structure and process is just as much of a hindrance once you hit a certain size.
That may be a newer or less common problem, but it's a very real one.
Every change I proposed was questioned to death and generally dismissed, I was micro-managed within an inch of my life, and I found the two key Directors just could not let-go of any control of their 'baby' (the company), to a point where any tasks I tried to assign to team members were met with pushback because the Directors had already assigned them other things, told them to work on other projects or asked them to report back before accepting any work from me.
One time when I was asked to work on a proposal to take over the migration, management and support of the Intranet for a large local University, I completed the initial RFP document and reported back to the Directors with a plan for a meetup with the potential customer because some key points needed elaboration, and some of the SLA terms could not be met without additional team resource, but they told me they had already phoned the Uni and agreed to go ahead 'as is'.
I left after 9 months.
No, that is not the case most times. The most important part of software development is, as with any other part of the company, to maximize the value of the company. That may be speed, but if you have 1m users the most important thing may be to preserve trust, to acquire new customers, to automate existing infrastructure, etc. etc. Speed of software development is not a goal in many environments. Thoughtful execution may be hindered by a cowboy attitude in development. I'm not saying that speed in development is not sometimes the goal (maybe in startups within an enterprise trying to test an idea), but often it's not the most important thing.
To this you've appended the hackneyed conflation between "speed" and "cowboy attitude". It's a common category error, but in truth, rapid iteration is one of the enablers of high quality and is a huge effectiveness multiplier for top shelf dev teams. Slow development merely enables lazy programmers (since it conceals their apathy) and gives us waterfall disasters. "Thoughtful execution" is possible in any context, and most thought processes are greatly enhanced by evidential techniques such as rapid prototyping / feature spiking.
Fast+incompetent = cowboy attitude, sure, but the problem there isn't the fast bit.
The ratio of students that decided to major in engineering because they were good at math in high school vs. the students who decided to major in engineering because they they wanted to make something inspiring, I feel ( and let me stress my inexperience as a current undergrad, without experience in the actual field ) is vastly favored in career growth towards those that decide to create instead of simply learn.
While there is always room and lucrativity to tie engineers on a leash and juice mathematics and logic out of them until they reach an existential crisis, there is always (ALWAYS) room within the budget to let them set out upon a path which is in tune with their not necessarily young, but foolish and hopeful beliefs.
There's nothing wrong with process and best practices. Process is often scar tissue left behind after critical mistakes in the past. A company without some formal process is a company young enough to not have made disastrous mistakes yet.
I've worked in a company of more than 50 that was basically without a trace of software development process. It was a clown circus. Nothing could be released on time reliably, quality was a joke, there was no documentation, no code review, and no plan or roadmap. Sure, they moved fast, but it didn't matter.
This doesn't seem to me to be true. Can you expand on your thoughts here?
I'd agree that the ability to move fast is an essential part of effective software development, but I don't think it's the most important (the most important is producing business value accurately and reliably), and I think that moving fast for the sake of moving fast is likely to result in moving quickly in the wrong direction. In particular, it's easy to be so worried about moving fast that you have no time to take new business needs/opportunities into account (see also Tom DeMarco's Slack), and it's easy to get excited about shiny new technology and spend a lot of time implementing it and roleplaying Google for no reason, which is a great way to move very quickly while not delivering a cent of business value.
Finding somewhere with formal process, with full-time managers who aren't reluctantly moved to management for career advancement, with clear hierarchy and goals, was an important part of my most recent job search, simply because, as a good engineer, I hate to see my work go to waste. I have heard the same sentiment from lots of my talented friends.
By default, all software development organizations slow down. I say that developer velocity is the most important goal because, without focusing on this velocity, you end up solidifying, like a cooling lava, and it becomes difficult to accomplish any of your other goals.
You also have the situation that people invent rules and requirements in the absence of a documented process, which can change arbitrarily and are impossible to work with because it depends upon the changing whims of whoever feels they are in charge. Clairvoyancy and divination should not be a job requirement!
Process becomes problematic when the process grows and ossifies and becomes the end itself, rather than the means to an end. You end up with it being impossible to get work done because the process is so burdensome. When your bosses care more about the process being followed to the letter rather than the actual completion of the work which the process should be enabling, that's IMO the point where it needs a rethink. Unfortunately, organisations have a tendency to accrete the stuff; I've in the past argued for less to the amazement and incredulity of my bosses. It's also a factor that process is used as a blunt instrument to wield power over others, and I think that's certainly a driver as well. But often organisations favour accountability and rules over creativity and efficiency, even if you spend 95% of your time with process, and 5% actually doing productive stuff...
In reality these are ignored at times when required. But they're so embedded in company culture that you need a pretty good reason to do so and more importantly most employees are comfortable challenging management when they do.
I'm not sure how to replicate this but letting employees set the company values once you get to a certain size is likely a good call.
Could you please elaborate how that worked technicall? Does that affect git log authorship metadata? What about discussions on company chat/maillist about the issues being worked on, are they also anonymous? Does this make tracking real contributions of individuals impossible?
If you don't consider jobs and companies as something that should live longer than you, it's totally fine as it is. Switching jobs is not a big deal, if you have lots of new options and get paid well. When small start-ups get the next innovation loop better than the current set of big companies it's fine, because people still make money, just a set of different people.
People who want to make money by working, still make money. People who want to make money by investing, still make money. New innovation really happens, no matter if the current people on top get it or not.
Vertical structures create encapsulation of individuals and that leaves room to exploit information asymmetries.
e.g: stealing credit, favoritism, etc... rigging the game to their favor.
At the late stages of this game, people like this can get away with anything: hiring and promoting their friends, openly insulting people, just openly lie knowing nobody can do anything about it, etc.
However, I'm sure many companies meet that.
Most of the narrative doesn't fit as this article presents it ( it might still be tesla, but you can assume the details are pretty one sided )
Neither CFO Tesla has had went to Stanford.
Can't find anything about Dorsey working at one of the startups listed on the author's wikipedia page, but he seemed to have been involved with many so it would be unsurprising if it just wasn't listed there.
Private equity firm cuts out RSUs and focuses on eeking out high margins without raising salary compensation to offset changes. All the senior people from Startup A and a number of senior people from B all jump ship within 6 months.
I'm just speculating that there may be more developers who are happy with the East Bay location in the wider pool of developers, not that this was a good move for the then current employees.
Hopefully they don't wise up.
Some do impress but others have limited lateral experience and so don't fit very well into any place but at prev bigco. But, but, I have five years of experience in X at bigco Y.
That is what I read from this article. Though all is speculation as there is no real information in there apart from a quote you can be for or against.
This is not "why good people leave large tech companies". It a sole example of a very small group in a very specific situation. Relocation loses people yes. But not amass and not as a hidden thing. The company is well aware of it. The quote itself was there for years and it is not why people left.
Large tech companies that loose good software people for instance often do so because they apply their hardware processes to software teams as well. In addition they don't want to spend money of software, software has to come for free right! The hardware is expensive but the software is a thing we had to add as cheap as possible. That means deny requests for fancy work setups; my hardware guys can work with one 19" monitor why do they need 2 24"?
Have no separate career ladder for the technical people, I.e. You can only grow into exec or fellow if you switch to the people's route and forget the technical (I.e. General managers, directors etc but no levels above lead software architect of a (smaller) department).
Now that loses people.
P.s. I work in a large tech company. 100k+. We recently resolved the last part but not yet entirely the former. Coincidence is that I'm being relocated in January 2018. It brings about 20 minutes additional travel time for me, but for most others it doesn't. Like the article. However, I'm not seeing how losing me (and some others) would outweigh the benefit of having the entire NL software group in a single location.
It's not merely about the decision to relocate, it's the indifference towards the engineers and viewing them as dispensable minions who are lucky to have the privilege of working for this company, often without the equity and earnings potential of early employees. Treating your workers as disposable pawns is a sure-fire way to generate disillusionment and cause valuable engineers to leave.
In a big company most people don't like all of their exec and HR statements yet they continue to work there because they know 90% of those statements is bullshit anyways and will not manifest. Very different from a small company mind you! Big companies change their bullshit slogans every 5-10 years. It's a pattern. Go through twice and you know the drill. So you smile when your department name changes and know the rest will stay the same no matter your objectives containing some new fancy words.
Moving headquarters 5 miles in any given direction is going to help some people and hurt other people. We just went through this ~20 months ago and some people who were on the "hurt" side have indeed left because their commute got pushed over a pain threshold. But, if we'd moved 5 miles in the other direction, a different set of employees would have been negatively impacted.
It's a small scale trolley problem and unless you can expand in exactly the same place, someone's going to get run over. When the CEO realizes this, it's entirely rational to draw conclusions like 'For those who are harmed, well at least they had the experience and name of working at [growing, perceived successful] company X.'
Another sign its time to leave: when the company starts doing "reorgs". Get out as soon as you can!
I know that the CEO when facilities where pushing for people to move to some industrial estate near Heathrow with zero pubic transport links "word class Telco's don't have a head office in a F%^king shed at Heathrow"
(as they keep all the money to themselves)
The dichotomy would be humorous if it weren't so sad.
Perhaps you mean something specific by "capable"?
I won't disagree that c++ (as a technology) can be a minefield, but this also holds for many technologies and markets (civil aviation being a great example).
I may have missed an implicit /s, for which I apologize in adavance...
:: Henry Mintzberg basically said it all in 2004 already: https://books.google.nl/books?hl=nl&lr=&id=zsYAeVgwHDQC&oi=f... ISBN-13: 978-1576753514, ISBN-10: 1576753514 " Managers Not MBAs: A Hard Look at the Soft Practice of Managing and Management Development"