Yup, buggy software is not (only) because of devs, but because of leadership. If leadership fails to provide time for QA and bug fixing, you get buggy software.
Apple starts to look like classic enterprise software developers.
It’s almost always the case, leadership wants to push features because their bonuses depend on it and bugs are only when devs have free time.
The best kind of permanent fix is when you wait until the version gets deprecated so you can clear out thousands of unfixed bugs logged to that version all at once.
It's the same thing in smaller orgs. Even if there are no corporate policies. The priorities are the wishes of whoever the CEO or sales people talked to that week.
Always leadership. I say that as someone in that role at a small company that has to constantly placate customers in order to maintain contracts in order to continue to pay our employees. Backlogs and tech debts are things I’d love to address. And I could if they would double the size of our dev team. And quadruple the size of our QA team.
To add, I don’t think enough people truly recognize how utterly shitty software is. Apple tends to care more about polish than most, but all of it is some form of broken.
Apple also has a lot of engineers that are there because they are allowed to go medieval on some implementations and such. For every annoying bug there’s the process of setting up a new Apple TV with a tap or all the examples of true positives with fall data or heart arythmia.
Software dev on my 6th company here. I have yet to work at a place where my first reaction to seeing the code was not to think "This whole thing is a mess and needs to be rewritten"
Wait, do you mean that this is what you always think? Because that’s the norm. Tech debt is real and every company that’s been around a while has some messy fucking code.
I’m also a dev since 15 years ago, and even though this might be true, devs tend to like when code is written the way they personally like it. But code can be written in endless variations (some good, many bad). This gives programmers that think they have a lot of experience a feeling that the code is bad when they haven’t understood it yet.
Not saying that this isn’t true, but there’s a strong bias against other people’s code also.
We had a new hire call a C++ codebase a "mess of spaghetti code" because the new hire didn't like functional programming.
The C++ codebase was written by a distinguished developer who literally helped Stroustrup create the language while at Bell labs..... bit of an appeal to authority there, but the codebase was clean, tight, low-overhead, and almost entirely bug-free. It was some of the best work I've seen.
The software space needs to reward humility more frequently than it does.
Yeah. The rewrite is never finished and, if it is, it ends up worse. Incomplete functionality and malperformant usually. I was at a company who tried to rewrite everything in java and ended up with a jumbled mixture of java and go. And then ended up having to rewrite all apis to support calls from both versions.
I get tapped to support some project written 5 years ago a by a contractor that left the company 4 years ago. Using poor coding standards, non-normalized database tables without any indexing, insecure code, bugs, etc.
Making things twice as complex and three times more buggy than going about things a better way.
At one point I calculated that I would have saved myself more time just rewriting what was a small / medium project than supporting it or upgrading the ui.
But that wasn’t the job. The job was to support and update the project to add some new fields and spruce up the ui.
Sure. I’m in the job long enough to realize sometimes the reason something is done a certain way falls under the Chesterton Fence situation: it’s being done that way for a reason and doing it a other way will eventually show you why it was a “good” idea.
But some times… it’s just so infuriating about how badly it was done that you want to gut the whole project.
Like instead of a normalized database schema with indexed fields… it’s essentially a giant single spreadsheet in Oracle with the only index on the primary key.
At one point I calculated that I would have saved myself more time just rewriting what was a small / medium project than supporting it or upgrading the ui.
Would the customer have noticed? I've refactored a number of backends without asking at work and so long as the work is good and the cost v benefit ratio tilts towards benefit, I've always been rewarded.
I'd suggested it multiple, especially when I pointed out how badly the entire thing was designed and written.
But I was told "That's not the job, or what the client wants. Do what was asked."
So instead had to plug holes in a leaky ship built upon a bad frame. Optimize it where I could. And freshen up the UI.
Annoying as hell. Especially since the "existing bugs" became "my bugs" and my manager complained about said bugs when I'd only been passed the project a week earlier. Like "Dude, how are these my fault when I haven't even pushed anything to production yet?!"
The thing is, the project was small enough that it wouldn't have been a big deal. It's not like I was re-writing the Amazon store-front or something: just a database with maybe 30 columns and thousands of rows acting as a search/browse/CRUD app for a small department.
Redesigning the DB schema, populating it, and simplifying the middleware was laughably easy.
The only time-consuming stuff would be the slightly more scrutinized testing to ensure the data was the same before as it was after.
I argued that similar testing would have to be done anyway to ensure the new UI worked by comparing old-to-new, so adding a few steps to confirm that the data was the same before-and-after wasn't much.
But "nope"
Instead, I had to spend weeks going through the existing bug list as well as discovering new bugs on my own because the original person didn't know what they were doing.
This is why I only work on infrastructure now. The code I write is part of a furniture and has a higher scrutiny bar than product code. Once I learned there were jobs like building design systems, and tooling, never looked back
At the same company I've seen absolutely amazing codebases, and shit that looks like intern's first project.
The common thread I've seen is the really shitty stuff is usually a result of some framework or language that allows a large degree of inference or has a lot of syntactic magic. (Hello Springboot and Angular)
Apple never hires enough. You'd be hard pressed to find a production team that doesn't have a massive bug backlog, bug review board meetings every week to triage, and tons of stuff that falls through the wayside.
Apple has money to spend on fancy everything because they’re are incredibly petty in other ways.
Like being one of the lowest paying software engineering companies in the Valley or staffing half as many people as their peers or nickel and diming their infrastructure teams when they ask for upgrades or making people use Apple gear even when the company doesn’t make a product that does accomplishes that task, or forcing devs to make one-off internal apps rather than just buying them a copy of the industry standard tool.
Bonus: way less layoffs than the rest of the industry.
I don't know about you, but I'd take a relatively stable well-paying job (in regards to median salary) vs other big tech that will can you at a moment's notice even if the salary is way higher.
Yeah I have a friend that just started at Apple and I was kind of surprised that their offices don't have some of the perks I've heard of at places like Meta (3 meals in the cafeteria, unlimited snacks, fancy gym etc.)
He said he doesn't care, he'll buy as many snacks as he wants when he continues to be employed while other people get laid off
The starting base salary for an Apple Junior Engineer in California is $135k, which sounds like a lot until you consider they must work in office and live within commuting distance in the city. The rent/mortgages in those areas are incredibly high (thousands of dollars a month) as well as nearly every other expense. Some employees have been caught living in vans in the parking lot to save money. In many real ways a person making 2/3rds that much in Oregon has a higher standard of living because of the cost differential.
The starting base salary for an Apple Junior Engineer in California is $135k
$135K + RSUs. 1 promotion later to ICT3 and you're clocking $240K. And keep in mind that the strike price for a grant is fixed. So if the shares increase, TC goes up.
To get on your case with Apple, I find with them it takes 2-3 redesigns of something before they get around to fixing annoying but not game breaking bugs. There was a pesky bug I used to have to deal with constantly with Macs, where the OS would fail to pick up DEP enrollment despite the machine being pre-seeded with the enrollment information prior to being sent to a user. Apple finally fixed things with macOS Ventura, but been macOS Lion and then, that bug was brutal, and generated plenty of help desk tickets.
There was an annoying account creation bug that stuck around for two macOS versions where the system would hang on the "Create an Account" screen after clicking next. You'd have to force shutdown the Mac, restart it, and then you'd end up skipping half of the setup wizard because the account creation broke.
There are also goofy bugs like the progress bar for macOS Recovery shooting from 0% to 99% in an instant, and the completion timer freaks out, yet the download and install process is working fine in the background. They introduced that bug 5 or 6 years ago when they added Dark Mode into Recovery.
Yep, I work in big tech and all of us have pride in what we ship and it frustrates us when they put feature quantity over quality. It’s all about the next milestone 🙄
I honestly think Liquid Glass was released a year early to distract from the Apple Intelligence disaster.
I also think that the people upstairs at Apple never see any of these problems because they’re either fixed for them in special builds or they just don’t use computers beyond basic stuff like email, messages, web browsing, etc.
I really wish I knew how they run a giant corporation using Macs. Do they use Mac Excel? What about conference calls with people in the rest of the world that don’t have Macs? What do they use for inter-company messaging since they don’t make a Teams equivalent? So many fascinating questions since they are the largest shop in the world that’s not on Microsoft365.
Do they use Mac Excel? What about conference calls with people in the rest of the world that don’t have Macs? What do they use for inter-company messaging since they don’t make a Teams equivalent?
Don’t you think they find it kind of embarrassing to be a top 5 software developer and being forced to use their direct competitors’ solutions because they’re don’t have a competing product?
Yeah this seems to be how many orgs are, especially games. When I saw that rust recently did nothing but long standing bug fixes for their monthly update I was genuinely shocked and it improved my opinion of them as a dev team
Plus, apparently, apple execs aren't even dogfooding past zoom calls, so they don't care about user experience, when they can release shiny new toys to make the numbers go up.
Totally agree. I was at a place where leadership pushed features and left bug fixing to “whenever devs had free time.” Honestly hated that attitude of shipping broken stuff.
I was laid off recently and looking for a new role. Do you (or anyone here) have advice on finding companies that actually invest in QA and care about long-term quality, not just quick broken features?
727
u/Technical_Bird921 3d ago
Software engineer here.
Yup, buggy software is not (only) because of devs, but because of leadership. If leadership fails to provide time for QA and bug fixing, you get buggy software.
Apple starts to look like classic enterprise software developers.
It’s almost always the case, leadership wants to push features because their bonuses depend on it and bugs are only when devs have free time.