> the big wins come from specialists learning to code as the vanguard, then a few engineers taking over for production
The best places to work are ones with high mutual respect between the 'R' and 'D' of R&D. When either camp dismisses the value of the other and everyone stops giving a little to make the handoff easier it just makes everyone miserable.
Yeah what goes unspoken in all these AI discussions is that there's a culture of collaboration that just evaporates when everyone is pushing their own ideas.
There's very little mutual discussion, brainstorming, anything. The slowness inherit in building software before made those discussions almost necessary, now they're post-hoc criticisms (PR "review") rather than fulfilling collaborations.
It's fine from a technical sense, but I do wonder what it does for culture.
We should distinguish between 1:many advice and 1:1 advice.
An interviewer is really asking "how do you recommend people replicate your success?" which grounds the response in the hard lessons that person learned on their own journey.
Personalized advice can be equally useless, but if that person really understands you and your situation you might be surprised how specific and valuable good objective feedback can be.
"good objective feedback" - right, I think advice in general is bad because it tries to bite size a complex system, that is society/humanity. Feedback is giving someone information they can act on, along with the rest of context they have of their situation. No need for you to know them deeply, just the interaction.
There are things that can work, and things that likely won't work, and most people know these. Then there is a space of things that usually work and things that may not work, and you can't fit these into a person without knowing a lot of variables about them and the environment around them, like what and who they know, their personality, their competence (not just their resume), and many, many other variables. So advice defaults to guessing most of these variables to find some direction.
And I think it boosts advisors' ego, makes advisees feel temporarily better, even motivated, but YMMV by a lot.
This is why the good advisors also change the variables in your favor, like introduce you to their network, coach, etc. And often this costs you something. Like money, equity, whatever.
I see comments on posts like this complaining that Apple has the money to make software as high-quality as their hardware so they must be dysfunctional.
I'm not sure it's so easy. I think you have to compromise on hardware or software and Apple makes a choice.
My whole career in embedded devices, software is always under schedule pressure from hardware. Not because hardware is sloppy or evil, but because doing new things is hard and hardware has deadlines that software doesn't.
Like, I think the lessons are that all the money in the world still can't buy you time and even Apple can't keep a lid on feature creep.
It was an existing software feature who's behavior was broken in an update, not a bug to do with integrating new hardware or something. There are always difficulties but I'm not sure how to connect this to a time crunch from new hardware delivery.
> My whole career in embedded devices, software is always under schedule pressure from hardware. Not because hardware is sloppy or evil, but because doing new things is hard and hardware has deadlines that software doesn't.
The problem is the internet made post-release patches practical, which made software deadlines more flexible, which then allows management to choose a cheaper and less rigorous QA process.
Hardware is kinda like software in 1994 (just read about console game QA from the 80s/90s): you can't realistically patch defects after release, so you can't be sloppy.
It's an illustration of why technological constraints aren't all bad, and "progress" can cause regressions.
On the other hand, post-release patches made very complex software practical. And very complex software takes a very long time to test and people want the new stuff now.
There is no easy or even single "correct" answer. Just trade-offs.
There's a pretty big difference between embedded devices and high-end, general-purpose devices. Apple is very much the latter. Outside specific areas (like cell signal/etc) they are not constrained by hardware to the point that it inevitably impacts software quality—and the complaints people have are not about the parts of the software that are constrained! As far as I know, everybody is actually totally happy with Apple's wireless stack, power management and so on.
Now, is it possible that Apple's software issues are proximally caused by production pressure? Absolutely. That's almost definitely a major contributor. But the production pressure is not inherent to their device business; it's a choice the organization, collectively, makes.
Let’s not beat around the bush. Whoever made this decision in Apple seems pretty close to flat out evil.
There must be at least tens of thousands of ipad users globally (on ipads capable of upgrading to 27) who would would find this a critical loss.
To not mention this at all, not even in fine print release notes, while pushing people to upgrade knowing they cant ever downgrade back in the future, is just sabotage one step removed.
Especially as they did not offer any alternative way to access the functionality.
If you read this article, the author is basically saying “the way this worked before was very opaque and probably almost no one figured it out, but _I_ knew how it worked, and so the change is bad for me”.
Do they have a good point that they have a valid use case? Yes. Do they have the only use case? No. Did Apple do this to try to make things better? Yes. That doesn’t make them “evil”, that makes them trying to make things better.
Flat out removing a functionality that is 100% certain to be critical to many without any way of regaining it via any combination of features found on the iPad…
And without any notice whatsoever, and with no way to downgrade back, gets pretty close to flat out evil.
Don’t try to talk out of both sides of your mouth.
Even if they clownishly made it more buried and difficult to find under a dozen submenus… it would still be much less bad in comparison.
(If they never advertised or implied the iPad as being suitable for presentations, education, etc., then that have lessened the severity, but clearly that’s not the case)
> Whoever made this decision in Apple seems pretty close to flat out evil.
Could not be further from the truth. Let’s stop such nasty hate for the most minor of things; there are lots of choices one makes when designing software / interfaces / hardware and not every edge case is immediately apparent.
Disclosure: I work at Apple. I also had nothing to do with this change.
I doubt anyone at Apple was sitting in a meeting and was like, "I hated all my teachers in school, let's make it impossible for them to use iPads as presentation devices", and then everyone else agreed with them.
>> Whoever made this decision in Apple seems pretty close to flat out evil.
> Could not be further from the truth. Let’s stop such nasty hate for the most minor of things; there are lots of choices one makes when designing software / interfaces / hardware and not every edge case is immediately apparent.
> Disclosure: I work at Apple. I also had nothing to do with this change.
"It is difficult to get a man to understand something, when his salary depends upon his not understanding it."
Yes. Apple is a behemoth, heavy with layers and layers of middle management. It's pretty difficult to steer it any new direction and have everyone on board.
I think it would need a big restructuring with strong, smart product leadership. I'm dubious they have that now, despite the image Apple PR is orchestrating in the press with Ternus as the new CEO.
Having worked at Microsoft at the time that comic was made, you need to understand that it also had more groups and it was fractal, zoom in and there are guns everywhere. Microsoft created a system where every silo was in competition with every other silo. As an example, I viewed this from the sidelines, during this time there was MS Messenger and MSN messenger which both supposedly worked together with the same backend except it didn't because whenever MSN wanted to add a fun feature they had their hand slapped by the MS Messenger team and visa versa. It was a shitty experience and I'm glad I left.
Seems to me like it was an explicit design decision that fixed some use cases and broke others, rather than a regression in the sense of "A bug we introduced but didn't catch." As such a regression test wouldn't have caught this.
Someone made a design decision that broke some use cases.
When you're a gatekeeper / the phone company like Apple, the expectation is that as a general purpose device, you will adhere to at least some level of quality... simply because users have no alternative.
By constantly enforcing their walled garden and making it harder to use alternatives, Apple assumes the responsibility for the quality of their software. If they can't deliver, they should make it easy to pick and choose alternatives.
macOS, when it was called OS X, used to get released whenever it was released. It usually had some bugs and those would be worked on over the lifetime of the release. After Steve Jobs died, Tim Cook decided to switch it up to a yearly release schedule. That was self-imposed. Since then, Apple’s software quality has been steadily declining. They have no one to blame but themselves, yearly releases is not enough time to introduce new features and polish and fix bugs in old ones. And they keep adding more operating systems, making it hard on themselves when they have proved they can’t do it.
Somehow Garmin is even worse than Apple in that regard. Their mobile device hardware is (generally) quite good: robust and reliable with lots of little touches that serious athletes appreciate. But somehow they just can't get their act together on the software quality side. Everyone knows not to buy a new device at launch because it will suffer from frequent software glitches and crashes which take them at least a few months to fix. And even then, new releases frequently have regression defects that break existing features. Whether this is a deliberate choice or just general incompetence I have no idea.
I don't like the "deliberate choice or general incompetence" framing. It just isn't useful. What's both more likely and more interesting is to speculate on the specific mechanisms and forces that might lead to this sort of situation.
For example, perhaps the knowledge that firmware updates are possible for modern consumer devices means that the software teams have a higher risk tolerance when it comes to feature creep. They've been able to fix bugs in the past, and it was no big deal. It certainly wouldn't involve scrapping existing inventory or retooling anything in the production line like you might have to for a hardware defect.
Or, and this reflects my own experience as a software person, perhaps broader changes in software development culture are partially to blame. 15 years ago one of the first lines of defense for the team I was on was the project manager. As the one person whose only job was keeping a more holistic eye on the value chain, she often caught latent quality risks (e.g., the potential for two different in-development features to adversely interact) long before anything made it to QA. Nowadays most companies, in a lovely iteration of the doorman fallacy, have nixed that role because they believe Jira can do the job.
I've got similar feelings about Scrum. I have been on Scrum teams that were great at delivering consistently high quality software. But they were the exception. The more common situation is people rushing to merge a glut of changes on days n and n-1 of an n day sprint, every n days, forever. Which, regardless of what any manager says, is how they're de facto expected to behave. Taking two or three more days to get the job done properly would screw up the metrics on some KPI dashboard.
No one makes Apple release new products. There is a choice about the balance of releasing something and the quality of that release. Blaming that choice on anything but the people making it is nonsense.
And since Steve was the only Apple CEO with a backbone, Apple just does the normal big company thing now of chasing short-term growth and neglecting most of what made them different or great.
It’s unfortunate that new features that no one asked for and that degrade the user experience are added to releases with increased frequency ever year.
I don’t know. Embedded software makes things way harder on itself than is necessary by tying itself to the comparative Stone Age in terms of language, tooling, and methodology. At least in the automotive & robotics world I interact with. I can’t believe how much time is unnecessarily pissed down a hole because everyone is just stuck doing the thing they know how to cobble together today instead of reforming what they do and how they do it.
>all the money in the world still can't buy you time
The people who actually get the money being made are the ones who want more money asap. They are the ones who set the (often unrealistic) timelines so that they can line their pockets sooner. After all, those yacht payments are coming due.
> I'm not sure it's so easy. I think you have to compromise on hardware or software and Apple makes a choice.
No one forces Apple to stick to yearly releases. No one forces Apple to cut down on QA. No one forces Apple to prioritize shiny new poorly designed and half-baked features over system stability.
In fact Apple gets its highest praise (from nerds like us) for OS releases that just fix bugs and improve performance. Of course shareholders praise other things like cutting costs and raising revenue.
I've been told that software is treated as a BOM cost in embedded with a fixed cost and it being 'done' whereas the Silicon Valley mindset should be that software dictates everything else and thus is in continuous state of evolution.
It takes an uncommon breadth of perspective and depth of intellectual humility to contradict evidence it is your job to collect and interpret.
Sometimes the trends of tomorrow just aren't in the data of today.
What modeler in the late 19th century, when children were still economic assets on farms and in factories, could have predicted they would become extraordinary economic liabilities?
Don't let any news outlet convince you the story of humanity is exclusively one of war, pestilence, exploitation, and ignorance when we also find time to engineer meat cannons and give them silly names
The value of moving dirt is that someone paid for a hole. They don't care how it was made.
The value of written communication is in whether people decide to read it. There is nothing controversial about readers rejecting content they perceive is low-effort.
Lots of programmers match the right language to the right job, I think the zen of C++ is embracing the ugly as a feature; there are so many subsets of that language you never have to leave it.
Exactly, you can code like C devs (Petzold used the C subset in his famous Win32 book), go to the extreme of GUI, ORMs, Web frameworks in 1990's, inspired from Smalltalk before Java and .NET took over that role, go crazy with Haskell style programming, or chose somewhere in between.
> there are so many subsets of that language you never have to leave it.
I wouldn't call it "subsets" as much as support for "Multiple Paradigms" in the same language. They can all be used together to express powerful abstractions. James Coplien wrote "Multi-Paradigm Design for C++" in 1998 (before C++11!). Then people figured out Template metaprogramming etc. and the design space became even more wider.
Today with all the available language features and library additions you never have to leave the language at all whatever be the platform(cpu-arch+OS) you are working on. Add-in trivial interop with C and there is nothing out of bounds.
I have to say the messaging around passkeys is bad. So many providers show modals with big friendly lock logos superimposed on a smartphone to announce the change without offering any explanation about why the change is happening, why the change is happening now, or how the technology works.
I don't know when it started, I don't know who is to blame, but we've definitely arrived at a conceptualization of "the user" that is passive, uncurious, and incapable of being talked to like an adult.
The best places to work are ones with high mutual respect between the 'R' and 'D' of R&D. When either camp dismisses the value of the other and everyone stops giving a little to make the handoff easier it just makes everyone miserable.
reply