Slashdot Mirror


On Getting Management Interested in Improving Quality?

npoole asks: "Like many of the Slashdot readers, I am a programmer and have been pushing out repetitive database content for about a year. The work simply doesn't stop and the more we get it seems the less we ensure quality work. I have been debating telling my boss that either we take less clients, less money, more quality work or I am leaving. Is this a smart thing to do? I'm making very good money doing quick hacks to push out websites, but it's not very project oriented as much as it's become 'throw in pre-written, pre-used functions'. Any advice on how to ensure quality in our work without telling my boss it's either my way or the highway?" Of course, improved quality in any product affects the bottom line, and it's the bottom line that managers are paid to keep up. How can a developer communicate to managers (both open and closed) the value of better quality in development, and how long should one try before giving up?

8 of 270 comments (clear)

  1. As a manager... by Anthony+Boyd · · Score: 5, Informative

    ...I would suggest that this economy is no longer the kind of economy that will support an employee dictating "my way or the highway". It is very likely your supervisor will pick "highway" even if you're very good, because there are many, many highly-qualified candidates now coming into job interviews. It wasn't like this a year ago. I realize other slashdotters may challenge me on that, because it's not a very nice thing to tell someone that they're possibly expendable. However, your boss may very well think that way, regardless. So be careful.

    In addition, the "good salary" you claim to be getting may be due to the fact that you're churning out sites fast but charging the same rates you did back when you custom-built them. By asking to change the process, you may be getting a change in salary too.

    Finally, don't forget that object-oriented, modular programming is supposed to make cookie-cutter work possible. If you're reusing your code over and over, sure, it could be sloppy, careless work, but it also may be that you've got a system working well and just object to the monotony more than the code. If that's the case, ask to be put on different projects, rather than taking a hard-core "reform-or-I-walk" stance.

  2. Are you nuts? by Keck · · Score: 4, Informative

    In just about any organization you have leaders and you have workers. It sounds like your boss is saddled with the responsibility of being a leader, and you have the role of a worker. For that reason *alone* it would be well worth your time, money not to stick your opinionated nose in where it doesn't belong. Don't get me wrong, I'm on the same side of the fence that you are, but rarely does an approach like you suggest end up making any change for the better for *anyone* involved. It may be that your company makes more money doing quick hacks; in the long run if they think they can make more money doing project based non-hacks, they will. If in the long run your clients finally realize that more careful planning up front is worth it's weight in gold down the line, they will go that route too. You can't control the average intelligence around you, you just sound like the fool on the hill... trust me on this one.

    That said, I think a better way to look at this is
    a) ignore the money aspect (both yours and your employers) Always trust that a business will do the thing that makes it the most money. You won't change this in the near term. If the money is that important to you, you should either stick it out or try to find a job that pays similarly doing something you *enjoy*
    b) If you aren't happy doing what you are doing, look for guides on the web that give professional suggestions about how to bring it up, what to do and not do, etc. with your boss. do NOT just give an ultimatum, especially not in public company
    c) If in the end, after rationally sitting down with your boss and explaining your position in a professional manner, you still aren't happy with the work, and your changes don't make business sense for them (even if you still know you are right -- you can lead a horse to water and all that) maybe you should consider leaving! It doesn't do much good to be in a job you don't enjoy.

    --
    A computer without Microsoft is like ice cream without ketchup.
  3. Only the customer can do it by rjamestaylor · · Score: 3, Informative
    Only the customer can get Management interested in quality. You can be as quality conscious as the allotted time allows, but that's it. Especially in today's marketplace -- there is little to no margin for navel gazing.

    Now, if this bothers your conscience or you just prefer to not be associated with "good enough" work, do seek employment elsewhere.

    If the client hasn't budgeted for overages due to quality assurance, your boss will ignore your pleadings.

    --
    -- @rjamestaylor on Ello
  4. XP, baby. by AugstWest · · Score: 3, Informative

    I have worked for a small software shop for 3 years now, and we recently started implementing Extreme Programming into all of the development.

    Ths difference has been astronomical. Deadlines are more realistic, the our releases are far more stable, and basically, the whole "chaos" of development seems to have taken on an organized form that makes everyone happy, even our extremely hyper CEO.

    It's customer-driven, it's organized, and it has simplified life at the company immensely. I'm not a shill for it, I'm just relating our experience.

    I would highly recommend picking up a couple of the XP books. There are several chapters devoted to how to sell the idea to your bosses, as well as recommended means for showing them how well it's working, which is essential when dealing with people who are obsessed with ROI.

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

    It's been a couple of weeks since my last analysis of slashcode's deficiencies. We've all seen the evidence of Taco's totalitarian methods. Now let's look a little deeper at his incompetence and short-sightedness as a coder. To paraphrase Taco's words to Anne Tomlinson, was he dropped on his head at birth?

    Part 1: Why is Slashdot the only site on the internet that DOS's itself?

    I'm sure you've all noticed the frequent protracted outages over the last couple of weeks. Many have demanded an explanation, or at least an acknowledgement that something has gone wrong. Slashdot has been down for hours at a time, but the editors act as if nothing had happened. Since Rob "Cmdr. Whitewash" Malda and friends aren't willing to open up to their readers, it's up to me to give you the dope on why Slashdot is such a piece of crap.

    The problem is of course, MySQL, as we have always suspected. mod_perl is another slice of the problem, with the last factor in the equation being unscaleable hardware.

    MySQL + mod_perl + PC hardware = crash

    MySQL has long been a favourite among people who want to set up a database backed web page, but are too cheap to pay for oracle. It has a reputation for serving up pages quickly, which it does admirably on sites that have low loads. As the number of connections to the DB increase past 50, MySQL seems to lose a lot of stability. In fact, it is not uncommon for it to crash and lose data in some circumstances.

    In most circumstances, this isn't a problem for slashdot. It's rare for the site to reach more than 50 connections, however it does happen. It is at these times that slashdot has an increased tendency to experience the slashdot effect firsthand. The reason is that while mod_perl isn't quite a replacement for a proper middleware layer. mod_perl includes persistent database connections, but these are irrelevant. MySQL is known for it's high connection speed, and persistent connections don't really lift it's game much. They also don't solve the problem of handling excessive connections. When mod_perl runs out of open connections, it just opens another one. In other words, mod_perl does nothing to protect the MySQL database from overload.

    The other problem is the hardware. A site like slashdot, receiving approximately 600 connections per minute should be running on high end enterprise hardware, not PC hardware. Taco has tried to overcome this with clustering, but this has limitations in an IO intensive area like running a website. PCs are not known for having good network performance, and this is one area that cannot help but cause a bottleneck, particularly when the site is running under load. One advantage of running on Sun or IBM hardware is that you get good IO performance combined with the ability to utilise multiprocessing. Running your site spread over 12+ low-end machines in a network just isn't anywhere near as good.

    Compare slashdot to any other high traffic site. Amazon.com for instance. Have you ever seen amazon go down for four solid hours without being DOSed by canadian hackers? Amazon copes with their load because they run a sensible database, a well-designed front-end and hardware that can cope with the load. Thanks to the open-source ideology of this site, only one of these options are open to the administrators. PostGreSQL would reduce the number of crashes, however it is about 3 times at dealing with individual connections as slow as MySQL.

    Essentially, we have a situation where the site is periodically hit with a large number of simultaneous connections, and they cause the database to keel over and die. This does not reflect well on Open Source software, and puts this site in the ironic position of bringing disrepute upon Open Source though their success at evangelism. It's no wonder the slashdot editors are unwilling to acknowledge their site's incredibly fragile nature.

    I'd like to make it clear at this point that I don't actually know for sure that this is what's happening. For all I know, Taco is working on the code that is running on the actual slashdot server, and keeps breaking it. I'm just making educated guesses here.

    As a bonus final note to the first half of this bumper double issue, has it occurred to anyone else that this site's codebase shares it's name with a slang term for homoerotic fan fiction? Linux gay conspiracy indeed!

    Part 2: What in holy fuck?! search.pl under the microscope.

    I have conclusive proof that Cmdr. Taco. is a gibbon. search.pl [slashcode.com] and Search.pm [slashcode.com]. Here's something cool for you to try at home: go to the search page, and search for all comments containing the word "competent". Now wait a few seconds. Wait a few minutes. Go grab a bite to eat. When you come back, it should be done.

    Yep, this is the slowest search page in the universe. If you didn't believe me last time I told you that Malda has all the coding ability of a starving five year old from Ghana, you will believe me soon.

    OK, you don't need to look at search.pl. All the meat is in Search.pm, and this time it's nicely placed at the top. Find the _keysearch function. Notice the for loop in there. What that loop is doing is constructing a "LIKE" clause to insert in a query string. It surrounds every word you entered into the search field with wildcards and uses them to search against comment text and title. This is then used in the findComments function as a clause in a select query which searches the entire comment database.

    I have two major problems with what Taco has done here. They are as follows:

    1. Even retards are laughing at him for writing code this fucken stupid.

    2. LIKE queries are slow. They are text substring searches. They can't be optimized very well by databases like MySQL. These systems simply aren't designed with this sort of thing in mind, because for applications that aren't designed by twits, this functionality is seldom needed, and best implemented in an application specific way. Let me reiterate what's going on here. Slashcode is performing a substring search on every comment and comment title in the entire database. That is, too put it mildly, a shitload of text to search through. It cannot be done quickly, as our little demonstration should have proven to you. It is an idiotic thing to implement in a web page like slashdot, and Taco should be hanged by his testicles for having even had the idea.

    You're probably thinking, "Hey, wait! Doesn't google do this sort of thing all the time, with incredible speed?" Yes, google does, but google's developers actually took the time to implement data storage methods geared towards fast search and retrieval of data based on substrings. Examples of this, for those who care, would be digital search tries and ternary trees. These are the best methods I know of off-hand for implementing the type of search slashdot is providing. Evidently Taco doesn't know of them, but that's hardly surprising, since gibbons can't read or study computer science. I also doubt that they can be implemented efficiently in perl.

    I didn't think I'd be able to find a clear, simple example to top the postercomment compression filter's ability to demonstrate what an imbecile taco is, but I guess I understimated him. This is without a doubt, the dumbest thing I have ever seen in code anywhere.

  6. Suggested reading, Parnas' "How to fake it" by crath · · Score: 3, Informative

    In 1986 David L. Parnas and PC Clements published a paper entitled, A Rational Design Process: How and Why To Fake It. Parnas and Clements present a strategy for imposing overlying order upon the often fractured development process; the goal of which is to produce better software. Doing snippets of work for managers/clients who don't care about quality as much as they care about costs is often a cause of this fracturing.

    I couldn't find a copy of the paper online, but it has recently been re-published in Software Fundamentals: Collected Papers by David L. Parnas.

  7. Re:Two ways by warp1 · · Score: 2, Informative

    Your close, the correct sequence of events is:

    1. Identify the problem(s).
    2. Collect data to support your claims, use forms, i.e. number of unitialized variables in code X on date mmddyy, etc.
    3. Write your report, preferably in the form of charts. Don't forget to keep copies for yourself.
    4. Submit your reports to management, 2 separate managers to create accountability.
    5. for(;;)

    congratulations, you are now the first member of the quality assurance team.

    This way you will have an impact on the other programers. Oh yea, one last thing .... duck!

    Kevin Myers
    aka
    Warp1
    Tracer Bullet
    Spaceman Spiff
    JW Black
    And any body else I want to be.

  8. Re:profit level is hard to argue against by A.Gideon · · Score: 2, Informative

    This is a good point. You need to see - and explain - this from a business perspective. As someone else mentioned, it sounds like what you're doing is subject to automation. But when you propose that, do so not for the purpose of "prettier code", but more rapid production.

    In other words, you'd be able to handle *more* clients for the same cost. In fact, you'll not only be able to handle more of the cookie-cutter stuff (which will, btw, improve in return for your form once this is automated), but you'll also be leaving yourself (and other developers) free for the non-cookie-cutter work.

    It would also help if you've post-development cost factors to which you can point. There are many different forms these can take. How much does it cost to maintain the systems your clients are using, how much does it cost to add new features, how likely are clients to shift asway from your products - and therefore your company - as they grow or change, etc.

    One trick I've often used is simply a special case of iterative improvement. Each time we reuse a cookie cutter, we learn more about it. We therefore improve it. Perhaps we add a feature, or make it easier to extend in a new direction, or improve the automation of cutting the cookies. The cost of this work is covered by the client, but all clients - past and future - receive the benefit of the work. That translates to your company receiving the benefit of the work.

    This can actually be quite challenging. You're not just cutting cookies, but improving all of the tools used. This then takes you in the direction of better automation, etc., that I discussed above.

    There's really a lot of room here for you to maneuver. But just remember to see and explain things from a business perspective. Unless you've technically savvy managers that will perform the tech->business translation themselves, you need to explain things to them in a language they understand.