Slashdot Mirror


Ask Slashdot: How Would You Stop The Deployment Of Unapproved Code Changes?

Over a million lines of code -- in existence for over 10 years -- gets updates in six-week "sprints" using source control and bug-tracking systems. But now an anonymous reader writes: In theory users report bugs, the developers "fix" the bugs, the users test and accept the fix, and finally the "fix" gets released to production as part of a larger change-set. In practice, the bug is reported, the developers implement "a fix", no one else tests it (except for the developer(s) ), and the "fix" gets released with the larger code change set, to production.

We (the developers) don't want to release "fixes" that users haven't accepted, but the code changes often include changes at all levels of the stack (database, DOAs, Business Rules, Webservices and multiple front-ends). Multiple code changes could be occurring in the same areas of code by different developers at the same time, making merges of branches very complex and error prone. Many fingers are in the same pie. Our team size, structure and locations prevent having a single gatekeeper for code check-ins... What tools and procedures do you use to prevent un-approved fixes from being deployed to production as part of the larger code change sets?

Fixes are included in a test build for users to test and accept -- but what if they never do? Leave your best answers in the comments. How woud you stop un-approved code changes from being deployed?

324 comments

  1. permissions by Anonymous Coward · · Score: 5, Informative

    "How woud you stop un-approved code changes from being deployed?"

    Require approval from someone before changes are pushed out.

    1. Re: permissions by Anonymous Coward · · Score: 0

      so now you have two coders looking at every line of code?

    2. Re: permissions by Anonymous Coward · · Score: 2, Interesting

      Yes. In addition to 100% unit code coverage and integration tests.

    3. Re: permissions by Anonymous Coward · · Score: 4, Insightful

      That doesn't work. I manage devs on five different continents, and my boss always wins. There is no way to beat bad management.

    4. Re: permissions by ooloorie · · Score: 3, Insightful

      Yes, or even more. How many people do you think usually look at each line of text or each line of music before it gets published? And there, the stakes are usually considerably lower than for code.

    5. Re: permissions by Anonymous Coward · · Score: 0

      Four continents here, bit there is no way to stop management.

    6. Re: permissions by Anonymous Coward · · Score: 0

      Same here. You can't overcome bad management.

    7. Re: permissions by Anonymous Coward · · Score: 0, Insightful

      This. Bad management merges bad code, and there is ni overcoming that.

    8. Re: permissions by Anonymous Coward · · Score: 1

      Found the Apple programmer responsible for GotoFail. Fucking Apple, can't even afford a developer to check/verify.

      j/k, I don't believe that was unintentional or by accident at all.

    9. Re: permissions by Anonymous Coward · · Score: 1

      This. We have devs in the US and in South America, Eastern Europe, NA, and Asia. That doesn't stop my boss from merging bad codel

    10. Re: permissions by Anonymous Coward · · Score: 4, Insightful

      I had a boss that gave me some really good advice 15 years ago when I was getting chewed out by the owner (which was his boss), "get a backbone". If your boss is constantly reaching around you to your workers, they don't respect you and you should be fired for sucking or you leave because they're doing it wrong.

      If YOU are managing them, it's your job, not your boss's. Take responsibility or take off.

    11. Re: permissions by Anonymous Coward · · Score: 0

      This. They always screw things up.

    12. Re: permissions by Anonymous Coward · · Score: 1

      What shit repository are you using that it can't be undone?
      Why are the managers merging code instead of the developer?

      Fuck, is the answer always "fire management"?

    13. Re: permissions by Anonymous Coward · · Score: 0

      We require changes to be reviewed by /at least/ two people, one of whom must be "senior" level (i.e. someone who is more familiar with the code than most on the team)

    14. Re: permissions by Anonymous Coward · · Score: 0

      Sure there is... It's just illegal and requires tarps and people who know how to remove blood.

    15. Re:permissions by Z00L00K · · Score: 1

      The problem described in the article is a lot more complex and comes down to that the system has a bad architecture from the start. However it's easy to make a bad architecture with many of the programming languages and development environments that are around today.

      It's of course easy to say that you should run tests and have good test suites to execute to verify the platform but they only take you to a certain level, never to the level where the usability is validated.

      And how do you verify when the input requirements are bad or ambiguous anyway?

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    16. Re: permissions by vtcodger · · Score: 3, Interesting

      "That doesn't work"

      It doesn't not work. More eyes do tend to catch out and out bugs. But some still slip through. And stuff that sounds good but busts user's workflow still gets through. And developers hate the delay. And more review costs more. And more testing costs even more than more review. So managers aren't a big fan of either.

      I suppose the solution is never to work with millions of lines of code. But "This sucker is way to big and too complicated" is not an easy sell.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    17. Re:permissions by thsths · · Score: 1

      Testing is the key, especially when working with a legacy project. When a bug report is accepted, you first create a test case that fails, and then you fix the bug. That gives you some kind of assurance that you fixed something. And you ship that fix, unless it fails QA at some point.

      Only the bug reporter can find out whether what you fixed also fixed their problem. You can track that - and say the issue is either confirmed fixed, or unconfirmed fixed. That is what bug trackers do. Sometimes it is easiest for the user to just check with the next release.

    18. Re: permissions by K.+S.+Kyosuke · · Score: 1

      there is no way to stop management

      Really? What about a nuclear war? Or are they just like cockroaches?

      --
      Ezekiel 23:20
    19. Re: permissions by arglebargle_xiv · · Score: 1

      so now you have two coders looking at every line of code?

      You really only need one, as long as the one is called something like Knuth or Venema.

    20. Re: permissions by Anonymous Coward · · Score: 5, Interesting

      It's an old saying that a doctor who treats himself has fool for a patient and an ass for a physician.

      Yet this is precisely the way many IT shops treat testing.

      One of the biggest problems with this approach is that the developer "knows" where the weak spots are and test them, insofar as the schedule allows any real testing at all. An independent tester is not as prone to this sort of tunnel vision, especially when the tester isn't looking at code, but instead at the way the code works. Which, is after all, what the code is ultimately for.

      A second problem is that characteristics that make a good software tester are not necessarily those of a good software developer. A good tester has to be the sort of meticulous person who can go over items line-by-line over and over again and never take shortcuts. A good developer may be a good developer precisely because he/she can leap around the concepts and tie together seemingly unrelated points.

      Then there's the third problem, which is that contrary to whatever non-Euclidean world Management lives in, you cannot dump the jobs of developer and tester on the same person and rationally expect that they can inflate to handle both requirements optimally, Real employees have limits. Not that that matters when "right-sizing" the corporate personnel assets for the next quarter's executive bonuses.

    21. Re: permissions by Anonymous Coward · · Score: 0

      That doesn't work. I manage devs on five different continents, and my boss always wins. There is no way to beat bad management.

      Lead pipe?

    22. Re: permissions by Anonymous Coward · · Score: 0

      This. Bad management merges bad code, and there is ni overcoming that.

      Oh, what sad times are these when passing ruffians can say "Ni" at will to old ladies.

    23. Re: permissions by Anonymous Coward · · Score: 0

      ... at least two. What is it otherwise, cowboy programming?

    24. Re: permissions by sg_oneill · · Score: 2

      This. We have devs in the US and in South America, Eastern Europe, NA, and Asia. That doesn't stop my boss from merging bad codel

      Its the worst. where I work our CEO is a business guy who runs a multi state multi million $ company with large numbers of employees aaaand he likes to code. In fairness, he's actually not a bad coder , coming from a C++ background, but hes rarely over all the issues that the engineers are over, and as a result theres always a background noise of randomness coming into the code from whenever the big boss is bored with money and meetings and all the things rich guys do. And its *strictly* non optional code. If god wants a new screen on the app, and he;s made it, well its in, and we have to stop everything and make the fucking thing work. And he doesnt know our build processes, how we stage things, how issues management works or anything. More likely I get a call at 1am saying "Hey the websites acting up can you have a look at whats going on, and I log into the production server and he's in there with vim boredom progrmaming on the principal production server. Its a nightmare.

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    25. Re: permissions by Entrope · · Score: 1

      Yup. Software developers and software testers -- at least if they're both good -- use different skill sets. Technically, testing things before you ship them is a cost center, but most companies do not want to spend the time and money to make practically-defect-free software before testing: It requires that someone who knows what they're doing set up a strong development process, that developers consistently think hard about what they're doing, and that a lot of risks are eliminated or realized before things go out the door; in practice, this means a fairly conservative and slow development process. So if you're not spending money on that kind of process, it is very much worth it to spend money on good testers.

      Unfortunately, companies seldom pay software testers anywhere near the value that a good tester brings to the company. In part, that's because it is very hard to tell who will be a good tester before they start, and bad testers cost more than their direct salaries, because they will send others down rabbit holes. If someone is willing to work as a tester for $X, where's the incentive to pay them $X*2 once they have shown that they are actually worth that much or more?

    26. Re: permissions by zifn4b · · Score: 1

      There is no way to beat bad management.

      Actually, bad management usually beats itself. I've seen plenty of companies go out of business because of bad management not learning from its mistakes. The problem is, when the ship sinks, everyone goes down with it including the narcissistic self-righteous douche bag that thought they were the ultimate shizzle.

      --
      We'll make great pets
    27. Re: permissions by zifn4b · · Score: 1

      I suppose the solution is never to work with millions of lines of code. But "This sucker is way to big and too complicated" is not an easy sell.

      What you're talking about is technical debt. You're talking about code that is such a complicated mess that code reviews can't effectively determine what the side effects might possibly be to simple changes. I would bet this code you are referring to has zero automated tests which might catch some of these side effects. There is no solution to that problem. It's a sinking ship held together by duct tape and rubber bands. It's a ticking time bomb.

      --
      We'll make great pets
    28. Re: permissions by Shoten · · Score: 3, Insightful

      so now you have two coders looking at every line of code?

      Yeah...because this is how it's done when it's done professionally. You have one coder...the guy who wrote the change...and then another coder...the one who tests it.

      This happens in non-code places too, like journalism. One person writes the article, and another proofreads it. (Due to the acceleration of the news cycle, this has been going away...with predictably-bad results.) Consulting? Yes, you have quality control (another person reading and checking the deliverable..every line of it) before it goes to the client. Engineering? One engineer builds the spec, and another has to approve it; this is actually mandated by law for a lot of things, in fact, where permitting is involved (like construction).

      Fundamentally, the question is "how to you keep code from being pushed to the public before it's tested." You seemed to miss that in your reply, because the very point of the question requires two people...people who must understand what their reading (and thus, are coders)...to look at the code. Also, your reply seems to imply that a code change requires reading ALL of the code, not just the new or changed code, and this is simply not true.

      --

      For your security, this post has been encrypted with ROT-13, twice.
    29. Re: permissions by gnasher719 · · Score: 4, Insightful

      This. We have devs in the US and in South America, Eastern Europe, NA, and Asia. That doesn't stop my boss from merging bad codel

      Where I work, when I do a pull request for the develop branch, I _must_ specify a reviewer and a tester, and until the reviewer has marked the code as fine, and the tester has marked it as fine, and a merge can be done with no conflicts, nobody can merge the code, including any boss. You can quite easily set this up in JIRA, for example.

    30. Re: permissions by Brockmire · · Score: 1

      "Going nuclear" is supposed to be a figure of speech.

    31. Re: permissions by FictionPimp · · Score: 1

      I would just get a new job and during the interview process, ask if the owner codes in production at 1am with vi. If they say yes, walk out.

    32. Re: permissions by Anonymous Coward · · Score: 0

      Who the fuck has money for this?

      I don't know about the "world" but in Healthcare, it's a shit show of people who shouldn't be coding to begin with (like myself) making shit up as we go....

    33. Re: permissions by Pseudonym · · Score: 1

      Knuth might prove it correct but he wouldn't test it.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    34. Re: permissions by LifesABeach · · Score: 1

      Bottom line, someone is hiding information on how code should work. Think Trump and his taxes. But why should anyone optimize themselves to oblivion? There are many fiefdoms that are shrinking today, and there are only so many job openings as greeter at some Walmart. Of course the day is coming when Nigerians will replace Indians; oh boo-hoo.

    35. Re: permissions by rickb928 · · Score: 2

      Before forced reductions in anticipation of product decommissioning, we had a dedicated tester, who had good enough regression testing suites that he caught bugs in most releases. And these were most always forehead slappers, 'darn, I forgot that again!!!' type.

      Moving to the new version, new platform, they solved the testing problem by delaying releases interminably, denying features until forced, then complaining about schedules and arbitrary timelines, as in being forced to release code 8 years late.

      Our web team is magnificent. the usual response to release bugs is 'it didn't do that in test'.

      Let's pause for a moment and re-read that. For full effect. You've gotten the joke, I know.

      And the then 'Is it doing it for (fill in this blank with any criteria)?'.

      Followed closely by retracting the code, re-releasing it, and the same bug occurs. More recriminations and demands for objective reports from users. Yes, as their interface to users, I am regularly questioned as to the veracity of the bug reports.

      This is the Agile process in action. Sort of.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    36. Re: permissions by rickb928 · · Score: 1

      Every activity you pay for is a cost center. Everything that brings in revenue is a profit center.

      A business is profitable when the profit centers deliver more value than the cost centers, and are able to do so sufficiently to meet the expectations of investors (if any) and sustain either growth or continuity.

      None of this is new, but we do see efforts (not new either) to redefine success in business.

      Feh.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    37. Re: permissions by rickb928 · · Score: 1

      And without testing, your post introduced a minor bug into the thread.

      Fortunately it is innocuous. Some code is less equal than some other.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    38. Re:permissions by Z00L00K · · Score: 1

      The description you provide is a very simplified perspective, but the reality is that sometimes the bugs you fix aren't easy to create a simple success/fail test scenario for. This is very common in systems where you have a lot of interdependencies and race conditions. Each piece of the puzzle may work fine but together they create problems one time out of a thousand - and never in a test rig, only in real world platforms.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    39. Re: permissions by Anonymous Coward · · Score: 0

      I am a developer. Most users send me preposterous bug reports. One kind is claiming a feature that never existed went away in an upgrade. Another kind is a claim of a failure that trivial code inspection says can't happen. Quite often the bug turns out to be their antivirus.

    40. Re: permissions by rickb928 · · Score: 1

      When I owned a Saab, a splendid care save for the complexity and unfortunate influence of General Motors, my dealer technician was quite proud of the fact that he was trained and proficient in all repairs and maintenance, even transmission service and body work. Many auto techs are proficient in diagnosis, most engine repair, blah blah, but not in body work nor transmission repair. I was impressed.

      Then I had a problem he couldn't figure out - it would stall at a stop, just die, restart fine. After weeks of thinking, diagnosis, blaming fuel, my Google searches found a candidate - and he actually had a used part to swap in and try. Bingo!

      It took me a day to ask two questions:

      1. How was it I found the solution?
      2. How was it he had a spare part laying around to try?

      Answer: He did know the problem, but could not recall it.

      And my coders, bless them, are so damned good they need not test. Right.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    41. Re: permissions by vtcodger · · Score: 1

      Some of that. But I made quite a good living for several decades back in the 1960s, 1970s, and 1980s integrating large systems. Did some development also, and have some sympathy for developers. Good unit tests help. and so would automated testing. But let's get real. Few actual deployed systems have meaningful specs, and even those that started with specs probably didn't maintain the specs and have bugs in the original specs -- omissions (oh, you wanted the trig functions to be fast as well as accurate? should have said so). bad ideas, good ideas poorly specified, ambiguous equations. (how can equations be ambiguous? The, hands down best spec I ever saw had an equation of the form (A+B)/(C-D). Except that A,B,C,&D were all pretty complicated. But it was written in the spec the way you might write it on a blackboard without the parentheses and got programmed as ((A+B/C) -D -- oopsie) , etc,etc,etc. It all adds up.

      IMHO, most folks grossly underestimate the number of yet to be discovered bugs lurking in virtually all software.

      Which is why they assume that with just one or two more fixes, everything will be fine.

      And is also why patching our way to security very likely will never really work.

      Working with most systems is like trying to keep a 1970 car on the road. It may run fine on good days. It may even get decent gas mileage and not be terribly polluting. My 1979 Mazda GLC got better gas mileage than any of the cars in my driveway today. And it had not only a catalytic converter, but an air pump and EGR and lord knowns what else (The actual hardware was more complex than the shop manual description--a fact I discovered only when trying to reassemble the engine after replacing the head gasket ... This hose from the mysterious gidgie near the wiper motors. Where does it go to?). The emissions numbers weren't bad at all even when compared to much newer cars. But between rust and the unavailability of repair parts, I eventually had to junk it.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    42. Re:permissions by thsths · · Score: 1

      As somebody said, this may be an architecture problem, or maybe a timing problem, not just a simple bug. And you do not change your architecture willy-nilly, in the hope that it fixes the issue. At the very least, you would want some engineering process to underpin any significant changes.

    43. Re: permissions by zifn4b · · Score: 2

      Some of that. But I made quite a good living for several decades back in the 1960s, 1970s, and 1980s integrating large systems. Did some development also, and have some sympathy for developers. Good unit tests help. and so would automated testing. But let's get real. Few actual deployed systems have meaningful specs, and even those that started with specs probably didn't maintain the specs and have bugs in the original specs -- omissions

      Hey I'm an old timer too but you apparently never caught up-to-date. Waterfall doesn't work. Never did. By the time a specification is written, it's already out of date and doesn't reflect what the customer actually wants. Other timers by the names of Ward Cunningham, Kent Beck, Martin Fowler and many others figured this out. Now we have Agile and Xtreme Programming and all of the variants.

      Here let's get real with you. First of all, the software projects of the 60's, 70's and 80's were comparatively minuscule to the projects we're trying to tackle today. Waterfall might have worked partially with much smaller less complex projects but it definitely doesn't hack it today. This is a fact. To dispute this, would be to dispute the large-scale empirical research done by the industry veterans I mentioned above. If you think they're wrong, you should be able to school them and make them look like idiots. Betcha can't.

      --
      We'll make great pets
    44. Re: permissions by Anonymous Coward · · Score: 0

      That's the first thing we jettisoned during a past round of "rightsizing", along with our entire QA department.

    45. Re: permissions by Anonymous Coward · · Score: 0

      You want to talk technical debt? Try an application written half in SQL, half in JavaScript. Practically zero compile-time checking and lots of ways to be very dependent on indexing/ordering instead of named references so at runtime the breaks are split between immediate and sleepers...

    46. Re: permissions by Immerman · · Score: 1

      Nope. Sometimes it's "set fire to management".

      --
      --- Most topics have many sides worth arguing, allow me to take one opposite you.
    47. Re:permissions by vtcodger · · Score: 1

      "Only the bug reporter can find out whether what you fixed also fixed their problem. You can track that - and say the issue is either confirmed fixed, or unconfirmed fixed."

      Basically, I agree. But I don't think it's simple at all. Any organization where developers and "stakeholders" aren't in close contact tends to function like an elaborate game of telephone/chinese whispers https://en.wikipedia.org/wiki/.... Written language without feedback is far from a perfect form of communication. For several years I was in charge of testing a very marginal system and ended up doing more of the user liaison than I (or anybody else) really wanted me to do. I used to call the author of every bug report after we released a fix. A remarkable percentage of the time the fix either didn't really work, or fixed the wrong problem or sometimes just made things worse.

      I also used to call every bug report author whose complaint was rejected by developers because the system was "working as designed". (Something of a misstatement. Very little of the original design actually got implemented). That was not a whole lot of fun, but it did allow us to get a lot of what the users wanted into the (overly cumbersome) design change process.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    48. Re: permissions by Anonymous Coward · · Score: 0

      I'm trying to figure out the lesson here. Your boss lets his boss yell at you and tells you to grow a backbone? Are you saying you should have told the head boss to take it up with your boss, or that your boss failed in his duty?

    49. Re: permissions by Comrade+Ogilvy · · Score: 1

      That is pretty insightful and succinct, AC.

      I think there is a fourth point worth mentioning: testers are a practical means of making your developers more efficient and more effective. They allow the developers to go fast, while giving them feedback about when they were going too fast. When this feedback is kept low key, good developers can more easily learn better habits.

      Somehow heated meetings called by an angry VP about something a developer did seven months ago that blew up in at a customer site just do not hone good habits the way twenty instances of "Psst. That stuff you did yesterday looks like it might have a problem. Let me show you what I am confused about."

    50. Re: permissions by Entrope · · Score: 1

      The original post sounds like a company that makes software for commercial use, in which case the software development would be a profit center.

    51. Re: permissions by Anonymous Coward · · Score: 0

      It's an old saying that a doctor who treats himself has fool for a patient and an ass for a physician.

      Yet this is precisely the way many IT shops treat testing.

      One of the biggest problems with this approach is that the developer "knows" where the weak spots are and test them, insofar as the schedule allows any real testing at all. An independent tester is not as prone to this sort of tunnel vision, especially when the tester isn't looking at code, but instead at the way the code works. Which, is after all, what the code is ultimately for.

      A second problem is that characteristics that make a good software tester are not necessarily those of a good software developer. A good tester has to be the sort of meticulous person who can go over items line-by-line over and over again and never take shortcuts. A good developer may be a good developer precisely because he/she can leap around the concepts and tie together seemingly unrelated points.

      Then there's the third problem, which is that contrary to whatever non-Euclidean world Management lives in, you cannot dump the jobs of developer and tester on the same person and rationally expect that they can inflate to handle both requirements optimally, Real employees have limits. Not that that matters when "right-sizing" the corporate personnel assets for the next quarter's executive bonuses.

      You almost stated it, but there's an even more fundamental problem with having the developer test the code - it's not just a blind spot or tunnel vision. It's the developer's entire foundation used to write the code: the developer who wrote the code will test it based on the same assumptions and the same requirement interpretation used to write it.

      If the developer is wrong in his assumptions, or misinterpreted the any requirement, whatever tests that developer uses will be based on the same erroneous foundation. It doesn't matter how good the code is or how good the tests are if requirements are misinterpreted or the code is based on incorrect assumptions. I think that goes well beyond being a simple blind spot.

      An independent tester also provides an independent basis from which to test.

    52. Re: permissions by arth1 · · Score: 1

      Who the fuck has money for this?

      Companies that don't have money for handling all the field returns and customer complaints, and the repercussions of them.

    53. Re: permissions by Anonymous Coward · · Score: 0

      "We refuse to fix this problem" is not the same as "This problem cannot be fixed"

    54. Re: permissions by budgenator · · Score: 1

      Well, mostly like cockroaches then.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    55. Re:permissions by DickBreath · · Score: 1

      Not approval. Just verification. If your change was not approved, then activate the Russian gun using robot. The unapproved changes then tend toward zero according to Darwin's laws.

      --

      I'll see your senator, and I'll raise you two judges.
    56. Re: permissions by Anonymous Coward · · Score: 0

      Cover what you can where applicable, but I've been reading a lot of the "must read programming books of all time", and even the most zealous of TDD advocates say that 100% coverage is a code smell. It usually means someone is shoehorning the coverage, which is worse than not covering. Shoehorning coverage almost always results in no coverage at some point in the future or a lack of understanding of what the coverage actually covers.

    57. Re: permissions by Anonymous Coward · · Score: 0

      this means a fairly conservative and slow development process

      Only in simplistic theory. In practice, development goes faster. No one can reason around a ball of mud. Of course you always have the option to throw out the ball of mud and start of scratch, but then you get a "second system effect" or the typical "rewrite" issues where you have two side-by-side systems where both must be supported.

    58. Re: permissions by Anonymous Coward · · Score: 0

      If you think they're wrong, you should be able to school them and make them look like idiots. Betcha can't.

      Of course you can't, when any criticism is deflected with "well, you're not doing Agile correctly".

      The problem isn't methodology. It's people. Fickle customers that refuse to take responsibility for their snipe hunts and lazy workers that refuse to think things through and just do what will get them through today's workload. Schools are shitting out tons of w3fools that can pass a technical interview like an actor auditioning off a script but can't adapt to the slightest unexpected event within frameworks so complicated they need frameworks on top of them to be of any use to anyone.

    59. Re: permissions by Anonymous Coward · · Score: 1

      your reply seems to imply that a code change requires reading ALL of the code, not just the new or changed code, and this is simply not true.

      It's not true, but it's also not false either. You need to understand all the code the changes effect to understand if the code will break anything or not. In more flexible languages and in poorly designed code, sometimes that could mean having to understand everything. Rarely is that scope limited to only the changed lines. We need better tools which can measure the impact of a change and say "hey, go verify all this stuff too".

      As a bad example: Someone is refactoring a function and swaps two int parameters. They get interrupted and forget to go back and update all references to the function. Everything will compile and looking through the change diff the function will look perfect. However everything calling that function is now incorrect and depending on what those parameters are it could be years before those bugs are detected and/or they could cause major data corruption in production. Unit testing may or may not uncover the bug, again, depending on what those fields represent. Like using the wrong type of nail to hang up cabinets, in a year everything could come crashing down, and you wouldn't figure that out by only looking at the design or the installed cabinets.

    60. Re: permissions by Aighearach · · Score: 1

      Waterfall always worked, it just was never the straw-man that you're taking aim at. You even drag in having an out-of-date spec, without considering that that hurts everybody the same. An agile project with an out-of-date spec doesn't have any advantage there.

      You get it exactly backwards when you suggest that waterfall works for small projects with low complexity. Like, 101-level idiocy type of backwards. It is easily explained by your idea that your opinions are actually facts, though. It means you can't learn, not matter the size or obviousness of the mistake.

    61. Re: permissions by Karlt1 · · Score: 1

      I had a boss that gave me some really good advice 15 years ago when I was getting chewed out by the owner (which was his boss), "get a backbone". If your boss is constantly reaching around you to your workers, they don't respect you and you should be fired for sucking or you leave because they're doing it wrong.

      If YOU are managing them, it's your job, not your boss's. Take responsibility or take off.

      I couldn't agree more. If you hire me to be the dev lead/team lead, etc. -- "the one ringable neck", don't go around me and trust my judgement. My manager's job is to tell me and the team the "what", the "when", and the priorities. It's my job to determine the "how" with my team.

    62. Re: permissions by Anonymous Coward · · Score: 0

      so now you have two coders looking at every line of code?

      Yeah...because this is how it's done when it's done professionally. You have one coder...the guy who wrote the change...and then another coder...the one who tests it.

      Right... and now we have TWO coder categories

      Guess which one gets recognition and bonuses?

    63. Re: permissions by Karlt1 · · Score: 1

      Found the Apple programmer responsible for GotoFail. Fucking Apple, can't even afford a developer to check/verify.

      j/k, I don't believe that was unintentional or by accident at all.

      It looks like it could have been a bad automatic merge.

      This was the bad code....

        if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
              goto fail;
              goto fail;

      A bad auto merge could have easily have caused this.

    64. Re: permissions by Thelasko · · Score: 1

      And more review costs more. And more testing costs even more than more review. So managers aren't a big fan of either.

      Customers typically aren't willing to pay more for a product based on its quality review process. They will assess the quality of the product themselves, or by word of mouth. Managers don't care about quality review because the customers don't either.

      Keep in mind, review and testing don't make the product good, the developers do. Review and testing are just there to keep the developer in check. If developers were infallible, testing would be a complete waste of resources.

      Unfortunately, developers are human, and all humans make mistakes. So, how much review and testing is appropriate? Here's a few clues:
      1. Does a bug put someone's life in jeopardy?
      2. How much financial risk can a bug expose the customer or company to?
      3. How many bugs has the development team made in the past?

      When you are testing medical devices or financial software, test the hell out of it. If you have excellent developers making a game, you might want to consider skipping review and test.

      --
      One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
    65. Re:permissions by balbeir · · Score: 1
      Ah, I recall a system like that at IBM. I think it was called CMVC

      It required a 7 step checking process. Totally maddening.

      It was a very efficient productivity annihilator.

    66. Re: permissions by rmandevi · · Score: 1

      There is one profit center in a company. Not engineering, not marketing, not even sales.

      It's called Accounts Receivable.

      All those other departments are cost centers whose only goal in life is to convince customers to pay the bills that Accounts Receivable sends out. If a department can't get people to pay more money to Accounts Receivable, it isn't only a cost center, it is a loss center and should be gutted. However, one must note that any department (such as legal or compliance) which is even the "cost of doing business" is helping Accounts Receivable to get paid on any bills at all.

      So, enough of this cost and profit center nonsense.

      --
      People who live in glass houses shouldn't walk and text.
    67. Re: permissions by Anonymous Coward · · Score: 0

      individual departments may pride themselves on being a cost center or profit center. it's all bollocks.

      individuals can cost more than their profit, if they work in a profit center.

      cost centers can eliminate more waste than they cost.

      accountant-run firms correlate well to "too big and slowly dying".

    68. Re: permissions by camperdave · · Score: 1

      there is no way to stop management

      Really? What about a nuclear war? Or are they just like cockroaches?

      In a nuclear war, management are the folks in the bunkers.

      --
      When our name is on the back of your car, we're behind you all the way!
    69. Re: permissions by camperdave · · Score: 1

      That must be one powerful bug if you need to use fire management to deal with it. I thought the days of Halt and Catch Fire were long behind us.

      --
      When our name is on the back of your car, we're behind you all the way!
    70. Re: permissions by MrPeach · · Score: 1

      Lock the fucker out of the system. No one should have permission to do what he is doing.

    71. Re: permissions by Anonymous Coward · · Score: 0

      What's to stop your boss from nominating himself as reviewer and tester? Oh sure you can put in safeguards to prevent that, but those safeguards need the support of senior management. If management is sufficiently fucked up, then so are you.

    72. Re:permissions by Anonymous Coward · · Score: 0

      No, that doesn't work.

      I personallly favor this instruction from the movie "Apocalypse Now"..... "Terminate. Terminate with extreme prejudice."

    73. Re: permissions by zifn4b · · Score: 1

      The problem isn't methodology. It's people.

      Obligatory Dilbert. However, that still doesn't make Waterfall viable. ;)

      --
      We'll make great pets
    74. Re: permissions by zifn4b · · Score: 1

      Waterfall always worked

      This is the best part of the Dunning Kruger effect. You don't even realize how many people probably laughed at your post. In fact you probably won't get why this comment is even more funny and will still call me stupid. :D It's ok, you're superior to everyone else. Just keep telling yourself that. We peons can only dream of aspiring to your level of intellect, oh wise one.

      --
      We'll make great pets
    75. Re: permissions by Anonymous Coward · · Score: 0

      Waterfall is desirable for infrastructure where requirements should not change. Agile infrastructure is an oxymoron. Changes to infrastructure just means whomever architected it did not understand the problem. Dunning–Kruger effect is a symptom of people with low abstract reasoning. Guess what the number one skill for a programmer is. Abstract reasoning.

      There are no known ways to enhance abstract reasoning. It requires meta-cognition, which is heavily linked to abstract reasoning, and introspection, allowing one to self-teach in their own personal way. In other words, people with strong abstract reasoning can further enhance their abstract reasoning, but people with weak abstract reasoning are basically stuck with what they have. Welcome to the power-curve with a very very long tail.

      Interesting note. Abstract reasoning peaks in teenage years, then starts to slowly decline before falling off a cliff around 30. The theory for this is as a person gains more experience, they use their memory instead of reasoning, causing their abstract reasoning to atrophy. For people with strong abstract reasoning, they peak beyond 30 and continue to grow. This create a huge gap in abilities and why experience is a bull sh*t metric.

    76. Re: permissions by david_thornley · · Score: 1

      Some of our input is through the GUI, which is hard to automate. Some of the output is visual on the screen, or the output of gcode that goes to CNC mills. I've been looking for ways to automate the tests off and on for years, and haven't found anything that would allow 100% coverage.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    77. Re: permissions by david_thornley · · Score: 1

      When I was writing my own tests for the testers, I was upset about two things.

      First, both the code and the tests were built according to one person's understanding of the requirements. I have been hit by now and then by "The user was doing WHAT?" - and it can be a perfectly reasonable thing for the user to do, just not one I anticipated.

      Second, that was my code. Those were my tests. I'd write the code first and then the test, and, amazing as it was, would you believe the tests showed that the code was fine? It wasn't a matter of knowing the weak spots, it was a matter of knowing the code.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    78. Re:permissions by david_thornley · · Score: 1

      However it's easy to make a bad architecture with many of the programming languages and development environments that are around today.

      Speaking as an old fart who's been around for a while, you put an extraneous "m" in "any", unfortunately not caught by your spelling checker because it's still grammatical.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    79. Re: permissions by Aighearach · · Score: 2

      Well, that's the thing about Dunning-Kruger; if you thought it through a little farther, you'd realize that a bunch of people glancing at my post and laughing are almost all at that early peak. ;) You seem rather sure of yourself too, and yet, you didn't even get far enough in to touch on the meat of my comment.

      Know going in that I'm an old-school software developer and that my comment was a universal truth. If you didn't understand it, or were too busy laughing at the nearest meme to try, that's fine; but it wasn't wrong. It can't be wrong, actually, because it was an observation of historical fact.

      Almost everything is waterfall, and waterfall was never the extreme absolutist caricature that you and other idiots laugh at. Yes, you're right, I am superior to you when it comes to reading comprehension of the term "waterfall development model." What people laugh at never even existed, so how much chance do they have to be correct, or have some insight? The author of the book people point at to support their weird claim that waterfall was absolutist even clarified later, in response to those criticisms, that it is not and never was a static system with no changes allowed, you simply try not to make late changes. There was never anything at the end that said, "and when problems come up, you don't even respond." That is just idiocy, and the target audience of the book were engineers for whom that is actually rather obvious.

      The vast majority of software was always made using waterfall process, and that is still true today.

    80. Re: permissions by Anonymous Coward · · Score: 0

      Agile is just lots of mini-waterfalls.

    81. Re:permissions by Anonymous Coward · · Score: 0

      Bugs caused by architectural failures are called "features". Working as designed. Bugs are only implementation issues. Architectures should be composed of small orthogonal components with well defined behaviors that are logically solid. It's not that difficult, but people make it difficult.

    82. Re: permissions by Anonymous Coward · · Score: 0

      Both because they both do both coding and reviewing

    83. Re: permissions by zifn4b · · Score: 1

      Waterfall is desirable for infrastructure where requirements should not change. Agile infrastructure is an oxymoron.

      You'll need something to back up your claim otherwise it's just an opinion.

      Dunning–Kruger effect is a symptom of people with low abstract reasoning. Guess what the number one skill for a programmer is. Abstract reasoning.

      This is partially correct. Abstract reasoning as I'm sure you're aware typically denotes highly theoretical reasoning typically using mental simulation. I think it would be more correct to say that the skill that the people that suffer from the Dunning Kruger effect lack is one whereby they formulate a theory about what would work in practice, then they test it and evaluate the results and refine the theory and their understanding and competence to continually improve the results. That's not purely abstract reasoning. In fact, the PDCA methodology is really just common sense in any discipline. It's just more formalized because people who have specialization in STEM fields for example well tend to lack common sense. Trust me, I know from personal experience and I bet you do too whether you care to admit it or not.

      There are no known ways to enhance abstract reasoning.

      I know this not to be true. You should get a more up-to-date education in cognitive science. There is a lot of new research in this area that is yielding new discoveries all the time. It's hard to keep up with.

      It requires meta-cognition, which is heavily linked to abstract reasoning, and introspection, allowing one to self-teach in their own personal way. In other words, people with strong abstract reasoning can further enhance their abstract reasoning, but people with weak abstract reasoning are basically stuck with what they have. Welcome to the power-curve with a very very long tail.

      It does requires meta-cognition, no doubt. But abstract reasoning alone as I mentioned above doesn't get you all the way there. Theory and practice are two different things that complement each other. If you only have strength in one you're missing out on a lot of potential

      Interesting note. Abstract reasoning peaks in teenage years, then starts to slowly decline before falling off a cliff around 30. The theory for this is as a person gains more experience, they use their memory instead of reasoning, causing their abstract reasoning to atrophy. For people with strong abstract reasoning, they peak beyond 30 and continue to grow. This create a huge gap in abilities and why experience is a bull sh*t metric.

      There is empirical evidence to suggest otherwise. It really depends on whether you continue to train your mind beyond formal education in the same way that you did when you were in a formal education system. It doesn't really have a strong correlation with abstract reasoning. It's really more of a use it or lose it type of thing.

      --
      We'll make great pets
    84. Re: permissions by zifn4b · · Score: 1

      that my comment was a universal truth.

      Wow, I bow down to you oh wise and mystical prophet who is so elevated in enlightenment that us below you can't even comprehend it. Why are you even talking to me then? I'm so stupid I can't comprehend what you're saying because it's just so far above everyone else's intellectual capability. You just like talking to yourself? Because if you believe that, that's precisely what you're doing. The joke's on you bud.

      --
      We'll make great pets
    85. Re: permissions by Aighearach · · Score: 1

      When a person uses the phrase, "universal truth," they're not claiming anything about being enlightened.

      That was a truly legendary vocabulary fail on your part. Pathetic.

      I mean, seriously. English isn't your first language, so just look up what it means. ;) And if English is actually your first language, you don't quite have a first language, only a first half-language, because you're not even fluent.

      Just look it up. I dare you.

    86. Re:permissions by eric_harris_76 · · Score: 1

      Separation of authority. Good management.

      Stuff like that.

      I've worked for a couple of companies that grew pretty fast for many years in a row, and part of the transition from mom-and-pop shop where company meetings can take place in a conference room to one that makes meeelyons of dollars is to leave "cowboy mode" behind.

      Yeah, that adds delays, and is occasionally frustrating. But it also means not ending up like Barings Bank.

      --
      There's no time like the present. Well, the past used to be.
  2. Qa by Anonymous Coward · · Score: 0

    Welcome to the concept of a qa department

  3. um... by Anonymous Coward · · Score: 0

    make the devs pinky swear?

  4. Easy by Anonymous Coward · · Score: 0

    Fire anybody who deploys unapproved code.

    1. Re: Easy by Anonymous Coward · · Score: 0

      how will you know when they deploy unapproved code?

    2. Re:Easy by Kohath · · Score: 1

      Even easier: automatically approve all code changes.

    3. Re:Easy by MrMr · · Score: 1

      The first correct answer to the question I've seen. Make sure you can revert and fix and assume shit will happen despite all codes of conduct, extreme vetting and review processes you throw at it.

    4. Re:Easy by MightyYar · · Score: 1

      In a marketing-driven organization, the software group does not necessarily have this power. If marketing agrees to accept the risks, you sometimes have no choice.

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  5. Users don't report bugs by Teancum · · Score: 3, Interesting

    That right there is a part of the problem. Software testers report bugs. Hints about potential bugs can come from end users, but end users are not software testers.

    There is no substitute to a really good (professional.... and paid) software tester that and reliably reproduce bugs that need to be removed. If anything, they are far more valuable than even code monkeys writing thousands of lines of code per month (something also largely irrelevant for quality software). If anything, I would pay the software testing team before the coders if you need to use some volunteer labor like in an open source project.

    End users can offer hints to a good software testing team as to what might be bugs, and end user reports should definitely be taken seriously since it is something that slipped past those testers as well. When the software testers are fired and/or it is presumed that unpaid volunteers are going to be doing that quality assurance process, especially for a commercial software product, you get what you pay for.

    1. Re:Users don't report bugs by Anonymous Coward · · Score: 1

      A million times this.

      I work in a place that doesn't have testers and the amount of time I waste hunting down bugs I don't even know how to replicate or interpreting user feedback, building tests for processes then testing them myself some more, or worse, releasing untested code, is absolutely fucking insane. I feel like tier 1-3 support all rolled into one some days. Which is weird because I'm also relied upon to actually write code.

      But alas, top execs see hiring QA as an expense, but continue to expand in hiring more programmers to develop more code faster.

    2. Re: Users don't report bugs by Anonymous Coward · · Score: 0

      If you don't have a QA team, your customer service department probably also sucks. Embrace it. I require bug reports and forum accounts to include the license key.

      Get a bug report that isn't obviously my fault? Ban that license key and user. I haven't had any repeat complaints.

    3. Re: Users don't report bugs by Anonymous Coward · · Score: 0

      Does your business card say "Asshole"?

      Why would they complain to you? You've already demonstrated you have shit documentation, shit Customer Service and don't care, so they take their business elsewhere, along with a bad experience and story to anyone that'll listen.

      Unless you're the owner, you're fucking poison to the company. Actually, even if you're the owner, you're still poison.

      Half the time a good bug report is just asking for the required information. You make the form, so you get the answers you need.

    4. Re: Users don't report bugs by Pikoro · · Score: 2

      Are you the owner of Ham Radio Deluxe?

      --
      "Freedom in the USA is not the ability to do what you want. It is the ability to stop others from doing what THEY want"
    5. Re:Users don't report bugs by Anonymous Coward · · Score: 0

      Amen.

      I work for a company that has QA from all ends of the pay scale. It's easy to tell the bugs that are opened by "professional" vs. "outsourced" testers. Your professional testers' bugs will read something like this:

              By doing X, Y, then Z, I am routinely hitting ABC.

      Your 'less professional' group will typically have bugs that simply read:

              Test 123 failed.

      Um...OK, what does that test do? Does it fail consistently, or just once?

      The sad thing is that most places I've worked treat QA as (at best) a mere checkbox to the release date if not a nuisance here to simply hurt the egos of developers. If budgets get cut, the first thing to be cut is often QA. After all, we don't "produce" anything.

      That's not to say that all places/managers bemoan proper QA; I've worked for 1 or 2 that understand the need. But it seems that's the exception more than the rule.

    6. Re:Users don't report bugs by zifn4b · · Score: 1

      There is no substitute to a really good (professional.... and paid) software tester that and reliably reproduce bugs that need to be removed. If anything, they are far more valuable than even code monkeys writing thousands of lines of code per month (something also largely irrelevant for quality software). If anything, I would pay the software testing team before the coders if you need to use some volunteer labor like in an open source project.

      This works a lot but it's not a panacea. I've seen several large software efforts where manual testing and test plans start becoming ineffective because the complexity gets to a level where no amount of highly talented testers can deal with it. The execution of manual test plans starts taking inordinate amounts of time. The cataloging of test plans and keeping them up-to-date becomes counter-productive. The only way to move beyond this point is to develop an automated testing strategy. I'm not referring to unit tests specifically. Look up the four Agile Testing Quadrants. Read the book How Google Tests Software and you'll understand why they created an entirely new position called "Software Engineer in Test". There are products like Zephyr and Test Rail to name a few that can help glue it all together.

      --
      We'll make great pets
    7. Re:Users don't report bugs by Waccoon · · Score: 1

      How can users report bugs? There's a mantra that every developer should hide problems, either to save face or because errors are super scary looking.

      I almost never get error codes of any sort these days. More and more log files are in binary format and need special tools to read. When there's a bug in the code of a web page, often all I get is a blank screen. Even the classic BSOD now has an emoticon as its primary message.

    8. Re:Users don't report bugs by Matheus · · Score: 1

      The meat of this answer is good... with more detail that answers some of the rebukes:

      The corollary I would make is to my other life in the Sound Engineering business. My golden rule is I never tell an engineer what's wrong with their mix during a show (and only after if they specifically ask for my feedback) and similarly wish others would follow the same rule. This is because: 1) If we can't hear it we're probably not going to do a good job of fixing it. and 2) Chances are we actually already know about it and are either working on fixing it OR it's something fully broken that we're currently incapable of doing anything about.

      How this ties: Terminology aside, users *should report issues. Feedback is important and a stream of information (provided you have the processes / resources to get useful information out of it) is a good thing. BUT any "work order" that goes to the devs shouldn't come from that stream of consciousness. Any "bug"/"feature request" should be verified by QA / product management (for features) before change work moves forward. For what are really "Feature Requests" this is fairly straight forward. Whomever is responsible for controlling feature creep and project scope needs to gatekeep those. For what are truly "Bugs" you similarly need to be able to triage what gets fixed and when PLUS if no one in house (QA/etc) can verify or reproduce the bug then just like my above example how are the devs expected to properly fix it. This is essentially TDD: QA creates a reproducible test that confirms the bug and the devs fix the problem until it passes the test.

      SO with a proper "intake" process your devs aren't working off of some user bug that the user needs to validate. They are working on a fully qualified bug report that QA has created and verified so that once fixed QA is fully capable of validating the fix is in (and in conjunction with a proper regression suite also that it didn't break anything else along the way).

      In a small shop where there aren't separate layers of QA / Prod Mgmt / etc the above functions may be consolidated into what may be a single "dev" BUT the process is the same. You can't fix what you can't see (reproduce) so go through that work first and the rest sorts itself out.

    9. Re:Users don't report bugs by Anonymous Coward · · Score: 0

      Reproducible bugs are boring. I get dragged in when a bug is non-reproducible. These cases crop up any time you have a complex system, especially one that scales out.

      The really fun ones disappear when you attempt to catch them in the act. There are also the ones that require a highly chaotic system, which only happens in production.

  6. WTF? by Anonymous Coward · · Score: 1

    Fire the manager. This sounds like very bad management. This is a process to follow, not a tool to blame when developers fuck up.

    I used to work as a QA manager. What I tested and accepted was generally committed and released on my OK and the senior Dev was rational and sane so we were almost always on the same page. The one time we really disagreed, he reminded me I wasn't his boss. I agreed, then repeated previous points made by our shared boss, and then he promptly gave in. Our boss was really good at making sure everyone was on the same page and priorities.

    Our team worked so well together, we started our own company after the previous company went tits up. If you have members on your team who act against you by breaking process, let them go. They are worse than dead weight.

  7. I'd add by Anonymous Coward · · Score: 0

    Don't be so cheap. The answer is well known and reliable enough just for some reason the organization can't be bothered with QA.

    The best way to fix that is to ensure it's always so broken it can't be shipped. That will eventually happen anyway.

  8. Feature Toggles by louispq · · Score: 2

    In addition to the feature branching you could also look into feature toggles. A feature toggle is a variable used in a conditional statement to guard code blocks, with the aim of either enabling or disabling the feature code in those blocks for testing or release. While this approach would not prevent unapproved code from being in a release, it would act as a gatekeeper to determine if a specific feature should be exposed to the end user. I however am not sure how you could address your concern for the database

  9. Entice users to test the new code by eric31415927 · · Score: 1

    More money, better computers, whatever it takes - get a subset of the users on board to test the new code before it's final.

    1. Re: Entice users to test the new code by Anonymous Coward · · Score: 0

      give t-shirts to your beta testers?

  10. Re:Rip the ethernet out by davester666 · · Score: 1

    Hulk smash!

    --
    Sleep your way to a whiter smile...date a dentist!
  11. Feature Flags? Better Releases? by KulSeran · · Score: 1

    If it's not strictly a bug fix, feature flags are a good way to go. Keep a standard of adding any reasonably sized addition behind a feature flag. That way it's easy to turn on/off your new button, or swap between two methods of doing something.

    If it's testable, have a code review and release process built around difference testing. Reviewers have to sign off on the externally visible differences in the code's effect. Release engineers can close bugs based on expected diffs and reject releases in the face of un-expected ones. These can be simple diffs of database files, or more complicated screenshot difference analysis. Either way, you have someone other than the dev having to click a checkbox that the change makes sense.

    1. Re: Feature Flags? Better Releases? by Zero__Kelvin · · Score: 1

      No. Just no. Features aren't discreet entities. They are tightly coupled. If you have 4 featured you can toggle that is 16 different programs you need to test. You can't prove feature A will work with and without feature B enabled. You just increased your QA efforts by 2^n where n is the number of features. Epic fail.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    2. Re: Feature Flags? Better Releases? by WalrusSlayer · · Score: 1

      Exactly this. To me this essentially sounds like trying to implement version control within the code. Reinventing the wheel and doing a poor job of it to boot.

      There may occasionally be something so trivial that a runtime switch makes sense to back out the functionality (probably in the UI layer). The original poster was talking about an extremely large, layered, and complex system. Feature flags in that context will eventually just make a bad problem worse, if not immediately

  12. isn't this pretty straightforward? by ooloorie · · Score: 4, Informative

    Fixes are included in a test build for users to test and accept -- but what if they never do? Leave your best answers in the comments. How woud you stop un-approved code changes from being deployed?

    - You set up the central repository to only accept code if it can be merged and results in all tests passing.

    - You make sure that there is defined code ownership and that people can only change code with a review and with the approval of the owners, also enforced by the source code control system.

    Long-term, there are two more things that should happen:

    - Developers need to learn how to break up large diffs into many small, individually testable diffs.

    - You need to break up your codebase so that it's not a single project with 1Mloc, but 50 small projects with 20kloc each.

    1. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      Code ownership is so 1960s ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      Code ownership is so 1960s ...

      Pretty much every project on GitHub has code ownership.

    3. Re:isn't this pretty straightforward? by Excelcia · · Score: 4, Insightful

      In the 1960's was when you wrote software by punching cards that someone else fed in and where it had to work the first time. Every time. That kind of discipline is sorely needed by the original question submitter.

      The whole haphazard development model described in the question is absurd. First of all, what kind of single bug requires rifling through back end databases, business rules, web services and multiple front ends? That's not a bug in the software, that's a bug in the pre-design definitions phase. That is not a bug. Seriously... you can't just accept all the premises in the question without thought. That kind of change only happens when someone is is calling "the customer wants this feature changed" or "we misunderstood what the customer needed" a bug, which is wrong on its face.

      Secondly, multiple people making changes of that scope simultaneously is just wrong, whatever the cause. Distributed revision control systems were made able to handle multiple simultaneous branches in order to break bottlenecks on people working on different areas of a common source file. They were designed to accommodate merges that had occasional and minor overlaps. What is described here is a completely inappropriate use of that kind of environment. So to answer the question directly, when asked what tools can help, the answer is no tools can help you. The process is wrong. You are far better off reverting to a revision control system that enforces a single checkout of a source file if this is what is going on. Better yet, correct your development strategy.

      This can't be emphasized strongly or often enough. Code ownership is a good step forward in this scenario, but the only real fix for these problems is to completely refactor the way change is managed in this project. You wouldn't be wrong to Gantt chart these changes with their subsystem impacts so they can be scheduled on a non-interference basis. Better yet, if you are having to make multiple back-end through to UI changes, you need to go through a whole scope identification phase again.

      Your change system is hopelessly broken. Fix that, then the correct use of existing tools to assist you will become readily apparent.

    4. Re:isn't this pretty straightforward? by phantomfive · · Score: 1

      FWIW you can do this pretty easily with git + gerrit.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:isn't this pretty straightforward? by thsths · · Score: 1

      While I agree that this may be the case, it is also possible that the software structure is terrible. Maybe one feature is spread out over many different parts of the project. Especially if some mixing language like PHP is involved, that is actually quite typical, because you work with Javascript code that is fix and Javascript code that generated, and possibly from different sources.

      Unfortunately, there is no easy fix for this. You need to refactor the software if you want to make it more maintainable.

    6. Re: isn't this pretty straightforward? by Zero__Kelvin · · Score: 1

      Close. git + gerrit - Agile FTW

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    7. Re:isn't this pretty straightforward? by ausekilis · · Score: 1

      Fixes are included in a test build for users to test and accept -- but what if they never do? Leave your best answers in the comments. How woud you stop un-approved code changes from being deployed?

      - You set up the central repository to only accept code if it can be merged and results in all tests passing.

      I'll expand on this in case anyone is confused. The code itself should be developed alongside unit tests. Whenever a new interface/class is developed, there should be tests built to ensure that *every method* behaves exactly as expected. Java has packages like JUnit, Python has nosetests, and there are others. Lastly, with such a widespread development team, it's imperative you develop coding standards and have management backing them up. Use things like the SOLID design principle, and make sure that code is properly commented.

      - You make sure that there is defined code ownership and that people can only change code with a review and with the approval of the owners, also enforced by the source code control system.

      Long-term, there are two more things that should happen:

      - Developers need to learn how to break up large diffs into many small, individually testable diffs.

      - You need to break up your codebase so that it's not a single project with 1Mloc, but 50 small projects with 20kloc each.

      I would add accountability too. Linus gets a lot of flack for his often profane in-your-face leadership style, but he has managed to keep the Linux kernel going strong for decades now. He calls out the developers of bad code that break the development rules (principles, structure, behaviors, etc...) and will not accept those changes. If you hold a developer accountable for their crap, they'll shape up or move on. Either way, the project is that much better for keeping people that actually care about the end result.

    8. Re:isn't this pretty straightforward? by Anonymous Coward · · Score: 0

      FAIL - simple example, you need to accept longer last names. (The new CEO is a Polish-Indian with a Hyphen)
      You have to have the whole system from front to back get changed or the names get chopped somewhere.
      How do you do that in 50 project?
      You hope the manager can marshal all the changes to one hit.
      No substitute for management that UNDERSTANDS what a project actually means.

    9. Re:isn't this pretty straightforward? by tommeke100 · · Score: 1

      This sounds all pretty standard if you have a software engineering background, but sometimes office politics takes over.
      The codebase being dispersed over different teams, each team of course thinks their stuff is most important.
      Those 50 small projects? You just created dependency hell! Sure, in theory you should strive for high cohesion and low coupling of projects, but suddenly team A needs this from team B, and they don't want to spend time asking, so they just implement that functionality at their level. Or the lower level team really wants to push through that change, suddenly the other team can adapt plenty of code (that should be low coupling).

    10. Re:isn't this pretty straightforward? by Anonymous Coward · · Score: 0

      I don't see how breaking up the code base helps.

      Any non-trivial change, for example adding a new field, is going to require a change to the DB schema, business rules, the back end, all UIs where that field would be displayed or used, reporting, and all transport layers between tiers. So instead of a single update that touches 20 parts of the project, you have 20 updates that have to be coordinated across 20 different projects. To me that sounds worse, not better.

      dom

    11. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      Yes, the problems you list occur when you break up big projects into smaller ones. They also occur when you don't break up projects. The difference is that when you break projects up, these problems actually become visible and exposed, which is why they can then be addressed by management and through tools.

    12. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      I would add accountability too. Linus gets a lot of flack for his often profane in-your-face leadership style, but he has managed to keep the Linux kernel going strong for decades now. He calls out the developers of bad code that break the development rules (principles, structure, behaviors, etc...) and will not accept those changes.

      By the way, the Linux kernel is actually a fairly big codebase, which goes against what I have been saying about breaking up projects. It works for the Linux kernel because of Linus. Most software projects don't have the luxury of a manager with the kinds of technical skills and obsessions as Linus.

      In fact, in many corporate environments, Linus would have been pushed out by people like this, people who put their non-technical agenda ahead of getting the job done.

    13. Re:isn't this pretty straightforward? by thsths · · Score: 1

      The length of a name should be either configured in a central location, or it should be (effectively) unlimited. Using fixed length fields does seem very 1960s. It is possible that a number of pieces fail on that issue.

    14. Re:isn't this pretty straightforward? by Anonymous Coward · · Score: 0

      If you're trying to make that kind of change all at once, you're doing it wrong.

      Even if you don't break the project up, you're still, at the least, going to have the DB/code split. This sort of thing is easily fixable by teaching your coders to deploy in phases.

      1) Code gets deployed that will accept the new field, and will correctly populate/use it where possible if it exists, but does not require it.
      2) The new field gets deployed.
      3) Code gets updated with anything that can only be done once the field is present.

      This is the *correct* way to deploy complex changes without disruption. It can be applied to things other than databases. Many folk don't do it because they can't be arsed to plan anything out. This is the key failing of most Agile teams -- they presume that Agile means you don't have to plan anything anymore. They're wrong, but don't try to tell *them* that.

    15. Re:isn't this pretty straightforward? by Anonymous Coward · · Score: 0

      The codebase being dispersed over different teams, each team of course thinks their stuff is most important.

      Which is why they can't be allowed to prioritize outside their own stuff. Look to linux: lots of different projects (disk drivers, network drivers, filesystems, memory management, scheduling, ...) Lots of different teams - sometimes there are clashes and "filesystems" needs a deep change in "memory management" to make their newly planned stuff possible. That is when Linus makes a decision, and the susbsystem maintainers simply have to take it or leave. This scheme is hierarchical - few decisions go up to Linus, usually some subsystem maintainer can manage the teams below himself.

      Managing very large projects clearly isn't that hard. The open-source world succeeds in this - corporations can actually pay their management which makes these things so much easier. They have the same hierarchical structure - and can hire/fire based on merit just like open source do. (But unlike open source, they have money when hiring!) Interesting that they manage to fail at all.

    16. Re:isn't this pretty straightforward? by Anonymous Coward · · Score: 0

      Free lengths invites disaster. Someday, someone adds a 600GB name to your web-based database - and from then on all sorts of performance issues will bite you. Even if the db & web server handles this without any overflow bugs. DB occationally copies some records across the cluster "for performance/caching" - woops. 600GB extra here and there, everything else pushed out of cache, and the stalls when this particular record moves across the network. The backup requirements when several generations of this record is stored . . .

      And it doesn't have to be 600GB. Anything several orders of magnitude bigger than anyone imagined. So a cap on name lengths makes sense. A few kB if you want to accomodate very long names and titles. Unlimited - no thanks. It will be abused. Buffer overflow is not the only problem with unusually sized data.

    17. Re: isn't this pretty straightforward? by Anonymous Coward · · Score: 0

      Enforce in the code management tool...can only check-in code when it has a repo reference to the supported defect report/change request. Deployment builds should only incorporate code tagged for those changes. That's the code that gets tested. Routinely re-baseline to clean out unauthorized code updates

    18. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      Pretty much any project in the real world hasn't.
      The coders who coded it (did I reall writete 'coders'?) is long gone from the team.
      The code I see and have to fix is probably written by a guy who is not working for the company since 20 years anymore ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    19. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      Lots of companies have figured out how to deal with code ownership in the presence of turnover. It's not rocket science. If you don't know how to do that, perhaps it's time to take up a job as short order cook or something.

    20. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      Most companies don't have code ownership.
      As it is an outdated idea from the 1960s.
      Of course it is not rocket since: it is utterly dumb!

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    21. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      Most companies don't have code ownership.

      Well, maybe for the fly-by-night companies you seem to consult for, or maybe you simply don't understand what "code ownership" means.

    22. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      And maybe you are just an idiot?

      Perhaps you want to read this: https://martinfowler.com/bliki...

      I never ever in the last 30 years worked for a company that hat something different than "collective code ownership" ... because as I mentioned before: code ownership is a retarded concept.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    23. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      Perhaps you want to read this: https://martinfowler.com/bliki... [martinfowler.com]

      Oh, I was way ahead of you and had thought of even sending you that link. The problem with Fowler's page is that it doesn't list the kind of weak ownership most companies actually use, namely something between strong and weak code ownership: teams build libraries and apps, anybody within a team can make changes to the code the team is responsible for, but other teams usually go through team members to make changes, get patches approved, etc. You know, pretty much the same way the entire FOSS ecosystem works, they way Github projects work, etc.

      I never ever in the last 30 years worked for a company that hat something different than "collective code ownership" ... because as I mentioned before: I don't know what I'm doing or how to build big systems, so only small fly-by-night operations staffed by ex-baristas hire me

      FTFY

    24. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      You indeed seem to be an idiot :D

      I don't know what I'm doing or how to build big systems, so only small fly-by-night operations staffed by ex-baristas hire me

      But it is more funny than insulting, so perhaps I take the idiot back and search for a term that is a synonym for "asshole" because talking like this is pretty assholy behaviour.

      If you where my coworker in a proffesional environment you had now problems ;D

      You know, pretty much the same way the entire FOSS ecosystem works, they way Github projects work, etc.
      On a GitHub project, assuming it is an "open one" every commiter could potentially destroy the master. Even intentionally.
      In professional closed source software usually you usually do not need to fear that.
      So regardless how big my projects were and what kind of software (outonomous driving e.g.) there never was a "code ownership" policy in place. And like many others (e.g. Fowler) I find idiotic and not fitting for agile software development (and also not fitting for Waterfall etc.)

      But who am I that I dare to think such stuff with in total only roughly 35 years experience ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    25. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      On a GitHub project, assuming it is an "open one" every commiter could potentially destroy the master.

      Notice the term "committer"? GitHub projects have a defined list of committers, a list that is often much smaller than the list of people who submit patches or who use the software.

      But who am I that I dare to think such stuff with in total only roughly 35 years experience ...

      I don't know. Who are you? If you have "roughly 35 years experience", you are apparently not "angel'o'sphere", since that guy seems to have graduated in 1997 and not worked much in corporate environments.

      If you where my coworker in a proffesional environment you had now problems ;D

      No doubt. In fact, I think I would have problems if you were my coworker in any environment.

    26. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      On github basically anyone can commit on a branch and make a merge request. It only depends how you set up the access rules.

      So a pretty dumb comment.

      angel'o'sphere never 'really' graduated. In Germany my degree does not count, it is a Vordiplom in Computer
      Sciense and Physics. That is a little bit below an american Master, but significantly above Bachelor. I studied till roughly 1999, perhaps 2003, would need to check my 'university bills'. I wrote a Diploma Thesis about automatic Program Transformations, basically the stuff we now have in CASE systems as model transformations. To have a real Diploma I need one or two more written exams. But I'm to lazy for that :)

      1997 I incorporated with some friends my first stock company (that is why it is the inofficial end of my studies). Working in Y2K reengineering fixing roughly 1million lines of Cobol and some 600k PL/1 code.
      Afterwards I was chief consultant (or how ever you would call that in english) for Thyssen Krupp Stahl, coaching a set of teams with in total of 300 software developers, reporting directly to the CTO. Then Fiducia, coaching about 10 teams with about 10 members each doing requirements engineering, high level design and architectures and teaching UML, for the restructuring of several majour banks and thier data centers with roughly 3000 software developers.
      Other big companies I consulted are: EnBW.com, Landesbank Badenwuertemberg, Continental, Finanzinformatik, Postbank etc.

      I started commerical programming on Appe ][ with age of 16 in 1982. So: I have 35 years of software development and system management experience, as I imediatly started working in the university on Unix and Vax systems, partly programming partly adminstration. I also programmed in the robotics institute a bit, mercano wheels robot, pretty fascinating.

      Btw. if you goggle a bit you even might find an old CV that contains the complete project history since 1982 till something around 2007. Around 2007 I removed all projects that were older than 10 years.

      So: yes, I consulted as lead architect/coach software projects with several thousand people involved, and now get of my lawn. (Without Diploma ... no one ever asked)

      And now stop making a fool out of yourself by insulting fellow /. ers.

      If you don't agree that code ownership is an outdated concept, that is fine. Insulting other software engineers is not fine.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    27. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      I started commerical programming on Appe ][ with age of 16 in 1982. I studied till roughly 1999, perhaps 2003

      You were a Master student until age 37 and you didn't even finish? Seems like your education matches your ridiculous technical views.

      Insulting other software engineers is not fine.

      Well, I'm not a software engineer. Come to think of it, I don't think you're either.

    28. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      I'm a computer scientist, german universities usually don't offer software engineering courses.
      Actually I'm not sure what the exact distinction between both terms would be (in german both terms translate to the same term)

      As you probably have guessed: I worked mostly at the university and skipped the classes :) that is why I'm a highly educated professional. Why you imply you think otherwise is beyond me.

      I oversee your insults, as you are just a young Padawan.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    29. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      I'm a computer scientist

      What makes someone a scientist is that they do research and publish. What research have you done and where is it published?

    30. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      Being a scientiest is what the course of the study is called.
      So if the univeristy calls it 'computer sciense' I'm obviously a computer scientist.

      My papers and thesises are published at http://www.kit.edu/ and http://www.fzi.de/

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    31. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      Being a scientiest is what the course of the study is called. So if the univeristy calls it 'computer sciense' I'm obviously a computer scientist.

      I studied piano for several years. That doesn't make me a pianist.

      Why would you have published a thesis if you didn't finish your degree?

      Anyway, thanks for the background; it's much clearer now where you're coming from.

    32. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      Thesises are automatically published.
      I don't remember if I mentioned it, but to finish the degree I would have needed to make 2 or 3 more writen exams/tests.
      As I just had founded a 'Software Reengineering' company, and was mainly bussy with crafting CASE tools and doing Y2K reeningeering, I focused on work.
      I probably had finished the degree if some things went different. On the other hand, a degree is not that important, at least not for me.
      After I did my diploma thesis my Prof. offered me a dissertation. So I guess it was not that bad :)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    33. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      So it took you 20 years to write one Diploma thesis, it was "published" by the university, you didn't get a degree, and you believe that makes you a scientist. Well, we'll just have to disagree on that.

    34. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      Hu?
      I basically studied and worked at the university for ten years. No idea how you come to 20.
      The thesis took me about 5 month, the limit on thesises is 6 month I think ... but you can probably extend the timeframe once.
      The topic I studied is 'computer science' so if I had finished my complete degree I would be a 'computer scientist' ... no idea about what you want to argue ... more precisley a 'Diplom Informatiker' which translates into english as 'computer scientist'.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    35. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      Well, you can consider yourself a "computer scientist", I consider you a university dropout with no significant publications and have zero respect for your professional opinion based on your background (thanks for being so honest). As I was saying, we'll have to agree to disagree.

    36. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      Not my problem :)

      And I have no problems with drop outs either, most of them simply were smart enough to no longer follow 'the system'.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    37. Re:isn't this pretty straightforward? by ooloorie · · Score: 1

      Not my problem :)

      Well, you brought up your supposed credentials as support for the idea that people should take you seriously.

    38. Re:isn't this pretty straightforward? by angel'o'sphere · · Score: 1

      My business card says: 'software generalist'
      And my customers take me seriously, otherwise they would not pay my bills or hire me at the first place.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  13. presumably you tagged the sources by david_bonn · · Score: 1

    Presumably you tagged the sources that went into the build that went to your customers?

    If you did, when you make bug fixes you need to check out against that tag, not to the bleeding edge code where new features are being added.

    Depending on how many fixes there are and how complex and messy the source tree is, you can either try to merge the changes into your bleeding edge code base or make the changes twice. In general, if the bleeding edge is being vigorously refactored or otherwise aggressively reorganized, you'll probably end up making the changes twice. Something that isn't often brought up when refactoring is how you will handle merging bug fixes.

    It is best to have one developer who drives the source control system and knows how to do merges.

    If you didn't tag the sources you released to customers, you and your entire team needs to be shot.

  14. Gatekeeper(s) - Needed by brian.stinar · · Score: 2

    and the "fix" gets released with the larger code change set, to production...

    The problem here is that the fix "gets released." I agree, that it seems like releases should at least have the criteria that at least one other person has reviewed the code being released. Otherwise, they have the criteria that one person decided to release it (by definition.)

    I think you could create a system by which pull requests are approved by someone other than the person that created them, and then, after it's been approved, then the code is authorized to be merged into a release branch. Here's one such discussion of that. I'm not an expert on this, but I've heard of it, and I think this line of reasoning could help you.

    Good luck!

    1. Re: Gatekeeper(s) - Needed by Zero__Kelvin · · Score: 1

      You just described the Linux kernel development process (I.e. I 100% agree and said approach is very well vetted)

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  15. How Would You Stop The Deployment Of Unapproved Co by Goondra · · Score: 1

    MODULE based languages help by isolating code changes to smaller chunks that are more easily tested.

    --
    DGDanforth
  16. Learn from the Rust project's developers. by Anonymous Coward · · Score: 2, Insightful

    A lot could be learned by observing what the developers of the Rust programming language project do when running their project.

    They're dealing with a large project that covers a complex domain, a huge amount of code, and many developers scattered across the globe.

    The first thing to do is to use git, and perhaps something like GitHub. This will allow your developers to collaborate using a free and open source version control system.

    Next, you need a Code of Conduct to prevent social injustice from negatively affecting the project. A Moderation Team is tasked with ensuring that everyone is tolerant, and any intolerance will be ruthlessly stamped out.

    Changes go through a request for comments process. This keeps everything organized and everybody on the same page. Bugs have detailed bug reports and discussion.

    GitHub pull requests are used to integrate the changes. All changes are reviewed by somebody else. If you're a lucky contributor, you may even have your contribution reviewed by none other than Steve Klabnik zerself! If the review passes then their automatic integration/merging bot will merge the pull request into the master branch.

    Your project doesn't have to follow the exact same approach that the Rust project follows, of course. But I think that there are a lot of things that any large software development project could learn from how the Rust developers work. Their approach has scaled to over 1,700 contributors!

    1. Re: Learn from the Rust project's developers. by Anonymous Coward · · Score: 0

      Good points, but for a paid job by a single company, the companies rules and local laws for their jurisdiction trumps everything and no social code of conduct is necessary. That's just fucking drama.

      What I / you do outside company hours on personal time is no one's fucking business.

      For an open source project where I devote my time and skills for free for others to benefit from, then I care if I'm working with fucktards or good people and code of conduct makes sense.

    2. Re:Learn from the Rust project's developers. by K.+S.+Kyosuke · · Score: 1

      Next, you need a Code of Conduct [rust-lang.org] to prevent social injustice from negatively affecting the project. A Moderation Team [rust-lang.org] is tasked with ensuring that everyone is tolerant, and any intolerance will be ruthlessly stamped out.

      That was a good one!

      --
      Ezekiel 23:20
    3. Re:Learn from the Rust project's developers. by Anonymous Coward · · Score: 0

      > Next, you need a Code of Conduct [rust-lang.org] to prevent social injustice from negatively affecting the project. A Moderation Team [rust-lang.org] is tasked with ensuring that everyone is tolerant, and any intolerance will be ruthlessly stamped out.

      What a fucking load of bull-shit from SJWs. Loaded language that's been tainted from that group.

      Did "Be Civil" lost all meaning ?

    4. Re:Learn from the Rust project's developers. by Anonymous Coward · · Score: 0

      Next, you need a Code of Conduct [rust-lang.org] to prevent social injustice from negatively affecting the project. A Moderation Team [rust-lang.org] is tasked with ensuring that everyone is tolerant, and any intolerance will be ruthlessly stamped out.

      That was a good one!

      But the irony is utterly lost on SJWs and their ilk...

    5. Re: Learn from the Rust project's developers. by rickb928 · · Score: 1

      Where I work, the key value is respect. This allows us to collaborate, to propose the best solution, to do what the customer wants and not what seems right to us.

      Even then we struggle with egos, but respect is the most important value, and the core of the business.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    6. Re:Learn from the Rust project's developers. by Altrag · · Score: 1

      This works a lot better in an open source world where there's a small core team (maybe even one person) that does all the final review and integration, plus typically a (public) alpha/beta/RC phase and the ability to say "sorry it was an alpha.. we'll try to fix it but the data loss is your problem" if it screws up. And if you're not happy with the latest RC you push it off by a week or two.

      In a business environment, the first is sometimes true. If you're lucky. Frequently though the integration is "we need a new version out by Thursday no matter what! Oh and we need this list of 47 breaking bugs fixed before release!" Not enough time to do those fixes never mind test them? Tough. And of course such dictates are handed down by management and are to be taken as if they were God's commandments.

      Sure, you can find places where they're willing to put off releases in order to add some polish, but in many if not most cases the business decisions outweigh the technical decisions. If you have a major customer expecting a release on Friday then there damned well better be one ready to go by EOD Thursday come hell or high water. The consequences of it fucking up in a couple months are less important than the consequences of pissing them off this week.

  17. Ban peer programming by Anonymous Coward · · Score: 0

    Two Johnny Jr coders should not be allowed to change code marked as mission critical by a senior developer or domain experts. Yes, its a pain to get changes approved by an expert in a time zone far, far away but youthful exuberance is no substitute for hard won experience. If you think you've found a simple, straightforward solution to longstanding problems you'd better be able to back up that assertion with a test plan that states more than 'Yup, this fixes my bug. SHIP IT!'.

    1. Re:Ban peer programming by Anonymous Coward · · Score: 1, Interesting

      Two Johnny Jr coders should not be allowed to change code marked as mission critical by a senior developer or domain experts.

      I take it you don't work in the industry (called "Silicon Valley" by outsiders). Here, a senior developer is usually 21 or 22 years old, and has been with the company for about 2 months on average. Some of the more experienced senior developers might be 24 years old, and might have even been with the company for up to 4 months.

    2. Re: Ban peer programming by Anonymous Coward · · Score: 0

      That would explain much including the original submitter of this question.

    3. Re: Ban peer programming by Anonymous Coward · · Score: 0

      so where are the wizened old programmers with 30+ years experience?

    4. Re: Ban peer programming by Anonymous Coward · · Score: 0

      Did you check the unemployment office?

    5. Re: Ban peer programming by Anonymous Coward · · Score: 0

      Oh please. We're working on things you've never heard of.

  18. Step One by Anonymous Coward · · Score: 3, Insightful

    Step one is to get high-level management to understand and agree with the risks as well as to understand and agree with the costs of preventing them.

    You would think that this is a no-brainer, but its not. I've listened to a COO tell me from across a boardroom table that they have to be able to bypass deployment processes for business-critical hot fixes because time is of the essence in those situations, and that was the end of it. So what you've got is that in an "emergency" an "informal" approval from an "important" person is all that is needed. Feel free to define those words however you wish, naturally.

    1. Re: Step One by Anonymous Coward · · Score: 1

      Yes, if your process is discovered to be broken and cause bad shit. Sometimes when you're already in the shit, you just need to get back up and running asap.

      Say that your process states you need a UPS on all servers. A UPS fails at 3am at a remote tower and your spare turned out to be of low capacity or just failed. Do you leave the shit off, or do you plug it straight into an outlet?

      In software, if you're getting attacked by a 0day, do you push out the 2 byte fix that has VERY specific code path and use, or do you follow your 3 week QA cycle, testing new unrelated changes as well?

      Bypasses are needed in emergency situations, ideally by someone who can think.

      An ER Doctor probably would like to fix an injury using their best technology available. Sometimes, they just need to stick their finger in a hole for a bit until the proper solution is ready.

    2. Re:Step One by Anonymous Coward · · Score: 0

      This is why your COO has his/her position, and not you.

      Too many people, especially in large organizations, try to fix process issues by making the process inflexible and designing systems to block people who try to work around the process. But this hurts the business in ways that you cannot always foresee. The systems you put in place to support the process should be helping people to follow the process, not blocking them from not following it. At some point you need to rely on trust so that you can leave the flexibility in the process to bend the rules in an emergency.

    3. Re:Step One by budgenator · · Score: 1

      At some point you need to rely on trust so that you can leave the flexibility in the process to bend the rules in an emergency.

      But Dude, It's always an emergency! (Now watch this get +5 insightful, instead of +1 funny)

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    4. Re:Step One by Anonymous Coward · · Score: 0

      "So what you've got is that in an "emergency" an "informal" approval from an "important" person is all that is needed."

      If the developer decides that someone other than their boss is the "important" person, do they get to keep their job?

  19. If I understand correctly by Anonymous Coward · · Score: 0

    If I understand correctly; the poster is looking for a solution that covers the ENVIRONMENT; not JUST the code.

    If you're looking to deploy features that require changes to multiple backend services; you NEED to start looking at something like configuration management; containers; or both. (in the following examples; I'm going to imply Puppet+Docker; as it's what I use every day)

    As a precursor to this; if (you|your management team|the operations team) are NOT using configuration management to manage infrastructure; you REALLY going to want to take a long-hard-look at yourself in the mirror and decide if you want to continue with such an outdated company. ;)

    If a feature needs user testing; Define the required infrastructure changes in either a new environment or a reserved environment and include them with your commit. Come up with a method to boot up a number of containers (the layout / number is going to be highly application dependant; this is why "ready made solutions" are do hard to find here) that are a full private implementation of your application; using the custom environment as defined earlier.
    If there's a persistent backend database that requires changes; implement it through a proxy (effectively) where the (additions|changes|deletions) are virtually implemented to all calls made by the temporary application. (You could make the backend read-only; or restore a backup into your containers; I'd personally just bring up a read-only slave + begin replication and proxy writes into a private datastore to record them) At this point; redirect traffic (based on whatever criteria you determine is required) to this private environment (IE: point users who have opted into testing at it; HAProxy is great at this)

    If you so choose; feel free to record changes they make either temporarily or permanently as part of the final commit (json blob or whatever format you prefer) or simply throw them away. (again; this is going to be highly dependant on your application / needs)

    Once testing has been completed and you've determined the users have 'confirmed' the feature; merge the configuration management environment into your production branch and commit your change (to whatever master you decide is master). Push and let your stack do it's work.

    This approach is highly recommended (personally) and works wonderfully; IF you're already in the position to utilize it. It needs to be approached from the get-go of the project however; else trying to migrate an existing application to this approach MAY consume more work than simply throwing the project out and starting over. (really depends on the project)

    -jd

  20. Microservices by lucm · · Score: 2

    When people are worried about changes in "many layers of the stack", it's usually a good time to re-architect the system and build microservices. Basically, you get the entire stack in every microservice and you stop worrying about ripple effects; you upgrade or troubleshoot things at a much smaller scale.

    I highly recommend this book:
    https://www.amazon.com/Buildin...

    It explains how to achieve this, including how to deal with the tough parts like the database layer.

    --
    lucm, indeed.
    1. Re:Microservices by Kjella · · Score: 1

      When people are worried about changes in "many layers of the stack", it's usually a good time to re-architect the system and build microservices. Basically, you get the entire stack in every microservice and you stop worrying about ripple effects; you upgrade or troubleshoot things at a much smaller scale.

      Isn't this one of the problems caused by modularization, not solved by it? Basically if everything was in the same VCS it'd be a huge change set doing some database changes, some business rule changes, some desktop GUI changes, some Android GUI changes, some iPhone GUI changes etc. but the moment you start breaking it up you have to start tracking that this change of functionality requires changes in five different projects and unless everything makes it into the next release it won't work. The more you've divided into microservices, the more places you need to change. Each service will be less complex but the interaction between the services would get more complex because you need to pass things around from service to service.

      --
      Live today, because you never know what tomorrow brings
    2. Re:Microservices by zifn4b · · Score: 1

      When people are worried about changes in "many layers of the stack", it's usually a good time to re-architect the system and build microservices. Basically, you get the entire stack in every microservice and you stop worrying about ripple effects; you upgrade or troubleshoot things at a much smaller scale.

      I highly recommend this book: https://www.amazon.com/Buildin...

      It explains how to achieve this, including how to deal with the tough parts like the database layer.

      Just watch the Spotify Engineering Culture videos. What you refer to as "ripple effects" they refer to as "blast radius" which I like much better. The benefit of micro services is that if one micro service blows up, the rest continue to run at least enabling partial functionality as opposed to taking the whole system down or putting the entire system into a funky state.

      --
      We'll make great pets
    3. Re:Microservices by lucm · · Score: 1

      When people are worried about changes in "many layers of the stack", it's usually a good time to re-architect the system and build microservices. Basically, you get the entire stack in every microservice and you stop worrying about ripple effects; you upgrade or troubleshoot things at a much smaller scale.

      Isn't this one of the problems caused by modularization, not solved by it? Basically if everything was in the same VCS it'd be a huge change set doing some database changes, some business rule changes, some desktop GUI changes, some Android GUI changes, some iPhone GUI changes etc. but the moment you start breaking it up you have to start tracking that this change of functionality requires changes in five different projects and unless everything makes it into the next release it won't work. The more you've divided into microservices, the more places you need to change. Each service will be less complex but the interaction between the services would get more complex because you need to pass things around from service to service.

      If it' a small team with limited features, maybe. But on more complex systems this is just impossible. For instance if the product has multiple concurrent releases (ex: legacy, LTS, canary) and multiple dev and QA teams working on different features with different timelines, you can't have everything in a big bucket. There's going to be breaking changes daily.

      But if you use a microservice architecture, you're dealing with tiny building blocks; all you need is a good CI strategy and decent deployment automation and you can support pretty much any combination.

      --
      lucm, indeed.
  21. RELEASE Engineer by Anonymous Coward · · Score: 1

    It's pretty straightforward.

    You need a Release Engineer position (full time, not a repurposed Developer). They need to have the authority to say NO to a release.

    Go read up on what REs do. That's exactly what your organization needs.

    1. Re: RELEASE Engineer by Anonymous Coward · · Score: 0

      I hate the overuse of "Engineer". I get why actual Engineers who did apprenticeship and have legal responsibilities get mad when non-educated, non-trained Joe's suddenly become Engineers for what can barely be called developing.

      A release gatekeeper who says yay or nay is engineering fuck all.

  22. Deploment path by Anonymous Coward · · Score: 0

    If your deployment path is: "dev > test > production" you are in for a world of hurt. Try adding another step or two like: "dev > test > acceptance > production" or even "dev > test > acceptance > staging > production". These extra steps are where code ferments for a few days and is subject or scripted tests or actions mirrored from production before it goes live live.

  23. Broken code fix by fard69 · · Score: 1

    Developer's head on a pike as a warning to others. The hint will be taken, I promise.

  24. Give all the users AIDS by anorectal insemenation by Anonymous Coward · · Score: 0

    It would work on paper.

  25. Post your question on /. by Anonymous Coward · · Score: 1

    ... it will certainly stop the developers from deploying unapproved code changes for 2 minutes.

    1. Re:Post your question on /. by fredrated · · Score: 1

      While they read Slashdot? Surely they will waste more time than that.

  26. Linus Had A Good Talk On This In Relation To GIT by NicknameUnavailable · · Score: 1

    This link is great in relation to how Linus deals with a huge distributed codebase. It's actually what convinced me GIT was superior to SVN.

  27. Official Builds. CVS Tags by Cmdln+Daco · · Score: 1

    You lay down a CVS Tag and the build technician builds from it. Releases are clearly identified with an MD5 identifier.

    If only one official binary exists, it's what people will run.

  28. Eliminating Bugs: 101 by meglon · · Score: 1
    --
    Fascism: An authoritarian and nationalistic right-wing system of government and social organization. See also: NAZI's
  29. A piano by sjames · · Score: 2

    Next person to release an untested line of code will play the piano for us *SLAM*

  30. For starters get your company to pay by rsilvergun · · Score: 1

    for testing. That means full blown test environments as well as time in the user's day or a special team to test bug fixes. Also if you go with a team don't outsource that team to the lowest bidder. They'll just pass everything as "OK" and spend the rest of their time looking for a better job. Hire somebody, give them a decent salary and benefits.

    Unless testing really isn't that important. Depending on your needs it might not be (despite all the indignation that engenders). One thing I've learned about writing software: Good enough is _always_ good enough. Just ask Microsoft (Word) and Corel (WordPerfect).

    --
    Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
    1. Re:For starters get your company to pay by Anonymous Coward · · Score: 0

      One thing I've learned about writing software: Good enough is _always_ good enough. Just ask Microsoft (Word) and Corel (WordPerfect).

      Thumbs up for the sentiment, but.. boy your role models need revising!

  31. you cannot force your manager to do their job by Anonymous Coward · · Score: 0

    i have found in life that you cannot force your manager to do their job, which is to manage. like linus torvalds on the kernel. coordinate, communicate, and tie-break.

    you can only implement small technical things that may prevent people from breaking things completely, and coordinate with other tiny islands of sanity in the company on your own. talk to them. if you can. if its allowed.

    but overall, this is a fundamental problem in the management of the organization you work for, and has nothing to do with software really. if we were all on pen and paper, similar issues would happen - because its a management organization problem, not a technical problem.

    1. Re:you cannot force your manager to do their job by brian.stinar · · Score: 1

      Yeah, this is a management problem. The technical safeguard I proposed won't work unless management buys in, which clearly they haven't already since this could be addressed by policy, but it hasn't been.

  32. Why? by Anonymous Coward · · Score: 0

    You missed covering why you *want* to do this.

    Unless you're working on human-life-critical software... does it matter?

    Have a code review process. Make developers responsible for both what they write and what they approve. Call it a day.

    If that's not enough? Improve your build process.

    Build a canary process where only a small section of your users sees the code, watch it for errors, and when the error rate is good enough, push to 100%.

  33. you mean the decade we went to the moon? by Anonymous Coward · · Score: 1

    yes. code ownership is so 1960s. so is software that worked properly.

    1. Re: you mean the decade we went to the moon? by Anonymous Coward · · Score: 0

      And food tasted better?

  34. You should Quit by Anonymous Coward · · Score: 0

    You're a judgemental control freak and you don't belong in the workforce. Quit now and give someone else your job.

  35. Decide what's more important and who's more import by TheOuterLinux · · Score: 1

    Obviously, you'd allow the "community" to look at bugs and submit issues, but it seems as though in trying to prevent bad blood, there's no chain of command in these kinds of projects. The person with the highest bug fixing record gets the final word, followed by the "new features team" rather than adding features and then try to fix conflicts; this is where the original author of the project has the final say over the top bug fixer if they aren't one in the same. If multiple solutions exists to a bug, offer a community vote and an honest layout of any compromises that may result for each solution. Interface eye candy should always be last in a project.

  36. A good release procedure. That's all it takes. by Anonymous Coward · · Score: 0

    That's how my company does it:

    Git branches:
    master
    staging
    dev branches, one for each fix/ticket

    Each ticket gets a separate dev branch.
    Each dev branch gets tested locally.
    Each dev branch undergoes a separate code review.
    Each dev branch gets deployed to an isolated dev machine.
    Dev branches get tested independently, one by one in dev environments.
    Once all the dev branches are signed off, they all get merged into staging.
    When all tickets reach this point, each ticket gets re-tested in staging.
    Regression testing kicks in and the whole system gets tested as a whole unit.
    Staging gets merged into master, a release goes out the door.

    1. Re: A good release procedure. That's all it takes. by Anonymous Coward · · Score: 0

      Very good, except I'd test the exact binary produced by the release system and not just the recipe that lead to it (2 occasions in 7 years where build system did unexpected things, like when version reached double digits and lost a digit). So I would actually cut a release candidate, do all final/critical testing, and then release to production the same binary.
      If you found you missed something trivial, like bump copyright year, then you can rebuild with a .1 like version to give the customer that extra bit of confidence that it's been tested rigorously.

  37. Communication & formal processes by Monolyth · · Score: 1

    Tools are one route, but they will take time & money to implement which you may not have and don't usually resolve the underlying problem of lack of responsibility or process. There are numerous integration tools that can bring together your source control, testing suites & feature tracking tools. In addition DevOps and release management software can provide automated workflows but again you are talking a rather large spend in time, money or both.

    Communicate
    Remove the stigma that developers can't "talk to the users". There is nothing written in stone that says you can't work closely with users and form lasting professional relationships with them. Before you go trying to enforce a formal process on them, simply communicate your concerns with them directly. You don't have to babble on about code merges, database scripts. KISS - focus on the cost to the company in time and money if something is missed in testing (or lack thereof). Their interest in making the system and release process go more smoothly should be fairly apparent based on their responses. If available resources are the concern then this is when you can bring in upper management to assist with bulking up your user base to improve the release testing and day to day operations. However, make sure you don't get stuck with just one person. Knowledge silos on the users end can be just as dangerous as they are on the development side.

    Formalize your process and enforce it
    If you got buy-in from your user communication this should go pretty smoothly, if not you'll need extra leverage from upper management. Make sure you've worked out a decent workflow with the users. It doesn't have to be laden with cool tools. The process should easily spell out what is changing and what needs testing for each release. Keep in mind the audience you'll be working with, don't design or purchase some crazy release management system if the users are only comfortable sending emails. Tools will come with time, the most important thing is that your process is easy to follow and enforce.

  38. Re: Give all the users AIDS by anorectal insemenat by Anonymous Coward · · Score: 0

    only on /.

  39. how would you stop unapproved code changes? by Anonymous Coward · · Score: 0

    I took away their password access to the production system, forcing them through test and quality assurance deployments first. (What's QA???)
    They were incredulous. They cited the need to get software into production and "fix it later".
    Management tended to side with them, as they promised profits.

  40. Re: Rip the ethernet out by Anonymous Coward · · Score: 0

    You sound like an Uber manager assuming you don't kick any of the guys.

  41. Refuse to deploy until/unless work is QA'd and app by techSage · · Score: 1

    Have the guts to say it and then do it. PMs will get onboard when they get nervous that work won't get to clients.

  42. Amen by caferace · · Score: 1

    As a long time SQA/HQA eng, this is an awesome question. I've been around a lot of blocks. New build. Broken. Here's another one. Broken. My Golden Rule? Stay until it works. I'd so much rather have a good build than something slapped together. It wastes everyone's time.

    1. Re:Amen by Anonymous Coward · · Score: 0

      A place I used to work had developed a fantastic automated basic QA system.
      Hooked in to the source control backend, every checkin was tested in three build configurations on three platforms. If the build failed to compile or caused an as-tested-for issue, you got an automated email detailing the problem and source control access was frozen for everyone, no one else could compound the problem. If you didn't submit a fix within about 30 minutes to QA your original submission was auto-reverted.
      Depending on which team you were on you earned a "token of shame" for breaking the build. There was a pink tu-tu, a large stuffed animal trout, or a jester's hat that lived on your desk until someone else broke the build.

    2. Re: Amen by Anonymous Coward · · Score: 0

      For all your experience, your feedback ("broken") is pretty shitty. You'd have a lot less builds to make if you provided better feedback.

  43. As a STE/QA/SDET by Bomarc · · Score: 1

    I've tried. And been fired for it. From the unemployment office, it is amusing to watch as WS ATG investigates a company due to bad testing practices. It is disturbing to watch as 'computer glitches' cause hundreds if not thousands of travelers to be impacted. It is disturbing to send an email that - due to bad management practices (just what this article describes) mean that I cannot guarantee or relate the quality of a product; then be escorted out the door the next day.
    I have and always will stand up for quality, which in this 'we will not fix it next release' era is a difficult thing to do.
    Best thing to do: Put in 'requirements' that there be a code review before a 'check-in' is accepted. Best of luck if no one want to accept your recommendation(s).

  44. QA, UAT, Regression testing, itil processes? by Anonymous Coward · · Score: 0

    Random release chaos is no way to run a real product. A product with no coherent release process (including user notification) is a recipe for epic fail and gnashing of teeth. Grow up and do it methodically and consistently.

  45. Doesn't address the problem by Anonymous Coward · · Score: 0

    That doesn't address the problem, it just demands a complete rebuild to your current fad.

    Stuff is rolled out that isn't tested by QA or user approved tested. Rolling it out in microservices just means some have issues and others not, making it more confusing and less cohesive.

    This is typical of lazy management, if there is a problem, the blame will be assigned to the developers, but it's typical of Yahoo style development work. (Literally they do this crap in Yahoo, their CTO is a joke). It usually means management has become detached from the product and instead is managing the vague process that generates the product.

  46. Yahoo 'Warp Drive' by Anonymous Coward · · Score: 1

    Yeh, it sounds like Yahoo's Warp Drive (link below). Where they sacked the QA. So all the code is merged and NOBODY tests it, the first the users get to accept it is when its live code.

    The claim there is that developers do their own test tools to improve their code, i.e. they do an adhoc thing to fill in for the missing QA people. But obviously its a subset of QA, it doesn't involve users, and it doesn't span code outside the developers own reach. He would not be able to require another programmer fix a problem before release, since he is not QA.

    Really sacking incompetent leadership is the only solution. Can you imagine a self driving car built by Yahoo? They wouldn't even be able to demonstrate to THEMSELVES that it won't crash, because they've simply never tested it.

    https://developers.slashdot.org/story/15/12/12/0115226/no-more-qa-yahoos-tech-leaders-say-engineers-are-better-off-coding-with-no-net

    1. Re: Yahoo 'Warp Drive' by Anonymous Coward · · Score: 1

      Wow. But it sounds like there were huge layoffs and that was the spin so it wasn't as depressing as it obviously was. No one in the comments were buying that shit (except for one dude who thinks he's special).

      For fucks sake, they're blaming QA for injecting errors into the work. How in the fuck?

      Some serious double think shit.

      All the process change to have the developers not be common sense deficient could have been done and kept a small talented QA team. This was purely justification for layoffs on downward spiral.

    2. Re:Yahoo 'Warp Drive' by david_thornley · · Score: 1

      Can you imagine a self driving car built by Yahoo?

      Sounds perfectly safe to me, unless you actually have to have it go from one place to another. Then you might strain your back pushing it.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  47. Re: Step Two by Anonymous Coward · · Score: 0

    The emergancy is now over. It is normal business hours. You now start the reviewing process for the emergency fix. Your peers evaluate your fix/workaround or the development of a proper fix is started. The fix might even be so dirty it becomes a new out of band fix.

  48. Yes it addresses the problem by lucm · · Score: 1

    Rolling it out in microservices just means some have issues and others not, making it more confusing and less cohesive.

    I don't think you understand what a microservice is.

    The point is not to randomly package web services; the point is to define components that correspond to specific areas of the business domain. That way, when you upgrade or deploy a specific microservice, you know exactly what part of the business you're impacting, and this makes governance a lot easier. Instead of having a handful of managers snoozing in CAB meetings and rubberstamping changes that are not clear, you can get the thumbs up from the right people and leave the rest alone.

    This is by far the easiest way to avoid rogue or hidden commits making their way to production. And microservices are not a "fad", they're the latest iteration of a concept that's been around for quite a while (SOA) and that just needed a bit of further thinking.

    You really should read that book, it's worth it.

    --
    lucm, indeed.
    1. Re:Yes it addresses the problem by phantomfive · · Score: 1

      the point is to define components that correspond to specific areas of the business domain.

      If people were capable of that, they wouldn't be in the problem to begin with. Their system would already be suitably modular.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Yes it addresses the problem by lucm · · Score: 1

      the point is to define components that correspond to specific areas of the business domain.

      If people were capable of that, they wouldn't be in the problem to begin with. Their system would already be suitably modular.

      So you're basically saying: they can't fix it because if they could they wouldn't have to fix it. So from the get go you're already in patch mode. That's the best way to set yourself up for failure.

      Here's the key to improving things: you don't compromise when you're at the whiteboard. You compromise once you have a clear picture of where you want to get and once you know that the gap between your current state and the desired state is too large for your current resources. And even then you don't change the goal, you just set a realistic roadmap.

      --
      lucm, indeed.
    3. Re:Yes it addresses the problem by phantomfive · · Score: 2

      Basically I'm saying that if you don't know how to write modular code, if you don't know how to define components in a way that corresponds to specific areas of the business domain (and that's not quite the right way to do it, but close enough), then it doesn't matter if you use microservices. Your microservice architecture will end up just as messy as your non-microservice architecture.

      The underlying problem isn't microservice vs non-microservice: both can be fine architectures. The underlying problem is not knowing how to divide up your system into components, not being able to recognize the natural lines in the problem.

      --
      "First they came for the slanderers and i said nothing."
    4. Re:Yes it addresses the problem by bad-badtz-maru · · Score: 1

      How is service (aka remote interface) design any different than designing a local interface? Doesn't the entire discussion of microservices just completely regurgitate overall software design discussions that have taken place since the 60s? Isn't call latency essentially the only difference?

    5. Re:Yes it addresses the problem by lucm · · Score: 1

      Doesn't the entire discussion of microservices just completely regurgitate overall software design discussions that have taken place since the 60s? Isn't call latency essentially the only difference?

      Not if you do it right. There's essentially 2 differences with microservices vs (SOA/RPC/etc).

      1) the full stack comes with the service, so it's self-contained
      2) the services are designed to match the business domain

      For instance, in the good old days of SOA, a core team would often align the service catalog with the backend systems (ex: ERP, MRP, HRM etc) cramming in all kinds of business logic, then the edge developers would compose more services using those building blocks. With microservices, the catalog is aligned with business activies (ex: make a sale, hire a new employee, etc.) and each service corresponds to the most granular tasks possible. This is not just semantics; if you have worked with SOA and find yourself working with microservices you'll see the difference right away.

      What's cool with microservices is that unlike SOA (which is process-heavy and requires a core team that knows everything) you can pretty much let the SME build services around their narrower expertise; if you do it right, using an API gateway for instance to handle authentication and throttling, it's a lot easier to maintain. Each team becomes responsible for "their" API.

      And btw microservices don't have to use a network. You coud have just a bunch of dockers running on the same host and talking to each other via unix sockets and it's still considered microservices. It's very common with technologies that are socket-friendly (ex: php-fpm).

      --
      lucm, indeed.
    6. Re:Yes it addresses the problem by bad-badtz-maru · · Score: 1

      Latency considerations aside, I just don't see service interface design as being any different from designing a class used on any other layer. If people were allowed to construct gigantic monolithic service interfaces, well, that was probably poor design overall and not specific to service architecture. There was never anything about SOA that precluded building narrowly-scoped interfaces.

  49. Separate Testing Envs, hold merges til post-UAT by RGRistroph · · Score: 1

    I have had this problem in several different projects with different teams.

    I generally think of it as the "code hostage" or "cherry-picking" problem. You have the work of 15 issues reviewed and merged and loaded up and running on a test environment. For 14 of those issues, a "user" ( or whatever you call the non-developer issue-owner in this case ) checks in and says it is good. Time is passing and the 15th person is a no-show. It's worse than if they said it still wasn't fixed -- then you would immediately go to work reverting that code change and re-testing everything -- but instead everything is held up in limbo.

    One way to address the majority of these issues, is to set up a separate testing environment or server per ticket, and put the pull request or branch on it, before it is merged to the main branch. Force users to test BEFORE it gets on the path that will end up in a deployment. This means that slow moving people won't block others.

    This might seem expensive, but with APIs to cloud hosting and/or container technology, it can be automated, and is a lot cheaper than it would have been a few years ago.

    You can still end up with a problem on the now integrated code, and still have to cherry-pick / revert some commits, and since the result has not yet been tested all together, you still have to re-test. However this happens much less often, because it is only happening in the cases where interaction between different work is causing the problem.

  50. Re: Give all the users AIDS by anorectal insemena by Anonymous Coward · · Score: 2, Funny

    Somewhere, on some porn forum right now, someone is asking a coding question.

  51. Re:Give all the users AIDS by anorectal insemenati by davester666 · · Score: 1

    You have to come back from fantasyland. She was your sister, and you roofied her... And the "other cousin" was one of her stuffed dolls.

    --
    Sleep your way to a whiter smile...date a dentist!
  52. This is not difficult by ghoul · · Score: 1

    as long as everyone buys in that Quality is important and fixing urgent bugs is also important.

    When we go to production we have a 3 day code freeze during which only P0 bugs (which are rare at that point) can lead to the code being changed.
    After production the code is tagged and new development start on a new branch.
    Any Production bugs which cant wait till next release are fixed on the production branch, tested by QA team and released.
    The developer makes sure to do the same fix in the new code branch (if the code has changed significantly sometimes the fix is no longer needed or you do an equivalent fix)
    Code is built everyday. At the end of everyday we let the QA team know which stories are ready for testing. Developers work on their private branches and at 2 PM merge and build. A list of tickets fixed and stories completed is sent to QA team and they can start testin (what do they do till 2 PM? Work on automation) After 2 Pm developers will not check in code unless its for a fix to one of the stories they sent for testing and QA raised a bug. This is done if the build is broken and QA cannot work else it is fixed in private branch and available next days build. By the end of the sprint pretty much every story has been tested - we dont consider a story done if QA is not done and all P0 and P1 bugs are fixed. Automation may not be complete but at least manual QA is done for the effort to count in that scrums velocity.
    Before every release we have a strenghtening Sprint where we are not doing new functionality rather fixing all leftover P2 and P3 bugs (we do fix these durings Sprints but a story is not considered blocked for P2 and P3). This also gives time for other activities like preparing runbooks and data dumps for the switchover.
    Typically Business UAT team is running one cycle behind the dev and QA team so this also gives them a chance to catch up , do one final round verifying all stories and production tickets for the release and give a signoff. 3 days before we freeze. Typically by this time if we dont have a lot of bugs the team is actually pruning stories for the next release.
    The only tricky part is when we tag and branch and try to start working on the new features during the strenghtening sprint. Then we have to be carefull about merging back the last minute fixes into the next release branch.

    --
    **Life is too short to be serious**
  53. Spend Money by ohnocitizen · · Score: 1

    Hire better, more senior people. Hire more staff if you are understaffed. Because if you have enough developers, and they are seasoned, then together you'll come up with a process that works for YOUR company and YOUR team. Or - be like too many companies in a race to the bottom of underpaying, understaffing, and then complaining when it doesn't work out. Or worse - thinking some process or tool will save the day. It won't, and if it did - you wouldn't deserve it.

  54. Project Management by s1d3track3D · · Score: 1

    We use JIRA but there are many ways to do this. Implement a pipeline that must be followed.

    * User creates a ticket in system (bug/issue, etc).
    * Developer works on ticket (in new branch)
    * Developer get's code review from peer
    * Developer pushes changes to staging server
    * user who filed ticket tests the change/signs off on fix
    * code deployed to QA to test change
    * QA signs off on case
    * Developer merges code from branch to master (or build release engineer)
    * code is released

    I'm sure you've found that 6 weeks is long for a "sprint". 4 weeks should be the max length. Over a million lines of code -- in existence for over 10 years -- gets updates in six-week "sprints" using source control and bug-tracking systems. But now an anonymous reader writes: In theory users report bugs,

    1. Re:Project Management by Anonymous Coward · · Score: 0

      "We use JIRA..."

      Oh dear God...

    2. Re:Project Management by Anonymous Coward · · Score: 0

      I guess you work in a small shop, and never looked after any kind of significant product. This is childish, but I have had to deal with the kind of process put in by unfiltered process monkeys.

      > User creates a ticket in system (bug/issue, etc).
      No, this should be filtered, split, ignored etc. by a technical product owner. ...
      > developer gets code review from peer
      No, the developer should get a code review from a competent reviewer who is clear on what he is looking for (junior dev does not imply junior reviewer)

      > Developer pushes changes to staging server
      No, the review should trigger automated build and test.

      > user who filed ticket tests the change/signs off on fix
      No, this should be validated via QA and risked before providing access to a workflow system for users to test. The user who raised an issue might not even work here any more.

      > code deployed to QA to test change
      why if the user has signed off (you have these wrong way round)

      > * Developer merges code from branch to master (or build release engineer)
      No, it should be kept in a release candidate until release-ready.

  55. Gerrit by nateman1352 · · Score: 1

    Want to keep unapproved changes out and have a cross geo org? Easy, just make Gerrit code reviews mandatory.

    1. Re:Gerrit by tlhIngan · · Score: 1

      Exactly.

      Gerrit requires code be approved before it will merge it into the mainline branches. It replaces a centralized Git server.

      Deployments pull from the official Gerrit mainline, while developers can push/pull into their own private branches without requiring approval. But to push to mainline requires approval and review.

      And there's a full chain of custody - if some bad code gets approved, you can see all the comments and who approved the change.

      It's a bit tricky if you need to revise a fix, but it just means alternate, supported forms of the standard Git commands you're used to.

    2. Re:Gerrit by Wootery · · Score: 1

      Yup. What is this doing on the front-page?

  56. peasants by Anonymous Coward · · Score: 0

    idiots

  57. Sarbanes Oxley/SOX ... by Billly+Gates · · Score: 3, Interesting

    ... hides

  58. our setup by Anonymous Coward · · Score: 0

    Our setup is far from perfect, but what we do is:
    Developer makes change (bugfix or feature), change is sent to code-review, if approved, sent to testing, when QA approves that the feature has been implemented or that the bug has been fixed, QA approves, and only at this point is the developer able to submit the code changes onto the project branches.

  59. Trending Tech: Let the Computer Decide! by Anonymous Coward · · Score: 0

    Fire all the developers but one. Implement an automated software patcher & deployer which uses a fully data-driven statistical model which correlates User-provided error reports to modifications to the resulting changes in machine code & software configuration to accomplish aforementioned task. Fire the remaining developer.

  60. release by Anonymous Coward · · Score: 0

    manager

  61. you have a broken build process by Anonymous Coward · · Score: 0

    Struggling to understand why team size and location would have any relevance to having a single gatekeeper ensuring code is tested and checked in properly? either the team is small enough that this can be handled easily or anything beyond half a dozen people even over different locations it is mandatory if you want to have any semblenance of quality in the end product. One of the projects I work on has over 100 developers across many locations (both different buildings and different cities in some cases). strict control of the check in and build process is the only way to ensure teams working across disparate functionality and components operate properly. If you have code getting to production that hasn't been tested then you have a broken build and test process and yes I know a lot of projects have this problem, that doesn't make it right.

  62. Production Testing! by Anonymous Coward · · Score: 0

    Basically change processes are out of control, where trust and competency are missing.
    I add there should be more than one proven change backout. Surprising how many change approvers approve anything - even without a backout plan.
    Why? the process has been dumbed down so well paid know it alls, can be replaced with simps. You get what you pay for.

  63. Different Tack by ytene · · Score: 1

    There's a wealth of excellent suggestion here already, but I'd like to take a different approach to answering your question. Put simply, start with you customer[s]. Your post does not mention but strongly suggests that this software is for in-house use. On that basis, identify your stakeholders and understand their appetite for risk and their desire to move forward quickly.

    As the old adage [of project management] goes: "Do you want this quickly? do you want this with quality> do you want this at low cost? Pick any two..."

    Once you have a clear picture of the risk appetite and operational demands of your client, you are going to be able to make some strategic recommendations about the way you go about developing software. However, one observation I would make is that whatever answer you finally come up with, one of the most important things to realise is that you can't "create" good software quality, it has to be controlled. What this means is that to drive up software quality, you have to apply the right controls to the right steps in the delivery sequence.

    If we were to go just from the text of your post, then we might recommend that you deploy some form of software configuration management (SCM) solution, such as Rational Clearcase or one of the many closed or open source competitors. This will give you "hands off" deployment of code to your Production systems, which means that you can then remove Developer [update] access to Production systems. Of all the things you do, this might be the single most powerful, because now you have created a control that requires all software to go through a formal change process.

    Once this is in place, you might then be able to layer additional requirements on to your process, such as "All changes to Production systems must be approved by the Business Owner of the application being changed". Or perhaps, "All change requests must be accompanied by a User Acceptance Testing Lead sign-off that the code has been tested and accepted." Or maybe, "All changes must be accompanied by a backout plan that has been tested in the UAT or QA environment". Sorry, this kinda assumes you have segregated environments. If you don't, well, good luck, I guess...

    These are, of course, just scattergun suggestions as to things you might like to take a look at. Without conducting an end-to-end risk assessment of your SDLC practices, it's actually difficult to know where to start. However, if you have access to any Industry Standards, then you might find lots of useful "best practice" advice. Among publications I would recommend, you might like to look at:-

    NIST Cyber Security Framework (CSF) Release 1.1 [Free]
    NIST Security and Privacy Controls for Federal Information Systems and Organizations (NIST SP800-53r4) [Free]
    COBIT 5 [Licensed]
    ISO27002 [Licensed]
    ITIL Service Management Framework [See Wikipedia reference Page, Axelos, etc][Licensed]


    In short, there is no shortage of best practice guidance out there. Your challenge will be to look at the size and capability of your organisation, at the risk appetite and budgetary tolerances of your sponsors, then go from there.

  64. Re:How Would You Stop The Deployment Of Unapproved by Anonymous Coward · · Score: 0

    Countries like North Korea would execute the deployment team.

  65. I'm somewhat in the same boat where I work. by aix+tom · · Score: 2

    From my experience I suspect the problem doesn't start with "The code being pushed into production" in wrong way, the problem starts with *Users* sending un-coordinated bug reports and feature request directly to the developers.

    Without some program/feature person "In charge" on the user side it feels pretty hopeless.

    The only solution I have come up with for me: Make sure that management KNOWS that without proper procedures in place the is an increased risk of bugs slipping through that might affect production code. It works pretty well so war. We have a few cases of bugs that affect production for a few hours each year, but as long as management understands they lose $X to bugs because they don't want to pay $Y for propper QA procedures, and it's *Their* decision to implement better QA when the cost of bugs increases too much for their tates, and don't blame the developers for it, then it works pretty OK.

  66. Trust by dmorgantini · · Score: 1

    It's a difficult concept I understand, but if you don't trust your engineers it might be time to consider getting new ones. Trust falls into 2 categories: They won't put the wrong thing live and when they do they will fix it quickly.

  67. Re:Official Builds. CVS Tags by Anonymous Coward · · Score: 0

    Let me guess, your codebase is written in Cobol?

  68. Not a developer problem by bothorsen · · Score: 0

    Look, this really isn't up to the developers to fix. This is something the management of the company has to understand and put a stop to. All of us developers loathe heavy processes, but when it comes to releasing to production, it's absolutely necessary.

    So my advice is to start working on the management chain of your company. You should tell them what happens right now, why this is bad, and explain that one day the production server will blow up.

    And nothing will happen. For a while. Because if they were clueless enough to let this happen in the first place, they are not going to fix it.

    But one day someone is going to push a fix that breaks everything. And then it's up to the developers to let management know that it's actually their fault, not the developer who pushed the fix. They were the ones who allowed this practice. But you have to be diplomatic about it, because just yelling "I told you so" won't help.

    The question is if you think this is actually worth it - if you like your job enough to take this fight. Because I would be so scared of working in a company that allows such a sloppy process, that I would seriously consider getting another job.

    Now I'm actually running my own company. And I can tell you that if this happens in my company, I wouldn't be mad at you for letting you know we are doing something wrong. But I would be mad at you if you didn't tell me. Sure, I know how to manage software, but in general there will be similar situations in other areas of the company where I'm not doing The Right Thing. A good employee tries to help by fixing things. A great employee helps the company to fix things.

    1. Re:Not a developer problem by Anonymous Coward · · Score: 0

      You blame management while at the same time stating the whole problem concisely: "All of us developers loathe heavy processes"

      Heavy process is what prevents bugs making it out the door in the first place. That you don't like to do your job is a very good explanation as to why it still happens.

      Do your job, and the problem goes away. Don't blame us. We're the ones trying to stop you from constantly fucking everything up.

  69. Code reviews: Just say yes by clay_buster · · Score: 4, Informative

    Good shops require at least tone reviewer for each code change. This paper describes the effectiveness of code reviews based on previous studies https://www.cs.umd.edu/project...

  70. Re:Linus Had A Good Talk On This In Relation To GI by Anonymous Coward · · Score: 0

    what is your alternative?

  71. Your using the wrong process model / you can't fix by Zero__Kelvin · · Score: 1, Interesting

    Our team size, structure and locations prevent having a single gatekeeper for code check-ins...

    Linus Torvalds disagrees. Your real problem is that you use Agile. Your process is broken by design. Study how the real professionals do it (Linux kernel) and you will learn a great deal.

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  72. How would a user test a fix before production? by rundgong · · Score: 1

    I don't really understand this development model "theory". Are users "end users" or are users in-house testers?
    If they are end users, how would they test the fix before it reaches production code?
    If they are testers and they don't test the fix, who the hell closes the bug report?

    Since you worry about errors getting introduced by merges, it sounds like you are also missing regression testing.

    If you don't do regression testing, and don't verify fixes on the release branch, what the hell is your QA department doing?

    I think the theory you are looking for is this:
    1: Users report bug.
    2: QA verifies the bug on the released code, and also that it exist in latest development code.
    3: Developer fix bug.
    4: QA verifies fix and close the bug report.
    5: Code Freeze. QA does regression testing, and verifies all new fixes still work as intended.
    6: Release!

    There is no need for a single gatekeeper to do merges. Your developers need to be competent enough that they don't routinely break stuff when merging. If they are not capable of getting a merge right most of the time, you need new developers.

  73. Pull requests by loufoque · · Score: 1

    GHE has a new mode where pull requests need explicit approval to be merged, and you can also prevent pushing to the main branch.

    1. Re: Pull requests by buchanmilne · · Score: 1

      New to Github Enterprise?

      Gitlab Community Edition has had this for about 18 months. Pull/merge requests can run automated builds including running tests, the results of which can be seen in the merge review screen. It can also be configured to auto-merge based on testing criteria (coverage, test results etc.).

    2. Re: Pull requests by loufoque · · Score: 1

      18 months counts as new to me, it's not like we upgrade that software every month.

      Nice attempt at advertising for Gitlab, but most companies prefer to use Github Entreprise.

    3. Re: Pull requests by Anonymous Coward · · Score: 0

      Nice attempt at advertising for Gitlab

      I am not affiliated with Gitlab at all, just a happy customer of some good open-source software.

      but most companies prefer to use Github Entreprise.

      Sample size? Gitlab claims they are used by 100 000 organisations, including some big and well-known ones (IBM, Red Hat, NASA, Sony, NASDAQ, Ericsson, AVG, Siemens, Uber, StackExchange etc.). And I think they have probably passed Gitlab in features now, e.g. I can't see any evidence of a pipelines-like feature (without 3rd-party integrations, which Gitlab also supports), which Gitlab gained about a year ago.

      If you haven't tried it, you really should.

  74. So ... your users are the QA department? by Opportunist · · Score: 3, Insightful

    Hey, not that it's anything unusual, but if you cut corners, expect to be sued for patent infringement by Apple. Or something like that.

    In all seriousness, though, if your USERS report bugs, you have a fundamental problem here. Because this is what it should look like:

    User defines specification. Programmer codes to spec. QA tests if spec is implemented correctly. Program ships. User finds something he doesn't like? It obviously has to be a change request, because the program does what the user specc'd.

    Yes, it is that simple. And yes, I'm fully aware that users don't have the first clue what they actually want. But they will never learn if you keep treating their blunders and imprecise specifications as if it was YOUR fault!

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    1. Re:So ... your users are the QA department? by Tablizer · · Score: 1

      User defines specification.

      For non-trivial projects, often users don't know what the hell they want. They may try to express it, but often express it poorly. After all, they are not experienced techies.

      What they really want is to see it in production, or at least a decent mock-up. That way the impact of their decisions can be seen directly. And often one can devise a better way to do what they really want, but it can take a while to understand what they are really getting at.

    2. Re:So ... your users are the QA department? by filesiteguy · · Score: 1

      Not quite that easy. User and analyst come together and define requirements. Analyst writes specifications, gives to developers, runs UAT with sprint and all looks good.

      Code implemented in production and unrelated issue occurs due to change in code that then forces some other item to be wonky.

      Bug.

    3. Re:So ... your users are the QA department? by antdude · · Score: 1

      Yep, it pissed me off when a dedicated QA doesn't exist. Hence, why so many issues. Speaking of QA, I'm looking for a QA testing job. :P

      --
      Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
    4. Re:So ... your users are the QA department? by Anonymous Coward · · Score: 0

      >What they really want is to see it in production, or at least a decent mock-up.

      I hate it if I find myself being used as a visualisation tool. If the marketing people could not visualise the product to the customers how did they manage to sell it, that's a mystery to me. Did they sell empty promises and hope for us to not only fulfill them but to also first conjure up a puppet theatre to the spec of their promises... dayum.

    5. Re:So ... your users are the QA department? by Opportunist · · Score: 1

      Yes, users don't know what they want. And this is THEIR problem, not mine. After paying through the nose a few times, maybe they start thinking BEFORE ordering instead of ordering "something" and then keep patching and tinkering with it 'til it runs as stable as a pig on stilts.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    6. Re:So ... your users are the QA department? by Tablizer · · Score: 1

      Yes, users don't know what they want. And this is THEIR problem, not mine. After paying through the nose a few times, maybe they start thinking BEFORE ordering instead of ordering "something" and then keep patching and tinkering with it 'til it runs as stable as a pig on stilts.

      Earth Living 101, Lesson #1: Humans are NOT rational.

      And, they'll blame the technician for not reading their mind correctly.

    7. Re:So ... your users are the QA department? by Tablizer · · Score: 1

      If the marketing people could not visualise the product to the customers how did they manage to sell it, that's a mystery to me. Did they sell empty promises [?]

      Yes, that's what marketers do. They are bullsh8t artists.

    8. Re:So ... your users are the QA department? by david_thornley · · Score: 1

      Users don't know what they want. That's YOUR problem, not theirs. After paying through the nose a few times, they'll find someone else who can do a better job and you'll be hitting the unemployment office. When you explain why you were let go, nobody will want to hire you for anything other than a junior-level position.

      You're responsible for providing software the users want. Providing software precisely to user specs is ducking responsibility and wasting effort.

      Users are paid to do their job. Their skills usually don't include systems analysis and requirements design. Those are relatively rare and somewhat expensive skills, and it makes sense to hire people with these skills and put them in a department where they'll use them routinely. As you get above junior level (we call it "associate" around here), you will be expected to be able to do more than just code to a spec. If you want to be a senior, you'll be expected to know the business well enough to make intelligent decisions.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    9. Re:So ... your users are the QA department? by david_thornley · · Score: 1

      Analyst writes specifications, gives to coders. Developers are normally expected to do more than translate a spec into machine-readable form.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    10. Re:So ... your users are the QA department? by Anonymous Coward · · Score: 0

      Code implemented in production and unrelated issue occurs due to change in code that then forces some other item to be wonky.

      Yep!

  75. Your users are NOT your test monkeys by Anonymous Coward · · Score: 0

    This wrong thinking is exactly why everything sucks today, and nothing works the way it should. Developers think it's the user's responsibility to QA their code, and that is simply not the case.

    First, it is an epic failure on your part if one of your users HAS to report a bug. It means you did not do your job.

    Second, if your users DO report a bug, you need to STOP EVERYTHING and get to root cause - not implement a bandaid "hotfix" that masks the symptoms while creating new bugs.

    Finally, you need to do this BY YOURSELF. It is not our job to "here, test this for me, test that for me." We don't work for you. You developers need to get over that and grow up.

    1. Re:Your users are NOT your test monkeys by Anonymous Coward · · Score: 0

      Everything sucks today because everyone wants their well-developed, well-tested software for FREE and expects updates every month. You are assuming that the company developing the software is getting tons of cash from their customers and can afford to have a well defined process in place where every step is fully staffed with competent people (i.e. earning market wages). Instead, the company is probably trying to survive on a bare-bones staff of unskilled programmers and testers simply because they can't afford the alternative.

  76. Wrong question by Bud · · Score: 1

    You don't want to make it even more cumbersome to change the code, as it sounds like you are already struggling with the 10 Mloc codebase. So forget about having humans "approve" the changes.

    What you want to do is make it easy to submit good code and difficult to submit bad code. This means that you will need the capability to quickly assess the proposed patch, for some definition of "good" and "bad". Computers are fairly good at this. In other words: test-first development, with automated testing on several levels.

    Bug comes in, you write an automated user acceptance test that FAILS. Then you try to find and fix the bug. When the newly added test passes, the bug is by definition fixed. Add a couple of unit/module tests, and a couple of UATs for good measure. Rinse and repeat.

    There's plenty of tools for this. All major platforms have the capability for programmatic reflection. Use e.g. Cucumber for the acceptance tests, and the relevant unit test framework for module/unit tests. In addition to the functional tests, try static analysis.

  77. Pull Requests by technomom · · Score: 1

    Unit tests and pull requests. Use them.

  78. Whips. by sabbede · · Score: 1
    Massive whips.

    And attack dogs. Angry attack dogs.

  79. Separation of duties by TomGreenhaw · · Score: 1

    Don't allow developers to promote code - that should be done by a specific role responsible for change management, code review and deployment. Use file system monitoring software to alert and log all changes.

    --
    Greed is the root of all evil.
  80. Start by managing user access by Anonymous Coward · · Score: 0

    1. Development team has access only to Development and Testing servers
    2. Testing team has access only to the application layer, not the servers
    3. Deployment team has access only to Testing and Production servers

    This way, developers can never deploy code changes to production servers. The deployment team should never deploy a code change without clearance from the testing team.

  81. Just spell out the rules clearly. by sbaker · · Score: 1

    Produce a one-page "procedures" document - clearly, but simply lay out the process in moving code from the programmer's branch to the QA branch and into the production branch. Have everyone read and sign it.

    The first time someone violates it, you give them an informal warning.

    The second time they violate it, have them sit down with management and HR and tell them that if they violate the rules again, they'll be terminated.

    The third time, you terminate them.

    Easy...no automation required...you simply have to cause a change in the 'culture'. Programmers are very good at following rules - providing they are clearly stated and obviously put in place for a reason.

    If you insist on there being an automated system...

    When I've worked on setups like this, we give programmers the rights to do what they like in their own working branch(es) and into the QA branch - but deny them access to the production branch. QA get read-access to the QA branch and are the only people allowed to check stuff into the production branch. Generally programmers get their build together at the end of a sprint - then at the start of the next sprint, QA check it out and either release it or punt it back to the programmers...have two week sprints instead of six so that this doesn't add too much latency into the bug fix cycle. If you're spending more time fixing small bugs than adding large features, then you can temporarily drop the sprint cycle down to one week - if major features are being rolled out - then push the cycle up to at most 3 weeks.

    --
    www.sjbaker.org
    1. Re:Just spell out the rules clearly. by david_thornley · · Score: 1

      The first time someone violates it, you find that another manager ordered it done. The second time, you call management and they say the guy did what he should have. The third time, you make it "him or me" and you really should be prepared for termination. That's how it will work in the typical company.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  82. Project Management System by Elixon · · Score: 1

    I am dealing with similarly sized project for last 13 years. Our workflow is different though. We have continuous updates (no batch updates) when it comes to bug fixing. We use our in-house Project Management system.

    - Client sends a request/bug report, our team creates new Task in our PM and
    - assigns it to department/programmer
    - programmer fixes it, tests it on Devel version puts the task to QC status
    - QC team tests described problem and greenlights deployment
    - programmer deploys/merges the fix into the live version and puts the task to Completed
    - QC team re-tests live version and notifies client of completed task

    Although there are few levels of fixes

    - trivial - we skip the QC status/QC test in the middle, programmer fixes it, tests it and deploys it with setting it to Completed which trigers QC team test and client's notification (really super trivial fixes, text typos etc.)

    - complex - when developing complex new features we freeze the deployment (blocking task) of other patches while the complex task is in QC status to avoid any conflicts during subsequent deployment - QC status ensures that the problem is tested by QC team in exact state it will be deployed and there will not be competing patches deployed before this one. But it blocks other patches. This one has high priority in our PM and gets fast-tracked before every other patch.

    There are many draw backs of every scenario but we try to keep healthy balance between speed/flexibility and super-stability. This yields good results. But the PM (project management) with good prioritization and tracking features is essential. It solves the problems with deployment/testing...

    --
    Well, I've got to get back to work. When I stop rowing, the slave ship just goes in circles.
  83. Baking, from a different perspective by Anonymous Coward · · Score: 0

    This may not apply for certain types of applications, but if you've got a million lines of code in an app, I'd consider breaking that bad boy up into a bunch of smaller, independent services. Instead of many fingers in one pie, with a finger-to-pie ratio of X, you would have the same number of fingers distributed across N pies, giving a finger-to-pie ratio of X/N. Would this be better for you? Fewer merge conflicts, independent (usually) release schedules, fewer interdependencies?

  84. Lots of details missing here... by p4nther2004 · · Score: 1

    What Source Control Management (SCM) do you use? (Git, SVN, etc? Do you use one?) What Bug Tracking system (Jira, whatever) do you use? (Do you use one?) What Migration process do you use? Do you use tools? I must disagree with another poster. Agile itself is not the problem. However, if your programmers, etc. are not disciplined....they don't all follow the process that everyone agreed to....that is the problem.

  85. CMVC ? by pedz · · Score: 1

    An old system from IBM called CMVC (which is still in use by the way) was not just an SCM but a bug reporting system as well as a build system. A defect is opened. Code changes are tied to that defect. When that happens test records are opened and sent to the person who opened the defect. There is also a verify record created. The build group can not build that defect until the test records are complete. Then they build it. Now you have a defect that is linked to the code changes and linked to a specific build (or builds if you have multiple branches of development).

    It does not prevent the problems mentioned above but it does clearly define who should do what when. Much like sbaker pointed out above. And then you manage the people involved to get them to do their part at the proper time.

    When the complaint comes from a customer the support person takes on the role of the customer and is responsible for the testing. This usually causes support to be broken into pieces. One is solely facing the customer and the other(s) take larger roles in the testing including sometimes setting up tests for the developers to use.

  86. differant code signing certs by Anonymous Coward · · Score: 0

    Require devs to sign code, but also have a separate cert used to sign stuff that is PROD certified. Once QA signs off, and the RFC is approved, have a trusted non developer (an info sec engineer maybe?) sign the code with the prod cert - then set your rules to not let the dev cert signed code run outside of their systems.

    1. Re:differant code signing certs by david_thornley · · Score: 1

      Why do we need signatures? You can use "svn blame" to find what I did without bothering with a signature. Code goes into the release branch and that is put into production when ready, all without signatures.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  87. This is easy. by Lumpy · · Score: 1

    you hire a person to be the gatekeeper that does exactly what you want.

    Sorry, but there is no cheap and free way to do this, it's called a project manager and they need to be competent and detail oriented.

    Devs sign off on the code and their own testing, then this person makes sure that the bet testers also tested and signed off on it, then they personally sign off that all is well and OK's publishing to a new gold release.

    Not hard to do, and requires your management to be competent and understand they need to spend money on manpower.

    --
    Do not look at laser with remaining good eye.
  88. Change the Culture and get a Change Review Board by Sean0michael · · Score: 1

    My organization a while ago saw significant issues with untested fixes being deployed and similar bad practices (undocumented configurations, lack of integration testing, etc.). The thing that did it for us was seeing our up-time drop below 99% in production systems. It became downright embarrassing and started costing us real $.

    So our then-CIO froze all production changes for 90 days. In that time, we instituted a change review board. They now approve all production changes. Without the culture change that came with the culture freeze, the new process might have failed. But we bought into it. And by putting them in as the gate-keeper, we now require documented QA approvals.

    So in your case, a Change Management process like this would help. But you'll also need to change the way people care about your production environment. You'll need both, but take heart - it can be done.

    --
    Funtime Candy Wow! - my plan for eventually conquering Japan.
  89. Blurred roles here by Senior+Frac · · Score: 1

    I think your difficulty is that your current work flow obfuscates two roles. You are using your Stakeholders (the users of your software) as the individuals in charge of acceptance. They're likely not motivated, or possibly not qualified, to do so really. Remember they're just interested in getting THEIR work done. If their workflow were "enlightened" like yours, then they might care about process... but probably not.

    The missing piece of the puzzle here is the role of Product Owner. An individual that works with your team in close proximity that prioritizes your work and helps you determine what the acceptance criteria are before you start. Your work is not done until that person accepts the work according to the criteria.

  90. Re:Your using the wrong process model / you can't by Anonymous Coward · · Score: 1

    How in the blue fuck is Agile the problem? Agile does not preclude have a single gatekeeper for code check-ins at all. Clearly you talk without knowing what you are talking about.

  91. Welcome to Software Development by utahjazz · · Score: 1

    This is the part of C++ that you can't learn in 21 days.

  92. I have an idea, call Rusia by Jerry+Diaz · · Score: 1

    Call Russia and ask them for some of those Gun-Shooting robots and install them behind your developers.

  93. Well-defined Devops. by netsavior · · Score: 1

    Developers code. Developers review code. Developers write code to test code.

    Developers can't touch production.
    Automated checks of ANYTHING are golden because you aren't relying on people, and you aren't pitting people vs people.
    It is all about consistency when you boil down to the bones of a well-running team.
    Start with those rules and actually follow them and you end up with a pretty awesome setup, because Developers will naturally gravitate to defensive, test-driven programming when those are the rules.

    1) All code is reviewed before it is merged, this is easily enforcable in bitbucket or github, probably others, but use one of these two anyway. It won't stop all your problems, but it is great triage and it forces lone-wolf mitigation. I don't even care if the reviewer is an expert... this isn't a gate keeper activity as much as it is a sanity check. "hey why did this variable get set, then re-set before you checked it?" or "hey how come you deleted 90 source files?"
    2) All your code goes through some kind of code-quality gate like Sonar Qube or some other Linting tool. This can find and highlight common mistakes, and get them fixed before they are even reviewed. Developers hate to modify a pull request, so give them as many free "oh if I fix this nobody will bother me" wins
    3) All unit tests must pass before code is merged. This is slightly tricky but you are going to need Jenkins or some other tool that is not as widely used as Jenkins; and integrate it into your bitbucket/github.
    4) All deployments are automated. Sure you can have someone push a button, but they shouldn't have to fiddle with anything. And whoever is pushing that button can't be a developer.
    5) Since your deployments are automated, your QA system is exactly like your production system (but maybe smaller scale) this way you are actually testing the thing as it will be deployed. "Kinda sorta how it will work in prod" is never a good test. If your QA deployment is automated, and the deploy is broken in QA, then you have to fix it before it goes to prod. Ideally your developers can't touch QA either, but you can work toward that.
    6) Since your developers aren't touching production, they will be forced to do things like: write actual helpful log messages, not make code changes that break the deploy, and reproduce production problems in Unit Tests so they stay fixed forever.

  94. In this case, yes by Excelcia · · Score: 1

    No, I'm saying that the comment "code ownership is so 1960's", which was obviously meant as a "get with the times grandpa" statement was improper. Good project management practices are timeless, and development strategies and disciplines from the past are not necessarily improperly applied to current projects. A certain amount of centralized command and control is necessary. Where that is applied depends on the technical and cultural aspects of a project. In projects with a strong central scope and well defined design, projects that have good change acceptance procedures and where developers are professional a more distributed and loose change creation process can be applied, a la Git. In projects where there is not a strong central change acceptance process and where the scope definition and design are loose, a much more rigid change creation process must be adhered to, like change management systems from the past (CVS, VSS). Like applying Gantt charts and other staging tools to the change scheduling process. Like anything except the "stick a bunch of developers together with a bunch of code together in a blender and set it to frappe" process that is being applied now.

    In this project (if it's actually a real project and not just another Slash-question carefully crafted to incite discourse), there is no viable command and control on the management end and there is none on the revision control end. Which leads to a project mired in anarchy as we see is the case. There are no tools that can help at this point. There is no substitute for a disciplined methodology. What was depicted in the question was completely unprofessional.

    To answer your question, reverting to punch cards would be a step up for this project.

  95. You are missing QE/QA in your process. by enjar · · Score: 1

    You are missing a quality engineering or quality assurance group -- a group that's independent of the developers and specializes in developing appropriate tests, test harnesses, test automation and also provides another set of eyes on features and bug fixes.

    Our process:

    Bug is reported or feature request is approved for developer to work on.

    Development cycle:
    Developer implements feature / fixes it. Ideally based on design of fix/feature, QE develops test plan/tests. A lot of work can happen concurrently. Some people even write the tests first, then code second.

    Code review code and fixes with other knowledgeable developers (and QE)
    Repeat this cycle till feature/fix and tests are ready.

    Fix is submitted to integration system with appropriate tests.

    QE (most definitely NOT the developer) verifies 1) software works 2) regression test actually ran. Ideally this is a completely separate QE from the one who did the submission, but this depends on resources.

    Software enters customer release process (dev and qe largely forget about it and move onto something else)

    Customer release process runs tests (or some representative subset of) against a consolidated build of "everything" to check for integration issues.

  96. Whole lotta wrong in that. by thesandtiger · · Score: 1

    The golden path should be:
    1) User reports a problem to the service desk.
    2) Service desk looks into the problem and either addresses it if it's user error or punts it to QA/testing.
    3) QA/testing investigates and documents as much as possible about the bug - replication steps, affected screens, whatever. They would do this both in production and a staging environment to see if it's an environmental issue.
    4) Developer takes the bug and figures out the issue, creates a fix, which is then sent back to QA/testing.
    5) QA/testing tests the fix in a staging environment and signs off on it.
    6) Fix gets deployed to pre-prod staging, QA tests it.
    7) Fix gets deployed to production, QA tests it.

    I get that in smaller shops devs tend to just push stuff out (I worked in a few of those) but that's really not a great way to do things.

    --
    Since I can't tell them apart, I treat all ACs as the same person.
    1. Re:Whole lotta wrong in that. by david_thornley · · Score: 1

      I was on contract-for-hire at a bank when I was told to advance something into production. What I didn't realize was that the production version had been changed on the fly, with nothing in source control. I'm fairly sure that's why the manager didn't want to hire me, and I know perfectly well that's why I didn't want to be hired there.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  97. Simple question... by Anonymous Coward · · Score: 0

    Hire bug testers?

  98. Re: by Anonymous Coward · · Score: 0

    The correct solution is to add the source code to systemd

  99. Use git branches and let each branch be tested ... by ThluksatorStrauch · · Score: 1

    individually on a staging environment. It would even be possible to fire up stage instances for each branch automatically.

    I don't see a big problem here.

  100. Re: Your using the wrong process model / you can't by Zero__Kelvin · · Score: 0

    Let me get this straight. You can't figure out how Agile is the problem and In the clueless one? ROTFLMAO. You can't take shortcuts and get good results. Agile is an attempt to do exactly that. Agile proponents are exactly the kind of clueless developers that actually believe you can't have a gatekeeper because of the reasons stated, and are completely unaware that it is being done every day and had been done for more than 20 years in the most successful software project on the planet.

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
  101. Just check the front page by Anonymous Coward · · Score: 0

    "How would you stop the deployment of unapproved code changes?"

    "Russia wants to send a gun-shooting robot to the ISS."

    If I remember right, someone even sells an automated nerf gun that will target and fire a dart at a person who breaks the build with his latest commit.

  102. Re:Linus Had A Good Talk On This In Relation To GI by ZenShadow · · Score: 1

    I use git for non-distributed development, and it works better than any other source control system I've used (and I've used quite a few). Has its quirks, but so do they all.

    I do miss $Id$, though.

    --
    -- sigs cause cancer.
  103. Pretty Basic Solution by Anonymous Coward · · Score: 0

    Last company I worked for had a very empowered group called "Change Control". No fixes to production without their approval. Emergency fixes could go in but were vetted and tracked. It's overhead, but if you truly care about the production environment and are measured on downtime with penalties, it's the only way I know of.

  104. Add code review to your definition of done by Frans+Faase · · Score: 1

    At the company where I work, we review each other code changes. If you are using Jira (or similar bug tracking system) it easy to introduce a review step. If you use a code management system (and you should) you can do development in branches and have the reviewer (who preferable also performs a test by checking if the scenario mentioned in the bug report now works correctly) merges the branch to development if no problems are found. Otherwise the issue is reverted to open. Code review is a very powerful technique for finding bugs. It also helps understanding the code base, because developers tend to be drawn to certain parts of the code, often to the point that they are considered the owners. Code reviewing code written by others also helps you get better at developing software, because often you will find solutions that you had not thought about yourself. And because you review each others code, the learning goes in both directions. I sometimes spend more time on reviewing code than the fixer spend on solving the issue. Often I walk over to the developer to ask some questions, why he or she has chosen a certain solution. Sometimes, they give a good answers, sometimes it leads to a short discussion, and it even happens that the developer him/herself realizes that there is another case that will go wrong as well, and that the bug needs to solved in a different way. If you are using Scrum or similar development methods with short cycles/sprints, make code review part of your definition of done, meaning that an issue is not demonstrated as fixed (or included in a release) if it has not been code reviewed.

  105. Test code required by jraff2 · · Score: 1

    Make it mandatory that the test for the error be part of the submission, then the developer has the code to test for the error/bug/problem etc. Yeah it might get problematic, but better to have the error actually checked than not.

  106. Re: Your using the wrong process model / you can't by Anonymous Coward · · Score: 0

    You sound old. Maybe it's time to retire.

  107. Problem solved by Anonymous Coward · · Score: 0
  108. corporal punishment by OrangeTide · · Score: 1

    Most developers respond strongly to physical pain.

    --
    “Common sense is not so common.” — Voltaire
  109. Ummm... by tlambert · · Score: 1

    > 552 Fuck off -- the requested action was requested by a dweeb

    Obvious much?

  110. Feature Branches, Release Branches by Afty0r · · Score: 1

    Each "change" (whether it is a fix or new feature) can be developed within its' own branch.

    This branch is then deployed to one of your UAT environments for user testing (once it has passed QA, static analysis, code review etc.)

    When the time comes for a release, you "roll up" your approved feature branches by merging them into a single release branch. On this branch you carry out extensive QA and regression testing. This is then the branch which is released (deployed).

    Using this method any changes which have not been APPROVED as a feature branch never make it into your final deployment package. (though they still exist and can easily be added in future by merging).



    (note if you have limited number of UAT environments this becomes complex and needs a schedule and conflicts can occur - or proper devops and more environments).

  111. DevOps by Arkham · · Score: 1

    You make it so there is only one path to production. Use CI/CD with build promotion based on criteria. Don't give anyone the ability to install production code directly. You install code, configuration, and settings the same way -- though source control

    1. developer writes code
    2. developer creates pull request
    3. request triggers a build that runs unit tests and static analysis
    4. on success, code review is performed
    5. on success, build is merged to release branch, which causes build promotion to QE environment
    6. on successful testing, artifact of QE process kicks off build promotion to staging
    7. performance tests and integration tests are run
    8. artifact of successful integration tests cause build promotion to production

    If you have a process like this, it's simple and nothing gets into production that should not. This goes for configuration changes too.

    --
    - Vincit qui patitur.
  112. Nothing trumps the boss saying "Make it so" by Anonymous Coward · · Score: 0

    So I did, despite the code changes being untested as the key tester was in India getting engaged. It broke production and I had to figure out how to "backtrack" the codebase before the last set of changes. Unfortunately, the release process had no 'revert to last working version'. I stayed late to get production back up sans the changes my boss wanted (because a customer was waiting for them). The code still didn't work until the weekend and my boss wanted me to push it then. But as a contractor, I don't work weekends, so I said no. Pushing code changes on weekends is also a Bad Idea(tm), IMHO.

    Then I had a discussion with him about this mistake and new requirements for me to 'stay until it's fixed' because now we have paying customers instead of demos. I could have told my boss "You made this mess. You fix it.", packed my desk, and left, but I decided to stick around and be professional about it. I lasted a week until they had another emergency and "ended the contract". In my case, their needs changed from a build engineer to a customer support role, which I couldn't do.

    How to engineer around this? Be ready to roll back changes, which we couldn't do easily. Have a Change Control policy for each scheduled outage and be ready with a contingency plan to revert to the previous version. Murphy's Law will always win.

  113. An ounce of prevention is worth a pound of cure by raymorris · · Score: 1

    Companies that don't do testing and code review spend 80% of their time running around putting out fires. There are other fires they don't even know about yet.

    Companies who do code review spend 10% of their time on that, and their developers stressed out all the time trying to put out fires.

    Doing it right is much cheaper than doing it over.

  114. Doing it right is faster than doing it over by raymorris · · Score: 1

    > a lot of risks are eliminated or realized before things go out the door; in practice, this means a fairly conservative and slow development process.

    At one place I worked, we were very fast at getting new requests developed and out the door - because we weren't busy fixing the code we shipped six months earlier, and the code we shipped last week. So it may *look* slow if you watch a careful process in action from minute to minute, but it's much faster on a macro scale - features get released sooner when developers aren't running around putting out fires that they themselves kindled.

  115. Re: Rip the ethernet out by Anonymous Coward · · Score: 0

    Face punch

  116. Re: Give all the users AIDS by anorectal insemenat by Anonymous Coward · · Score: 0

    Whole hand? Have fun with that huge cage. That's not good in the case you didn't know.

  117. Well... by Anonymous Coward · · Score: 0

    Before code is released to production, you need to have it properly tested. The tester must not be the same person as the one who modified the code as he simply is too likely to be blind to flaws in his code. Depending on what code was modified (complexity, where it resides, etc), you may need to have it reviewed by one or more area experts. Note that the review must not consist of the developer stopping by their desks and asking "could you take a quick look at this". Doing that guarantees that they will quickly read the code and say "that looks okay" without really considering the potential effects of the change.

    There is no substitute for properly reviewing and testing code. If management is not willing to support that consistently, or is willing to skip it when it's inconvenient, there is no way to fix it. You can either live with the consequences or go work somewhere else.

  118. Not Your Circus by Anonymous Coward · · Score: 0

    Oh my, NO ONE has thought about the problem of un-approved code changes! Stop the presses! We need a Scrum meeting Right Now to address this emergency issue!

    The OP does not have a technology problem, they have a political problem. If the OP were in charge of this problem (clearly they are not) then they would be able to fix it. Since the OP isn't in charge, they can try and convince those in charge that there is a problem. If Those In Charge do not agree then the OP needs to document the result and move on in life.

    Is there a day that goes by that I'm not faced with a political problem, that I wished had a technological solution? Or even a political solution? Welcome to the real world.

  119. Product Owner(s) by stardaemon · · Score: 1

    The product owner is simply an individual responsible for the product.
    Users report bugs to the product owner, not the dev.
    The product owner is then responsible for any requirements updates, scheduling of developer(s), test(ers) and whatever else might be needed.

    --
    The only way to stay sane in an insane world, is to be mad yourself...
  120. Back in my day... by Anonymous Coward · · Score: 0

    There were these things called software design engineers in test (a.k.a. QA) and they were an integral part of the SDLC, which went something like this:
    1. Bug reported
    2. Bug triaged
    3. If triage-approved for the current release cycle, bug investigated, fixed, and unit tested
    4. Bug-fix tested in local-builds by QA, including localized regression testing
    5. Business/product owner approval sought, if needed
    6. All bugs triage-approved for the release cycle integration tested by QA (including full system/product-wide regression testing)
    7. Release milestone criteria scrutinized and, if met...
    8. Release deployed

    But, that was back in the dark ages. Now, in the age of enlightenment, we don't need testers or release cycles. Just fling the crap against the wall. If it sticks, it sticks. If it don't just roll it back.

    Oh, and get off my lawn.

  121. Solved years ago by ebvwfbw · · Score: 1

    This was solved at least in the 1980s when we used to do it. The solution is to freeze the code. Pick a date and at that point the source code is frozen. Move it to a test machine if you have to, however no new changes are allowed. Build it and test it. If it's good (and therefore approved), release it.

    I think we used to use sccs, however any revision control system will do. All of us developers had our own tree. In fact, the entire tree, linked file by file,dir by dir. This was back in the days when the largest drive you could get was a couple of gig, maybe not even that. I could check out my own version of code, update it and compile it all into my version of that program for testing. There were maintenance commands to resync all the links and such to stock, update the real source tree and such. Every night a new version would build. This was world wide.

    If your asking about just some guy changing code on his own, a rogue guy, that's a daily management chore for someone (that isn't responsible for coding, a separation of duties). You'll have to rsync everything to someplace you trust to be the authority. Someplace the other people can't get to because some people will play games. Then check it all for a status to see what's changed. Do you have approvals for all the changes? If not, roll it back, find the offender and have a little talk with them about that. If everything is approved, check it all in. Make sure all of this is kept track of every day. I do this all the time. I had a case a couple of years ago that a manager swore his machine was set a certain way. I had subversion control over it. I told him how the machine was set up from day one to today. He was right, it was set up the way he thought years ago. Then about 2 weeks later he changed it to the way it is now. I had the change, date, even his e-mail and ticket to change it. So it was approved and he knew about it. He thanked me for my efforts and moved on. You have to be able to do this. Developers are great people, very creative, smart, etc. However sometimes they can be real assholes. Especially young ones that never make any mistakes and it could be years later and they don't remember. Once you show them, they're fine. No problem.

    Good luck.