I am awed by the fact that we manage to release any software at all, let alone functional software.
The biggest problem is communication. No one fucking communicates.
- No communication between orgs. Tons of bureaucratic tape to cut through just to get a hand on someone working on a different product
- Barely any communication between teams. Literally every group of 4 people is in a little silo with no incentive to go outside it
- Broken management structure. I have had many managers (a red flag in itself) but even worse none of the managers take suggestions from engineers. Everything is purely top down. If an engineer realizes there is a problem on a macro scale they cannot fix it. It is literally impossible to unite more than 1.5 teams to get anything done.
- So what happens is that you’re working on a product that’s part of another product but you never talked to any other teams or orgs on how to make your product fit in
- 10 different teams working on the same products and services. Zero unification means you are literally wasting developers and internally fragmenting every tool. Even worse, these teams compete for internal market domination
- Culture of secrecy means nothing gets fucking done. You file a bug report and you can’t even see it any more for some orgs
This is only the tip of the iceberg. There are fundamental and serious problems at Apple that no one in management gives a shit about solving. Any time engineers try to congregate or work on anything constructive with another team, they are shot down.
The only time I have seen cross-team developers working together has been to deal with critical bugs.
Because of the lack of communication, none of management’s goals align. They are all out of sync and poorly thought out. So year after year your manager has something they want you to implement but the feature for the year is bullshit because it makes no sense and is just there to pad the manager’s resume.
And you can’t speak out about this. Apple doesn’t take well to employees complaining. Even then, because of the lack of organization there is no one you could raise these issues with.
Any company larger than a few dozen people is entrenched - there will be a hierarchy and the top will dictate the order of things. If they are paying you to write pointless software then you are either content with the paycheck and probably a lot of free time at work if nothing really matters or can go somewhere else to find meaningful work.
But seriously, the larger the company the less you should ever consider thinking yourself as some engineering talent can change the system. You change the system in those circumstances by realizing the failure, networking with your peers, and starting your own company to do it better. Assuming you didn't sign a deal with the devil by noncompeting your way into being stuck. You were hired to write code, not fix corporate culture. Largely because most large corporations have layers of management dedicated to insuring it is not fixed.
As time passed, it gradually became apparent to us mortals that he wasn't just being humoured - the people he was contacting came to respect him and even consider him their man "on the inside". He ended up doing pretty well - not promoted instantly to senior management, but certainly promoted faster than me (and ended up moving to sales).
Now admittedly lots of things are different from what your comment is suggesting. That company was big, but not as big as Apple (?) and intra-company communication nowhere near as bad by the sounds of it. This guy also didn't try turn over the whole company culture; for the most part he just spoke to the right people to progress things within our team's products. And finally, a key ingredient was him; if I made a conscious decision to act like he did, I'm sure it would not have gone well.
But my point is just that you shouldn't always write off fighting the corporate hierarchy. For the right person, in the right situation, it can actually make sense.
And thats all predicated on you succeeding, of course. You weren't offered the responsibilities to fix corporate culture, and thus trying to do so in the first place often just serves to piss off your higher ups who feel you are disrespecting their authority to do it themselves.
i think a lot of developers are used to wielding great power with technology, getting immediate visceral feedback, shipping, and whatever else. this gives them an impression that fixing people problems is just as easy - the equivalent of opening up the ol' IDE and rocking out for 8 uninterrupted hours, getting an MVP up.
the differences, though, are crucial. the compiler doesn't lie to you - you missed a semicolon; that's not the case with people. the in memory database doesn't have another agenda; again, not the case with people. the UI doesn't aspire to be something greater, or protect itself; managers often do.
i really appreciate that individuals try - i just don't think it's really worth it, if the org is > 15 or so people.
Well, in California it's basically impossible to enforce a non-compete, so there's that going for anyone who wants to do this as a current Apple employee.
To a point, but have you ever tried changing something purely through a dictate from the top? People will just say ‘Yes boss!’ and then keep working exactly as they had been.
It always felt like we were in a mission to ship Mac OS together. What Apple did do back then was create these special versions of the OS that had a few key hidden/secret products that SJ was going to demo, like iTunes or iPhoto. So while I could install the latest internal developer build of the OS, it would have a feature or two missing. You would then get radars that mentioned the code-name and explained a bug that you had to fix for the feature, but you had to fix the bug blinded and send the bug back to verify. (Radars could never be closed until the original creator verified them) The secrecy didn't really get in the way and it made for an interesting culture.
Then it all started to change when Forstall was promoted to VP of the iPhone effort. He took what was probably meant to be a short term secret launch team culture and expanded it to create this massive secret island in the company. The program office and by extension, the original founding engineers were all promoted to management that expanded on the secret culture. I think if management meant to open the culture back up to the same level as Mac OS in 2009, they would have been burned by Samsung and Palm WebOS making exact copies of the software coming out at the time. So the hyper locked down culture persisted and SJ passed away. Then Forstall was fired and Federighi was promoted to replace him and merge both the Mac OS and iOS orgs finally killing off any of the remaining openness that once existed.
Then came all the ridiculous tools such as checking someone's security clearance when you had a meeting with them. [Apple Confidential] :-P
I’ve been interviewing with other teams, but with this disaster of a release and us demonstrating that our corporate values are just empty words in the face of opposition from China, it’s likely time for me to make my exit.
The overt sexism that I’ve been witness to in iCloud management certainly doesn’t help either.
Yikes! Is this something you could share the nature of?
In one section of iCloud, there’s zero female managers in a 200+ person org. In another, after recent re-orgs, there’s only one remaining female manager in a 600+ person org, and even then, she only has a small team of engineers. No representation in upper management whatsoever.
With multiple recent re-orgs caused by poor management, there has been ample opportunity to address this imbalance, but upper management has doubled down, cancelling nearly every project managed by a female manager before the changes, or giving their projects to male managers.
I raised this as a concern with HR months ago, but they have yet to take any action or even follow up.
All of the engineers I’ve met here are smart and innovative. Only if we could organize, things would be much better.
Elon Musk says something interesting about this here:
"Product errors reflect organizational errors."
He's specifically talking about how the product subsystems are effectively mapped out by the product departments and that they should try to interface with each other with minimal constraints.
But, my take was that there needs to be a LOT of communication between departments and an ongoing debate between them as well.
Edit: The more that I think about it...
This might a big reason why Musk companies defy the odds, and why it is so difficult for incumbents to catch up.
The over the air updates of Tesla are a good example of hardware & software departments working together to make something very difficult to compete with (if you're a regular old school siloed company).
Crap >> Team >> Crap
Passages from the Life of a Philosopher (1864), ch. 5 "Difference Engine No. 1"
I'd like to work with these folks again* but the incredible secrecy would bug me. I understand that some things have to be secret, and I don't at feel I need to know what that group over there is doing but I'd like to talk with my (NDAd, same company) friends about what I work on! So I don't even apply for a job there. But some people seem to consider it OK.
* The subset of friends there who used to be colleagues of mine, I mean.
I'm surprised to read this, because I've always thought tight integration and clever synergies between product lines were precisely one of the things Apple excelled at.
And I was wondering how exactly they managed to make that happen in such a famously secretive organization, where very few people have the 10.000 feet view required to come up with these ideas.
How do you make Mac Catalyst or Sidecar happen with 4 people silos who hardly ever meet and adjust ? How do you redesign the iOS photos app to the capabilities of the new hardware, in a way that will make sense once software+hardware become a product ? How do pictures of unreleased Airpods end up in recent iOS beta releases ? I mean, at some point you've got to make these things work together, and one decision on one side that's oblivious to the other side's constraints might make things impossible to them, and they'll want to push back. This is how "normal" companies function.
One more example, not something especially clever but more something that would have been a huge bummer if it hadn't happened : it seems like the Pro Display XDR has charging capabilities way beyond what any current Apple device might require, and it's speculated that it's for the upcoming 16" MBP : https://www.macrumors.com/2019/10/04/16-inch-macbook-pro-96w...
Again, how do you even achieve that if people don't communicate ?
Through extremely well defined internal interfaces and specs ?
You don't. What happens is those features are broken or just barely work, and only once they become public can Apple finally get them working. Look at the new iCloud shared folders that's now been pushed to next Spring after early Catalina betas were wiping out people's iCloud.
Edit: you can see this explained in one of snapples sibling posts.
By the OS Mastering team dropping the ball…
Managing 20 people on-site at Apple is different from managing 20 off-shore cheapos (even though they could potentially be just as skilled).
It's not like cross communication doesn't happen it's just via a formal process.
This thread is really helping me understand why I can never see eye to eye with anyone on Hacker News. What I had assumed would be engineering companies are companies with engineers but without engineering culture, and there is zero autonomy to be had without getting into management in an over-stratified org-chart.
"Do exactly this, I can't give you context but it'll make sense on release day" ? Sounds like extreme Fordism (and basically a hellish way to work for creative minds) and a great way to prevent people from spotting problems early.
I mean, he got music folks talking to computer folks.
But I think he did this on a smaller scale every day and that might have been his secret sauce for apple.
It sounds quite similar to what OP was experiencing i.e. lots of siloed, secretive teams across a very large, 100K employee organisation.
We all laughed when Tim Cook said that Apple will double-down on secrecy. Who's laughing now? Turns out he was dead serious.
Don’t throw your managers under the bus, stay optimistic, anchor your message in whole company success. You might be surprised at the impact you can have & the replies you’ll get.
Here’s a formula you can try...
At <company presentation> you talked about <goal>, which I’m excited about!
I/we’ve been experimenting with <new approach>. We’ve seen <results>. What other teams should I/we collaborate with to help Apple get to <Tim’s goal> faster?
1) You seem credible.
2) There's not really a mad rush for questions.
It seems like the magic really is over. ( :/ )
Not judging, but I am genuinely curious about what drives engineers to stay.
Apple doesn't give good offers although, so I took another one at a company / team I also really liked with a better offer.
The cleverest way to get rid of bad bosses (besides moving to another group yourself) is to get them hired by another company or promoted to irrelevance (though both strategies can backfire.)
> And you can’t speak out about this. Apple doesn’t take well to employees complaining. Even then, because of the lack of organization there is no one you could raise these issues with.
Sounds similar to a cult.
Why would we expect that organisation, as a whole, to be above average?