Slashdot Mirror


Should Developers Do All Their Own QA? (itnews.com.au)

An anonymous reader quotes IT News: Fashion retailer The Iconic is no longer running quality assurance as a separate function within its software development process, having shifted QA responsibilities directly onto developers... "We decided: we've got all these [developers] who are [coding] every day, and they're testing their own work -- we don't need a second layer of advice on it," head of development Oliver Brennan told the New Relic FutureStack conference in Sydney last week. "It just makes people lazy..."

Such a move has the obvious potential to create problems should a developer drop the ball; to make sure the impact of any unforeseen issues is minimised for customers, The Iconic introduced feature toggles -- allowing developers to turn off troublesome functionality without having to deploy new code. Every new feature that goes into production must now sit behind one of these toggles, which dictates whether a user is served the new or old version of the feature in question. The error rates between the new and old versions are then monitored for any discrepancies... While Brennan is no fan of "people breaking things", he argues moving fast is more beneficial for customers.

"If our site is down now, people will generally come back later," Brennan adds, and the company has now moved all of its QA workers into engineering roles.

48 of 299 comments (clear)

  1. Fuck no by Anonymous Coward · · Score: 5, Insightful

    We're lazy as shit.

    1. Re:Fuck no by Decker-Mage · · Score: 5, Insightful

      More like using their customers for beta-testing, just as with every other shop it seems these days.

      --
      "[I]t is a wise man who admits the limits of his knowledge or skill, and that pretending either causes harm." --Terry Go
    2. Re:Fuck no by Altrag · · Score: 2

      Its still not really "fine," at least not on any sort of large scale. Programming and QA testing are actually quite different skill sets. Certainly there's some overlap (especially if you want/allow your testers to try and find the problem in the code rather than just reporting it) but they're definitely not the same role.

      Add on to that the fact that programmers generally command higher wages than testers on average, and you end up with paying more for people to do a job they don't want to do and aren't especially good at. You're probably better off hiring a tester that can moonlight in another role (maybe even as a junior programmer if you have a second such person and avoid self-testing) than having the programmers moonlight as testers.

  2. QA sucks and developers do pass the buck by datavirtue · · Score: 2

    "It just makes people lazy..."

    Totally agree. I have lobbied for developers to build integration tests against their code. I started by lobbying for QA to do this but they weren't technical enough and couldn't handle it. The run-of-the-mill QA process is a fluffy user acceptance test. I have proof. We continue to find the real problems in production.

    --
    I object to power without constructive purpose. --Spock
    1. Re:QA sucks and developers do pass the buck by Darinbob · · Score: 3, Informative

      You need a series of gates and software/firmware/hardware has to pass through all those gates. The later a bug is found the more expensive it is to fix it. When the customer finds a bug it can be catastrophic; as in layoffs are going to happen because of loss of revenue. So find the bugs early, and make sure you've got all the gates set up.

      - Developer must unit test the code - developer must to the basic test of flipping it on, making sure that something happens and that it does what the developer thinks it does. Finding and fixing a bug here is very cheap.
      - Other developers must code review the changes; spread out the knowledge to more than one person, have other sets of eyes looking at the code, let someone point out where the clever change is breaking the design or violating preconditions from elsewhere in the project.
      - QA must then test the feature; positive and negative tests. Run it for long periods, try to break it, compare it one by one to each requirement and specification. This can happen before all features are complete.
      - QA then tests the integration; not just one feature but all of the features, so it's done once there's a code freeze for the release. Maybe it repeats some of the earlier tests, but it should run through a full regression, use it like a customer would use it.
      - If it's applicable, do a full system test. End to end, from hardware board to back end server. Test different combinations. Finding a bug here is expensive; but it's still less expansive than having the customers find the bug.

      If you still find bugs after that, then review how the bug slipped past, fix the gates, and do better next time.

  3. Should accountants audit their own bookkeeping? by peterofoz · · Score: 5, Insightful

    QA done right can add value to a project by rooting our ambiguous requirements and holding developers accountable. Developers are worried about a lot of issues like function, aesthetics, security, performance, scalability. Having QA work from the same specs to derive the functional tests from a different perspective can provide a huge value to developers. But you have to involve QA early in the game.

  4. no by cascadingstylesheet · · Score: 4, Insightful

    No, for the same reason professional writers need an editor. Someone else will see things that you didn't. Yes, they will.

    1. Re:no by Maxo-Texas · · Score: 3, Interesting

      Exactly. Some people are good at writing code. Some people are good at finding errors.

      Modern writing has gone to hell compared to even cheap books written when I was young. As long as the word is correctly spelled it gets thru to being published. You read the atrocious error, get jarred out of the book, then resume reading.

      In development, the atrocious error is a loss of all data on the screen, or the program hangs, or you can't update an amount if you come at the screen from one particular set of commands.

      Heck- the system IBM wrote for us years ago literally dumped an entire order if any error occurred. A half an hour of work lost. Because they treated it the same as ordering one item from amazon instead of ordering 130 items each with different quantities.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    2. Re:no by king+neckbeard · · Score: 3, Insightful

      Dev and QA actually have a synergistic relationship, the problem is a PHB wanting to lower the head count, so they can get that money as a bonus. QA doesn't make any money, so they make sense as a place to cut costs.

      --
      This is my signature. There are many like it, but this one is mine.
  5. Microsoft by JBMcB · · Score: 3, Insightful

    Didn't Microsoft move to this model just before the Windows 10 upgrade, uh, issues?

    https://www.windowscentral.com...

    I've done development and QA work, and QA approaches testing from from a whole different perspective. The problem is context switching. It's difficult for a developer to approach a piece of functionality from the user's perspective (especially if they don't necessarily know all the parameters for how the functionality is going to be used) It takes time to switch out of that mode, and, in an effort to make the code perfect, you can come short of ever making the code good to begin with.

    A QA engineer is going into testing with the mindset of an end user. What are they going to expect to have happen? What are they likely to do? What corner cases aren't worth exploring? It's useful for developers to have some experience in this, but I don't think it's reasonable to expect them to be experts.

    In general, you want developers to spend time and cognitive effort making sure the code is functional and maintainable. Heaping on the cognitive load of completely switching gears and thinking like an end user isn't always the best use of their resources.

    --
    My Other Computer Is A Data General Nova III.
  6. Short version: No. by RyanFenton · · Score: 3, Insightful

    Longer version: NOOOOOOOOOOOOOOOOOOO.

    I've been at places where managers get a variation on this lovely idea: Hey, maybe you would be more careful coders if you had to do your own testing. You're all so sloppy!

    Oddly enough, this is mostly from non-coders, or folks without technical acumen.

    Here's the deal: There ARE coders that claim to not make mistakes, and create bug-free code. Those are known as inexperienced or self-deluded coders, or folks only making one-off projects negotiating exact terms that make it not REALLY programming so much as configuring.

    Even just from a simple level as just writing down words, if you've ever written a work longer than a couple of paragraphs, you'll virtually always reach a point where there's some subtle or stupid mistake you make without noticing it. Even VERY experienced journalists and writers need proofreaders on any serious project.

    It's not a matter of taking your work seriously, or being unable to face responsibility - you're always going to be blind to the flaws in your own code, and although testing crews ARE expensive - they exist for many, MANY important reasons. They're cheaper than the same churn without a proper quality process. Sure, some of that effort may be being duplicated, or used badly - but few possibilities would be worse than expecting everyone to 'man up' and expect bug count to go down.

    In other words - certainly, I can test my own code if you'd like, but I'm a VERY expensive testing staff member, and my perspective is going to cause me to overlook a lot of things - since it already 'makes sense' to me and I won't spot the inconsistencies a percent of the time.

    Ryan Fenton

    1. Re:Short version: No. by Hairy1 · · Score: 2

      Coders should be responsible for the quality of their work, but the environment should support them. That means they should be given the time to write unit tests and perform code reviews. Code reviews are not just about reviewing implementation but reviewing the requirements to ensure the developer understood the requirements and implemented what was required. Code review is about ensuring that the unit tests for the code properly test the code. It is never a case of throwing new code over the wall to let testers work this out. These things are true whether you have a separate test team or not.

      And if you do have a separate test test they are there to validate, not catch your mistakes. Quality is baked in by developers, it can never be tested in. A robust software development life cycle involves taking ownership of quality on an individual developer basis as well as organisational practices which reinforce and support developers.

    2. Re:Short version: No. by stephanruby · · Score: 2

      I've been at places where managers get a variation on this lovely idea: Hey, maybe you would be more careful coders if you had to do your own testing. You're all so sloppy!

      But most likely, that's not even how it went down. What most likely happened was that they created toggles for every new piece of functionality. Then they wrote a script that would switch to the old version of the functionality as soon as an error with of the new functionality was detected. In other words, they wrote a safe-mode to relaunch their application under, every time an unrecoverable error or a runtime exception were detected.

      And by itself, this is actually not a bad idea. It's one more way to protect your company from disastrous consequences. Imagine, it's Friday afternoon, a developer fixes a small typo and doesn't bother to test it before uploading the new version to production. At first, everything seems to still work, so the developer goes home for the weekend, but over the weekend the application is basically unusable and stops generating revenue during the entire three-day weekend.

      And this type of functionality solves that problem at least.

      But then management sees that and says to themselves, we actually don't need QA anymore, if there is a problem now, the app can just go into safe-mode. We'll just reassign QA and pat ourselves on the back for saving so much money.

      Unfortunately, they overlooked a few things:

      1. If the developers were "lazy" before because of QA, they're probably going to be "lazy" again now because of safe-mode. After all, if a bug is introduced into production, it's no longer the end of the World anymore. Also, I'm putting the word "lazy" in quotes because I am not convinced that his developers were lazy to begin with. Talking about being lazy, the manager doesn't back up his claim with any kind of data whatsoever about his developers' velocity or his application's number of bugs, either before or after the change (not that the total number of bugs after the change can be trusted either since not all the bugs will appear in the logs or be found right away).

      2. Applications using this type of safe-mode recovery don't usually tell the user what's happening. Don't ask me why. It's just a trend I have noticed. Windows did it, but applications for some reason do not. And so the user has no idea why the UI for his application changes from day to day, or hour to hour, either adding new functionality or removing functionality. And as a user myself, I can tell you that this is not a good feeling to have about an application. Now, I can understand new functionality being added, but when I see that the application is acting weird, or that the application is removing some of its earlier functionality it had just introduced. I can tell you that I consider the application flaky and buggy (even when it didn't hit me over the head with an error message or with a crash). And if I have a competing product/site I can choose to use, I might just switch to that other product/site instead.

      3. Not all errors are going to throw an exception and not all errors are going to crash the server. For instance, let's say I have a shopping cart and I confused the Mexican Peso with the American dollar. So for every item that my shopping cart sells for $100, it's only charging around $5 instead. Now, my system wouldn't be able to detect and recover from such an error. And my QA people are no longer testing the app, they're too busy doing something else. So that means that a week could easily go by and my company could lose millions of dollars because of such a small mistake. Of course, this problem could be mitigated with unit tests to a small degree, but I really doubt that a manager that gets rid of the QA role would be very supportive of unit-tests either.

      4. So let's say the system works mostly as intended. The majority of errors is getting logged. And the system recovers itself every time. That's all great. But now, that just means that the developers are up

  7. Rotate by sycodon · · Score: 5, Interesting

    EVERYONE on your team should be a developer.

    But QA should come from that pool for one project. Swap them out for the next, etc.

    Developers working at QA know where the mistakes are likely to be.

    Developers testing their own shit subconsciously avoid the shoddy parts.

    This also keeps the team as one.

    It's like a platoon of Marines taking turns burning the shit.

    --
    When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    1. Re:Rotate by Maxo-Texas · · Score: 5, Insightful

      As a manager, my best developers were not my best testers. And my best QA people couldn't have coded their way out of a paper bag.

      Our top QA guy and head of the QA department was an ex marine sergeant. Didn't know how to code. But he was a top notch tester who caught anything that didn't match spec's or that changed from one release to the next.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    2. Re:Rotate by Anonymous Coward · · Score: 4, Interesting

      That's not surprising, the two groups that are best for finding bugs are the power users and the completely incompetent. And the power users are likely not the same type of people that are doing the programming.

      I've personally got a talent for breaking software by doing innocuous things that should have been tested for.

    3. Re:Rotate by ShanghaiBill · · Score: 5, Insightful

      Developers testing their own shit subconsciously avoid the shoddy parts.

      They also tend to have preconceived ideas about how users will use the program that are very wrong.

      The first time I watched a videotape of someone using a GUI that I had coded, I kept screaming "NO, not THAT button!!!!", but it was a recording, so they couldn't hear. It was a traumatic and humbling experience.

    4. Re:Rotate by TechyImmigrant · · Score: 3, Insightful

      Consider the plight of us semiconductor designers. You've got 10 billion transistors, all hooked up in designs by thousands of people and it all has to work together and if you get it wrong, you can't fix it. It has to be right. So hell yes, you test your own stuff before letting others see it. Then other people test it. Then you test their stuff with your stuff. Meanwhile there are teams of people putting it all together in lots of ways to try and break it.

      The value in a design is not the design. It's the level of trust that the thing will work when you put it in a chip.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    5. Re:Rotate by quantaman · · Score: 4, Insightful

      Developers testing their own shit subconsciously avoid the shoddy parts.

      The trouble with developers testing their own code is their objective is to finish the feature and move onto the next issue, not to find bugs.

      A developer who spends 50% longer debugging their code is likely to get a reputation as a slow coder, if a bug shows up 6 months later it might not even get attributed to their change. And even if there is some potential blowback in 6 months time, it's hard to take that into account when your manager is breathing down your neck because the project is behind. I know I've taken heat in performance reviews for not finishing features quicker, I also know I've spent a lot of time fixing other people's bugs.

      The reason for a QA department isn't that they've better at finding bugs in new features, they aren't. Rather the QA department gets to focus on the testing that developers have no incentive to do. QA also tests the features that developers don't work on, because every once in a while changing number of wings on a butterfly triggers a null pointer on the other side of the source tree.

      --
      I stole this Sig
    6. Re:Rotate by TheFakeTimCook · · Score: 2

      Consider the plight of us semiconductor designers. You've got 10 billion transistors, all hooked up in designs by thousands of people and it all has to work together and if you get it wrong, you can't fix it. It has to be right. So hell yes, you test your own stuff before letting others see it. Then other people test it. Then you test their stuff with your stuff. Meanwhile there are teams of people putting it all together in lots of ways to try and break it.

      The value in a design is not the design. It's the level of trust that the thing will work when you put it in a chip.

      ...and then, after it goes into the field, there are STILL one or more Errata that follow, with nice things things like "Oh, the SPI Enable doesn't work when PD20-23 are configured as SPI2"...

    7. Re:Rotate by Darinbob · · Score: 3, Informative

      Sort of. QA does development, but not on the project, they develop automated testing scripts and the like. The skill sets are different. A developer should do basic testing, but the developer is way too close to the code and is very likely to miss things. I see developers who assume no testing is needed, it was an obvious fix, and then it turns out to have bugs. Developers are often not good at integration testing, because they may have troubles seeing the big picture of how all the parts fit together.

      QA can read the product's code certainly, they can be involved in the code reviews, but they shouldn't develop that code either. For a good QA person, testing, creating the test plans from the functional specs, automating the tests, and so forth, is a full time job in itself. In a lot of ways it is harder than development.

      Every time I have seem companies try to merge two groups or departments together it has not turned out well. And this cost saving measure won't turn out well either.

    8. Re:Rotate by vux984 · · Score: 2

      That's not surprising, the two groups that are best for finding bugs are the power users and the completely incompetent.

      I'd say that there are at least 3 groups. Some developers are also really good testers. Some power users are really good testers. And the totally incompetent also are brilliant at finding bugs.

      And you really want your QA to include all 3 types, because they each find different kinds of problems.

    9. Re:Rotate by king+neckbeard · · Score: 2

      Make something idiot proof, and they'll just invent a better idiot.

      --
      This is my signature. There are many like it, but this one is mine.
    10. Re: Rotate by CODiNE · · Score: 3, Interesting

      The incompetent person in your example is the developer who let the same order be sent 100x.

      It's normal to refresh or try again when a page hangs. Or do you sit there for several minutes before you try again? At the least they could deactivate the submit button once clicked, the right solution is an order token that is only accepted once.

      I bet you only press the cross-walk button once too. Wouldn't want to break the signal!

      --
      Cwm, fjord-bank glyphs vext quiz
    11. Re:Rotate by PPH · · Score: 2

      their objective is to finish the feature and move onto the next issue

      Your feature isn't finished until it is bug free. If devs don't get credit for completion until the QA is signed off, they will make a better effort to get it right the first time.

      --
      Have gnu, will travel.
    12. Re:Rotate by Altrag · · Score: 2

      Having developers do some QA will teach them what pitfalls to watch for.

      Having developers do some QA as a training exercise is one thing, having them do actual QA for a releasable product is another.

      The argument that development and QA have different mindsets is both wrong and harmful.

      The argument that they have the same mindset is even more wrong because its simply not true, at least in general. Developers tend to need time to ponder a problem and then rapid-fire out lines of code until they have a working solution. A very binge-and-purge style of work. QA on the other hand needs to be methodical and repetitive -- exactly the kind of tasks that programmers typically hate doing.

      Does it help if QA knows how to program? Sure. Does it help if the programmers know how to test? Sure. But mixing the two up is kind of like trying to swap the architect and the foreman on a construction project -- sure there will be the odd person who can do both, and it helps if both knows at least a little about the others' work, but typically they're in two totally separate worlds and arbitrarily trying to cross them over just isn't going to be a great day.

      Devs need to code with eliminating bugs as a priority

      This is almost always more of a management issue than a developer issue. Sure there's always going to be devs with more ego than talent who just commit whatever garbage because hey there's no way they could be wrong, right? But for the most part bad code gets pushed because the devs are under a heavy time crunch or are being shuffled between projects faster than they can gain true understanding of any one of them or other such issues that the dev has little control over.

      This is how it is typically done in engineering. A designer will hand their work over to another engineer to be checked. And the roles are swapped, so everyone gets to do both tasks. The person who finds the errors learns not to make them in their own work.

      Which should be done anyway, really. But you still need a level of QA above that to catch things that no developer familiar with the project would ever think of. If you're developing software that uses say, a debit card reader and you have a bunch of test cards kicking around and so on, developers are likely to just grab one of the test cards and perform the tests. But they're not likely (or not as likely) as a decent tester to see what happens when they try to scan a credit card.. or their library card. Or that card that's almost snapped in half and held together by masking tape. Or the one that got cut and the magstrip is missing a corner but is still kind of readable, etc.

      You can kind of get away with it if you have two dev teams that are working on entirely separate projects with little to no knowledge of what the other team is doing -- then you're at least removing as much bias as possible. You still have the issue that devs typically aren't good testers in general though.

    13. Re: Rotate by vux984 · · Score: 2

      I'd say a good example that the incompetent manage to find where they ran the installer twice in parallel.

      Everyone else who was in testing ran the installer just fine, and started testing the software. Later on it went out to a limited release of customers... next day I had a report of some bizarre installation failures. Some idiot had downloaded the installer, double clicked, and then since the window didn't open up fast enough doubleclicked it again. Then a competent person would have realized the 2nd setup window was because they'd launched it twice... but not this guy... and he went back and forth between the two setup instances making different choices along the way in the two wizards and not realizing it. The end result was some weirdly corrupt configuration settings.

  8. As a retired developer and manager of developers.. by Maxo-Texas · · Score: 5, Insightful

    This is dumb.

    QA people think like QA people. Developers think like developers. And developers can't bring a fresh eye to their own code.
    Heck, most developers can't even develop remotely comprehensive test data.

    There is some evidence in the nuclear and aerospace industries that having things checked twice results in people being lazier (because they think the other person will catch it).

    But for mainstream business developers, I've never seen them able to test as well as QA does.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  9. Hell No! by jhaygood86 · · Score: 2

    I can say, as a lead developer and architect at several companies over the last 12 years, having a good QA team to catch all the edge cases makes me a much more productive developer. I have worked in many situations where I didn't have Quality Assurance, and the quality for when I did have QA was much much better.

  10. External testing is necessary. by king+neckbeard · · Score: 2

    External testing is necessary to avoid a number of cognitive biases. Developers should do some degree of testing new builds, especially if the tests can be automated, but at the very least, you at least need roughly the software equivalent of a proofreader. Proofreaders are needed, not because a writer lacks the ability to understand basic grammar and spelling rules, but because the brain suffers from the opposite of NIH syndrome.

    Does that necessarily have to take the form of a QA department? No, but this mostly sounds like trying to cut manpower or get around addressing flaws in the testing process. Another PHB trying to preserve his existence by pulling out pieces of a machine they don't understand.

    --
    This is my signature. There are many like it, but this one is mine.
  11. QA is it's own step in development by Masterwinks · · Score: 2

    I've done QA and I moved to development. The jobs are very different. Devs should check their own work and write unit tests, obviously, but QA really is it's own step and should not be minimized. Sure, you can code regression testing and unit test just about anything in the right environment, but a good QA tester will do things you will never think of and catch a bug before it is found on production.

  12. QA your own code? by gwgwgw · · Score: 2

    I code in 3 different languages and write my own QA in each, but only because THERE IS NO QA department. Writing useful QA always takes way longer than initial coding of the script to do its intended purpose.

    Coder's lament: "Why would a user *ever* do that?"

    Because they are a different set of eyes and don't do the same things the coder does.

    2 weeks ago I torpedoed my own QA handling an important script that had been working fine, QA 100% successful (so my report said). A "simple", backwardly compatible enhancement entailed a QA change in order to QA the new feature. For a whole day I was ecstatic that the QA **still** passed 100%.

    Next day .. that sleep I got .. brought me to my senses .. I'm just not THAT good of a coder going back to an older script. A skeptical look revealed that the QA's "simple" change was allowing EVERYTHING to pass!

    QA is /not/ good if it's done by the same person. (And you don't want to wait 6 weeks so that YOU are /not/ the same person you were, and THEN write the QA. Nice try..)

    Everywhere it seems: Gotta have this done last week; call it what you want -- *Lie* to the customer.. they are too naive to complain.. too wet under the ears to blame YOU instead of themselves.)

    Insert your own diatribe vvvvv here vvvvv.

    Yeech.

    --
    That was Zen, this is Tao
  13. QA is needed by ghoul · · Score: 2

    QA is needed. However far too often QA teams are used as dumping grounds for Developers who cannot cut it

    In my perspective the most complicated part in actually figuring out the tests. if you can figure out the tests it means you have nailed down the scope. if you can do that before you start coding the coding part is actually easy. However if you are only doing QA but not doing coding your coding skills will rust.

    The best place I have worked had 2 scrums working on a project - Team Blue and Team Orange. For one release Team Orange was dev and Team Blue was QA. For next release Team Blue was Dev and Team Orange was QA. They kept switching around keeping both their Dev and QA skills updated but at the same time the context switch is easier to do at 6 weeks intervals than continuoisly during the day.

    --
    **Life is too short to be serious**
  14. Depends on the context by Cerlyn · · Score: 2

    "Test is dead" was the keynote presentation of a Google Test Automation Conference six years ago.

    My personal view is that if you are doing web development where your company rapidly & repeatedly deploys releases on behalf of customers, you might be able to get away with not having much of a QA department so long as the impact is low. If a problem arises it can be quickly fixed without much of a financial loss.

    But if you are in a regulated industry, failure of your software will result in significant lost revenue while its being fixed, or your software is deployed only every few weeks or months by customers who do their own acceptance and integration testing, then you probably need to do more QA work & dedicated QA work upfront. In such scenarios the software producer and their customers may encounter significant losses and/or inconvenience because something faulty snuck through.

  15. Yes/No. by Narcocide · · Score: 2

    Developers should be required to QA all their own code, but there still needs to be a second QA pass done by someone who did not write it. Basic human psychology causes natural blind spots in one's own logical thought processes. It's impossible to be completely unbiased about stuff you wrote yourself. So, while a developer is the best person to QA their own work, they're also usually inherently incapable of completing the task with reasonable accuracy in a reasonable time frame. Therefore, 2 people at minimum should evaluate every bit of code, but yes, one of them should be the primary maintainer of the code and the other one should be someone from a different team.

  16. Developers testing? by Anonymous Coward · · Score: 2, Insightful

    This has to be the absolute worst idea I've heard in a long time. Decent developers generally don't make good testers. Developers don't test their own code well -- I suspect because they know the workflow and don't try enough out of the box things. I'm not suggesting that the developers should be absolved from testing, they should write unit tests, end to end tests and everything in the middle. I am suggesting that a second tier of testers is a huge improvement.

    A corollary, if you ever have a good or great test person on staff, keep them. Sure, they'll piss off some of the developers but they are worth their weight in saffron.

  17. Re:Sure! by HiThere · · Score: 3, Insightful

    Not for their own code. Developers are lousy at testing their own code, because they handle the errors that they think of, and won't make the ones they don't.

    I suspect that developers are even poor choices for testing other developers code, because they're less likely to make ID10T errors.

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
  18. Oh sweet holy hell NO. by SvnLyrBrto · · Score: 3, Informative

    I've been a software engineer, a QA engineer, traditional IT SysAdmin, and have now found my niche in SysOps/DevOps/SRE/whatever-we're-calling-it-this-week. And good lords of Kobol, QA is absolutely necessary. The usual reasons definitely apply. A separate pair of eyes will find things you've been blind to because you're too close to your own work. Building things and breaking things are different skillsets and different mindsets. There will be edge cases that even the spec didn't anticipate. Blah blah blah.

    But try being on the operations front line some time, and you'll REALLY appreciate a good QA team. Right now, I'm responsible for multiple products from teams that, due to acquisitions and re-orgs and different companies doing things differently, some have dedicated QA and some let the developers test their own code. I see the errors and failures before anyone else. And the QA'd stuff invariably causes me less grief than the "we trust the developers" stuff. Hell, if I had my way, we'd have QA vet ops changes and updates too; because I'm under no illusions of infallibility myself.

    --
    Imagine all the people...
  19. Developers are too deep into the code by James+McGuigan · · Score: 3, Insightful

    As a developer solo-managing a legacy codebase, it is still important to have various rounds of external QA.

    The first issue is that the developer can be so far into the code that they can completely miss what is obvious or un-intuitive to a non-technical user. This may also involve legacy bugs or interactions with code they havn't written themselves.

    The second issue is that the the spec itself may not have been fully defined, or what you have is the developer's interpretation of the spec, and this may require clarification or feedback once someone has seen the end result.

    The third issue is that a developer will focus their attention on the things they consider most important. Sometimes the best way to achieve this is to just give a developer a list of minor bugs/features, which is a great way of focusing attention by clarifying the spec and letting a developer speed though a bunch of quick fixes which have a predefined spec (defining the spec is half the mental effort).

    So in general a developer should be capable of doing a first round of internal QA on their own code, but a second pair of eyes is still occasionally needed, as the developer has a very peculiar set of perception filters.

  20. QA can be a political friend by EmperorOfCanada · · Score: 3, Informative

    Developers should absolutely have unit and integration tests and only deliver a product to QA that they think will be immediately passed onto the customer. But within many organizations this just doesn't make people happy, and unhappy people make bad decisions. QA can give a seal of approval that gets better buy in within the company. This should not be the way it is but that's life.

    Lastly, a good QA will look to see that what was produced is what was actually asked for and promised. This is no small thing, because many programming teams can lose sight of what the contract actually says. "But it's better" is something that should be negotiated, not just delivered.

    But that said, QA can be a major road block. It is not uncommon that you throw things over the fence only to find that QA has hyper focused on something that isn't a requirement. For instance you might have some system that does echo location to find the distance to a wall. Your requirements call for one successful echo location every 10 seconds. You fire out 10 per second and around 50% fail. The reality is that you are getting roughly 5 ranges per second and never will you miss your target of one every 10 seconds. Yet QA gets all wound up about the 50% failure rate and reports that the product has a 50% failure rate. This is where you begin convincing the accountants that the QA department needs a head count reduction.

  21. Re:Developers tend to work in teams by goose-incarnated · · Score: 2

    In my experience, QA may get paid less, but they work harder than the developers.

    In my experience, Bricklayers may get paid less, but they work harder than the QA.

    IOW, you don't have a point. We don't pay people more for working harder. We pay them for the value they bring.

    The more high-quality devs you have, the lower the value of the QA as there's fewer issues to be found and reported.

    A place with shitty copy-paste devs needs better QA to stop unsuitable product from leaving the company, so the QA there is more valuable.

    --
    I'm a minority race. Save your vitriol for white people.
  22. Oh...we almost forgot by hyades1 · · Score: 2

    It's cheaper. Did we mention that? It's 'way cheaper.

    --
    I've calculated my velocity with such exquisite precision that I have no idea where I am.
  23. independent review by Speare · · Score: 3, Informative

    In aerospace, independent verification and validation is a critical part of the regulatory process. Every change has a reason, every reason is documented, and every change is reviewed by someone else.

    --
    [ .sig file not found ]
  24. Good thing this is from a fashion retailer ... by Ihlosi · · Score: 2

    ... and not from a company that makes stuff that kills people when it malfunctions. Airplanes, autonomous vehicles, medical devices, etc.

  25. For the trivial, maybe by luis_a_espinal · · Score: 3, Informative

    Should Developers Do All Their Own QA?

    If you can do that without deleterious consequences, then your work is trivial and/or not overtly complex.

    Otherwise, such a thing is insane, specially if you work in developing actual products (shrink-wrapped software or software bundled in hardware), or complex services. ) And let us not even mention software related to avionics, weapons or medical devices (where QA is done by a separate organization to remove bias.)

    The primary concern is always bias, bias that come from first-hand knowledge of a thing (or assumptions about a thing.)

    It is a lot easier and effective to have a 3rd party dedicated to methodical black box and end-to-end integration/UA testing than to get a developer to test his own creation to the breaking point.

    There is a reason why organization hire external teams to perform penetration testing of their infrastructure. He who knows nothing of the internals a-priori is the perfect person to black-box test the shit out of something with nothing but specs.

  26. Most assumptions come back to bite you by ggendel · · Score: 2

    This is really a lame-brain position. As a long time developer I have two mottos:
    * If it isn't tested, it doesn't work.
    * A developer make assumptions all the time.

    I can guarantee that, if I was responsible for QA on my own code, things would be broken in subtle ways.

    Many years ago I did QA consulting for AT&T. We set up a system where the human factors engineering group would document an application in a specification. One copy went to the developers and one copy went to the QA personnel. The QA staff designed a test plan from this spec and then implemented it against the product sent from the developers. I can't tell you how many things the developers missed because of assumptions they made that were caught by the test plans.

  27. Peer review is great. It's not QA. Users are stupi by raymorris · · Score: 2

    Peer review is great. I introduced it at my company. It's not QA.

    Users do stupid shit, shit no programmer in their right mind would ever think of doing. As an extremely simplistic example, at my job we have a script that calls nap with various arguments, including a list of IPs provided by user. The programmer tested it with some IPs. The peer could test it with some other IPs. The programmers made sure it works. Users will pass it 0.0.0.0/0, and fa70:638:363:7363::76. QA does the same, because QA is trying to break it. Programmers ensure it works, QA figures out how it can be broken (and are therefore an important part of security).

    Aside from that difference, excellent programmers (10% of programmers) will PRODUCE quality. QA will ASSURE quality. With programmers testing, you can hope the quality is good. With QA testing, you can know the quality is good.

  28. Re:Developers tend to work in teams by Antique+Geekmeister · · Score: 2

    When does Bob start writing horrible code, knowing that Margareth will find the bugs and clean it up for him? And when does Bob get the promotion because his code shipped faster, and Margareth's slower developed code fails to be presented early? So Bob gets to go to luch with the boss, go tot the company picnics, and gets invited to design review meetings because "they ship faster"?

    I've seen this happen. It's been done to me, as "Margareth" in the story. I eventually had to talk with my manager, from quite a long time ago, and warn that manager what was going to happen to Bob's workflow and code quality when I went on vacation.