Microsoft has been making quality assurance mistakes lately
computerworld.com
computerworld.com
> how in the world can a patch to the Web browser lock up the operating system when you have an office suite installed?
In a perverse way, I enjoy stuff like this. Why? Because, someday, Raymond Chen will write about this and I will get to read about it on The Old New Thing, and while Chen will do a wonderful job of explaining the immediate causes, they will point to other technical oddities so bizarre that I will be reduced to a kind of mute incomprehension usually reserved for people who deal with the really interesting anal insertion cases in our fine nation's ERs.
I enjoy that feeling.
To corrupt a phrase, they've crapped their bed and now they have to lie in it.
Edited to add: I'm not some hardcore "M$FT SUXXXX" guy. I like and use their products, but I'm deeply concerned about the direction the company seems to be heading.
I left before they began doing away with the SDET discipline, but I'm sure that QA work is still not very prestigious.
Put another way, many of the level 64 SDEs I knew are now Principle (65+) for some this is long overdue, but for others it is unwarranted.
Over-promotion can do horrible damage to a team, particularly when it moves someone into a broader decision making position than they ate capable of handling. Some of the QA issues may well stem from this
My previous company in Europe understood this, and that seemed the norm in the surrounding industry. My current in America doesn't, and that seems the norm in the Silicon Valley.
Problem is it's a feedback loop. A lot of companies maintain (or did maintain) armies of unskilled people who basically were script executors, with maybe a bit of barely-trained skill in finding equivalence classes and boundary testing so that basic test plans could be written.
I wouldn't even call this QA, even if it was misidentified as such--it's Quality Control to catch problems after the fact, with no front end assurance whatsoever. It's honestly really only good for pissing off people when you stop the shipment at the last minute. And that lack of value has been broadly recognized. When you combine the high cost associated with the brute-force documentation associated with verbose test scripts, result templates, and other prehistoric process artifacts aimed at this level of tester (and which are usually simply unnecessary and actually detrimental to agility and pace) it's no wonder they're being cut.
Problem is as classic brute force QA teams get gutted, the market has been flooded with these testers, and most of them kind of suck. Hiring a decent quality professional has gotten damned difficult. And when everyone you meet with "QA" in their resume is a non-technical, uninfluential yo-yo, you get a pretty bad impression of the discipline.
In the meantime, everyone as skilled, interested, or immersed as you describe has been moved into software engineering, because QA was treated as an "entry-level" position and nobody wants to be a non-technical, uninfluential yo-yo. The rise of the Software Engineer in Test is as much a collective gambit to keep skilled people in quality as it is identifying a new skill-set. And for people in my line of work, identifying yourself as a SET has about a 30% pay differential over identifying yourself as a QA Engineer, so there's plenty of incentive to move in that direction.
But even then, the rise of the SET reflects an over-reliance on automation, and an under-reliance on process-based quality improvement and the type of fuzzy testing and intelligent guessing only a human is going to reasonably provide. The net result is that edge and corner cases escape, because automation is pretty shitty at catching those unless a fuzzer or an automated monkey (which is essentially a UI fuzzer) can be used. Generally, you only find problems where you've programmed it to look, which will be necessarily be pretty narrow, and the automation cannot use discretion to vary off the script to where new problems actually might lie. People have conflated the value of QA with the value of bad QA, and have chucked it out the window without understanding the cost. I'd guess that many have never even seen good QA to understand what it can do.
Nevertheless, this particular story is egregious. However much you cut back on quality control or assurance, the ONE FUCKING THING you always guarantee is that the user can get out of any problems that arise with minimum damage to money, data, time, and customer goodwill, roughly in that order of priority. Bugs in updates that kill your code signing stack and block further updates are just plain unforgivable.
The Windows 10 piece is stupid - it's a pre-release OS, these things happen. It's why they haven't released the OS yet, so I'd say their QA process worked. Pre-release OSes don't go through the same level of QA - if you don't like it, you should use a supported OS.
Second, with Exchange updates, there's kind of an unspoken understanding that there is no way MS can test every scenario their users will throw at Exchange. So updates are often released that can cause edge case issues, with the understanding that their large customers will test the updates in a test environment before deploying them. If issues come up, Microsoft can pull the update. These kinds of retractions are not uncommon with server software.
The same pattern can be seen when updating Office for Mac. Every single time the Office updater insists I close all browsers, including Chrome and Firefox, to apply a Word or Excel update. Nothing from any other vendor exhibits this pattern on a Mac (a Unix system BTW).
The author may have an anti-MS history, but he is spot on in questioning these unnecessary tie-ins. I use Mac, Linux desktops, and Windows regularly, and these simple user interaction failures make the latter a pain to work with.
Last month a Microsoft Visual Studio update intercoursed all our Azure development machines. We never got any reply from Microsoft, and had to reimage all the machines. I see from https://connect.microsoft.com/VisualStudio/feedback/details/... this has nearly a dozen repos, and still no official reply or workaround.
I've emailed Scott Guthrie a couple of times in the past about the sorry state of Connect. Maybe they'll just shoot it in the head and stop pretending it's useful to anyone.
I hold out hope that Microsoft has bigger plans for it's operating system than simply pandering to the tech-media's demands for, of all things... the start menu to return.
It's a testament to the usefulness of lawyers that the big players in the software industry don't even pretend they can work at the level of professional and managerial competence offered by almost all other consumer and B2B industries.
[1] - https://en.wikipedia.org/wiki/Toyota_Prius_(XW30)#Recall [2] - http://www.forbes.com/2000/08/18/mu3.html [3] - http://www.cbsnews.com/news/toyota-will-recall-lexus-suv-for...
Reliability of hardware or software is a trade off. If your software or hardware is responsible for keeping people alive then more time and money is spent on ensuring its stability and that is then factored into the cost.
"Software recall" does exist, they just call it "applying updates" instead.
I've had a lot more serious problems with my Lollipop-updated Nexus 5 than I have with my Windows 8.1 desktop PC over the past month.
Software quality in general is IME pretty bad these days and the problems go way beyond just Microsoft.
What is called "quality assurance" is really "quality control" in the places I've observed. The difference is subtle. For example, at my last position I carried the title "Director of QA". That was a made-up title that didn't mean anything. It didn't mean anything because if I were truly a manager of QA, then when dev throws something over the wall that has no code reviews and no unit tests, I'm empowered to say, "no, we're not shipping this". But as we all know, that's not how it turns out. Instead my team is "quality control" because we're just testing the output and have no empowerment over the creation process. In other words, we're a test team, so quit with the "QA" crap just because it has the word "quality" in it. As the saying goes, you can't test in quality.
With that, I see two trends. One, which has been going on for a while what with TDD and the like, is an increase of the testing burden on dev. This is, generally speaking, a good thing IMO, especially if dev can be backed by a dedicated test team. Where it goes off the rails is what I hear from my Microsoft friends: there is no more test, "devs" (many of whom might be converted testers that may or may not be qualified "devs") are responsible for testing, too. Don't ever rely on your own testing if you're a dev. You'll test it the way it was written, and you'll not only miss edge cases but likely scenarios as well.
Could this explain the steaming pile that was the Xbox One (the only MSFT product I have in the house, or use, these days) in its early days? Could it explain the unbelievably buggy, nearly unusable, _Halo: The Master Chief Collection_ we got from a Microsoft studio? Dunno, could be coincidence, but it conveniently fits my theory; might want to grab some tin foil.
Trend #2 is a regression bug: throw shit over the wall and hope test finds the bugs. Call 'em "QA" so that when the quality isn't there we have someone to blame. That's what we used to do 20 years ago, then we as an industry got a clue and put some quality onus on dev while test got brought into the process earlier. Maybe it's just my corner of the world, but many seem to be going back to just that (I left my last position mainly because of that reason, after they bait-and-switched me between the interview and the actual work.)
Could be that tools that help with quality haven't kept pace with the increasing complexity of software systems. Could be, but I'm not sure I buy that. We've got tools I could only dream of 20 years ago (Xcode's point-and-click profiling tools, code coverage tools, static analysis). Test modeling tools need some work, but at least they exist.
I think an overly simplistic answer is that the industry doesn't know what to do with software test. We know we need some, but damn does it cost money. So how can we minimize that cost without appearing to just throw up our hands? After all, most of us are not building the guidance control for space probes, so who cares if Angry Confectionary Squashing Avians crashes once in a while? Instead we throw an understaffed and unempowered team of victims at the problem, then scream "why didn't test (pardon me: "QA") find this?!"
That's my take on it, anyway. I'm astounded at the poor quality of most software I encounter, but I think the general user population is used to thinking that it's either something they're doing wrong, or that's just the way software is. There are no late night pitchfork parties along Microsoft Way or One Infinite Loop, and people keeping paying, so there's not always a huge incentive to do otherwise. Many of us have said we'd pay for an upgrade that included nothing but bug fixes. Companies think otherwise (and they're probably right). Apple had their Snow Leopard, which they had to give away, but I can't think of any other examples.
Solutions? Oh, I've got a few but this is getting long-winded and rambling, so I'll spare those of you that stuck with me this long.
Now that I'm a dev I really wish I had some competent testers to work with. It's really impossible to test your own work, because you're inherently optimistic about your code. Testers need to have the mindset of "there's a bug in here somewhere, and I'm going to find it."
[1] see: http://www.hanselman.com/blog/IntroducingASPNETVNext.aspx and http://blogs.msdn.com/b/cesardelatorre/archive/2014/05/12/th... for examples
People can build there own points based on the author's calling it beta software.
How are you supposed to create reliable software when you can't even count on the raw API that's been unchanged since forever?
I'm curious as to what has shifted inside Microsoft. Part of me believes I'm seeing the work of new devs as the old devs have left. Another part believes this is the result of agile taking over. I liked my visual studio with waterfall releases. At least it worked without constant hangs, locks, and crashes.
Some articles that capture the whole timeframe:
Why didn't you post one?
(Edit: I hope that didn't sound accusatory; I mean it as a cordial invitation to post good stories that you think belong on HN.)
I really like HN, it replaces /. for me.
Therefor I try to not submit controversial posts (is it in US?). I assume it's not optimal to submit Google Translate links of german articles (like my links above).
I don't think this particular story would have been unduly controversial, but more importantly, thanks for your concern for the quality of stories on HN.
http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-...
The comments on this article have some great vitriol.
Well, that's news to me!
I've always thought that everything that came out of MS is a quality assurance mistake. Heck, even MS itself is a quality assurance mistake.