Taro Logo

Your past got you in the door, and your level. Now prove yourself to us before we let you do what you do best

Software Engineer IV
Former Employee
Worked at Apple for less than 1 year
April 21, 2010
Cupertino, California
2.0
Doesn't RecommendNo CEO Opinion
Pros
  1. Smart people
  2. Great products
  3. Discounts on great products
  4. Good health plans
  5. Good diversity
  6. You will learn tons of Apple technology
Cons

All of your hard-earned expertise and well-honed instincts count for nothing. Some groups may be different, but in many, you are graded on how many bugs you fix, how quickly. This isn't about how many you examine or resolve in other ways, but how many code changes are made. No matter your expertise, everyone has to prove themselves in the same trenches. This is a disaster if you are older but very experienced. Few 50+ or even 40+ software engineers can sling code as fast as their 20 or 30-year-old peers. There is little acknowledgment of different skills and needs. If you are at a more senior level, you are also expected to do this while impressing Apple with your creativity and grasp of cross-functional areas and interaction. Never mind that creativity takes time, experiments, and management support you haven't earned in the salt mines yet.

As a software environment, I found Apple very chaotic and poorly organized. Each release, every part of the software practically may change at once and throughout the entire period. There's little or no layering or getting the base layers solid for the next level of development. Constant dogfooding occurs. Sometimes you can't get your own work done for long stretches because of bad internal builds. Oh yeah, you are often expected to install and attempt to work on several new builds a month. There is little or no internal documentation or formal software design whatsoever. Just a lot of bright programmers flailing away for the most part. Sad, so much brainpower wasted. The secrecy is so bad you are not allowed to know things that have direct bearing on your own area and even on your success. The only documentation of much of the software is in the bug-tracking system, in mail, and all ad hoc. As you struggle to fix your quota of bugs, you learn to find the minimal patch that works without blowing things up. This leaves the software a shoddy, non-cohesive patchwork over time.

Apple is arrogant as hell, or rather, some of its VPs and Jobs himself dictate how many things should be done that many of its senior engineers know is the wrong way to proceed. Apple has a serious phobia about using good database technology and shipping the same. Core Data is good as far as it goes, but that isn't all that far as far as DB capabilities. It is oriented to one app only. In general, Apple has a very app-centric view. And senior management loves files. Lots and lots of little files - even one per record. It is the model they based Spotlight and, to a degree, Time Machine on. The industry knows this is not the way to go, but it seems Apple has to periodically reinvent the wheel badly and call it great.

Advice to Management

Practice much better software engineering with actual design documentation.

Give teams room to rewrite and re-architect Apple-shipped software so it doesn't become stale or a patchwork.

Do not treat every engineer the same. Listen to your senior people and give them a lot of room to be creative and find a way to improve Apple from day one. Don't burn them out in the bug trenches. Make it much more obvious that you actually give a damn about eliciting each engineer's best and those things they can bring to Apple.

Ship a real database and integrate data across applications.

Never leave third-party developers high and dry. Extend functionality to richer, better functionality – don't just take things away or tell them they have to redo things differently periodically unless there is real payoff for them.

Stop insisting that Objective-C/Cocoa is the one and only truly blessed way. Since Apple controls that utterly, you condemn third-party developers and your own employees to Apple-only lock-in. Not nice. Objective-C was great in the 80s, and slowly Apple has added things to make it almost sort of modern. But it is not state-of-the-art, no matter how much Steve crows about how wonderful it is.

Stop running a mushroom factory.

Was this helpful?

Apple Interview Experiences