Slashdot Mirror


"Quick 'n Dirty" vs. "Correct and Proper"?

A not-so Anonymous Coward enters this query: "I keep finding myself on projects where a quick and dirty solution will bring in money for the company, and a correct (ie, properly documented, well engineered, process followed, etc) solution will get us left in the dust. When the Q&D solution succeeds, I'm left trying to explain why it can't be the FINAL solution (to PHBs and Marketroids that were fully informed of the situation prior to any work getting done). Most recently, work I did in record time was used to help bring in several large contracts, and then I found myself in hot water for not having followed process et al. So, to Slashdot: is it better to do the quick thing and greatly increase the chance of $uccess now, or to do the correct thing and avoid pain later (assuming there is money to pay for the pain later)?"

887 comments

  1. Passion is the key - if you're passionate, release by Jouster · · Score: 4, Offtopic

    You just found out that your father, who is in perfect health and has raised you for as long as you can remember, is not your real father. Your real father is somewhere, nobody knows where, and either dead or nearly so. The feeling that you get imagagining that scenario is the reason that I strive to ensure information never dies. It's why I cry when I see a house torn down, and it's why I cry when I think of the fathers of my chosen discipline dying off one-by-one, leaving behind only what programs and books they've managed to produce. And it's why I'm scared that one day I'll wake up and find that there's a piece of me, the fruit of my heart and mind, my program, my son, that, if I don't track it down, will be lost forever.

    Passion! Passion is the key! If we are passionate about everything we do, we leave behind a wake of people inspired by our passion, inspired not by what we've done but by *how we've done it*. Passion yields fruit so ripe, its benefactors need remember only our name, because they can but speak it to a person who has known us, and the passion comes alive from us through them! Passion, not persistence, not training--not any of those things, though they are certainly important. Nothing but passion can lead us through to a place where our name connotes the good, endorses the worthy, and gives rise to those not only capable of following in our footsteps, but with their *own* passion, born of ours, to do so right.

    Passion is the key. Be passionate now. If you aren't passionate about what you have written, if you aren't fighting the irresistible urge to hold it up high and have the world marvel at its brilliance and beauty... then you have failed, and you mustn't release that code.

  2. memo by albeit+unknown · · Score: 2, Funny

    Did you get that memo about the new cover sheets on the TPS reports?

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

      1) Make Office Space Reference
      2) ???
      3) Get modded up!!!!

    2. Re:memo by suso · · Score: 4, Funny

      Hey, did you get that memo about the TPS reports? Well it's just that now we're putting a cover sheet on them and if you could do that in the future it would be great. Thanks...

    3. Re:memo by cK-Gunslinger · · Score: 0, Redundant

      What's this I hear about you not putting cover sheets on your TPS reports? Didn't you get the memo?

    4. Re:memo by Doug+Neal · · Score: 1

      What is "office space"? I've seen it mentioned a fair bit recently here on slashdot... I'm guessing its an American thing? (I'm English)... anyone care to fill me in?

      (I'm really not trolling, I honestly don't know!)

    5. Re:memo by Cyclometh · · Score: 1

      Office Space is a movie made by Mike Judge. Think live-action Dilbert, only darker and funnier. I highly recommend it.

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

      Peter Gibbons... Yes, I have the memo.

    7. Re:memo by Chuq · · Score: 1

      Redundant??? Someone hasn't seen Office Space. Redundancy is the *point* of the TPS report memo joke :P

      --
      - Chuq
    8. Re:memo by ralphdaugherty · · Score: 1

      What is "office space"? I've seen it mentioned a fair bit recently here on slashdot... I'm guessing its an American thing? (I'm English)... anyone care to fill me in?

      It's the space where your offices are. No, I'm not being sarcastic. :) It might be used as "we need more office space", where office has a type of plural or collective meaning, not just one office or a particular office.

      If one office is being referred to, "I need more office space" means "I want a bigger office". At least that is what I imagine PHB's who have offices say to each other... :) btw, I have no idea what the parent post meant when they said mentioning office space here gets you modded up.

      rd

    9. Re:memo by ralphdaugherty · · Score: 1

      Office Space is a movie made by Mike Judge. Think live-action Dilbert, only darker and funnier. I highly recommend it.

      thanks, now I know why the references here. I'll look for the movie.

      rd

  3. One reason why we need to absolve money by suso · · Score: 3, Interesting

    This is one reason why we as a society need to find ways to get rid of this need for greed and wealth and money in general. Otherwise things just keep running into the ground.

    1. Re:One reason why we need to absolve money by Capital_Z · · Score: 5, Insightful

      What you describe is not a social problem - it is a human nature problem.

    2. Re:One reason why we need to absolve money by TripleA · · Score: 1

      You are saying Capitalism must go, right? It's a giant lap to go, especially for the US.

    3. Re:One reason why we need to absolve money by Otter · · Score: 2, Informative

      Sure, if "not-so Anonymous Coward " would quit his job and do those projects as acts of charity instead, there wouldn't be any problem. On to the next question!

    4. Re:One reason why we need to absolve money by El · · Score: 1

      They tried that -- it didn't work. Remember the Soviet Union?

      --

      "Freedom means freedom for everybody" -- Dick Cheney

    5. Re:One reason why we need to absolve money by Xerithane · · Score: 2, Funny

      This is one reason why we as a society need to find ways to get rid of this need for greed and wealth and money in general. Otherwise things just keep running into the ground.

      Yeah, but in a world where trade is the dominant form of currency, professional programmers are useless.

      I've worked on a farm, I'd prefer not to go back. Besides, we gave you people Berkeley, can't you just stay there?

      --
      Dacels Jewelers can't be trusted.
    6. Re:One reason why we need to absolve money by Elwood+P+Dowd · · Score: 1

      Berkeley would be perfect, if it weren't for all those assholes. I vote that we send them all to Santa Cruz where they can't do any more damage.

      --

      There are no trails. There are no trees out here.
    7. Re:One reason why we need to absolve money by darkscorp · · Score: 1

      You say tomAEto, I say tomOHto... is there really any difference between a social problem and human nature?

    8. Re:One reason why we need to absolve money by Egonis · · Score: 1

      The only true problem, and it's a big problem, with Communism is:

      - Humans are competitive animals
      - We have a desire to excel in society
      - Corruption exists in all societies

      The Soviet Union collapsed only because it had been corrupt from the start... resources were not distributed equally, in the fashion that the true Marxist Communist theory dictates.

      I believe that Communism, or more correctly now.. Socialism can be implemented in small clusters, and works for the small clusters.

      Perhaps a micro-socialist system could be implemented for those who are out of a job? To give them a job within a co-op, where they can create their own jobs, train themselves from the resources made available; a safety net for the unemployed, at almost no cost to the government.

      My two cents... See the irony here?

    9. Re:One reason why we need to absolve money by bih · · Score: 1, Interesting

      The desire to accumulate wealth is not human nature. Humans weren't doing it for thousands of years in the era before recorded history. Native americans weren't doing it either.

    10. Re:One reason why we need to absolve money by aelfwyne · · Score: 2, Funny

      >Perhaps a micro-socialist system could be
      >implemented for those who are out of a job? To give
      >them a job within a co-op, where they can create
      >their own jobs, train themselves from the resources
      >made available; a safety net for the unemployed, at
      > almost no cost to the government.

      This exists. It is called by various forms - Usually a college or a University. If you're really lucky you don't have to pay it back later when you're no longer jobless. If you're unlucky you get the honor of living in concentration camps known as dormitories for 4 to 6, and then have to pay them back for mistreating you after your time is up.

      --
      -- If it ain't broke - overclock it more.
    11. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0

      How about if I second the parent post?

    12. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0
      communism might work in a small society of dedicated people (eg 10 hippies living together, or a monastery, or a cult). But once thousands of people and a gov't are involved, not everyone will be fully dedicated to the cause, no matter how much brainwashing they might try.


      The sviet union collapsed because they tried to compete with the United States. My uncle lived in the USSR in the late 80s/early 90s, and their were shortages of food and housing. In Capitalism, we have an efficient method of dealing with supply and demand by raising prices. In communism, you're stuck with shortages or overproduction, unless the gov't beaurocracy can predict the exact demand.


      In capitalistic USA, the blalance between guns and butter could be met. In the USSR, they fell short on both.

    13. Re:One reason why we need to absolve money by AssFace · · Score: 1

      "money" is just the current term that we use to refer to a single form of barter.

      were you to get rid of money, people would then just revert to a more diverse bartering system, which would not solve what you see as an overall problem, and in fact would then exacerbate the issue due to the inefficiency of the system (and hence why societies have moved to the stanard backed currencies instead).

      your statement is a cop out, and so incredibly lacking in... well, logic, that I'm going to give you the benefit of the doubt and assume that it should be taken as a joke.

      Either that or assume that you were totally lost in much of any econ, psychology, history, and perhaps even science classes that go into great detail on the dynamics at play and why things have moved the way they have.

      --

      There are some odd things afoot now, in the Villa Straylight.
    14. Re:One reason why we need to absolve money by digitalsushi · · Score: 2, Funny

      I'll think about that next time I'm in a casino on the east coast *owch rimshot*

      --
      slashdot: where everyone yells sarcastic metaphors to themselves to understand the issue
    15. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0
      The sviet union collapsed because they tried to compete with the United States. My uncle lived in the USSR in the late 80s/early 90s, and their were shortages of food and housing.
      ...As opposed to today's United States, where there are just shortages in housing...

      That might sound a little flip, but let's be realistic here: the US is not an earthly paradise, and Capitalism has not shown itself to be the be-all and end-all. There are millions of homeless people in the United States, and millions more that are not getting enough to eat every day. How come they are never mentioned in the comparisons of the social systems? Could there be a little brainwashing involved?
    16. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0

      human nature is for the most part fixed (and problematic).

      social problems are the result of human nature doing its thing in different contexts, when there is more than one human around.

    17. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0

      I nominate you as the most retarded poster on slashdot. Any seconds?

    18. Re:One reason why we need to absolve money by MrLint · · Score: 1

      a $5 bill walks into a confessional and says.....

    19. Re:One reason why we need to absolve money by Arandir · · Score: 3, Informative

      Native americans weren't doing it either.

      The culture of the Pacific Northwest Indians revolved around ostenatious display of wealth. Just one example out of many. Just because they didn't have money and most didn't have the concept of land as property, doesn't mean they didn't desire to accumulate wealth.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    20. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0

      2nd it. stupid, but pretty entertaining for casual (it) reader like me. :) and yes i'd rather branded an 'anonymous coward' than sign-up w/ yet another bb.

    21. Re:One reason why we need to absolve money by Carnivorous+Carrot · · Score: 2, Interesting

      > The Soviet Union collapsed only because it had
      > been corrupt from the start...

      Sheesh, murderer.

      Political "Science" -- the only science that forces itself on unwilling test subjects.

      What's wrong with good, old-fashioned, rights-protecting freedom?

      Given all the murderous history of mankind, and how it all orients around a violation of that principle, what's wrong with just leaving other people the hell alone?

      --
      "Has [being a kidnapped teenage girl, raped repeatedly for months] changed you?" - Katie Couric to Elizabeth Smart
    22. Re:One reason why we need to absolve money by pboulang · · Score: 1

      damnit, I'm pretty sure *someone* says tomAHto. Pointing this out, my friend, is my human nature shining through. If I get modded up, it is my human nature. If I get modded down, it's a freakin' social problem, I tell you what ;)

      --

      This comment is guaranteed*

      *not guaranteed

    23. Re:One reason why we need to absolve money by Carnivorous+Carrot · · Score: 1

      I mean think about it. How many people across the world, and through time, would give everything they had just to be left alone from thugs and gangs of thugs with weapons?

      99%?

      99.9%?

      99.999999999%?

      Probably more than that, friends.

      Yet how many in free countries sit there, pining for a dictator -- of the type I like! (and one you'll have, whether you like it or not!)

      --
      "Has [being a kidnapped teenage girl, raped repeatedly for months] changed you?" - Katie Couric to Elizabeth Smart
    24. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0

      ...and says, "I just got spent on a really, really bad handjob."

    25. Re:One reason why we need to absolve money by Eevee · · Score: 2, Informative

      You're falling for the noble savage BS. Yes, Native Americans liked accumulating wealth. Where do you think the Spanish got all the gold they shipped back home?

      The more primitive the society, the more likely it is going to be non-accumulative. This isn't because it's better or more noble--it's because rampant accumulation in primitive situations causes the local environment to go to pieces. The Aztec society was just as greedy, mean, and nasty as any European one.

    26. Re:One reason why we need to absolve money by pboulang · · Score: 1
      were you to get rid of money, people would then just revert to a more diverse bartering system, which would not solve what you see as an overall problem, and in fact would then exacerbate the issue due to the inefficiency of the system (and hence why societies have moved to the stanard backed currencies instead).
      I really like how you spend so much energy railing on the parent post when the great and shining example of currency which I am almost positive occurred to you at some point (that'd be greenbacks, bucks, american dollars) is not backed by any standard at all.

      I mean, sure, used to be a gold standard. Fort Knox has over half the gold in the entire world but there is no fixed correlation (i.e. price) and you can't trade in your chits anymore for actual shiny bits of gold. I agree somewhat with your first sentence, however, that "money" is the current term that we use to refer to a single form of barter. I mean, hell of a lot more convenient than carrying sheep around.

      Point of interest: "money" isn't the stuff we carry around in our wallets that folds or clinks, it is a generic reference, a unit of value/worth that remains fairly constant when compared to physical things and doesn't melt, chip, spoil (except rich kids), or expire. I could exchange it for cash, and risk those physical limitations.

      --

      This comment is guaranteed*

      *not guaranteed

    27. Re:One reason why we need to absolve money by Quothz · · Score: 2, Informative

      Perhaps a micro-socialist system could be implemented for those who are out of a job? To give them a job within a co-op, where they can create their own jobs, train themselves from the resources made available; a safety net for the unemployed, at almost no cost to the government.

      It's called a kibbutz, and they're working quite well in Israel.

    28. Re:One reason why we need to absolve money by zangdesign · · Score: 1

      Go read some history and sociology. The definition of wealth has changed since then, as well as the means of accumulation and production.

      --
      To celebrate the occasion of my 1000th post, I will post no more forever on Slashdot. Goodbye.
    29. Re:One reason why we need to absolve money by Cpt_Kirks · · Score: 1

      But then it would be a ghost town...

    30. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0

      Ahhh laud eyed liberals.

      GO read Atlas Shrugged, please let Marx rest in peace.

    31. Re:One reason why we need to absolve money by russellh · · Score: 1
      The desire to accumulate wealth is not human nature. Humans weren't doing it for thousands of years in the era before recorded history. Native americans weren't doing it either.

      wealth == power. is there any proof that the desire to accumulate power is not human nature? Even if not, in any case, what's your plan?

      --
      must... stay... awake...
    32. Re:One reason why we need to absolve money by Techie2000 · · Score: 1

      They tried that system already. They called it "communism" or "socialism" and it failed. In fact it failed a lot...

      --
      "And I'm right. I'm always right, but in this case I'm just a bit more right than I usually am." - Linus Torvalds
    33. Re:One reason why we need to absolve money by dubl-u · · Score: 1

      This is one reason why we as a society need to find ways to get rid of this need for greed and wealth and money in general. Otherwise things just keep running into the ground.

      Don't be silly.

      Suppose we find some magic way to get rid of money and the need for it. Anybody who still programs does it either because a) it entertains them, or b) it benefits someone. If it's for entertainment, fine, they can make whatever they please. But if it benefits someone, then the programmer always has to face the tradeoff of benefiting them some right away or benefiting them more later.

      Imagine, for example, that you've got a five-year grant writing educational software. You have no pressure to deliver anything, so you could wait until the fifth year to deliver something fantastic. Or you could push something quick and dirty out right away and educate five years worth of kids that would otherwise miss out. A programmer who is doing something that matters should always feel time pressure, even if it's only self-imposed.

    34. Re:One reason why we need to absolve money by bih · · Score: 1

      I do not propose that Native Americans, nor any prehistoric clan/group/tribe/whatever lived the 'right' way. My argument is simply this:

      Prehistoric peoples did have systems that worked-that did not include the accumulation of goods(physical wealth). Thus, a desire to do so cannot be part of a human's nature.

    35. Re:One reason why we need to absolve money by E_elven · · Score: 1
      They tried that system already. They called it "communism" or "socialism" and it failed. In fact it failed a lot..


      Wrong, mister. The so-called socialist (the phase before moving to communism) countries (most prominently the USSR, China and Cuba) were in fact not even socialist. A closer description would be something like an oligarcic or dictatorial state capitalism, depending on your definition of dictatorship. Ergo, communism (nor socialism) have never been tried.
      --
      Marxist evolution is just N generations away!
    36. Re:One reason why we need to absolve money by Fulcrum+of+Evil · · Score: 1

      Just because they didn't have money and most didn't have the concept of land as property, doesn't mean they didn't desire to accumulate wealth.

      What ever gave you that idea? The indians had a fully developed sense of land as property, it's the colonists that didn't respect land rights.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    37. Re:One reason why we need to absolve money by hydrofilic · · Score: 0

      This is one reason why we as a society need to find ways to get rid of this need for greed and wealth and money in general. Otherwise things just keep running into the ground.
      Youn have been watching too many star trek episodes, haven't you? Rememeber "star trek" is just science fiction. The future will not be like that.

    38. Re:One reason why we need to absolve money by rycamor · · Score: 1

      In that case, one could just as easily argue that true capitalism and true democracy have never been tried.

    39. Re:One reason why we need to absolve money by chimpo13 · · Score: 1

      If the Aztecs were as greedy, mean and nasty as any European one, wouldn't they still be around?

    40. Re:One reason why we need to absolve money by chimpo13 · · Score: 1

      Ah, the beauty of Repo Man comes in again.

      Bud: Credit is a sacred trust, it's what our free society is founded on. Do you think they give a damn about their bills in Russia? I said, do you think they give a damn about their bills in Russia?
      Otto: They don't pay bills in Russia, it's all free.
      Bud: All free? Free my ass! What are you, a fuckin' commie? Huh?
      Otto: No, I ain't no commie.
      Bud: Well, you better not be. I don't want no commies in my car. No Christians either!

    41. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0

      I hereby nominate you as the biggest egotistical moron on slashdot.

    42. Re:One reason why we need to absolve money by Ella+the+Cat · · Score: 1

      send them all to Santa Cruz

      I'm bored with SCO jokes

    43. Re:One reason why we need to absolve money by Anonymous Coward · · Score: 0

      Next you'll want to get rid of time. time and money are mostly interchangeable. Through quality into the equation and you have most of hte significant figures.

    44. Re:One reason why we need to absolve money by AssFace · · Score: 1

      aside from the fact that I spelled "standard" as "stanard" - it also as just poorly worded, as you so dutifully pointed out.
      That is the best part of slashdot, thousands of editors right on hand. :)

      I suppose a "currency backed standard" would make more sense in the context of what I was saying than the reverse (being what I actually wrote) would.

      In the end a standard does exist for currencies, which isn't gold (did I say that it was?) anymore, but instead just the relative value of various commodities.
      But we can assign fixed (even if temporary) value to currencies, whereas getting rid of "money" in the way that I interpreted the orig guy to say, would be to go back to a barter system, which then, as you say would allow the fantastic practice of trading sheep for goods and services (and when you are doing that, they make excellent sex toys).
      But then that leads to confusion - do you trade by the level of wool quality, their weigh, sheer volume, fat content?

      But in the end, yes, like you and I both said, "money" is just a concept and you couldn't "get rid of it" any more than you could get rid of the concept of communication or free will.

      can I borrow $50,000?

      --

      There are some odd things afoot now, in the Villa Straylight.
    45. Re:One reason why we need to absolve money by BreadMan · · Score: 1

      Without money, how should scarce resources be allocated? Would you like somebody to decide who gets what based on personal whim? No matter what you do, resources will be allocated "unfairly" when somebody doesn't get as much as they want. The cash system of trade beats direct bartering as a way of transferring goods and services from buyers and sellers. Without money, could you imagine how difficult it would be to have a service-based economy?

      Like it or not, greed-based, money-based, wealth-based societies do more to raise the base of human existance than any other. Yes, some people make more than others, but even the lowest earners are much better off. If you want to see a place run into the ground, visit Cuba, Nigeria, Russia or Haiti.

    46. Re:One reason why we need to absolve money by Ceallach · · Score: 1

      Various reasons ...
      I think the primary ones were measles
      and come sort of chickenpox/smallpox

      --
      -- More Smoke! The mirrors aren't working!!!
    47. Re:One reason why we need to absolve money by Hognoxious · · Score: 1
      If the Aztecs were as greedy, mean and nasty as any European one, wouldn't they still be around?
      You can be as mean & greedy as you like. But give the other lot steel weapons and armour. Then sit them on bloody great animals or give them weapons that belch lumps of metal huge distances, and I know who I'd bet on.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    48. Re:One reason why we need to absolve money by pboulang · · Score: 1
      In the end a standard does exist for currencies, which isn't gold (did I say that it was?) anymore, but instead just the relative value of various commodities.
      I was just using the gold standard as an easy to reference example, no implication intended. I need mull over the second half of your compound sentence... If you assign temporary relative value of various commodities (that assignment taking place multiple times per day as trades are made either world-wide or at the local flea market) then are you setting a standard? That is definitely what economists are doing when looking back at inflation and saying that Gosh, bread used to cost 5 cents and you could see a movie for a quarter. However, I am not so sure that this is strong enough to call a standard, merely a rule of thumb.

      Do I have a point? Not particularly. Was it worth your time reading this? Probably not. Oh, and you judge a sheep by how well she pushes back, and her smile :)

      can I borrow $50,000?
      I would if I could, but I don't have free will.. sorry assface. (hmmm, that sounds like my response to a resume that was submitted to me last year)
      --

      This comment is guaranteed*

      *not guaranteed

    49. Re:One reason why we need to absolve money by AssFace · · Score: 1

      I once had someone tell me that the two ways to deal with a sheep when trying to have sex with it is to either get their head into a corner so they can't run off, or wear high rubber boots so that you can then put the sheep's rear legs into your boots... again, being rendered unable to run away.

      I feel like the same person told me it was good to get 'em young too - in reference to sheep at the time, but looking back, I suppose he probably meant that in any sexual encounter.

      He was a strange fellow.

      --

      There are some odd things afoot now, in the Villa Straylight.
    50. Re:One reason why we need to absolve money by mfrank · · Score: 1

      Being nomadic and having to carry around everything you own might affect how desirable the accumulation of goods would be, dontcha think? I'm sure the Plains Indians prized well-made axes, bows etc.

      And wasn't Pizarro totally blown over by how much gold and silver the Incas had on display? They filled up rooms full of gold and silver for the emperor's ransom. BTW, the emperor of the Incas never wore the same clothes twice. Their ability to accumulate "stuff" was limited more by their production technology than by human desire.

      Have you heard of the Cargo Cult natives in New Guinea?

    51. Re:One reason why we need to absolve money by mfrank · · Score: 1

      Three reasons: Guns, Germs, and Steel. Coincidentally, that's also the name of a really good book that should be required reading in every high school.

    52. Re:One reason why we need to absolve money by Degrees · · Score: 1

      I'm curious - which one are you? A moocher? Or a looter? if you don't get the reference

      --
      "The most sensible request of government we make is not, "Do something!" But "Quit it!"
  4. money by myoohn · · Score: 0

    the point is to get more money with less investment while getting trust from cusmers.

    hit the sweet spot.

    1. Re:money by mikehoskins · · Score: 2, Informative

      I have no real answer, except that I feel your pain. What I'm about to say would probably help, but unless you're strict on the point I'll make, you'll be back to the same frustration.

      I would suggest writing a PAPER contract and getting official PAPER signoffs for each phase reached (yes, with their REAL signatures and REAL dates for REAL milestones reached....)

      Make THEM follow a process that determines up-front the real, fixed business requirements, with cost estimates for hours worked, processes required by you/them, etc. Don't allow them to verbally request/require anything. Besides, a "strict" contract makes you look more professional. Put all expectations (money, time, documentation reqs., process reqs., business reqs., amendments, scope changes, cost increases, etc.) in writing and spell things out clearly and plainly, so both sides know exactly what to expect.

      In other words, make it a legal, binding contract!

      Then, under promise and over deliver. Go beyond what the paper contract expects of you whenever you can. This is how you make the customer happy. Happiness == over delivering on expectations; on the other hand, expectations "change without notice" when there is no paper contract....

      If that means you come up with a Q&D that delivers early, goes under budget, etc., tell them that you are in prototype/alpha/beta stage and pretty up the product with the remaining time, even if it means redeveloping it The Right Way. If they are content with the Q&D, spend the rest of your time cleaning your code, making cosmetic changes, testing, and documenting everything.

      We all know that it really takes 3-4 development cycles to do things The Right Way. And we know that around 70-80% of your actual development time is testing and debugging, if it's a good quality application done The Right Way. However, most business/marketing types look at any IT project as a cost and as a burden. If you can under promise on paper and over deliver your product, you're on you way to creating a Win/Win solution that makes people happy.

      Development is an art; it's like the proverbial author of books who has a trash can full of wadded up type written pages before a manuscript gets written -- it may take them 10 tries to write just one page. It's sad that this message never seems to get through to the business decision makers.

      They expect magic from those black boxes we'll call computers and expect wizards, whom we shall dub "developers," to perform miracles using black arts and mysterious incantations (a development cycle). In other words, expect them to be utterly clueless about your side of the fence. Use a paper contract to help dispel their myths and to clear up any confusion.

      Having clearly defined expectations makes everyone, especially customers, happier. (If they change these expectations, there should be a clause in the contract that addresses extra time and money for alterations.) A contract should right-size everyone's expectations.

      Now, I can hear flames from the Extreme Programming/Agile Programming people, telling me that customer expectations will change, but I'd still hold fast to the ideal of spelling out expectations on paper, including what to do in case of scope changes.

      I also can hear the cry, "A contract will get me sued." A contract, whether verbal or paper can get you sued, either way. Verbal "contracts," however, change constantly and become hearsay.

      (The other extreme is to over analyze. I've seen so many projects get into this quagmire. You know the old proverb that a camel is a horse designed by committee....)

      I've learned this from the school of hard knocks. I too have been frustrated and have been burned badly by not having things clearly spelled out ahead of time.

      Get a paper contract that makes everybody follow a balanced process.... Of course, we live in a perfect world, customers actually know what they want, world hunger is now solved, yada yada....

    2. Re:money by AWhistler · · Score: 1

      Sorry, but a contract that rigid will get you shown the door, unless you already have a working prototype that the customer can touch and feel. Otherwise, the prospective customer thinks you are being heavy-handed with nothing to show for it. They will just turn to a competitor who is willing to work on a verbal contract, changing requirements as they want it, and delivering crap in short time.

      Customers love holding companies over a fire to get things fixed/working. If there's a contract, they can't do that. Hungry companies that are willing to jump when the prospect says so will get more business than those that approach their prospects like they know everything and are not flexible. This has been my experience after working for large and small companies.

    3. Re:money by surprise_audit · · Score: 1
      The original question related to how to convince PHB's and marketdroids to admit that they were told up front that the quick and dirty solution wasn't necessarily the FINAL solution. The suggested contract wasn't so much between the developer and the end-user (customer), as between the developer and his own management/saleforce.

      I think the only way to really get their attention is to hand the PHB's and marketdroids some form of paper statement notifying them that the quick and dirty solution is in fact version 0.1, may not have all the expected functionality of version 1.0, and will require time to make it a saleable product. If you can get them to actually sign the paper, even better.

      Don't forget, when it comes to PHB's what they remember asking you to produce had better match up with what you actually hand them. Putting both your and their expectations down on paper helps to keep things straight.

      In the meantime, the marketdroids can invite the customers to see demos of the 0.x releases so that they can see progress being made.

  5. No easy answer by bartlog · · Score: 5, Insightful

    There's no definite answer to your question. You must judge the circumstances and make the call. Much as we'd like to do everything properly, quick and dirty is often first-to-market - and I've used plenty of products that had significant bugs and yet were adequate for my purpose.

    1. Re:No easy answer by GordoSlasher · · Score: 5, Interesting

      And with layoffs coming every couple of months, I sure as heck don't want to be tech lead on the project that missed its market window because I insisted on perfection. I try to balance risk/reward, taking shortcuts on the less risky parts, negotiating to eliminate unnecessary functionality, and doing whole-hog process on critical system components.

    2. Re:No easy answer by Anonymous Coward · · Score: 2, Informative

      There's no definite answer to your question. You must judge the circumstances and make the call.

      Totally true, but you must also consider the advantages to proper design. The requirements and documentation often speeds up development by keeping the developers focused, and totally aware of what they are trying to accomplish. You shouldnt be writing anything at all without requirements. They dont have to be a novel, but enough to convey what needs to be done. And keep your documentation light, and it shouldnt intefere with your development progress. Take a middle ground approch unless the application can be written in less than a day or maybe a few days.

    3. Re:No easy answer by geekmetal · · Score: 4, Insightful

      What we need to do is draw a line as to how dirty it can get (analytical skills here).

      Analyze where in the market you stand and ask some quick questions
      1) How much time do you have
      2) How much cash do you have

      Is this product aimed for a quick money making scheme or a long lasting product?

      and many more such questions to ponder about and you might just have your answer.

      As a programmer the worst part about the quick scheme is to have to take blame for a buggy code which was a direct result of the demand on time by your manager, regardless of the warnings you gave. But then wehn you see it from the eyes of the marketing person its a different story.

      --
      There are two kinds of egotists: 1) Those who admit it 2) The rest of us
    4. Re:No easy answer by sm1979 · · Score: 5, Interesting

      I can only speak from my experience at my current employer. The company is founded by two CS PhDs, so no PHB trouble. We don't follow any formal process in our development, we don't even comment the code, which really pissed me off in the beginning. However, what we do rather successfully is to make everything as simple as possible.

      If you run over some code and you figure it could be done simpler, even if it's not your code, do it simpler NOW. If you find something has been done in a quirky way, fix it NOW. The general rule is that the code has to be understood for the next let's say ten years. We have strict coding guidelines regarding method naming and variable naming. If names are not fully self-explanatory they are replaced immediately even if they're scattered through the whole application. If critical parts like persistence suffer from a bad architecture, it is fixed immediately no matter how much work the rewriting involves. Finally, this leads to very understandable code and once you've understood the general application architecture the code is very easy to read, very clean and mostly pretty correct. There are hardly any quick hacks, sometimes they are inevitable though, to circumvent bugs in the software environment for example.

      If you're suffering from lay-offs and don't mind 170 days of rain per year, consider think-cell (I'm only a student employee myself, neither owner nor partner, so it's not advertisement, just advice).

    5. Re:No easy answer by C60 · · Score: 5, Informative
      You're right, there is no definite answer to this question, however there are some ways to create a balance.

      Keep in mind, this works best if you have a good dev team, a bit longer of a development timeline, and have management that understands the Q&D vs proper arguement. Or at least can be made to agree to it.

      First off take the time to sit down with the development team, and make a project timeline. Use Gannt charts, management loves that, and it adds a real sense of professionalism to your dev schedule.

      In developing your timeline, identify the "low hanging fruit" (a term I despise) which can be quickly adapted from existing code, as well as the items that both can, and cannot be written Q&D. Next, add in re-engineering of the Q&D sections of code to the timeline. Make sure that you find a balance where you have enough items developed early on that the PHBs have something to sell and boast about. It also helps if you make sure you don't do everything Q&D.

      Stick to the timeline

      If for some reason you can't, bring it up with the PHB and adjust the timeline.

      A realllllly good way to make this work is to set out a bonus schedule for completion of certain phases of development before a certain time. This takes having a cool PHB, but it's a great way to keep motivated.

      This is the way my last major dev project worked. And it worked *Very* well. Every phase of the project resulted in something the PHBs were happy with and could sell. As a developer and team leader I got a bonus for making sure my code was delivered on time. We even had a discretionary bonus pool that we could use to reward people who made an outstanding contribution to the project.

      The real key here is to communicate with the PHBs, using their language (gannt charts), make sure you keep control of the development timeline, and most of all, stick to that timeline.

      --
      Karma: 0 (But I wield a mean +10 Vorpal Apathy)
    6. Re:No easy answer by LostCluster · · Score: 1

      You're right, it's a situation-by-situation call where you just have to place your bet and go with it. Nobody knows if he who does it first or he who does it right is going to win in the market. Being early can get you the contract, but being buggy can cost you the contract. There's no way of knowing which is the right decision until after the fact.

      But, the problem I see is that your company can't seem to agree on which way you should do things. Marketing wants quick and dirty, while your bosses want slow and proper... you can't have it both ways. Either your boss needs to tell marketing to shut up, or marketing needs to tell your boss to put up with it. Until that happens, you've got contrary instructions... and there's no way to follow both at the same time.

      Doing what your boss wants is the simple thing to do if you don't want to be labeled as one that causes trouble. On the other hand, pointing out trouble when there really is in fact already a problem could label you as a leader, possibly somebody who is deserving of a promotion to management. Tough call there too..

    7. Re:No easy answer by paganizer · · Score: 5, Insightful

      What about my experience, then...
      You work for a government contractor on a project for the army.
      You quickly discover that one of your coworkers is putting code in place on production servers that is VERY nasty, buggy, full of gaping security holes, but slightly more often than not, actually does the job that needs to be done.
      You get with your supervisor to point this out, let them know that security standards are being completely ignored, crash recovery (done by another group) is taking more time than doing it right in the first place.
      You and the REST of the team get let go, while the quick n' dirty guy gets promoted; the Army has to nearly triple the size of the group doing recovery.
      Grrrr.
      I may be blackballed by EDS, but I would never, ever, ever consider working with or by those scum sucking pigs again.

      --
      Why, yes, I AM a Pagan Libertarian.
    8. Re:No easy answer by jafac · · Score: 3, Insightful

      with layoffs coming every couple of months, I sure as heck don't want to be tech lead on a project that customers are returning and suing us over because it doesn't work as advertised.

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    9. Re:No easy answer by TechnoWeenie · · Score: 1

      The easy answer ...
      If they want it quick and dirty, do it quick and dirty. Don't pretend that you will go back and pretty it up later. There is no later. There is only another project that must be completed.

      The up side of all this is that you will insure that you have a job for years to come fixing the dang thing.

    10. Re:No easy answer by Milo77 · · Score: 2, Insightful

      One of the problems is that MS has conditioned their customers to tolerate crappy software. As a result other companies can also get away with releasing software of poorer and poorer quality. In capitalism, it is all about what the market will bare, and currently it will bare bug-ridden software. And all the MBAs have been trained to push the envelope on what the market will bare. If they can get away with shorter release cycles and buggy products then you'd better believe that's exactly what they'll do...and hey, my stock options keep going up, so what do I care ;)

    11. Re:No easy answer by pHDNgell · · Score: 1

      And with layoffs coming every couple of months, I sure as heck don't want to be tech lead on the project that missed its market window because I insisted on perfection.

      I got promoted for the same thing you're worried about. I've slowed my department down quite a bit, and at the same time accomplished far more than we've ever accomplished before.

      We used to do weekly releases to get features in in a huge rush. Now we do a release about every three months. Things are pretty good.

      --
      -- The world is watching America, and America is watching TV.
    12. Re:No easy answer by The+Vulture · · Score: 1

      Ha!

      Or, like me, you'll find yourself out of a job because your company couldn't compete because the codebase for the project was so crappy that it couldn't be fixed. As such, your competitors ate your lunch.

      Then again, I am glad to not be fixing my co-workers problems anymore. It's a bad sign when during the weekly status meetings the same person, every week, has missed their deadline, and is constantly making excuses for it...

      -- Joe

    13. Re:No easy answer by cfulmer · · Score: 3, Interesting

      UGH... Talk about all the wrong things to do! The idea of fixing problems early is good, but your method of doing it sounds to be out of control.

      There's no better way to guarantee that your product will never congeal than to be constantly changing it. What happens when the quirky code you just changed 5 minutes ago had just finished a month of testing and debugging? Or when your architectural re-write has a chain-reaction further downstream?

      One of the most important things that good software development companies do is to track their defects, figure out where they came from and develop a plan for fixing them (or not...)

      In the Apollo space program, the astronauts had a listing of every known bug in the computer software and what they needed to do when that bug got hit. You may ask "If they knew where these bugs were, why didn't they fix them?" It's a good question and I believe that the answer boiled down to "Because then you'd be introducing a bunch of bugs that you didn't know about."

      Remember the time-money-quality (pick any 2) triangle.

    14. Re:No easy answer by hawkestein · · Score: 1

      If you could sue over software not working as advertised, the world would be a very different place.

      Then again, who advertises their software as "bug free?"

      --
      -- Will quantum computers run imaginary-time operating systems?
    15. Re:No easy answer by plague3106 · · Score: 2, Interesting

      They don't, but they do advertise the product can do certain things. If a bug prevents something, i'd say thats false advertising.

    16. Re:No easy answer by Anonymous Coward · · Score: 0
      ...consider think-cell...

      From their contact info -- Invalidenstraße 34 -- uhh, do I want to work for a place that starts you off with an invalid address pointer?

    17. Re:No easy answer by Jeremi · · Score: 2, Interesting
      There's no better way to guarantee that your product will never congeal than to be constantly changing it.


      You don't constantly change it just for the sake of changing it. You improve it only when it is non-optimal. Assuming you have a well defined idea of what "optimal" is, your code will converge to the optimal point and then changes to it will cease.


      Or to put it conversely: there's no better way to guarantee that your product will be non-optimal than to not fix the flaws in it.


      What happens when the quirky code you just changed 5 minutes ago had just finished a month of testing and debugging? Or when your architectural re-write has a chain-reaction further downstream?


      This is a good point -- you need to consider the implications of the changes you make very carefully. I follow the "fix it when you see it" strategy of the previous poster, and it works well for me -- but then, I am the only one working on the majority of the code, so I'm pretty well aware of why the code was written the way it was, and what the changes will effect.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    18. Re:No easy answer by beavis88 · · Score: 2, Interesting

      Strangely, "optimal" is not always optimal. Different goals result in different strategies -- the most simple solution does is not always the best. If I need to get something out the door yesterday, and the quirky section of code tested out perfectly, why should I change it? If I'm not likely to have to deal with it in the future (extend, modify, etc), isn't that even more reason to leave it alone?

      I consider myself a quite competent programmer, but I know from [sometimes painful] experience that simple changes are often not as simple as they first seemed.

    19. Re:No easy answer by Fulcrum+of+Evil · · Score: 1

      If you could sue over software not working as advertised, the world would be a very different place.

      When the software in question is built on contract, failure to deliver software on time can and does involve lots of lawyers.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    20. Re:No easy answer by whatch+durrin · · Score: 1
      If you run over some code and you figure it could be done simpler, even if it's not your code, do it simpler NOW.

      That sounds great and all, but what about project ownership? If it's not your code, and you go poking around changing something you *think* is wrong, and it ends up fscking something up, who gets the blame?

      OTOH, if you were a top notch programmer, wouldn't you want your own piece of code to work on so that you could demonstrate your skills independently?

      Let the other guy fail on his own. Don't prop him up by scanning his code for errors.

      --
      ***
      Radio Shack. You've got questions...we've got blank stares(TM).
    21. Re:No easy answer by DarkSarin · · Score: 1

      The methodology sounds great until you go their web site. First glance it looks great, but when you look closer and run it through this you get this.
      Want to impress me with the programming skills of your company? Don't EVER try to show me a sloppy website and tell me what great code you produce. Web Design isn't that tough, and the idea of closing your body and html tags twice is rather sloppy.
      Someone should fix that IMMEDIATELY, like you say they do.

      --
      "We don't know what we are doing, but we are doing it very carefully,..." Wherry, R.J. Personnel Psychology (1995)
    22. Re:No easy answer by MikeFM · · Score: 1

      My experience is that any software project needs three versions to reach minimum quality. The first version is quick-n-dirty. The second version cleans up the quick-n-dirty version and adds features that were left out. The third version is mostly a rewrite that fixes any major structural problems and further cleans up the code.

      I guess my point is that you should do a quick-n-dirty version first because it's often faster than a detailed plan, more complete, and results in working code. Then work towards a planned and ironed out version from that. You can have the best of both worlds.

      --
      At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    23. Re:No easy answer by Anonymous Coward · · Score: 0

      LOL.

    24. Re:No easy answer by Anonymous Coward · · Score: 0
      Let the other guy fail on his own. Don't prop him up by scanning his code for errors.

      I once thought there was an exception to this rule if two programmers were more-or-less simultaneously checking in code in the same area.

      I was wrong.

      After I found his error, he pretended he couldn't understand what I was saying and refused to believe me that his code had problems. I ended up staying late, fixing the problem, and getting angry, and he walked away smelling like a rose.

    25. Re:No easy answer by Anonymous Coward · · Score: 1, Funny
      we don't even comment the code

      That only works for people who code well; poor coders should always add comments, unless they're also poor commenters, in which case their comments will only confuse.

    26. Re:No easy answer by plumby · · Score: 1
      and the idea of closing your body and html tags twice is rather sloppy.

      So is leaving the title of your own web page as "Untitled Document", or allowing the text box on your contact page to overlap the "design" image on the right (at least on IE6). Oh, and the site that you've created for Otter Creek Adventures fails the w3c check quite badly.

    27. Re:No easy answer by Moraelin · · Score: 1

      There is no easy answer, yes, but basically the IT business is busy digging a hole for itself at the moment. Not just suffering from an economic problem, but actively helping _create_ that problem for themselves.

      With everyone desperate to undercut each other's bid, some of the contracts negotiated aren't even for a "Quick and Dirty" solution, or cutting down on unnecessary functionality, they're requiring 60-70 hour weeks to even string together some crap which barely sorta looks like what the client wanted.

      There are some desperate people throwing bids which can't _possibly_ be done in that time frame or budget. And what you think is an old time satisfied client which should by now know better, comes and says, "Well, guys, I like your work, but business is business. You'll have to bid even lower than that if you want the contract." And sometimes your equally desperate PHB actually does.

      And you think that you've won the client's grattitude, don't you? That in return for those 60 hour weeks and your company actually making a small loss there, you'll get some big fat contract from that client in the near future. Which will make it all worth it. Right?

      Well, wrong.

      You know what the client really sees? He sees, "ooh, I could get it a lot cheaper now. Let's see if next time I can get a bigger program for two potatoes and a chicken."

      I've actually seen it happen. At the last company (now bankrupt) we eventually got to the point where one client basically wanted us to program a complete equivalent to MS Excel over HTTP... for $20,000 if I remember right.

      --
      A polar bear is a cartesian bear after a coordinate transform.
    28. Re:No easy answer by Anonymous Coward · · Score: 0

      unless you're hacking in some kind of lisp (in which case i might be interested in a remote-work gig), no comments plus change everything NOW is likely to result in latent maintenance costs.

      although your product ostensibly allows the customer to think aloud and create through rambling (i.e., w/o too much organization), its design and implementation probably deserves more respect than you are giving it. no respect, no love. no love, no commitment. no commitment, no trust. no trust, no future.

    29. Re:No easy answer by jeremyp · · Score: 1

      All code from all programmers should be reviewed by other people. Even code from really good programmers can benefit from this process since they sometimes get "too close" to the problem and miss things that would be obvious to an outsider. Less good programmers also benefit as code reviews are frequently a learning experience.

      If a programmer's ego is too big to let them submit to having their code reviewed they should be fired anyway.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
    30. Re:No easy answer by Gleef · · Score: 1

      You need to not just make the call. If you deviate from professional/company standards, even for good reasons, you make the call and then CYA. Fire off a quick email to Your Boss/President/CEO/Board indicating the fact that you need to bend the rules in order to ensure company success. If possible, include an estimate of what will happen if you follow the rules versus what will happen if you bend the rules. If possible, also include a quick and dirty estimate of what the post-release costs of getting the project back on track.

      If you run into this on a regular basis, you might want to talk to the powers-that-be about making some sort of protocol for "Fast Track" projects that will give you the flexibility you need to get the job done, but give them the control they need to ensure they don't have an ever-increasing dependence on unmaintainable spaghetti code. And then you can do it, and still be following the rules.

      If the powers-that-be keep balking at the thought of getting stuff done during what you consider the windows of opportunities, you might just have to accept the fact that your superiors have a vastly different viewpoint or set of priorities than you. Then your options include: see if you can engage the board or owners into changing their viewpoint, or finding a company that's more compatible with the way you prefer to operate.

      --

      ----
      Open mind, insert foot.
    31. Re:No easy answer by Anonymous Coward · · Score: 1, Interesting

      Same experience here, with same company.

    32. Re:No easy answer by whatch+durrin · · Score: 1
      I'm not saying my code shouldn't be reviewed by someone else - peer review is a good thing.

      But, that peer shouldn't be able to "fix" my code at will without consulting me first. It's possible there are nuances to my code that the peer isn't familiar with, and a once-over by the original designer (me) will put everthing into light.

      --
      ***
      Radio Shack. You've got questions...we've got blank stares(TM).
    33. Re:No easy answer by j.e.hahn · · Score: 1
      You don't constantly change it just for the sake of changing it. You improve it only when it is non-optimal. Assuming you have a well defined idea of what "optimal" is, your code will converge to the optimal point and then changes to it will cease.

      Hah! You're assuming something that's mathematically false! Think of your code as an element s in some set S of all possible states for the code. (That's a big set, by the way.) You're assuming that by applying finitely many transformations on the code that you'll reach some element o in S that is optimal under some certain set of constraints.

      But the problem is this assumption isn't valid in general. In fact very very few systems possess such a property. (and the criteria by which you define optimal are as important as the transformations you perform!) Chaos theory is essentially based on the idea that there isn't some stable state under iterative transformation. Not all sequences converge, and in fact, most don't.

    34. Re:No easy answer by Anonymous Coward · · Score: 0

      I agree completely.

      BTW, never depend on GM's OnStar for anything, that system is so screwed up, there's no way EDS will ever dig it out.

      A former EDS employee

    35. Re:No easy answer by Anonymous Coward · · Score: 0

      heh -- pwned

    36. Re:No easy answer by Beliskner · · Score: 1
      You get with your supervisor to point this out, let them know that security standards are being completely ignored
      That's because they don't care. You have to tell the people that actually invented the security standards, or that care about them.
      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    37. Re:No easy answer by Anonymous Coward · · Score: 1, Interesting
      Truish story (names and identifying marks have ben removed).

      Senior member of 10 person development team is also responsible for to system support (hardware and software) for a single shared development system . You can make your own judgements on the wisdom of this (who's doing the support, and what they are supporting).

      In the middle of the project from hell (the time/cost overruns are already going into 3 digit precentages), the development system's file system self destructs.

      Backups of the project files and home directories exists, but the rest of the system has not been backed up in months. All the software used for development has to be re-installed, and configured (configuration files wern't backed up either).

      Senior team member also takes this opportunity to reorganise how the entire systems is put together, because s/he never liked the way that s/he had done it in the first place.

      RealWorld result: 10 developers were effectively siting on their thumbs for the better part of a week, waiting for the system to be back in a state where they can be doing real work again; and spend another week at about 50% while some of the secondary software (it was needed, but other things could be worked on in the mean time) are installed and reorganised.

      10 develoers * 60 hours of lost productiviy * $100/hour(*) = $60,000 -> That would have easily paid for a propper sysadmin, and a backup development system.

      (*) I don't know what the exact consulting rate was, but that is close enough for the effect I want.

      PHB result: Senior team member who neglected/forgot to do the backups got promoted for saving the company from certain disaster. Other team memebers begin to leave through a variety of other means (attrition, disgust, downsizing, etc.)

      It's true - I heard it from a FOAF.

    38. Re:No easy answer by jafac · · Score: 1

      In my experience, advertising what the product can do is done by Salesmen - probably the people who are MOST divorced from the reality of any given product.

      Then the developers get the shaft when the product fails to live up to the expectations set by the "SalesWeasels".

      --

      These are my friends, See how they glisten. See this one shine, how he smiles in the light.
    39. Re:No easy answer by Jeremi · · Score: 1
      Hah! You're assuming something that's mathematically false!


      And I should have known better than to try and match wits with a Sicilian! :^)


      But the problem is this assumption isn't valid in general. In fact very very few systems possess such a property


      Perhaps so, but it appears that my code base is one such system. Any time I see something that I think could be made better, I change it to be better, and as the code grows more and more towards my preferences, the changes become smaller and farther apart. Eventually, I don't need to change the code at all anymore, because everything is just the way I like it.


      Granted, when a new problem comes along my existing code may not be applicable to it. But in that case I won't change my existing code, I'll write new code to handle the new problem.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
  6. Do Both. by Anonymous Coward · · Score: 2, Interesting

    Put together the quick & dirty solution, then fix and document afterwards when you have the benefit of time!

    1. Re:Do Both. by Jouster · · Score: 2, Insightful
      ...quick & dirty solution, then fix and document afterwards...


      Ever tried documenting Perl an hour after you wrote it? Especially if you were using lots of regular expressions?

      Do it right or do it not at all.

      Jouster
    2. Re:Do Both. by shadowbearer · · Score: 1

      "Put together the quick & dirty solution, then fix and document afterwards when you have the benefit of time!"

      *cough* Microsoft *cough*

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
    3. Re:Do Both. by usotsuki · · Score: 2, Interesting

      C can be pretty bad too.

      Look at part of my RMF-COM,

      if (filespec1[1]==':') drv=filespec1[0]; else drv=0;
      if (!strrchr (filespec1, '\\'))
      {
      if (drv) /* drive and file */
      retv=prepare_for_rename (drv-64, &zero, filespec1 + 2, filespec2);
      else /* file */
      retv=prepare_for_rename (0, &zero, filespec1, filespec2);
      } else {
      file=strrchr (filespec1, '\\') + 1;
      for (travel2=2*(drv!=0); (filespec1+travel2) != (file-1); travel2++)
      path[travel2-(2 * (drv != 0))]=filespec1[travel2];
      path[travel2-(2 * (drv != 0))]=0;
      if (drv) /* drive, path and file */
      retv=prepare_for_rename (drv, path, file, filespec2);
      else /* path and file */
      retv=prepare_for_rename (0, path, file, filespec2);
      }


      Pretty ugly code. And I haven't changed it since I dropped it in there. I don't think a real programmer, or a commercial developer, would ever put code THAT ugly in there, because it's TEH SUX0R when you have to read it to fix bugs etc., ...

      Just imagine if I could code in ASM. That can get a might uglier. At least I don't mutate C into my own language with #ifdefs like Bourne did with the V7 shell.

      -uso.

      --
      Dreams, dreams, don't doubt dreams, dreaming children's dreaming dreams. Sailor Moon SS
    4. Re:Do Both. by damiam · · Score: 1

      GNU indent + a syntax highlighting editor will make any C look decent. Wish the same could be said for perl...

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
    5. Re:Do Both. by usotsuki · · Score: 1

      Personally, I don't like the GNU coding style. (In face I have at one time passed RMF-COM through Indent.)

      But it's a testament to my terseness that a typical program might be

      #include <stdio.h>

      void main(void)
      {
      int foo,bar;

      printf ("test\n");

      for (foo=0;foo
      which is very odd-looking but functional. I feel function is more important than form, but readability *is* important and not something to be shrugged off. And I don't think I'd be too prone to play "Perl Golf" either.

      -uso.
      Still trying to write a libc for CP/M-86

      --
      Dreams, dreams, don't doubt dreams, dreaming children's dreaming dreams. Sailor Moon SS
    6. Re:Do Both. by usotsuki · · Score: 1

      "Waht? Teihr's a preveiw button?"

      #include <stdio.h>

      void main(void)
      {
      int foo,bar;

      printf ("test\n");

      for (foo=0;foo<100;foo++)
      for (bar=0;bar<foo;bar++)
      {
      printf ("%d ",bar);
      if (bar==foo)
      printf ("* ");
      }
      }

      Man, I have to get my head out into the clear, this stench is overbearing...

      -uso.

      --
      Dreams, dreams, don't doubt dreams, dreaming children's dreaming dreams. Sailor Moon SS
    7. Re:Do Both. by mackstann · · Score: 3, Funny
      *** CONGRATULATIONS ***

      You are today's lucky winner of the slashdot post predictability sweepstakes for your outstanding job of:

      [ ] Preaching about Gentoo
      [ ] Preaching about Debian
      [ ] Overuse of buzzwords to conceal ignorance
      [x] Bashing Microsoft

      Your prize awaits you on the other side of the mountain dew can mountain in your basement.

      Thanks for playing!

    8. Re:Do Both. by shadowbearer · · Score: 1

      I'll take a 12 pack of Guiness, thank you. I don't drink pop. That stuff will rot your stomach.

      What basement? I sit next to a window in my home with a beautiful view of the Black Hills. Jealous, are we?

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
    9. Re:Do Both. by Carnivorous+Carrot · · Score: 1

      I'll go you one better. Horizontal whitespace is cheap on monitors nowadays. Use it liberally.

      if (filespec1[0] != '\0' && filespec1[1] == ':') /* Safety check, note it's technically redundant! */
      drv = filespec1[0];
      else
      drv = 0; /* ...because filespec1[0] would be '\0' anyway! */

      if (!strrchr(filespec1, '\\'))
      {
      if (drv) /* drive and file */
      retv = prepare_for_rename(drv - 64, &zero, filespec1 + 2, filespec2);
      else /* file */
      retv = prepare_for_rename(0, &zero, filespec1, filespec2);
      }
      else
      {
      file = strrchr(filespec1, '\\') + 1;

      for (travel2 = 2 * (drv != 0); (filespec1 + travel2) != (file - 1); travel2++)
      path[travel2 - (2 * (drv != 0))] = filespec1[travel2];

      path[travel2 - (2 * (drv != 0))] = 0;

      retv = prepare_for_rename(drv, path, file, filespec2);
      }

      I'd also use explicit variables for things like (drv != NULL) and so on. For modern compilers, you won't detect a difference in the machine code from more compact, old-style C obfuscation optimizations.

      I've also removed a redundant call at the end, although explicit commenting as to what's going on there would be valuable.

      By the way, how does one post a chunk of code without having to use Code mode (vs. Plain Old Text, HTML, etc.) without tripping the lameness character and compression (!) filters? Code, TT, Ecode, blockquote, nada.

      --
      "Has [being a kidnapped teenage girl, raped repeatedly for months] changed you?" - Katie Couric to Elizabeth Smart
    10. Re:Do Both. by Carnivorous+Carrot · · Score: 1

      > "Put together the quick & dirty solution, then
      > fix and document afterwards when you have the
      > benefit of time!"
      >
      > *cough* Microsoft *cough*

      Every time some boothead makes a comment like this, I point out that if you're going to talk about bad (financially speaking) business practices, you'd do better than to select as your example the most phenomenally successful corporation of all time.

      It just makes you look like an idiot.

      --
      "Has [being a kidnapped teenage girl, raped repeatedly for months] changed you?" - Katie Couric to Elizabeth Smart
    11. Re:Do Both. by mackstann · · Score: 1

      What a buzzkill.

    12. Re:Do Both. by Kerkyon · · Score: 2, Funny

      Horizontal whitespace may be cheap on monitors,
      but it's a pain in the ass when doing parellel
      diffs (e.g., for inspections) or you have a borky
      80 column console.

      78 columns, or you should be stabbed in the eyes.

      (It is also at a premium in the /. comment posting
      box.)

      -k

    13. Re:Do Both. by shadowbearer · · Score: 0

      Perhaps you should look at why Microsoft was successful.

      Also, maybe you ought to look at IBM; they've been around more then 5x longer, been just as successful in their own markets, and have a patent portfolio that has to make MS wince.

      I've been watching the industry for 25+ years. Want to match that? Do you really want to start a flamewar? I'm willing. I'm sick of lawyers and marketing droids running the industry. I'd like to see more advancement that is not based on how many units we can sell this month.

      In short: Fuck you, child.

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
    14. Re:Do Both. by shadowbearer · · Score: 1

      Is that the best you can do?

      That's so....90s....

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
    15. Re:Do Both. by Anonymous Coward · · Score: 0

      Not me, I've got neighbors.. hot chicks, too!

    16. Re:Do Both. by Anonymous Coward · · Score: 0
      In short: Fuck you, child.


      Well said! Didja roll your mom's dice for that one?

      Pfffft, what a jackass...oh, and by the way, fuck YOU.
    17. Re:Do Both. by Cpt_Kirks · · Score: 1

      Put together the quick & dirty solution, then fix and document afterwards when you have the benefit of time!

      Time? What's that?

      We always say we will go back later and fix it right at work. However, unless it breaks, fixing never happens.

    18. Re:Do Both. by shadowbearer · · Score: 1

      At least I'm not posting AC. Show me or admit you are a gutless bastard.

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
    19. Re:Do Both. by Bush+Pig · · Score: 1

      > I don't think a real programmer, or a commercial developer, would ever put code THAT ugly in there, because it's TEH SUX0R when you have to read it to fix bugs etc., ...

      You're kidding, right? Or you've never seen any commercial-"quality" code.

      I once worked on this _really_ exciting insurance project ...

      --
      What a long, strange trip it's been.
    20. Re:Do Both. by TedCheshireAcad · · Score: 1

      Do you really want to start a flamewar?

      well, it sounds like you do. take it outside, boys.

    21. Re:Do Both. by Anonymous Coward · · Score: 0

      Oooooh! Guess you showed me!

      You are ONE SMART DOOD, and I am stinging from your rebuke!!

    22. Re:Do Both. by Anonymous Coward · · Score: 0

      Also, maybe you ought to look at IBM; they've been around more then 5x longer, been just as successful in their own markets, and have a patent portfolio that has to make MS wince.

      This does not make your original point correct, nor make Carnivorous Carrot incorrect.

      I've been watching the industry for 25+ years.

      Good for you. I've been watching TV for 20 years. Does that automatically make me an expert at any part of the content or viewer production or distribution process?

      Post that again when you've been in the industry.

      I'm sick of lawyers and marketing droids running the industry. I'd like to see more advancement that is not based on how many units we can sell this month.

      Highly desirable, but largely unachievable commercially (Sun, IBM, Microsoft being the major exceptions).

    23. Re:Do Both. by shadowbearer · · Score: 1

      So what you're trying to say is that Microsoft *doesn't* put together quick and dirty solutions and fix (and sometimes they do document them but not often) later?

      How many security patches have broken other things? Ever looked at how badly their APIs have been documented? Give me a break.

      Sheesh...

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
  7. Re:Passion is the key - if you're passionate, rele by Anonymous Coward · · Score: 0

    Nice flowery speach. Unfortunately, correctness and validity outweigh passion in a lot of manager's (and customer's) minds.

  8. It's like sex... by PeteyG · · Score: 5, Funny

    It's like sex.

    Quick and dirty, like getting drunk and meeting some stranger in a motel room, will leave you feeling gross aftewards.

    Correct and proper, like wooing a nice and attractive young lady, takes time, hard work, and if it works out, leads to something wonderful and long-lasting.

    Either way, you have sex. But which one would you rather tell your mother about (or rather, put on your resume)?

    --
    no thanks
    1. Re:It's like sex... by Gr33nNight · · Score: 3, Funny

      I dont know about you, but I DO NOT tell my mother when/if I get laid. There are some things she really doesnt need to know about.

    2. Re:It's like sex... by flowerp · · Score: 4, Funny

      > Either way, you have sex. But which one would you rather tell your mother about (or rather, put on your resume)?

      Sex on your resume is ALWAYS bad. See Bill Clinton.

      (Unless you are a porn star of course)

      --
      --- Eat my sig.
    3. Re:It's like sex... by aepervius · · Score: 2, Interesting

      Since we are on the sex analogy, well the problem is that the young attractive lady, turn out to de a demmanding women recriminating every one of your move, and always asking to sekll yourself as cheap as possible. And if you aren't quick & cheap enough, then , well, there is always the concurrence.

      As another poster said there is no easy solution despite all the analogy you can come with. it is a case for case.

      --
      C. Sagan : A demon haunted world:
      http://www.amazon.com/gp/product/0345409469/
      visit randi.org
    4. Re:It's like sex... by Anonymous Coward · · Score: 0

      Uh... correct-and-proper could also lead to marriage with an attractive young lady who doesn't like sex.

      There are many levels inbetween the two you suggested...

    5. Re:It's like sex... by Anonymous Coward · · Score: 2, Funny

      Shit. Now wonder I don't have any job offers. I've completely neglected to put my sexual history on my resume!

      -AX

    6. Re:It's like sex... by DNS-and-BIND · · Score: 2, Insightful

      What if your bosses told you you had to fuck 10 women by 5pm Friday afternoon?

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    7. Re:It's like sex... by Xugumad · · Score: 5, Funny

      That, and it scrunches the paper up...

    8. Re:It's like sex... by Anonymous Coward · · Score: 1, Funny
      It's like sex.

      Maybe, but I don't think your analogy will resonate with the average /.er - most are likely waaaay more familiar with Q&D and C&P than they are with sex

    9. Re:It's like sex... by jawtheshark · · Score: 0, Flamebait
      Correct and proper, like wooing a nice and attractive young lady, takes time, hard work, and if it works out, leads to something wonderful and long-lasting.


      Considering the fact that that all your efforts are usually vain. Even if you still believe in love and think you found the one. Don't be fooled, the bitch will drop you.... coldhearted...

      So give me the fuck with no responsibility, because the girl you want will dump you anyway.... What are you more proud of to tell to your mom: that you have a healthy sex life or that a girl broke your heart. I'll take the first one any day.

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    10. Re:It's like sex... by Just+Some+Guy · · Score: 3, Funny

      And which one would you rather brag about around the coffee pot?

      You: "Yeah, it took me seven times longer than Joe in Graphic Design, but the quality... Oh, the quality..."
      Coworker: "Joe did it seven times before you did it once? You are the suck."

      --
      Dewey, what part of this looks like authorities should be involved?
    11. Re:It's like sex... by jtdubs · · Score: 4, Insightful

      So, would you rather put on a resume:

      1. I contributed to a project that got out the door quick and made lots of money for the company.

      2. I contributed to a project that was well engineered, and was so late to market that no one wanted it.

      I think most managers would rather see the first one...

      Justin Dubs

    12. Re:It's like sex... by Anonymous Coward · · Score: 3, Funny
      which one would you rather tell your mother about

      I don't have to tell your mom about the quick and dirty - she was there.

    13. Re:It's like sex... by 3ryon · · Score: 2, Funny

      What if your bosses told you you had to fuck 10 women by 5pm Friday afternoon?

      Must be Thursday.

    14. Re:It's like sex... by Anonymous Coward · · Score: 0

      I'd grit my teeth and get the job done.

    15. Re:It's like sex... by happosai_tendo · · Score: 1

      "I did not have sexual relations with that woman.."

    16. Re:It's like sex... by The+Bungi · · Score: 1
      (or rather, put on your resume)

      So THAT's why I've been unemployed for three years now.

    17. Re:It's like sex... by xenocide2 · · Score: 4, Funny

      But you'd put "Nailed a super model in a very uncomfortable place" on your resume?

      C'mon, the back of a volkswagon, people!

      --
      I Browse at +4 Flamebait

      Open Source Sysadmin

    18. Re:It's like sex... by micromoog · · Score: 4, Funny

      "Iraq has weapons of mass destruction."

    19. Re:It's like sex... by agent+dero · · Score: 1

      Well, seeing as I don't have the time or beer to use option A or B, I guess i'll have to fuck a gal 10 times by friday afternoon and make it work.

      --
      Error 407 - No creative sig found
    20. Re:It's like sex... by nelsonal · · Score: 1

      The risk is that the HR manager reads between the lines:
      I contributed to a project that was so poorly designed the lawsuits bankrupted the company and I am now looking for a new job.

      --
      Degaussing scares the bad magnetism out of the monitor and fills it with good karma.
    21. Re:It's like sex... by The+Only+Druid · · Score: 1

      The kind of asshole who needs to brag about their sexlife isn't the kind of person who would invest time in a real relationship. The two characteristics are pretty much mutually exclusive. As a result, the guy who spent time building a relationship would never get into your situation (and moreover, wouldn't care about the arse in graphic design).

      --
      "Stumble before you crawl"
    22. Re:It's like sex... by PeteyG · · Score: 1
      So, would you rather put on a resume:

      1. I contributed to a project that got out the door quick and made lots of money for the company.

      2. I contributed to a project that was well engineered, and was so late to market that no one wanted it.

      I think most managers would rather see the first one...


      Well, yeah. That's a good point.

      What I was getting at, though was the contrast between...

      I like to do things really quickly with poor documentation, etc.

      And...

      I like to do a good job the first time so no-one is left fixing my mistakes.

      In the end though... I guess it's knowing just which way to go for which situation.

      --
      no thanks
    23. Re:It's like sex... by Anonymous Coward · · Score: 0

      Rather ...

      "I contributed to a project that got out the door quick and made lots of money for the company. However, it cost us so much in support costs that we would have been better off not releasing it in the first place."

      So in the end, it's a judgement call that needs to be made on a case-by-case basis. Sometimes you win, sometimes you lose - but that's how you play the game. :)

    24. Re:It's like sex... by Anonymous Coward · · Score: 0

      Of course, it hasn't been an issue yet....

    25. Re:It's like sex... by PeteyG · · Score: 1

      I dont know about you, but I DO NOT tell my mother when/if I get laid. There are some things she really doesnt need to know about.

      You would tell her in a hypothetical situation with someone holding a gun to your head...

      Did I forget to mention that part?

      --
      no thanks
    26. Re:It's like sex... by Oloryn · · Score: 4, Insightful
      I think most managers would rather see the first one...

      Problem is, they actually want to see both 'out quick' and 'well engineered', even if it's not possible.

    27. Re:It's like sex... by Anonymous Coward · · Score: 0

      Wow...it sounds like you have more issues than National Geographic

    28. Re:It's like sex... by henrygb · · Score: 1
      "Iraq has weapons of mass destruction."

      Error

    29. Re:It's like sex... by shadowbearer · · Score: 1

      and the first one is lots less painful :-) and probably results in lower costs of psychiatric care / drugs / name-your-choice-of-forgetful-activities

      I speak from experience, here. More than I ever wanted, trust me.

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
    30. Re:It's like sex... by hazem · · Score: 1

      That reminds me of George Carlin's joke:

      I never fucked a ten. But one night, I fucked five two's.

    31. Re:It's like sex... by Jboy_24 · · Score: 5, Insightful

      And what do you want your new managers to hear on the reference call?

      Your old company probably would like to say,

      "um, yeah, Joe? Man, that guy coded up a storm and we got the project out, but we had to ditch all of his stuff when we wanted to go to Rev 2.0."

      "In the end, it cost use twice as much to develop 2.0 because we most of our time trying to upgrade his stuff, then we had to start over. Actually we nearly had a programmer quit when he heard he had to support the old Rev 1.0 customers. From now on, when our developers start to code quick and dirty, we tell them not to Joe the code."

      most likely your old company would say though,
      " yeah, Joe was young and inexpirenced. He was quick, but left unsupervised he tended to write code that wasn't usable elsewhere. As well, he kinda was tough to work with, he had a kinda prima-donna attitude. Would I hire him again? Umm... well... if i had some small one-off projects I needed done, I'd like him there, but I think in any large project work, he'd probably feel like the procedures were holding him back and he'd rebel"

    32. Re:It's like sex... by NineNine · · Score: 1

      So give me the fuck with no responsibility, because the girl you want will dump you anyway....
      Almost. It's not that they'll always dump ya'... sometimes you get sick of them and want to get rid of them. I'd rather have a variety pack of cereal over one box of corn flakes any day.

      Correct and proper, like wooing a nice and attractive young lady, takes time, hard work, and if it works out, leads to something wonderful and long-lasting.

      That's some naive bullshit that I would've taken hook, line, and sinker when I was oh, say, 22.

    33. Re:It's like sex... by Alpha27 · · Score: 5, Funny

      It's interesting how you say 'when/if' as opposed to just 'when'

    34. Re:It's like sex... by DohDamit · · Score: 1

      "I am not a crook!"

    35. Re:It's like sex... by Cloud+9 · · Score: 4, Funny

      Hold on. Let me run that through my engrish-english translator...

      --
      Karma: Dyn-o-mite!(mostly affected by Jimmy Walker reading your comments)
    36. Re:It's like sex... by hazem · · Score: 1

      I think most managers would rather see the first one...

      Well, that only matters if you want to get the same kind of job you already have/had.

      If you get hired by the manager that prefers #1, you'll get more of the same.

      If you get hire by the manager that prefers #2, you're more likely to be satisfied with your job, and it's probably worth the wait.

      Going back to women - do you marry the first woman who'll fuck you? Or do you wait and marry someone you can build a meaningful relationship with?

    37. Re:It's like sex... by shadowbearer · · Score: 1

      Not all of us have been so lucky as to have found that special person. You can't apply a blanket opinion on that to everyone. Why do you think the divorce rate in the US is so high?

      I have many female friends whom I have very close relationships with. Some of them have been lovers, some not. Few of them agree that living together is easy. It can be very, *very* stressful, especially when you consider finances.

      You are right about the bragging; but wrong about investing time in real relationships. I don't brag, never have. I consider it to be one of the worst things you can do to another human being.

      But I've never left a woman unhappy, either. :-)

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
    38. Re:It's like sex... by caluml · · Score: 1

      Or 3. I had sex many times with the beautiful HR woman ( and lots of her female friends, at the same time), **AND** wrote an amazing program, which made the company **TONNES** of money? :)

    39. Re:It's like sex... by jawtheshark · · Score: 1
      name-your-choice-of-forgetful-activities

      Alcohol...and yes, I'm drunk right now.... And I don't want to be there either anymore....but I am... Trusting a girl is like shaving your dick with an army knife. Damned dangerous.

      --
      Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    40. Re:It's like sex... by Dr.+Photo · · Score: 4, Funny

      Nailed a super model in a very uncomfortable place

      Hooray for double-entendres! :-)

    41. Re:It's like sex... by Just+Some+Guy · · Score: 1
      The guy who needs to brag about how he'd never brag around the coffee pot isn't the kind of person who will ever find themselves in a position to have done something to brag about.

      Go out. Meet people. Learn to play pool. Relax, then come back.

      --
      Dewey, what part of this looks like authorities should be involved?
    42. Re:It's like sex... by Anonymous Coward · · Score: 0

      >(or rather, put on your resume)?

      Simple...I'd rather put the one that makes money for the company because that is what management wants to see...shareholder value, period.

    43. Re:It's like sex... by shadowbearer · · Score: 1

      Just remember: Never use a dull knife.

      Like: Never trust a girl, even a little bit, with a dull mind.

      That said, I'm working on the beer right now. Time off again. Sigh.

      SB

      --
      It's old. The more humans I meet, the more I like my cats. At least they are honest.
    44. Re:It's like sex... by intermodal · · Score: 2, Funny

      That'd explain why you've resorted to the porn industry (as noted in your sig)

      --
      In SOVIET RUSSIA... erm...NSA AMERICA, the Internet logs onto YOU!
    45. Re:It's like sex... by Anonymous Coward · · Score: 0

      "the bitch" ?

      shame on the shithead moderator who says this is "interesting". Been reading /. many years (more than you) and I rarely see such women bashing on here.

      we may be only 0.001 of the /. population but we are here, thank you. why not just call all the black people who frequent /. a bunch of niggers? oh, but calling women bitches is surely not as big of a deal.

      sounds to me like you have recently been dumped. geee, I can't imagine why.

    46. Re:It's like sex... by Anonymous Coward · · Score: 0

      And how would you know? You're too busy replying to lame stories on Slashdot .. Oh wait .. so am I

    47. Re:It's like sex... by epiphani · · Score: 1

      Oddly enough, someone telling me that i am 'the suck' might not nessecarily be bad.

      --
      .
    48. Re:It's like sex... by amigabill · · Score: 1

      > It's like sex.

      One mistake and you support it for the rest of your life. :)

      (probably remembered seeing this from someone's .sig on slashdot at some point...)

    49. Re:It's like sex... by Tri0de · · Score: 1

      Hey, who cares if it cost twice as much to do version 2.0 (or even 1.3) - if YOU ARE STILL ALIVE (in business) to sell the new version. And then so what- if you got there first, and everybody is using your software then they'll either upgrade to the new stuff (concomittantly you can pass the cost on the them) or keep using your old stuff, in either case keeping the competitors from geting in. For most companies it seems that dealing with the bugs is easier than switching to a whole new product.

      But my preference is to ALWAYS make the schedule. I'm honest with bosses, current and potential, and teammates and suppliers: quality is nice, being absolutly on time is critical.

      --
      "Everyone is entitled to their own opinion, but not their own facts."
    50. Re:It's like sex... by KDan · · Score: 1

      Does that go on the expense account? I'm sure it can be arranged.

      Daniel

      --
      Carpe Diem
    51. Re:It's like sex... by The+Only+Druid · · Score: 1

      The irony of your comment, although you couldn't possibly have known, is that I play pool quite often, as well as dating often.

      Anyway, its quite obvious that your just covering your own feelings of inadequacy by making comments like this. Its a logical fallacy, that basically states "if you have to deny this, then it must be true", and is the same fallacy demonstrated by people who claim we didnt land on the moon, or who claim the holocaust never occured.

      --
      "Stumble before you crawl"
    52. Re:It's like sex... by Phroggy · · Score: 5, Informative

      It's a Mallrats reference; see the movie if you haven't. Actually, see Clerks first, the Mallrats, then Chasing Amy, then Dogma. If you like all of those, see Jay & Silent Bob Strike Back and An Evening With Kevin Smith.

      --
      $x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
      $x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
    53. Re:It's like sex... by Jboy_24 · · Score: 1

      Yeah, but what if you do it right AND make the deadline?

      In the example we're working on, there is no gaurantee that you're still in business at 2.0 ship time. Remember your compition is going to start from scratch implementing a better version of your product as soon as you tell anyone the features of your Rev 1.0 product. Only Microsoft can force compition out by getting in early with a buggy 1.0 product.

      Maybe you havn't heard of Osborne computers (dead before 2.0), netscape (lost it at 4.7), Commodore (Amiga 3000 era) or the many other company's who raced out and created something cool in V1.0 and were first, but couldn't upgrade because it was too tough, too slow or too expensive.

      As far as 'making the schedule', if you hack up a quick and dirty fix, expect your sales force to expect you to deliver on every project in that time frame. As well, if your code is complete, quick and dirty and you deliver it to the customer and miss a requirement or two (it always happen) or the customer thinks up a new nifty requirement (and wants to pay), good luck ripping open a Q&D mess to implement new functionality and keep it functional. In the product world, it is nearly a gaurantee that compition will implement a feature that marketing (or engineering) will figure is a "Must Have", while your product is in alpha Q/A.

      Anal planning, overwriten code documentation and laborous code requirements probably never delivered a project on time, but total Q&D hack programming probably never delivered a stable bug free project/product.

    54. Re:It's like sex... by Gr33nNight · · Score: 1

      After a few years of a sex-free life, you start to become negative about that part of your life that you used to have.

    55. Re:It's like sex... by goldfndr · · Score: 1
      2xx-632-8782
      Just wondering what you were spelling out...
      • MEAT-RUB
      • MEAT-SUCk
      • something else
      ?
      --
      Copyrights, Patents, Trademarks: temporary loans from the Public Domain, not real property ("intellectual" or otherwise)
    56. Re:It's like sex... by Anonymous Coward · · Score: 0

      But what if it's with your mother? Man, I really gotta move out . . .

    57. Re:It's like sex... by Just+Some+Guy · · Score: 1
      OK, let's get this over with. I never bragged about my personal life. I especially would not now that I'm married.

      Have you ever read a fiction book? Do you think that Larry Niven, for example, has actually flown about the galaxy, or was he saying a bunch of stuff that he thought might appeal to an audience? It's the same here. Just because someone says something (that was obviously meant for its humorous appeal) doesn't mean that they believe it or have lived it.

      Settle down. It was a joke. Even if you didn't think it was funny, you should at least be able to recognize it for what it is. Understand now?

      --
      Dewey, what part of this looks like authorities should be involved?
    58. Re:It's like sex... by Anonymous Coward · · Score: 0

      "used to have?" Yeah, suuuuuure.... Just like Slashdot "used to have" lots of stories praising Microsoft.

    59. Re:It's like sex... by Anonymous Coward · · Score: 0

      Reminds me of that Newlywed Game legend...

    60. Re:It's like sex... by ergo98 · · Score: 1

      Of course the alternative is always

      "Oh yeah...Jimmy...yeah he's a real stickler about standards, documentation, and designing every element of the appliation to be infinitely versatile. Unfortunately he could never see the fallacy of his 'design for the world' approach, and the vast majority of his projects were utter failures, although he'll tell you that it was because of external factors beyond his control, and his desire for it to be 'done right'. By the time we finally got one of his projects out the door, 6x past the scheduled date, with loads of documentation, and code so well commented that you could let a monkey learn C++ on it, we discovered that it wasn't quite what the marketplace wanted, and technology had advanced anyways. His COBOL program has really good formatting though."

    61. Re:It's like sex... by Roofus · · Score: 1

      "Read my lips, no new taxes!"

    62. Re:It's like sex... by Anonymous Coward · · Score: 0

      Not true, you forget the part about the football player that snatched the proper young lady out from under your nose.

      So I vote for always quick and dirty, make the company money so you can still have a job next year.

      Note the above commented is in the context that the company is in a tight position and can't really afford to do it the RIGHT way.

    63. Re:It's like sex... by axxackall · · Score: 1

      See the boss of your boss, make the deal with him and together with him fuck your boss 10 times by 5 pm Friday afternoon.

      --

      Less is more !
    64. Re:It's like sex... by Anonymous Coward · · Score: 0

      "I don't seem to recall anything about Iran or those Contras..."

    65. Re:It's like sex... by Ben+Hutchings · · Score: 1

      That would make it time for a sexual harassment suit, I think.

    66. Re:It's like sex... by Anonymous Coward · · Score: 0

      A mod point! A mod point! My kingdom for a mod point!

      +1,000,000 Mathematically Pure Crystal Clear Insight

    67. Re:It's like sex... by Anonymous Coward · · Score: 0

      >do you marry the first woman who'll fuck you?

      is this a trick question?

    68. Re:It's like sex... by Anonymous Coward · · Score: 0

      Why, MEAT-SUB, of course!

    69. Re:It's like sex... by Anonymous Coward · · Score: 0

      Oh man, our 40-something HR woman is butt ugly, but she's got creamy white skin and black hair, which I love, full womanly thighs (good middle age spread goin') and heavy, pendulous D breasts. I'd love to sling her full thighs on either side of my face, peel away the sheer white nylons with my teeth, and bury my slobbering lips in her big, black-hairy puss.

    70. Re:It's like sex... by cybercuzco · · Score: 1

      You do if you produce a baby 9 months later.

      --

    71. Re:It's like sex... by Gr33nNight · · Score: 1

      I still dont tell her i had sex, I just go

      'Hey Mom, meet your grandkid!'

      Then run like hell before she kills me.

    72. Re:It's like sex... by Anonymous Coward · · Score: 0

      Yeah, wonderful. You'll be all chock full of wonder. Wondering why you don't get laid as often as you did when you were single. Wondering why you were apparently an interesting person before, but suddenly you need lots of changing. Wondering why your tech gadget budget has decreased and she get's $50 haircuts every two weeks. Etc., etc. Then you start thinking, my god, this really is long lasting, isn't it?

    73. Re:It's like sex... by jtdubs · · Score: 1

      I agree completely. Just gotta know which ones fits the situation.

      Have a good one,

      Justin Dubs

    74. Re:It's like sex... by anactofgod · · Score: 1

      Quick and dirty with a nice attractive young lady.

      Best of both worlds. ...anactofgod...

      --

      ---anactofgod---

      "Equal opportunity swindling - *that* is the true test of a sustainable democracy."
    75. Re:It's like sex... by rohanl · · Score: 1

      A woman walked into a bar, and said to the barman, "Give me a double-entendre"

      So he gave her one!

    76. Re:It's like sex... by Sajarak · · Score: 1

      > Sex on your resume is ALWAYS bad. See Bill Clinton.

      Monica Lewinsky OTOH...

    77. Re:It's like sex... by mrjb · · Score: 1

      It's like sex... make one mistake, support it for the rest of your life.

      --
      Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
    78. Re:It's like sex... by Anonymous Coward · · Score: 0

      Thing is, there's no guarantee that there will be a version 2.

      If you take your time and do version 1 properly, you might be so late to market that the game is over.

      Quick & dirty might make version 2 tough, but it might also be the only way you get the opportunity to find out.

      The best technology does *not* automatically win.

    79. Re:It's like sex... by sketerpot · · Score: 1
      The best thing to come from the whole Clinton thing was, IMHO, this phrase:
      It depends on what the meaning of the word "is" is.

      BTW, XHTML 2.0 will have a <blockcode> tag! Isn't that cool?

    80. Re:It's like sex... by Anonymous Coward · · Score: 0

      Most managers I've worked with not only don't care about a product being well engineered, but wouldn't know a well engineered product if they saw one.

      Heck, my manager now doesn't seem to realize there's a difference between a demo to try and get a contract and the final product. What's even worse is he starts marketting products that don't even exist and haven't gotten past the idea stage.

    81. Re:It's like sex... by Anonymous Coward · · Score: 0

      So, you've had sex, then. Tell me, what's it like?

    82. Re:It's like sex... by smithmc · · Score: 1

      It's a Mallrats reference; see the movie if you haven't. Actually, see Clerks first, the Mallrats, then Chasing Amy, then Dogma. If you like all of those, see Jay & Silent Bob Strike Back and An Evening With Kevin Smith.

      Skip Mallrats. Or put it after J&SBSB and AEwKS, if you decide that you really like Kevin Smith's stuff. Mallrats is so bad that Smith himself has apologized for it, in public. Clerks, Chasing Amy, and Dogma are the genuine article, though.

      (And no, I'm no relation.)

      --
      Downmodding is the refuge of the weak. Don't downmod, make a better argument!
    83. Re:It's like sex... by flibuste · · Score: 1

      I've been reading this thread for a while now and I notice there is something that everybody seems to forget:



      -- How much is that going to cost your company when a major bug is uncovered, and because the code is so bad, there is no workaround without a major redesign? or it takes 3 times the time to fix because the code is terrible?


      I myself ALWAYS apply the clean solution and I am still very successful in having others making a lot of money with my products, without me seeing much of it...
      I see people who apply quick and dirty solutions without much business pressure to do so as being "destructive youngsteers" - those never last more than one month in my team


      Don't tell me your program is bug free
    84. Re:It's like sex... by jpmorgan · · Score: 1
      BTW, XHTML 2.0 will have a tag! Isn't that cool?

      Not really.

      Now take a jet-powered waffle iron. That is cool.

    85. Re:It's like sex... by UserGoogol · · Score: 1

      "The first atomic bomb was dropped on Hiroshima, a military base. That was because we wished in this first attack to avoid, in so far as possible, the killing of civilians."

      --
      "Never attribute to malice that which can be adequately explained by stupidity." -- Hanlon's Razor
  9. Correct and Proper by dylan95 · · Score: 4, Insightful

    Correct and Proper
    Otherwise you're going to spend all your quick cash on fixing bugs and supporting craptacular software, not to mention bad press and angry users.

    1. Re:Correct and Proper by flying_triguy · · Score: 3, Funny

      Correct and Proper
      Otherwise you're going to spend all your quick cash on fixing bugs and supporting craptacular software, not to mention bad press and angry users.

      But you'll be RICH

    2. Re:Correct and Proper by agent+dero · · Score: 1

      Seemed to work for that other software company, I forgot their name, but it starts with an M and ends with something like icrosoft

      --
      Error 407 - No creative sig found
    3. Re:Correct and Proper by RALE007 · · Score: 1

      True, but the alternative you present seems to work wonderfully for Microsoft...

      --
      Beware blue cats moving at .99c
    4. Re:Correct and Proper by TheRaven64 · · Score: 2, Insightful

      How about correct and quick? If you don't write clear code and document it well then any time you save coding will be eaten debugging. Either way it will take the same amount of time, and if you rush and skimp on the documentation then you'll have unmaintainable code as well.

      --
      I am TheRaven on Soylent News
    5. Re:Correct and Proper by Anonymous Coward · · Score: 0

      I would add that "Correct and Proper" == "doing your fucking job." It isn't the responsibility of the user to make sure your software works. That should be done well before they get their hands on it--a final, working, bug-free product, not some alpha test trash that end users usually are stuck with. It makes the end user fantasize about what they'd would do to the programmer if we were so fortunate to meet them. Mine usually begin with a 8-lb sledgehammer to the testicles, since if it only takes about two pounds of pressure to crush them then a few hundred ought to be marvelous. After that, I'd start to hurt them mean, not gentle like before (to quote Unforgiven).

    6. Re:Correct and Proper by Anonymous Coward · · Score: 0

      With small companies it's sometimes easy to forget about the users. That is when users can't communicate, they're less likely to want more. A twist on misery loves company: company breeds malcontent.
      Only really affects the small companies that become big (or the specialty shops that sell software at $20k a pop).

    7. Re:Correct and Proper by Neurotensor · · Score: 1

      I think it should be up to the customer.

      Explain to them what the extra effort is going to get them down the track. Explain that no matter what the competitors say, there is no fast way to write reliable, high-quality code. If they still want quick-n-dirty then that's what they pay for and that's what they get. As long as it's documented that that's what they paid for, then when things start decaying and getting more expensive to fix you can remind them.

      People don't always want a good solution. Politicians and managers seeking a contract for something important often seek the cheapest, most crappy solution that stays working for the duration of their time in that position. After that, it's for the next guy to sort out. If you want the sale, you have to accept that. Just get it in writing that the next guy can't argue with. If somebody else gets that particular contract because the customer didn't want quick-n-dirty in writing, then be glad it was them and not you, for when the customer's PHB moves on to bigger and better things, they'll have to explain to the new guy why the code isn't very good, while you had the time to build a relationship with some other customer who appreciates honesty.

      Just my $0.02, I haven't been a project manager but I have been working under one.

  10. Always Document Approval by Anonymous Coward · · Score: 4, Insightful

    You don't state your position. Your manager should be getting proper sign-off for you. If that's your role, you're not doing a good job of it. Let the right people know, via email, and get confirmation, via email. Always do whatever is right for the situation. Sometimes it's quick and dirty, others it's slow and proper. Note that even quick and dirty can be well documented and follow process.

    1. Re:Always Document Approval by nick_davison · · Score: 2, Interesting

      Is it your decision?

      It sounds like it isn't your decision to call either way. So make sure you provide all of the information, including what the negatives will be, for both methods, then let the people who're paid to decide, decide.

      Sometimes, whether we like it or not, whether it suits our meticulous geek processes, staying in business and dealing with shit down the line is a better option than doing it right and going out of business. It's that old line: I can do it fast, cheap or well. Pick any two. In the business world, fast and cheap are going to sometimes win.

      The point is, for all you may disagree, you're not paid to disagree. You're paid to do as your manager and more senior management tell you to do. Your job is simply to give them the best information you can to make their decisions.

      It's a hard lesson to learn. It goes totally against every feeling of entitlement we have. It doesn't stop it being true though.

      Now the important thing is to keep the emails where you notify them of the negative consequences. You're not paid to decide, but you're also not paid to be abused for their decisions. By keeping the emails, you can prove you gave them the information and it was their choice. Knowing you have that saved can also help make the smiling and nodding easier.

      Finally, ask yourself... If you were in their position, if you knew you were buying problems in the long term but it was the only way to stay in business long enough, would you appreciate every person who's paid to obey your decisions questioning you on things you already know, don't like, but have to do anyway?

    2. Re:Always Document Approval by wuice · · Score: 1

      This is the truth. When your boss comes back to you asking why her little project is taking so long, refer her to those emails talking about how important it is to be thorough. When your boss wants to know why your project has so many bugs, or isn't extendable, or is taking a long time to update, you can point her to the emails saying how important it is that we get it done yesterday. Usually, unless you have a lot of clout where you work, these are things you're not going to get a lot of say over. They pay you to do what they tell you to do, and for many (but far from all) in management, this is ingrained into their psyche. They may make you perform on a project emphasizing things you think are unimportant and downplaying things you think are essential, but as long as you make them commit, you have something to show them when things don't go the way they want it to. Even a mediocre PHB isn't going to have much she can say to refute her own words. I've been in this situation more than a couple of times. Sometimes this isn't as easy as it sounds; managment often bests all but the laziest of employees at being non-committal.. I usually won't even begin working on a project until my boss signs off on it.

      Of course, if your PHB still points the blame on you, you can show everyone else those e-mails and make her look stupid. Which, she would be.

  11. Checked the unemployment rate lately? by Anonymous Coward · · Score: 0

    IMO, getting contracts and money in sounds awfully good...

  12. Well by CausticWindow · · Score: 1, Funny

    Who doesn't like it quick and dirty?

    This isn't the only aspect of life where quick and dirty is superior. If you stop to think about it, most things feel better when done quick and dirty. At least dirty, I know I like it dirty anyway.

    You know the kind of dirty that you won't get on afternoon tv, passions, etc. Know what I mean? And I'm not talking pay tv in a hotel dirty either, I'm talking real life forbidden in 49 states dirty. Huhu. Yeah, that's it, I knew you dug it.

    --
    How small a thought it takes to fill a whole life
  13. $uccess is temporary by mrybczyn · · Score: 5, Insightful

    Companies aiming for $uccess while compromising the quality of their software will only obtain this success in the very short term... Do what they want now, but look for better pastures while you're doing it, because your company won't be around for long.

    1. Re:$uccess is temporary by Anonymous Coward · · Score: 0

      Right, 'cause the most obvious and egregious example of this (a nameless company in the northwest) went out of biz right after they started. Oh, wait.....

    2. Re:$uccess is temporary by Atomizer · · Score: 2, Insightful

      Yeah, totally right. Just look at that stupid company Microsoft that put out their first OS, QDOS? Quick and Dirty OS. Talk about a bad business move. Imagine how much richer Bill Gates could be today if he had only taken a few years to write a perfect from the ground up OS that would be easy to support and modify for the future. Something like BeOS maybe. That would be cool.

    3. Re:$uccess is temporary by sparkhead · · Score: 4, Insightful

      [Obligatory MS bash]
      Tell that to Gates.
      [/obligatory MS bash]

      Seriously though, the "there's never time to do it right, but there's always time to do it over" camp has a lot going for it. If you cannot do it quick someone else will.

      On the surface a product riddled with bugs looks very similar to one thoroughly tested. Then when a customer starts filing defect reports, you can amaze them with your quick turnaround and great customer service in fixing them.

      It's a sad commentary, but it's how most business works.

    4. Re:$uccess is temporary by LostCluster · · Score: 1

      Actually, in the software industry perfection is deadly.

      Imagine what would happen if Windows ever reached perfection. How would Microsoft ever get anybody to upgrade? Users already have the perfect operating operating system in hand. The only way to stay in business is to convert to a subscription license, and we all know how poorly that goes.

    5. Re:$uccess is temporary by Yo+Grark · · Score: 1

      I'm in such a company. Let me tell you, once there's no new features being asked for, and the software never breaks, your perpetual revenue stream for support and maintenance kicks you in the ass.

      "I know you never call for technical support, and that our software never breaks, and is completely intuitive and has 0 learning curve, and fulfills all government specifications, but please buy support anyway!"

      I don't know how many times I hear statements similar to these being made around the office.

      Anyone know of a company with lots of buggy software that people have to buy in droves? :P

      Yo Grark
      Canadian Bred with American Buttering

      --
      Canadian Bred with American Buttering
    6. Re:$uccess is temporary by Anonymous Coward · · Score: 0

      If you are not making money on support, then you should be developing other products, moving into new markets, etc. If what you say is true, then you are in a good postion to offer your services to people who would like software which doesn't require lots of downtime, upgrades, service, support contracts, etc. Unfortunately, if you haven't thought of doing this, and have been sitting on your laurels waiting for that juicy support money to start flowing in, you probably don't have enough time to start this up and will be out of business pretty soon. Oh well.

    7. Re:$uccess is temporary by Anonymous Coward · · Score: 0

      Microsoft positioned themselves to monopolize the PC OS market. Period. Even if you had a superior product and got it to market faster than Microsoft, they could still beat you(lots of examples are relevant here, I'll leave you to fill in your own). This had little to do with quick and dirty/slow and correct. Also, MS did not write QDOS they licensed it from Tim Paterson who had already written it when MS approached him.

    8. Re:$uccess is temporary by deviator · · Score: 1

      Exactly.

      Don't just sit there and rot--innovate. Do something your competition isn't doing. Find more markets. Geez, just because the rest of the industry makes their bread & butter on (questionably) charging people up the ass to support their own software doesn't mean you _must_ follow this model. Look at Apple - still profitable - very innovative - software is pretty solid & easy to use. They just keep making more of it--dazzling their customers. When's the last time Microsoft dazzled a customer?

      Whatever happened to high values, moral integrity, "the right way to do it?" I mean, I know some people may 'claim' it's been beaten out of them by Dilbert-ish management, but it doesn't mean you can't keep trying. What's the point of work if you don't enjoy it? Quit whining and complaining - if you don't like your situation, go find another job--or start your own company and do it the right way.

    9. Re:$uccess is temporary by kipsate · · Score: 1

      You mean, just like Microsoft?

      --
      My karma ran over your dogma
    10. Re:$uccess is temporary by HopeOS · · Score: 1
      Another Tao:

      A master was explaining the nature of Tao to one of his novices. ``The Tao is embodied in all software - regardless of how insignificant,'' said the master.

      ``Is the Tao in a hand-held calculator?'' asked the novice.

      ``It is,'' came the reply.

      ``Is the Tao in a video game?'' continued the novice.

      ``It is even in a video game,'' said the master.

      ``And is the Tao in the DOS for a personal computer?''

      The master coughed and shifted his position slightly. ``The lesson is over for today,'' he said.


      -Hope
  14. "Quick 'n Dirty" vs. "Correct and Proper"? by Anonymous Coward · · Score: 0

    Either is fine with your mom... :) But, ultimately she prefers 'back-door love', if you catch my meaning.

    1. Re:"Quick 'n Dirty" vs. "Correct and Proper"? by MojoMonkey · · Score: 2, Funny

      if you catch my meaning.

      hmmmm no, what do you mean? That was much to subtle.

      --

      ----- "Blame the guy who doesn't speak English." -- Homer J. Simpson
  15. it all depends... by brondsem · · Score: 1

    it all depends on your situation, goals, outside forces, etc. why does everyone "ask slashdot" about how they should do things? there is no hidden genie that will make all your problems go away. think about it, then do it.

    --
    "a quote" -me
    1. Re:it all depends... by David_W · · Score: 1
      why does everyone "ask slashdot" about how they should do things?

      Becausing asking Slashdot results in discussion, which in turn shows different angles and approaches to the problem? The best solutions to a problem are not often found alone.

  16. Quick and Dirty? by Anonymous Coward · · Score: 2, Funny

    Actually, there's different schools of thought. Your sister likes it quick and dirty - there's no doubt about that. However, your mother likes it when I take it nice and slow.

    1. Re:Quick and Dirty? by Anonymous Coward · · Score: 0

      Shut up, Dad! My friends reads this site!

  17. Re:Passion is the key - if you're passionate, rele by Anonymous Coward · · Score: 1, Funny

    I see you didn't take the red pill...

  18. I think for the few truly excellent programmers: by ath0mic · · Score: 4, Funny

    "Quick 'n Dirty" == "Correct and Proper"

    ...and believe me, I'm not one of them.

  19. Whats a process ? by shaka999 · · Score: 4, Interesting

    At least well I work process is what everyone agrees we should be doing. We are never, NEVER, given the time to completely follow the process. If you try you will either be working 60+ hour weeks or laid off for missing schedule too many times.

    What I find funniest about our development process is that the people most adamant about putting things in place and documenting developement usually aren't having to do all the grunt work they are suggesting.

    --
    One should not theorize before one has data. -Sherlock Holmes-
  20. What I do... by MoeMoe · · Score: 1

    Show them that the proof is in the pudding... Give them an explanation of why you did things the Q&D way and how your decision brought in money for the company. If they still complain, then do the Q&D but make it look C&P... Tricky I know, but an "attempt" at C&P justifies your actions, works for me anyway ;)

    --
    Business \Busi"ness\, n.;
    A scam in which all people involved perceive as beneficial...
  21. I know the feeling by tlacicer · · Score: 0

    I often just want to get up during a meeting walk over to a wall and say "Why aren't you listening to me!!!"

    --
    "A synonym is a word you use when you can't spell the word you first thought of." - Burt Bacharach
  22. *Cough* *Cough* by buffer-overflowed · · Score: 5, Funny

    Clicky Clicky.

    Truly, things to program by (or not).

    --
    The key to the enjoyment of pop music is to replace any instance of "love" with "C.H.U.D."
    1. Re:*Cough* *Cough* by scalis · · Score: 1

      First time I visited this site, I loved it... All the way down to the proposed use of K&R style braces. It ruins everything.
      Anyone forcing me to give up the Allman style simply must be wrong. =)
      This is religion we are talking about, sites proposing K&R should be subjects to the inquisition!

      --

      True ravers don't need drugs
    2. Re:*Cough* *Cough* by Anonymous Coward · · Score: 0

      HERETIC! BURN HIM! He rejects the one true brace style!

    3. Re:*Cough* *Cough* by LoztInSpace · · Score: 1

      Cute, apart from the fact that none of this has been relevent since about 1986. Except point 7.

    4. Re:*Cough* *Cough* by Anonymous Coward · · Score: 0

      What a buch of heretic shit.
      Especially apropos NULL.
      You freaks need to get a day JOB at MS.

    5. Re:*Cough* *Cough* by fritter · · Score: 2, Funny

      Yeah, right.

      Like I'm gonna take programming tips from someone who starts lists at ONE.

    6. Re:*Cough* *Cough* by buffer-overflowed · · Score: 1

      So I take it you don't believe in bounds checking then? (#5)

      --
      The key to the enjoyment of pop music is to replace any instance of "love" with "C.H.U.D."
    7. Re:*Cough* *Cough* by buffer-overflowed · · Score: 1

      That's a good one. It's all tongue in cheek anyway though.

      --
      The key to the enjoyment of pop music is to replace any instance of "love" with "C.H.U.D."
    8. Re:*Cough* *Cough* by LoztInSpace · · Score: 1

      Generally not for strings. Maybe if I still used char arrays like I did in 1986.....

  23. Professional Software Tester's Opinion: by Anonymous Coward · · Score: 1, Insightful

    Just let the marketing guys do the math:
    Quick and dirty solution:
    $1000 to make
    $100000 to support
    or
    Proper solution:
    $10000 to make
    $10000 to support

    1. Re:Professional Software Tester's Opinion: by ryanr · · Score: 2, Interesting

      Oh man, if they can sell a $100,000 support contract, they'll never let you do it properly.

    2. Re:Professional Software Tester's Opinion: by Discordantus · · Score: 2, Interesting
      You forgot to add something into your equation:
      Quick and dirty solution:
      $1000 to make
      $100000 to support
      $1000000 in profit (for getting there first)
      or
      Proper solution:
      $10000 to make
      $10000 to support
      $10000 in profit ('cause someone else got there first)

      The nice thing about "Quick and Dirty" is that it can get you there first... That is a fairly important factor.

      In situations where Time to Market is crucial, it's often better to do "Quick and Dirty", then start from scratch and do "Correct and Proper" for version 2

  24. Personally by elBart0 · · Score: 5, Insightful

    I'd rather work for a company that's in business two years down the road, than work for a company that got lost in the dust.

    But, ultimately I think the answer to the question lies in the actual type of work being done. Throwing together a quick app convert some data from one format to another, for one time use, is very different from building mission critical applications.

    The end result and the time required to meet that result will ultimately determine the correct approach, on a case by case basis.

    --
    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
    1. Re:Personally by haystor · · Score: 3, Interesting

      The time and cost required to meet various goals, minus the opportunity costs of meeting previos goals at those quicker and dirtier levels of effort.

      Every day I'm more convinced that quick and dirty is better because it gets code written which means it can be tested and often that means finding some aspect of the way the business is *really* run that was previously unknown.

      Of course, I work doing business programming. If I drop one order a month at $40 that's no big deal really. Customer service will call that person, work it out by hand. Total cost to us is usually about 1 hour of customer service time. If I have to go fix that rare case to save $40/month and it costs the company $5k's worth of my time, that's not money well spent. We can process 99.9+% of all orders without a hitch. If I were coding for heart monitors however I might have a different attitude or at least much higher tolerances (I'm thinking 1 in a billion at least).

      --
      t
    2. Re:Personally by f97tosc · · Score: 1

      Throwing together a quick app convert some data from one format to another, for one time use, is very different from building mission critical applications.

      Yes, but it is amazing how often the one-time-use data conversion app evolves into something mission critical used all the time.

      My answer to this is that doing solid foundation work almost always pays off. However, a lot of developers have a tendency to want to add extra features and functionality that is cool and interesting. In this sense the market-bots are sometimes right; one must ask what features really make business sense.

      Tor

  25. Re:Passion is the key - if you're passionate, rele by Anonymous Coward · · Score: 1, Funny

    Yes! Man, the interface sucks and it takes longer than pencil and paper to get a result, but I am just filled with many warm fuzzies when I discover the sheer passion and drive that went into developing such a substantard product. At least, that's what the developer told me...

  26. Being the market leader by suso · · Score: 1

    One more thing. Usually the product that wasn't built well fails in the end. But it really depends on what market it is, how much demand there is and also who the customer is. The situation is going to be different if this is a product for the consumption of millions of people (ie, a game or whatnot) than if it is a product for a large corporation (large database interface, etc.)

    1. Re:Being the market leader by shaka999 · · Score: 2, Insightful

      I have to [somewhat] disagree here.

      Usually the product that wasn't released within a market window fails. If your product is late out the door you don't stand a chance.

      --
      One should not theorize before one has data. -Sherlock Holmes-
    2. Re:Being the market leader by GlassHeart · · Score: 1
      Usually the product that wasn't released within a market window fails.

      What you are forgetting is that defective products also fail. Products that don't do what the customers want will also fail. Products that are too expensive or too cheap also fail. Products not promoted properly also fail. Even version 2 products of successful version 1 products fail, especially if version 2 had to be rewritten from scratch.

      The question is one of optimizing multiple factors. There's a time to market requirement, a feature requirement, a price requirement, and so on. Your job, as the engineer, is to balance all these requirements to come up with a product. Where requirements contradict, you (or your boss) will prioritize relatively. If your boss refuses to downgrade any priority, then do your best while looking for alternative employment.

      The mistake in the question is assuming that there are only two choices: "correct" and "quick and dirty". Except for some of the most trivial and time-sensitive projects, there's likely enough time to do a proper design and module breakdown. This paves the way for a quick and dirty implementation, but doesn't suck so badly as to require a total rewrite for version 2.

  27. Example by Lane.exe · · Score: 2, Interesting
    Microsoft

    Now, hear me out, an don't mod me up as funny or down as a troll. :)

    Microsoft often takes the quick-and-dirty way, and despite this, they've been successful, because, on the whole, their project is usable to end users. This should be what you strive for in business. If it works 95% of the time as a quick-and-dirty solution, then worry about fixing that 5% later when you have time. If the end users can get their work done without causing any potentially serious complications, why bother?

    Of course, I also have to develop databases using FileMaker Pro. All I know is quick and dirty!

    --
    IAALS.
    1. Re:Example by spideyct · · Score: 2, Insightful

      How can you NOT be modded as a troll when you make a blanket statement and don't provide examples?
      Just because Microsoft software has bugs, doesn't mean they develop things "quick and dirty". Yes, I'm sure some stuff is pushed out the door before it's 100% clean, just like every other commercial software vendor. But that doesn't mean that they don't have stringent development processes.
      You could put any commercial software company's name in the first line of your post. But because you chose to use "Microsoft", I'll call it a troll.

    2. Re:Example by Arandir · · Score: 2, Interesting

      Don't let their monopoly status or proprietary anti-unix stance lead you astray. Microsoft does some pretty good coding. They are far from perfect, but in the large they do correct and proper solutions.

      For example, DOS. People today laugh at DOS and the problems it caused Windows on i386 machines. Many would point to it as a quick and dirty solution. But those who do fail to understand that DOS (a CPM clone) was a correct an proper solution to a 8086 with 640K RAM, and that they quickly started working on a replacement for more powerful processors.

      Some correct and proper solutions from Microsoft off the top of my head (though a few may be tainted by overhype and feature creep): all early MS compilers, OS/2 (originally a MS project), NT, COM, integrated browser, and much of .NET.

      p.s. I am not a Microsoft fan, being a loyal NIX fanboy and FOSS advocate, but credit has to be given where it is due.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    3. Re:Example by jmccay · · Score: 1

      At the last company I worked for, I always ended up doing a quick and dirty solution because time didn't allow the proper way. I did find a compromise. I ended up doing a gradual phase-in of the proper way to do things over the history of the product.

      --
      At the next eco-hypocrisy-meeting, count the private jets used to get to the meeting. Should be interesting to see that
  28. it's not that simple by SweetAndSourJesus · · Score: 2, Insightful

    Unless your contracts allow "as long as it takes" as a deadline.

    Sometimes quick and as proper as possible (but mostly quick) is your only option.

    --

    --
    the strongest word is still the word "free"
  29. Of course I won't pick one of them. by Leffe · · Score: 1

    I would do something quick and dirty at first, then try to fix as much as possible if there is time over. Afterwards I'd try to patch what can be saved, maybe run away to somewhere where noone can find me -_- I'd better bring some sort of connection to the internet though, or I'd starve(order pizza to the north pole).

    The correct and proper way is the preferred one though, unless you are very time limited you SHOULD(RFC >:)) do it the correct and paper(that's what I read at first) way.

    If it's about money and losing money... hmm... maybe looking over the development process to cram some extra %s of properness out of the hackers ;)

  30. I wonder.... by forwhomthebelltrolls · · Score: 1

    if the not-so Anonymous Coward works on the Microsoft HTML rendering engine

  31. indeed by Anonymous Coward · · Score: 0

    "et al" is NOT a substitute of "at all"

    __j

  32. ...and the oscar goes to by Elphin · · Score: 0, Offtopic

    ...and the oscar goes to Jouster for "Post that brings tears welling in eyes"

    1. Re:...and the oscar goes to by Anonymous Coward · · Score: 0
      Not Oscar.

      Pulitzer Prize, and a job at the New York Times.

    2. Re:...and the oscar goes to by Jouster · · Score: 1
      Pulitzer Prize, and a job at the New York Times.
      Where do I sign up? ;)

      Jouster
  33. Do it right. by nuggz · · Score: 4, Insightful

    If quick and dirty works good enough, then it should be the final solutions.

    If it does not work good enough, then no matter how quick it is, it isn't a solution.

    The procedure is there for a reason, follow it. If the procedure is wrong correct it.

    1. Re:Do it right. by gwernol · · Score: 1

      If quick and dirty works good enough, then it should be the final solutions.

      If it does not work good enough, then no matter how quick it is, it isn't a solution.

      The procedure is there for a reason, follow it. If the procedure is wrong correct it.


      I have to disagree. Although a Q&D approach can get you a good enough product now, it may induce much greater costs down the road. One definition of Quick and Dirty is a product that meets the requirements for v1 without allowing for the extensibility for version 2. Sure you can get to v1 more quickly, but the costs of getting from v1 to v2 will likely kill you unless you engineer v1 to be maintainable from the start.

      --
      Sailing over the event horizon
    2. Re:Do it right. by castrox · · Score: 1

      I'm afraid you're missing the point of e.g. documentation. You should be able to do maintenance and for that you most likely need documentation.

      Then of course the code might be running fine for "most of the time" but it might in fact be broken on certain unforeseen conditions. Even if the quick'n'dirty solution seems to do fairly well it might and probably will hurt you in the long run.

      Doing it "right" is not equivalent to making a quick'n'dirty "fix". Perhaps there's a need to see to the real problem instead and fix that.

      --
      Fight for your digital freedom, join the EFF *now*: http://www.eff.org/support/
    3. Re:Do it right. by BlueFrog · · Score: 2, Insightful
      I think you're missing something: time pressure.

      Solution:

      1. Deliver on time, even if you have to release an unmaintainable product.
      2. Profit.
      3. Make a second pass, re-write the thing, and end up ready for the next round of new features.
      4. When the time comes, go back to step 1.
    4. Re:Do it right. by firewood · · Score: 1
      The procedure is there for a reason, follow it. If the procedure is wrong correct it.

      This is religious dogma whose prime assumption is that what humans think is proper procedure actually works. In actuality, proper procedure (as understood before the fact) often fails, and adaptive problem solving often wins in real life and the market. Most of the dominant software and hardware platforms in use today did not start out as elegant ISO design exercises.

    5. Re:Do it right. by evbergen · · Score: 1

      Well, duh. But what is "good enough"? Not handling error cases? A few nasty races here and there?

      If the demo program produces correct results in only 90 % of the cases, is that good enough? Or do you need that time to actually build sane synchronisation and error handling before you can ship?

      And how about maintenance and support costs for a program that works 98 % of the cases?

      These are hard questions.

      --
      All generalizations are false, including this one. (Mark Twain)
    6. Re:Do it right. by Anonymous Coward · · Score: 0

      Well, duh. But what is "good enough"?

      'Good enough' is whatever meets the requirements.

      If the requirements don't say anything about error handling, then you don't do anything about it, no matter what your 'normal' practice might be. If they don't mention documentation, don't provide any.

      When your customer complains, point out to them that *these* are the requirements they signed off and these are what you've been working to. If they want to introduce new requirements later on, they're welcome to discuss prices with your salespeople.

  34. Quality will be rewarded in the end by whistler36 · · Score: 3, Insightful

    I always assume that code that can be easily maintained (which is the assumed outcome of following the process) will be cheaper and more appreciated in the end. It might be better to examine what is happening at the company when you are consistently left without enough time do it the correct way. Of course, if management is composed of morons (Could this actually happen?) you might not be left with any choice.

  35. Get the sale (and prepare for doing things right) by burgburgburg · · Score: 3, Interesting
    Any down time should be used to create the circumstances so that a proper procedure solution can be quickly, cleanly applied. For now, though, get the damn sale. If you're around long enough (and anyone still cares), you can fix it later.

    That said, quick and dirty is always more fun.

  36. Re:Passion is the key - if you're passionate, rele by El · · Score: 2, Interesting

    Sorry, but I got terminated from my last position for having the gall to actually attempt to improve the product (without getting permission from all my coworkers who were out on Christmas vacation first). My take is that most managers would rather have developers that at least pretend to do what they're told, no more, no less.

    --

    "Freedom means freedom for everybody" -- Dick Cheney

  37. Quick & Dirty by Anonymous Coward · · Score: 2, Insightful

    George S. Patton Once Said...
    "A good plan, violently executed now, is better than a perfect plan next week"
    If its good enough for the US Third Army it must be good for Corporate America...

  38. The obvious answer by CausticWindow · · Score: 1

    But not an answer that will appeal to most people.

    You make it quick and dirty while on the companys time, but you think it through so that an elegant solution isn't far away.

    Then, out of pride in your work and your legacy in general, you make it elegant on your free time. Just be sure to get credit in the headers.

    --
    How small a thought it takes to fill a whole life
  39. Maintenance Contract by Crashmarik · · Score: 4, Insightful

    Custom Development should never be sold without maintenance.

    Document what your nominal superiors specifically asked you to do and when the maintenance costs go out of control present the doc. All things being equal the contract will cover much of the cost of correcting things and some will learn the benefits of doing things right from the begining.

    1. Re:Maintenance Contract by antaeus · · Score: 1

      Custom Development should never be sold without maintenance.
      Even non-custom development work. In the industry in which I work, the core app for most businesses is a membership management database (everyone calls it 'CRM' now, of course). In our case, the company releases a .0 version every 9 months or so... and we all sit back and wait for the .1 release a month later.
      I suppose you could say they get the best of both worlds: the hastily done version gets to market quickly, and since no one goes near the .0 version, it's basically a marketing tool. While the PR folks tout all the new features, the coders fix the bugs and roll out a workable version. This is what our maintenance/license fees are paying for.

  40. In a Capitalist Economy, what do we follow? by _Sambo · · Score: 1

    MONEY!!!

    I feel the pain of everyone who is forced into the quick and dirty path. It's somewhat like being forced to join the dark side of the force.
    BUT:
    When the client needs something done, and the quick and dirty way will deliver, businesses will almost always choose the quick and dirty way.

    It is difficult to find a for profit company where profit is not a top priority.

    It's one of the things that makes america great. We don't care how bad the product sucks, as long as someone will definitely buy it.

    1. Re:In a Capitalist Economy, what do we follow? by Just+Some+Guy · · Score: 1
      And in a Socialist economy, what do we follow? Who knows; we never got to that part.

      Seriously, though, Q&D doesn't necessarily mean more money. Ask NASA how well their "quicker/cheaper/whatever" policy worked out. In other arenas, how much can you save in tech support, pissed off customers, and a bad rep by going slower and doing it right?

      Remember, there are other factors to a bottom line than "out the door quickly".

      --
      Dewey, what part of this looks like authorities should be involved?
    2. Re:In a Capitalist Economy, what do we follow? by Arandir · · Score: 1

      MONEY!!!

      Amen! And as a capitalist I am able to look farther in the future than just next quarter. Which is why I want the correct and proper solution.

      Oh! Did you mean to say "Corporate Economy" instead? That's a different matter all together. Today's marketplace certainly is not capitalistic...

      --
      A Government Is a Body of People, Usually Notably Ungoverned
  41. Unless you work for... by Anonymous Coward · · Score: 0

    Unless you work for a company with a software quality assurance plan; you're screwed.

  42. Quick And Dirty by sparkhead · · Score: 1, Redundant

    If it's a question of losing the customer to another shop that works quick and dirty, do it Q&D.

    But get, in "writing" (email), confirmation from the powers that be that you're circumventing procedures in order to get the work done within the timeframe needed.

    They can either attempt to explain to the potential customer that it will take longer for a quality product or simply not say a word.

    At that point it is their choice. Give them all the options, cover your ass, and get the work done as they want it. If they come back to give you crapola, show them the paper trail of approval for what you've done.

    1. Re: Quick and Dirty by Anonymous Coward · · Score: 0

      I just quit a job because of this. If quick and dirty is what they want then you have two options:
      1. Work standard 40 hrs and give it to them dirty.
      2. Work OT and make the project as good as you can for your own personal benefit of knowing you did the best job under horrible circumstances.

      About the blame game that's sure to follow: make sure you email your PHB's and tell them of your concerns. These people are artists at turning tables and deflecting responsibility. At least with an email you can justify your position after the fact. Good luck, its no fun working in places like that. The job market's still tough though, so save save save and take it as long as possible :)

      Good Luck!!

    2. Re:Quick And Dirty by keyslammer · · Score: 1

      But get, in "writing" (email), confirmation from the powers that be that you're circumventing procedures in order to get the work done within the timeframe needed.

      Doh! That could take longer than writing the code the clean and proper way.

  43. Do what you're told by Anonymous Coward · · Score: 0

    Do what you're told, and document, docoument, document your concerns/admonitions/warnings.

  44. Microsoft have already answered your question. by paj1234 · · Score: 2, Insightful

    Do it quick and dirty on the inside, make it look glossy on the outside. A short term fortune awaits...

    1. Re:Microsoft have already answered your question. by happosai_tendo · · Score: 1

      Microsoft is not really known for being "quick" about turning out anything.. if anything, they are more known for slipping release dates for "quality" (*cough* *cough*) reasons. Although I won't argue with them making it look glossy on the outside - Microsoft = Marketing..

      - A quick solution does not always have to be a poor and dirty solution.

      - A solution that takes a long time to develop and produce does not always equal a good and proper solution.

      The goal would be a quick and proper solution that satisfies the need given a set of constraits (one of them being time).

  45. Prove yourself first by The+Bungi · · Score: 2, Insightful
    In my experience problems like these won't ever end until you prove yourself first by implementing The Right Way at least once. Before that the PHB just thinks you want to play|learn on company dime|extend your contract.

    Once you've done it correctly once, they're much more likely to be putty in your hands, because you've gained credibility.

    Of course the trick is to get that first success, and, sometimes, to convince them that the thing doesn't break because it was fscking done correctly, not because it's simple. Many times you end up making things look easy when they're really not, and that gives the wrong impression. Sigh.

    But anyway, having a half-intelligent PHB also helps =)

  46. Do what the PHB's say they want by Archfeld · · Score: 1

    JUST GET IT IN WRITING or you are screwed. As a systems engineer I KNOW this pain intimately. No matter HOW they APPEAR to understand the needs and requirments, THEY DON'T. The ONLY thing they UNDERSTAND is $$$'s and personal liability/culpability, ensure that you as a technology implimentor (oooo PC terms abound ) are not the one whose name is on the bottom line... Or of course you can always go Don Quioxte and give your self an ulcer for nothing as well :)

    --
    errr....umm...*whooosh* *whoosh* Is this thing on ?
  47. Change your process by SlashdotLemming · · Score: 2, Insightful

    The Unified Process and Extreme Programming are more than buzz words.
    My point here is learn how to develop iteratively and incrementally, so that your first quick and dirty cut is on the path should the project continue.
    The key is to learn how to identify high risk items early, and learn what you can and cannot take shortcuts on.

    Harder that it sounds, as always :)

  48. Quick, Correct and Proper by I+Like+Swords!!! · · Score: 2, Interesting

    I say just drop the 'n Dirty and that's what you should do.

    Do everything you can in (one of) the correct way(s), but as fast as you possibly can. Q&D solutions often reach up and bite you in the behind when you least expect them, resulting in wasted time trying to fix the "solution". Taking some amount of time (but not too much) to solve a problem is preferable if you ask me. But when you have people that don't have even the slightest inkling about what you are doing breathing down your necks... I can see where doing it dirty comes about.

    --
    .unsigged
  49. The question is misleading. by Mensa+Babe · · Score: 1

    "Quick and Dirty" vs. "Correct and Proper"? That is not a good question. That is not a good question at all. Where is e.g. "Quick and Correct"? I am not sure about other people, but this is how I presonally prefer to work. And no, using no strict and no warnings pragmata does not necessarily mean my code is "dirty." I exactly know what I am doing.

    --
    Karma: Positive (probably because of superiour intellect)
    1. Re:The question is misleading. by Anonymous Coward · · Score: 0

      well, that's great if you code your own stuff, but shutting the warnings and strictness off if you are not the only coder on a team is not exactly a good idea. others might not be as good as you are.

  50. Quick, Cheap, and Quality by MalleusEBHC · · Score: 1

    Tell your bosses that they may chose 2 of the above 3 options for each project. If they ask for all 3, you can either A) find a new job or B) pray.

  51. Depends. by davidsheckler · · Score: 2, Insightful

    When you do something quick and dirty, do you have
    to maintain it? Or will that task be left to
    some other poor slob who will bitch and moan
    about the piss poor coding you did.

    If you have to maintain it, do it right. You'll
    be the person getting phone calls in the middle
    of the night if you don't.

    Of course you should always produce clean, well
    tested code if you have any morals.

    I guess the real answer is do the best you can
    with what you're given. Make sure those in
    charge know what you're doing and why you're
    doing it. Are you, and your company satisfied
    with the end result? If not, go back to start
    and take a look at your methodology.

    It reality only the government and
    aerospace can afford true software engineering.

    1. Re:Depends. by silma · · Score: 1
      It reality only the government and aerospace can afford true software engineering.
      Or OSS community -:)
      --
      English is not my native language !
    2. Re:Depends. by Arandir · · Score: 1

      Or OSS community

      Well, true, they can afford true software engineering. But so often they just don't bother. When you find properly engineered Open Source Software, nine times out of ten it came from the government or aerospace...

      --
      A Government Is a Body of People, Usually Notably Ungoverned
  52. Scott versus LaForge by SunPin · · Score: 5, Insightful

    This is precisely why I work on referrals only. Random customers hear about how great you are and then expect perfection in five business days.

    Referrals create an environment where one customer understands what the last one went through and why they decided to allow the project time.

    Be up front. If you want a quick timeframe, you lose future expandability. If you want a robust program that won't be obsolete when a business process changes then that requires more time.

    That way, it's the customer's decision and not yours.

    --
    Laws are for people with no friends.
  53. Quick and Unemployed by Liselle · · Score: 5, Insightful

    Sometimes it's necessary to do something "quick and dirty" as a stopgap, but it's my opinion that it should only be used as an emergency strategy, to be followed up with a permanent solution ASAP.

    I work at a small software company that operates in a niche market, though we have competitors. I am not a developer, but I work closely with them (I do QA). I have lost count of how many times one of the devs has slapped on a band-aid fix, made a build, shot it up to the company FTP, and next thing I know, I am dealing with irate clients who have to deal with bug fallout and unforseen consequences.

    It it ALWAYS better to plan ahead, and do it right the first time. Money comes and goes, but your reputation is more important in the long run than any short term monetary gain.

    --
    Auto-reply to ACs: "Truly, you have a dizzying intellect."
  54. Read 'The Pragmatic Programmer' by avandesande · · Score: 1

    ... by Hunt and Thomas. This book really helps you understand how to achieve balance in your work.

    --
    love is just extroverted narcissism
  55. Management isn't always useless by Anonymous Coward · · Score: 2, Informative

    As revolutionary as this might sound on Slashdot, there are times when it is the correct decision to give your boss all of the facts, and let him decide. The positive benefits include:

    1) You are much less likely to get in hot water for making the wrong decision. It would take a truly malicious boss to hold you accountable for a decision that he/she made.

    2) There is a reasonable probability that your boss will have a better sense of the urgency of the relevant business issues than you do, given his communication with upper management. If you can clearly present the technical pros and cons, he can weigh those against the business pros and cons in a way that neither of you could do without information from the other.

    3) Lets you stop agonizing and get back to coding.

    -Tupshin

  56. Quick and dirty by crivens · · Score: 1

    Quick and dirty seems to win most often; look at Microsoft!

  57. Depends, of course. by IthnkImParanoid · · Score: 3, Insightful

    I use so many programs on a daily basis that were just thrown together (by me or someone else). They are not extensible, they have a limited set of features, and they'd be a pain to maintain, but they do what I need them to do now, and no one else really uses them.

    It's much different when you're designing a program that will be used by many people for many years, and as such will need to be maintained and extended throughout it's lifetime, possibly after you've left. If you're on a tight deadline and you have to kludge something to get a contract or whatnot, make sure your boss fully understands that the program will not have a long lifespan, and let them make the call. (that will depend on how pointy your boss' hair is, of course.

    --
    It's nothing but crumpled porno and Ayn Rand.
    1. Re:Depends, of course. by Kadagan+AU · · Score: 1

      I use so many programs on a daily basis that were just thrown together (by me or someone else). They are not extensible, they have a limited set of features, and they'd be a pain to maintain, but they do what I need them to do now, and no one else really uses them.

      *coughwindowscough*

      --
      This space for rent, inquire within.
  58. Retirement by dmeranda · · Score: 1

    I used to think there was a choice too, when I was younger. I've since learned that no matter how screwed up you thing the corporate world and the PHB's are, it's much worse than that. I've got stories that make yours seem like a decision between chocolate and strawberry ice cream. They should start teaching this stuff in college rather than engineering idealism! There's no way you can ever win; just retire and work on Open Source where you can do things the way you want to. I so envy Linus' I'll release when it's done position.

  59. take a software project management class by Anonymous Coward · · Score: 0

    Quality is very important, as I'm sure you're aware. Yes, the Q&D hack will be ready soon, and it will work mostly, but what about support? Changes? Documentation? What about when you get 3 new team members and they can't understand what the fuck is going on because everything has comments like: //works..slighty //hackish

    etc?

    Explain to your boss in terms he can understand - things like ROI, earned value, show him how the planned project costs less to your company in the long run because by catching the bugs in testing you don't have to delay the project a month to fix everything. Let him know that yes, it will take longer to do a proper project, but you get a quality result.

    Maybe this will work. But if the whole attitude of the company towards quality is that they don't care, I think that speaks volumes about they are going to treat you on other things.

    Yes it can be fun to make quick hacks, but when it comes down to it if all you're doing is coding shit that works enough to get by..well..I wouldn't want to be there when it all starts collapsing.

  60. there is always Quick & Clean by Anonymous Coward · · Score: 1, Insightful

    if you know well enough what you're doing,
    Quick & Clean is possible .. unfortunately,
    if you're breaking new ground, that isn't
    always an option.

    the fact is - you get paid by producing what
    your company wants/needs .. do it how you have
    to do it and try your best to not get fed to
    the wolves when the shit hits the fan, which it
    invariably does. stick to a good, modular design.
    even if the innards of the components are dirty,
    design in such a way that you can replace these
    q&d parts with clean parts later - design is law!
    (hahahar) .. no matter how much of a rush you
    are in, it will save you time and effort to have
    a design document of some sort (even if its only
    in your head) .. don't just sit down and bang away
    unless you have a clear framework and path laid
    down somehow .. eventually you become skilled
    enough to Seem like you're just sitting down and
    banging away .. but you'll already have it written
    in your head

    clean and proper code is art, and art can't be
    rushed .. but a skilled artist can put out a good
    piece more quickly than a fledgling

  61. Documentation, documentation, documentation by vidarh · · Score: 1
    And I don't mean code documentation.

    If you feel the pressure to do something quick and dirty, document it.

    Don't be strict about development process, be strict about requirements. If your manager want something done quick and dirty, write up a list of the requirements he's asking for, and a short proposal on how to deliver in multiple phases, phase one being the quick and dirty one. Make sure you include a list of risks with launching after completing phase one instead of waiting until completion of the project, and a list of risks of not following up with the fixes/rewrite/whatever.

    Insist on signoff, especially if doing it the quick and dirty way would violate your internal processes.

  62. Re:Passion is the key - if you're passionate, rele by CausticWindow · · Score: 4, Insightful

    You sure you actually improved it then?

    Clearing major changes with your cowworkers is generally a good thing.

    --
    How small a thought it takes to fill a whole life
  63. Depends on where you are in your problem space by heironymouscoward · · Score: 1

    Ten products all based on the same model is much less costly than ten different products.
    Don't try to innovate and standardise. If it's the first time you do something, do it quick and dirty and be prepared to throw it away.
    Quick and dirty is OK, even excellent, the first time, and it will be garbage-grade material. Quick and dirty is wasteful the second and later times. Conversely, slow & excellent is stupid when you don't know the terrain, and essential once you do.
    Lastly, try to ignore the marketroids and listen to the client. (S)he will usually know exactly what they need, but be unable to express themselves.

    --
    Ceci n'est pas une signature
  64. Re:I think for the few truly excellent programmers by forwhomthebelltrolls · · Score: 3, Funny

    Why did I think of this Dilbert comic strip when I read your message?

  65. Hmm... by GreyOrange · · Score: 1

    Evil(dirty) will always win because good(Correct) is dumb.

    --

    Insert Witty Remark Here ===>____________________________
  66. What is the difference? by valkraider · · Score: 1

    I wonder if anyone will have an opinion on this one...

    Mine is - What's the difference? Universities have the liberty of thinking about theory and all that jazz. In the rest of the industry, we just want tools to do our jobs. If that tool works but looks like crap on the inside - who cares? Just make the tool the customers want. If it is *too* quick-n-dirty they won't want it. If you take too long to make it nice and elegant - they will have long since lost the need for it. It's just a tool. Make it the best you can in the time you can.

    1. Re:What is the difference? by Daniel+Dvorkin · · Score: 1

      A big part of the answer to this is "maintainability." I'm currently the project lead on a massive revision of a project I first did solo a couple of years ago. At the time, the attitude was, "Don't worry about the quality of the code, just get it working and out the door." Now, we're essentially rewriting from scratch a lot of code which could probably have been reused with minor tweaks if I'd taken the time to do everything right, one step at a time. And in fact, a lot of that "theory and all that jazz" I learned in school is turning out to be vital to making things work right.

      It also has to do with the size of the project. When I was doing it alone, it was okay to use obscure hacks, because I knew how everything worked. But when other people are building modules that depend on my code, things have to be structured in a way that's consistent and understandable.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  67. Not just developers or commercial... by TCQuad · · Score: 0

    This sort of thing happens every day, every experiment whether you're in academia or commercial industries. Of course, with research, you have to submit to peer-reviewed journals, which adds another aspect to your dollars (quick) and sense (correct) equation.

    The trick is usually finding a balance. Do the quick and dirty, show it as proof-of-principle, and then (or concurrently) do it the right way. It's really the only way to please everyone.

  68. Seen it first hand by Anonymous Coward · · Score: 0

    We have just been through this over at the place I work. We used to have a great IT manager who managed the place very well. Our environment is one where the PHBs (VP,EVP etc) don't quite understand the value of IT and this is what the previous guy reiterated every time he got a chance. Then he left because he just did not want to continue doing it when the upper management changed. Then we got a new one who keeps delivering whatever the user asks for. Never quite guides them through (no added value) identifying what they want. So everyone is in a reactive mode now. It all depends on the vision of the leaders. If you have bad leaders and good people it won't be soon before those who do the work will start to look bad. Move on to a place that shares your values!

  69. This argument cannot be won by cubicledrone · · Score: 1

    The people who make decisions will always insist on the quick solution, because business today is all about the "slap a label on it and sell it now" approach.

    Discussion of this topic beyond the initial suggestion almost always brings out invincible skepticism from everyone else in the discussion, none of whom will believe there is sufficient intelligence present to do the right thing(tm) (because they, naturally, are the smartest people in the world, and they can't figure it out).

    Developers who insist are usually the first to be fired, because they are right, mainly, and because they are also failing to be "team players" which means "agree, even when we are wrong." These programmers were exhaustively qualified as the smartest candidates in the history of employment, of course, before they were hired, but they are universally perceived as wrong when it matters.

    Taking the time to do things right is risky, but since there are so many risk-averse whining idiots involved, things are almost never done right.

    Those are the facts.

    --
    Business isn't willing to pay for products, innovation and careers, so we get brands, mortgage commercials and layoffs.
  70. A Good Manager... by jjohnson · · Score: 1

    ...will understand that quick-and-dirty is sometimes necessary or useful in business, but that correct-and-proper should be the norm; if the latter isn't the norm, then there's something fundamentally wrong in the business.

    Keep in mind, though, that there's a vast spectrum between the two, and that correct-and-proper is only one end of it. Cost-benefit should rule the choice, not ideology. The norm should really be something like "sufficiently correct and proper for now and the reasonable future."

    --
    Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
  71. Focus on the business by CrazyJ020 · · Score: 1

    Focus on the business in all aspects of software architecture. Period.

    If the business is looking long term, devote the time towards a long term, well architected solution.

    OTOH, if the business is looking to get bought up within the next quarter, throw together whatever comes to mind and get it out the door ASAP.

    It all comes down to conforming to the business plan of your company (or client). As time goes on, you will earn trust and management won't come barking down your throat every time they perceive something to be off schedule.

  72. The point is to make money by Kefaa · · Score: 1

    Unless you have an altruistic calling, the point of the exercise is to make, increase, and or retain revenue. This is a good thing. If it can be done following process, procedure and good coding practices great. If it requires quick and dirty solutions that is ok too.

    How many of us have a dozen undocumented scripts we use for this and that but are really critical to getting the job done?

    Like choosing the right tool for the job, Quick and Dirty is sometimes the right tool. Where it hurts is when it is the only tool. Then, you have a man with a hammer and everything looks like a nail.

  73. In the same boat... by Magus311X · · Score: 1

    The company I started working for has some weird issues as well.

    First, the product ties its upgrades to its support (paying for support? Then all upgrades including brand new versions are free), which isn't bad, except they COMMIT to FOUR RELEASES A YEAR.

    Which for the staff we have, is INSANE. So what happens? Right now the developers are in a tiff with management/sales that we have some SERIOUS data integrity issues throughout the package that NEED to be fixed to avoid some serious nightmares. The package was developed by our current VP (then the only developer) and it's just glue-tape-glue-tape-glue-tape built on a product they only intended to sell to one customer.

    We've addressed that if these ever came up, they would be nightmares to deal with (lots of our customers don't back up their stuff well...).
    But management/sales feels they have to commit to their insane release schedule and would rather put in new revenue generating features. So their idea is not only to stick to the release schedule of death, but to not do things correct and proper, and would rather see more glue/tape than let us fix some major design deficiencies.

    So, more money, or support nightmares from hell? They're choosing short-term money. Agh.

    ----- -----

  74. Paper trail. by Christopher+Thomas · · Score: 1

    Firstly: In the real world, you will almost never have time to do things the correct and proper way. Perhaps some day programming projects won't have unrealistic scheduling demands, but they do today. So, the question is not whether you're going to have to do it the quick and dirty way, but how you can implement a quick and dirty project without shooting yourself in the foot when it's refactoring time. This is left as an exercise for the reader.

    Secondly: These managers knew of and approved your plan to do things the quick and dirty way to meet schedule. They then turned around to bark at you for making that choice. Solution: Paper trail. Explain the facts of scheduling life very clearly on paper, and get all important people involved to sign off on any instructions to skip policy-dictated steps. No possible way to complain then, as long as the wording of such documents is crystal clear.

    In the absence of a signed document to the contrary, take your pick, but make sure that your written estimates of how long things will take are signed no matter what.

    Good luck.

    1. Re:Paper trail. by Stephen+Samuel · · Score: 1
      Yep. I agree on the paper trail thing. You need to send an email/text memo saying:
      • Correct and Proper = X time
      • Quick snd Dirty = Y time
      • Time to clean up the Q&D solution Z
      • If time constraints require me to do the Q&D route, then I need explicit authorization to go that route, (and authorization + time to clean it up afterwards.)
      If you actually have the time budgeted to clean up the Q&D solution, then it's less likely that someone is going to come down on you for implementing it 'against the rules'. It also removes the barriers against getting the marketdroid types to accept that the v0.1 version.is really only the start of the process.
      --
      Free Software: Like love, it grows best when given away.
  75. I'm in that situation right now by extrarice · · Score: 1

    I'm in a team re-engineering our company's website. We had done bleeding edge technology (CSS-2, XHTML, etc) to make maintenance easier. The code was valid all across the board. However, in doing so, we left Netscape 4-era browsers in the dust. A lot of our customer base (we're a small town ISP, not exactly in a high-tech area) still uses NS4, and they were unhappy.

    So, in doing the correct and proper, we alienated a sizable percentage of our customer base. We're now working on scaling things down (i.e. quick and dirty code) to make it work in as many client programs as possible.

    I know that my experience is not quite what Not-So Anonymous Coward was talking about. My example is more along the lines of large, general product for wide user base versus small, specialized product for small user base. It's bad business to tell a large number of your customers "tough, we're not going to fix it, upgrade your software" when the problem can be fixed with a little quick-and-dirty magic.

    More on topic, for an easy way to explain why the quick-and-dirty can't be the final solution, try this:
    Print out some of the source code, and say "Ok, you make sense of it." When they can't, continue with "If I leave this project the way it is, and I'm hit by a bus tomorrow, you're screwed. Documentation, etc, is corporate insurance."

    --
    "Jesus saves, but everyone else in a 10 foot radius takes full damage from the fireball."
    1. Re:I'm in that situation right now by ralphdaugherty · · Score: 1

      I'm in a team re-engineering our company's website. We had done bleeding edge technology (CSS-2, XHTML, etc) to make maintenance easier. The code was valid all across the board. However, in doing so, we left Netscape 4-era browsers in the dust. A lot of our customer base (we're a small town ISP, not exactly in a high-tech area) still uses NS4, and they were unhappy.

      This sounds like new technology = Correct and Proper and old technology = Quick and Dirty. I disagree with that, but at least you're one of the few people that gave an explicit example of what you consider Quick and Dirty.

      rd

  76. Quick n dirty has spoken by xenocide2 · · Score: 1

    In the marketplace, quick n dirty has spoken loudly. Multics was the right way, and failed. Unix was the quick and dirty successor. Reportedly the filesystem was designed and implemented in a day or so, etc. DOS was originally QDOS (Quick and Dirty Operating System). Somehow over the ages UNIX became some form of the "right way" and MS windows was the quick and dirty hack that overtook the market.

    Quality software is expensive. It takes time to design, implement and test. As long as the software can't kill or harm anyone relatively nobody cares. Downtimes are accepted as part of doing business outside IT deptartments, and CIOs have an uphill battle arguing to dedicate capitol to more expensive IT.

    --
    I Browse at +4 Flamebait

    Open Source Sysadmin

  77. Ethics and business by elrick_the_brave · · Score: 1

    This really comes down to you and your ethics. What you have power with is to evaluate the alternatives and present them to the people who make the decisions. You have to remember to follow these rules when possible.. and make sure you have an e-mail trail giving you specific directions. It ain't pretty.. but when someone comes back on you.. you have the 'evidence' for the 'business' decision and let the chips fall where they may. Yes, you may still get dinged, but if you voice the business process mantra when giving the options and getting a direction.. you cannot be at fault. The problem then becomes the insecurity of a superior to commit to a decision/e-mail trail. Be sure not to just accept verbal go-aheads. Life is not perfect.. but as the saying goes.. CYA (Cover Your A$$)

    --
    (1st sig) If this were a snappy sig, you'd be reading it right now. (2nd sig) I'm a karma whore. >Insert FUD here
  78. Refactoring by StillNeedMoreCoffee · · Score: 1

    Well Quick and dirty is good with an eye towards and hooks for the proper way. Its all balance and a good OOP interface can allow you to fill out the implementations later. You should not skimp on the interfaces though.

    Refactoring I see is just another word for going back and doing it right the second time. In this situation. And the fancy term sounds like your giving value added, which you are, and you have continued employment....

  79. CYA: The Process of Those Who Know by Tumbleweed · · Score: 1

    (CYA = Cover Your Ass.)

    You're going to have to do the stuff that pays the bills, obviously. Look around at the economy for proof of that. BUT, that doesn't mean you have to take any guff from the idiots above you. If you tell them what's going to be necessary, put it in writing and get it signed. It's just that simple.

  80. Nothing more perminate than a "temp" Solution. by funwithBSD · · Score: 1

    Having said that, I take the 2 phase approach.
    First phase is the Q&D.
    Second phase is R&P.
    And I make damn sure I have sign off and funded P.O.'s for both phases.

    --
    Never answer an anonymous letter. - Yogi Berra
  81. you answer your own question by kelnos · · Score: 2, Insightful

    simple. if quick and dirty is getting you "in hot water" after the fact, and you have to spend countless hours explaining why the q&d solution can't be the final one, you're wasting precious time that you could be using working on your proper and correct solution. try to find middle ground - find the happy medium between q&d and p&c. it's there, and most often won't be the same deal for different projects.

    even if you're pressured to produce something - anything - that works in a short amount of time, at least have the foresight to put thought into it and plan for the need to do a partial redesign later. after your semi-q&d solution is released, begin working on turning it into as p&c as possible immediately. then when the phbs and marketroids come after you, you at least have something tangible to 'show' them.

    --
    Xfce: Lighter than some, heavier than others. Just right.
  82. Re:Passion is the key - if you're passionate, rele by Jouster · · Score: 3, Interesting
    Nice flowery speach. Unfortunately, correctness and validity outweigh passion in a lot of manager's (and customer's) minds.
    Correctness and validity are correlaries of passion.

    Think about it--why does the Open Source model produce better code? Easy--if the developer isn't happy with the code, it doesn't go in. If the other developers aren't happy with one developer's code, s/he loses commit access. And, let's face it, if you're not happy with the code, it's probably not fit to be in the product.

    So, in many ways, whether or not you're passionate about your code is a damn good way to judge whether or not you've completed code worthy of actually making it into a product. Customers and managers win when their developers have passion for the code they've written.

    Jouster
  83. Dupe! by Anonymous Coward · · Score: 0

    This has been covered MANY times! There are plenty of "Windows vs. Mac" threads already, we don't need more!

  84. It is generally best to do what they want. by janda · · Score: 1

    If your bosses/clients want it quick and dirty, and understand the implications (make sure you get it in writing, regardless of how trivial a program it is ), do it that way.

    As long as you provide them with their written requirements, they can't blame you, and the pain will teach them to let you do it the right way the first time.

    --
    Karma: Food Fight (Mostly affected by Date Plate).
  85. Sell the long-term plan by FearUncertaintyDoubt · · Score: 1
    OK, so you need to get something up and running now. Fine, it happens. But the reality is that any enterprise level system that is built from a bunch of slapped together projects will soon start to strain under its own weight and become unmaintainable. So it eventually gets scrapped, and management contracts out to outside consultants to build the entireliy new, fully-integrated system because they think their own staff is incompetent. Then you have to maintain the black box when the consultants leave!

    So present and get approval (i.e., budget) for both the initial slapdash work and to build/rebuild it right over a longer period. Make sure you make it clear that you must be allowed to build it correctly, and give a realistic estimate of the resources needed, and don't let your boss(es) forget that they committed to it (they will if you let them).

    This also brings into play construction techniques. If you are going to do this, try to design and construct the quick and dirty solution in such a way that you can replace modules one at a time, while retaining functionality. This will prevent the problem of having to replace the whole thing in one fell swoop. Instead, you can phase in the better version and spread the stress of migrating to the new version over a longer period of time, and have better testing. This does mean that your overall "architecture" of modules in the system should be well thought-out, even for the quick solution.

  86. Learn to think in Patterns by greg_barton · · Score: 1

    Learn to think in Patterns.

    Then, there is less of a distinction. You come closer to "Quick 'n' Proper"

  87. what's the root? by LuckyJ · · Score: 1

    Quick and dirties all the time normally indicates a money starved, ill-managed, non-focused, no goals, unstructured organization. On the other hand, correct and proper normally indicates just the opposite...a well managed and led organization that has it's head screwed on right.

    If an organization is giving the proper thought to it's mission and goals, then things will be OK even if you are correct and proper. In fact, they will be much better in the end.

    So you have to ask yourself, what kind of organization do you want to be a part of?

    1. Re:what's the root? by valkraider · · Score: 2, Interesting

      So you have to ask yourself, what kind of organization do you want to be a part of?

      The kind with jobs.

  88. Join the club! by DukeLinux · · Score: 1

    We have all been there. Most of us use our best judgement to do what is best based on the current circumstances. The PHB's are always quick to criticize after they take credit for the heroics. Get used to it. You are damned if you do and damned if you don't. Grow a thick skin.

  89. Overengineering and Being Right by Anonymous Coward · · Score: 0

    I just did a transcription of EWD 1043, where my man Dykstra said that you should, at some point, expect to be right the first time.

    I've seen as many projects fail due to overegineering (=~ "the rigth way") as due to undereginnering (=~ "quick and dirty").

    The agile guys take the famous three virtues of Laziness, Hubris, and Impatience and expand on them slightly. There are things that look like they're easier but are not, due to the pain they create (e.g. cut and paste programming). These are called "false laziness" because, you know, they don't make things easier.

    Just like the difference between a brilliant hack and an awful kludge is not how, well, hacky it is, but in how miserable it makes your life later.

    I think the difference between Quick and Dirty and Doing it Right is not in the docs and all the bullshit that TQM or the Rational process or whatever the current monolithic process your following demands. The difference is in, on one hand, robbing-peter-to-pay-paul short sightedness with a terrible cruft, and in analysis-paralysis on the other hand... hitting the sweet spot between the two is the key, Grasshopper.

  90. ask for sign off by Tennguin · · Score: 1

    Yeah... I'm placed in this position (which I'd call on my back) all too often. Marketing departments and people in charge of financial decisions don't know or CARE to know about "proper coding techniques"; all they care about is getting their product or promotion or whatever out the door with a shiney bow on it so they can show it off to their boss. Knowing that they won't bite if I tell them I can hack together something in x hours I ALWAYS pad my estimates. If the customer pushes I force them to sign-off on the project and I fully disclose all risks associated with the accelerated pace. I tell them that the code won't be as extensible and will probably cost more to maintain... I also make sure they know that I cannot ensure thats its secure. This normally scares them into compliance... their jobs all of a sudden seem more important than the kudos they were expecting for getting the product pushed fater.

  91. It's like everything in life by binaryDigit · · Score: 1

    Why is this somehow only related to software development. People are forced to make this decision all the time in almost all facets of their lives. We have limited resources and infinite desires. Should you blow everything you have on that Lexus (good reliable car, lots of features, etc) or get a Corolla (still good and reliable, not as many features, etc). Just depends on what's important to you at the time you make the decision. There is no "right" answer.

    If you are going to lose a make or break deal if you don't get it done next week, then you do what it takes to get it done next week, whatever that is. If you need to get it done next week because some idiot manager put it there on the schedule "just because", then you have a lot more leeway in deciding to push the date to achieve something "better".

    A rather silly question really. You do the best you can do given the resources you have to do it.

  92. Do it right... by Decameron81 · · Score: 1

    Do it right mate. My experience taught me that doing a job the quick and dirty way can make you loose much more than just your time. I work for a guy that made some really nasty decisions during the design process of our program, and now he's blaming me for needing a lot of time to fix the problems we have. A program with a weak structure, a bad design, or general flaws, can give you a really lot of work when it comes to having a clean and working product, or even when it comes to expanding and improving it.

    Just my 2 cents,
    Diego Rey

    --
    diegoT
  93. quick and half propper by Anonymous Coward · · Score: 0

    I find, that there is a gray spot in this affaire. In my current job Im having to do quick and dirty. But I try to leave all the doorways to make it propper in the end. I use a lot of tools to try to get it as propper as it can be in time. Its no use doing something that when is done will be out of date as its the same doing something that will be a quick shot and will die afterwards. So at least what I try to do is get things going as clean as it is possible in the amount of time I got, and try to leave the interfaces for the "propper stuff" done so I can ammend my mistakes later. Surely you have to get the people on top of you that you are not doing clean and propper and that they are accepting it. But beware of a promise to getting it done 100% afterwards, its rarely possible and seldom likely.

  94. Use slashdot as an example by suso · · Score: 1

    If one takes the time to write up a nice well written comment, one has missed the window of modding because not many modders read past a certain point and stop modding. However, if you quickly write up something out of your ass, it will get a score of 5 for being flamebait.

  95. It begins by CaptainSuperBoy · · Score: 1

    Here it comes, let's hear everyone chime in "I've never been paid to write a single line of code but somehow I consider myself an authority on the subject, and you're an idiot if you don't write 100% correct, well-documented, readable, fully-tested, on-time, and on-spec code."

    Folks, this is the real world. Listen carefully: It never works out that way.

    1. Re:It begins by NineNine · · Score: 1

      Ah, now there's a man who's been in the trenches. How true. How true.

  96. Money.... It's really all about the money... by Rahga · · Score: 2, Interesting

    ... and to be honest, this isn't your concern.

    You see, if marketing folk and PHBs aren't heeding your warnings about quick-and-dirty solutions, and are telling potential clients that the sun will always shine and everything your company touches turns gold, then it is their responsibilty to deliver on those promises, not yours.

    See, this is where that paperwork everyone always whines about comes in handy. Get rid of the bull ("synergy","integration", and oter hot words), keep from overdocumenting the situation, and make those "little notes" availiable wherever you go. Just do the jobs you are given, know your role, and give your tormentors no choice but to live up to their roles.

    As far as dirty-vs-clean.... Bah... You really don't need opinions on that now, do you? Just give yourself a bit of backbone, man. :)

  97. Speaking from experience... by Chicane-UK · · Score: 3, Insightful

    Where I work, it always seems to be the custom to 'just do enough to work around the current problem' - but the result is it always comes to bite us on the ass later on.

    In fact it has almost become legendary within the department that the powers that be will always choose the most blatantly inappropriate and half-assed solution to a problem, which leaves us picking up the pieces 6 or 12 months down the line.

    Do it properly - do it right the first time. It saves so much ballache later on down the line.. time you shave off a project now will just be time owed, and you can bet that it'll try and take the time back when its most inconvenient to you!

    --
    "Hey! Unless this is a nude love-in, get the hell off my property!!"
  98. Also by GnarlyNome · · Score: 2, Funny

    the pages stick togeather

    --
    Diplomacy is the art of saying "Nice doggie" until you can find a rock. Will Rogers
  99. Go for quick and dirty by Fux+the+Pengiun · · Score: 1

    Sure, the users will be fucked in the end, but you'll have a lot of money. With that money, buy a convertible. You may cry over the fate of the hapless users, so drive real fast with the top down, and the wind will dry your tears.

    --
    Consensual sex is boring.
  100. Mr. Dent by Anonymous Coward · · Score: 0

    I could never get the hang of Thursdays...

  101. It sounds like... by mikeophile · · Score: 1
    You're going to get roasted either way in a situation like that.

    You'll either be branded as too slow or too sloppy.

    I would wonder about the future of such a company and if it would be in your best interests to look for a smaller, leaner company that could appreciate your talents better.

    Though given the state of the global economy at the moment, it might be wiser to just suck it down for now.

    Be sure to keep that resume updated, you never know what opportunities might arise.

  102. Balancing Act by __aagmrb7289 · · Score: 1

    Are you going to maintain the application? How much is it going to cost to refactor it for the next version? How much is it going to cost to NOT refactor it for the next version?

    If you are not going to maintain the application, then quick & dirty is fine, as long as it works. Well, not fine - gross and icky, but no real long-term consequences, and a lot of short term gain.

    If you are going to maintain the code, then you must consider how much it is going to cost to build the "next" version. If you are going to have to refactor the code to make a new version work, then how much is it going to cost? Is it more than the cost of doing it "right" in the first place? Believe it or not, the answer is often "no" - it'll be cheaper to refactor later. The only problem with this is that often the time needed to refactor isn't available for the next version, and so that needs to be taken into consideration.

    Anyway, long story short, these are only a few of the considerations here. It's a balancing act, and you need to fully understand the situation before deciding. This doesn't require every detail, but it does require a lot of good experience on both sides.

    Good luck!

  103. You're screwed by Anonymous Coward · · Score: 0

    If you do it Q&D, you get yelled at for not following process. If you try to follow process, you'll be late and will be fired. If you tell them you can do it on time but will have to not follow process, they'll yell at you for not being a team player. If you insist they give you a written permission to not follow process so as to get it done on time, they won't give it to you and might fire you right then.

    It's your job to ignore process, get the stuff done Q&D, and then get yelled at and possibly fired for accomplishing your goal. Yes, you are living in a Kafka novel.

    There are only two ways out. First, you can quit IT and become a plumber or something. Second, you can kill the PHBs and take over the company in a bloody coup. Or just sit there and get yelled at for doing your job.

  104. Scorekeeping by John+Zebedee · · Score: 1

    Central to the problem is the fact that the majority of management decisions are driven by dollars, which are the easiest way to keep score. It's very difficult to put customer satisfaction on a P&L, while an increase in sales from a Q&D solution is easily visible. It's tempting to favour the decision which produces the most easily measured result. The difference between Q&D and C&P is the balance between more cash now with the risk of increased expense vs more expense now with the probability of lower but sustained cash to follow. As many posters have said, each business makes the decision differently, according to corporate style, immediate cash-flow needs, available talent and so forth.

    --
    The future is here. It's just not evenly distributed yet. -- William Gibson
  105. Do what you have to do... by BurKaZoiD · · Score: 2, Insightful
    ...to keep your farking job. The whole point is to put money in your pocket and food on the table for your family anyway. I'm just as disgusted as any other programmer (who takes pride in their work) with QnD solutions, and I'm always left feeling it WASN'T my best work, but you know what? I always ask myself these three questions:
    1. Does it (the software) work?
    2. Does it (the software) do what it is supposed to do?
    3. Did I get paid?
    and if I can say "Yes" to all three of them, I find it much easier to live with QnD. Let the next generation sort out the spaghetti code. They've got to cut their teeth on something.
  106. Design is Like a Mortgage by nrrrdboy · · Score: 1
    http://goatee.net/2002/09.html#_18we

    Someone asked me what I meant by "amortize" in my thoughts on Balancing the Swinging the Seesaw. Since I'm fond of metaphors, I dragged yet another one (home mortgages) into play.

    Amortize: "To write off an expenditure for (office equipment, for example) by prorating over a certain period."

    When I think about an application, there's a certain expenditure one must make with respect to design. I can do it quick and cheap now and incur most of the cost later when I'm confronted with issues of scalability, interop, and extensibility. Or I can spend a time at the start by modeling and designing for flexibility and extensibility, and consequently avoid compound interest in the future. Think of purchasing an old fixer-upper home: you can select from a couple of properties on the market. First, you want something with the a sound footing and an inexpensive price. Also, you'll probably need a mortgage. The smaller the down payment, the larger the total cost. So ideally, you want your down payment to be as large a portion of the total price as possible. But, your initial cash reserve is limited, so you commit to your down payment and then you can at least move in and start fixing the house and increasing its value. Same thing with applications! In the end you want to move in and improve where most needed, but you also want something with a sound architectural footing. That's a balancing act, though sometimes there's design principles and technologies that lessen (win/win) immediate and future costs. RDF has a great architectural footing those who don't like it are doomed to reinvent it poorly but an immediate/localized cost of comprehension. For example, in RSS 1.0 the order semantic of RDF sequences imposes a cost without much benefit. It's a sequence, but you don't know what sort of sequence: a mandatory RDF artifact for an optional feature doesn't make much sense to me.

    Plus, in the great marketplace of ideas, no single design/technology is guaranteed to succeed. Spending too much time on any single technology at the start might be an unwise investment. (Torvalds' theory on design and project management is useful reading on this note.)

  107. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  108. TPS?FUBAR? by siskbc · · Score: 3, Funny
    What's this I hear about you not putting cover sheets on your TPS reports? Didn't you get the memo?

    What the fuck's a TPS report? Did we discuss that last week while I was still drunk from the night before? Am I fired?

    --

    -Looking for a job as a materials chemist or multivariat

    1. Re:TPS?FUBAR? by suso · · Score: 0, Redundant

      Was that in a deleted scene? ;-) Mike Judge really needs to make some more movies.

    2. Re:TPS?FUBAR? by siskbc · · Score: 0, Redundant
      Was that in a deleted scene? ;-)

      I felt like a little improv. ;)

      Mike Judge really needs to make some more movies.

      I'd settle for him NOT making King of the Hill.

      --

      -Looking for a job as a materials chemist or multivariat

    3. Re:TPS?FUBAR? by Jackazz · · Score: 1

      He is spending his time working on Sex and the City

    4. Re:TPS?FUBAR? by Phroggy · · Score: 0, Redundant

      Am I fired?

      Actually we're gonna need your desk space, so if you could just pack up your things and move downstairs into the basement, that'd be great.

      --
      $x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
      $x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
    5. Re:TPS?FUBAR? by Anonymous Coward · · Score: 0

      King of the hill would be better if some heavy-metal loving teenagers moved in next door, and spent their time watching mtv, trying to score, and lighting things on fire.

    6. Re:TPS?FUBAR? by Anonymous Coward · · Score: 0

      We've fixed the glitch in payroll. siskbc won't be getting his paycheck anymore, so we figure it'll just work itself out naturally.

    7. Re:TPS?FUBAR? by EverDense · · Score: 2, Funny

      I'd settle for him NOT making King of the Hill.

      Oh, come now, poor people should be allowed to have their own version of the simpsons.

      --
      http://jesus.everdense.com/
    8. Re:TPS?FUBAR? by ZBM-2 · · Score: 1

      "And I said, I don't care if they lay me off either, because I told, I told Bill that if they move my desk one more time, then, then I'm, I'm quitting, I'm going to quit. And, and I told Don too, because they've moved my desk four times already this year, and I used to be over by the window, and I could see the squirrels, and they were merry, but then, they switched from the Swingline to the Boston stapler, but I kept my Swingline stapler because it didn't bind up as much, and I kept the staples for the Swingline stapler and its not okay because if they take my stapler then ill set the building on fire."

      I didn't need that karma anyhow.

      --
      ==== Warning:this poster contains subject matter that may be offensive. Flaming discretion is advised.
    9. Re:TPS?FUBAR? by pmz · · Score: 1

      Oh, come now, poor people should be allowed to have their own version of the simpsons.

      After WWE and Real TV, is there really a need for more shows????

      I just thought of a great idea: Let's replace Fox News with a 24/7 slide show of kittens sleeping and playing. There would be no reduction in content, but the entertainment value skyrockets.

  109. You need a better QA department by Anonymous Coward · · Score: 0

    If you are getting market with Q&D solutions in the manner you are talking about, then the real hit is probably in quality. The way you justify doing things a better way is to reduce support costs.

    One thing that might help is a good QA department. Assuming you have one, correct and proper is actually faster than Quick and Dirty. If you do not have a good QA department, or they do not have the power to stop a release from going out the door, then your Q&D solutions get out the door and cause havoc. Ideally that should drive up support costs.

    Look at the bigger (business) picture.

  110. Easy solution. by Anonymous Coward · · Score: 0

    Do it correctly and quickly. Slashdot will still be here when you are finished.

  111. Yes by hackrobat · · Score: 1

    It is better to do the quick thing and greatly increase the chance of $uccess now, or to do the correct thing and avoid pain later (assuming there is money to pay for the pain later).

  112. Why must we go to extremes? by Konstantinos · · Score: 1
    Perfect is Good's worst enemy. You don't need to implement the PERFECT solution, just something that delivers 80% of your expectations, which most of the time is 99.9% of the client's expectations. If you try to reach 99.9% of your expectations, good luck!

    And being quick does not necessarily mean being sloppy. The important thing is to try to organize the tasks that you have to do and do some simple documentation. Simple as in a few pages to help you and everyone else to understand what you're doing. If you don't have the time to write a couple of pages it's not quick & dirty solution it's a cheap one and you don't need to bother.

    Working as a contractor I have to meet deadlines like you but I always notify my clients when they ask for the impossible, or rather very difficult for the time schedule given. Of course most of the time they pay accordingly... Doing the same stuff in 10 days instead of 30 does not mean they pay less, rather the opposite! :-)

  113. For What It's Worth, A Few Suggestions by Shackleford · · Score: 3, Informative

    Just out of curiousity, why was this not put in the "Ask Slashdot" section?

    Anyway, even though I can't really say that I have had that sort of experience very often, but I'll do what I can to give a good answer to this question. I certainly hope that I won't find myself in these kinds of situations, although perhaps I'm being too optimistic. I understand that this happens quite often, and so I'm sure that you're not alone.

    Anyway, while I can't suggest much, I doubt that many other people can. It's hard to get the PHBs to listen to you when you say the Q&D style solutions will only save time and money in the short term. If the anecdote that you gave is true, then maybe those PHBs will learn their lesson and not demand that so many shortcuts be taken. Shortcuts make for long delays, as they say.

    I suppose that the best thing you can do is find ways to convince them that your ideas are worth listening to. As a matter of fact, a book titled The Pragmatic Programmer not only goes into detail about good software practices, but how to convince those PHBs and fellow team members to listen to you. I suggest taking a look at it.

    So anyway, good luck. This problem won't be easy to solve. Keep working on getting people to listen to your ideas and why it would be better than the Q&D approach in the long run. That's what I say.

    1. Re:For What It's Worth, A Few Suggestions by claud9999 · · Score: 1

      Amen, this should have been in "ask slashdot", so that it'll be excluded from my homepage. For that matter, I suspect this has been hashed/rehashed before and shouldn't have been posted at all. Glad I'm not paying for such lack of editorial control.

  114. do what i did by eadint · · Score: 1

    When i would get blow-back for my projects i would simply counter with a bunch of highly technical gibberish. this accomplished two things
    1) it was engineered to make any response make the responder seem like a total moron.
    2) it would make the listeners realize that they were so useless and incompetent that to challenge me would only make them look bad.

    its an effective use of revers peter principal.

  115. Size Matters by Zebra_X · · Score: 1

    Really - quick and dirty is acceptable for things with a short lifetime. If it's something more lasting it's important to do it well. Ideally - you should develop a process that allows you to develop things rapidly - but correctly. Code these days can be more or less self documenting if you use the right tools. As far as testing goes - it's up to the developers to test their code before incorporating it. If you develop/follow standard patters then "quick and dirty" can be "quick and good".

  116. two cents by aggieben · · Score: 1

    I think it would be far better to work for a company who puts a premium on process, quality, and correctness. These type of companies tend to be in niche markets, I think, but many are very-successful within those markets. A defense electronics company called E-systems comes to mind (because my dad worked there :-) ). Of course, I also think that the economic reality for most companies is that you have to meet somewhere in the middle to keep your customers happy.

    --
    Don't become a regular here, you will become retarded. -- Yoda the Retard
  117. What's the old adage? by Cloudgatherer · · Score: 2, Informative

    All temporary solutions are permanent.

    Along the same lines, for software there is only one choice, overall, for software development.

    - Cheap
    - Fast
    - Good

    You can pick 2 of the 3, but not all 3. Cheap and fast is not good. Fast and good costs $$$. Good and cheap is never fast. You get the idea. It's just a fact about the software business.

    1. Re:What's the old adage? by The+Darkness · · Score: 1
      All temporary solutions are permanent.

      Along the same lines, for software there is only one choice, overall, for software development.

      - Cheap
      - Fast
      - Good


      You can pick 2 of the 3, but not all 3. Cheap and fast is not good. Fast and good costs $$$. Good and cheap is never fast. You get the idea. It's just a fact about the software business.

      It occurs to me that "Good and Cheap" may not be as good and cheap as the person making that decision intended. Sometimes the "Not Fast" transforms "Good and Cheap" into just "Good" and the project would have been better off to just have someone good to do it fast.

      --
      There are two kinds of people: 1) those that need closure
  118. What benefits the company is the question by Anonymous Coward · · Score: 0

    And the answer depends on the needs of the company. If the company needs cash quickly and needs you to do a bunch of other things, and won't suffer too much embarassment at somewhat-buggy and unsustainable coade, then Q&D. If the company has cash and wants to develop long-term relationships with customers who are willing to wait for code they intend to build on, then C&P. Anything in between is a balance.

    One thing you can do is talk to your bosses and ask them directly which method would help the company better. Or which method would help their careers better, helping your career, etc...

    The point is that you have to decide what the variables are and solve for them.

  119. Balance by Anonymous Coward · · Score: 0

    You need to balance the two. Give the PHBs (especially the ones in sales and marketing) some candy once in a while by getting something done in a hurry, and they'll be your friends. But try to do things properly whenever possible, because this will build you a reputation for reliable code, and prevent your job from deteriorating into debugging hell.

    Don't be surprised by your situation. At the present time, no one outside of governments and very large, very established corporations seems to be willing to pay the cost of developing reliable, and properly engineered code. I also think we need better and more time-efficient tools and methods--the current "best practices" mostly just throw paperwork at the problem without solving anything.

  120. The easy answer. by Anonymous Coward · · Score: 0

    After explaining the difference, ask whoever can make that determination to make the decision. Then when questions are asked later as to why your wasting time doing something that was already done, point to the exec and have him explain HIS/HER decision.

    I'm actually fairly shocked that the geek who wrote this query didn't think of it. Remember kids, when it comes to work always CYA.

    1. Re:The easy answer. by Anonymous Coward · · Score: 0

      always CYA

      Circumcise your availability?

  121. But why didn't it work. by hackwrench · · Score: 3, Interesting

    I don't know why people just assume that because one implementation didn't work, every variation on that implementation won't work. As it was, however, the Soviet Union did not get rid of money.

  122. Worse is Better by Karna · · Score: 5, Informative
    A classic paper on the fact that sometimes solutions that are incomplete and do not cover all cases are superior and preferable to a "perfect" solution. Examples you say:
    • Unix v/s ITS (from the paper)
    • C v/s Lisp (from the paper)
    • Linux v/s Hurd
    • Opteron v/s IA64
    --
    All weakness is within you, As is all courage.
    1. Re:Worse is Better by Nomd · · Score: 1
      I think there is an old chinese proverb that says if you want to walk in a straight line, fall off the left, then fall off the right.

      ... sometimes solutions that are incomplete and do not cover all cases are superior and preferable to a "perfect" solution.

      You can have a bad result with an incomplete solution. You can have a bad result with a "perfect" seeking solution. It is understanding what should be incomplete that makes a proper solution. This ensures a happy customer that is willing to grow with you. Unfortunately, like the proverb, this likely requires falling off both extremes more than once.

    2. Re:Worse is Better by Cthefuture · · Score: 2, Interesting

      This is basically the philosophy of Extreme Programming.

      And my answer to the "Quick 'n Dirty" or "Correct and Proper" qustion is to use some or all of the Extreme Programming practices. I had been using some of those XP techniques way before anyone decided to define what XP was (mostly from hands-on programming experience over the last 20 years) and have found it provides a great balance between a perfect design and something that "just works". Having something that works is way, way more important than having a perfect design.

      For the most part, that's the software that runs everything right now. The software that works. It may not have a perfect design, but it works. XP helps mediate the "bad design" part of it.

      --
      The ratio of people to cake is too big
    3. Re:Worse is Better by pmz · · Score: 1

      the philosophy of Extreme Programming

      Please don't confuse philosophy with religion. Branded development processes are religions, where dogma replaces understanding. With understanding, religion becomes irrelevant.

    4. Re:Worse is Better by Anonymous Coward · · Score: 0

      OK smarty pants. While I don't normally respond to trolls, this one niggled me.

      It depends on which definition of philosophy you use. According to Merriam-Webster there are at least 10 variations.

      The one that sticks out:
      3b : a theory underlying or regarding a sphere of activity or thought <the philosophy of war> <philosophy of science>

  123. What I've seen my employers do.... by gte910h · · Score: 1

    Is make a system that does part of what the client might think is hard but isn't, or use an old product that could be adapted to what they'd want. We then negotiate what specs they want, and figure out what's required to move our codebase to the specifications they desire.

    --
    Want to see every step I took to start my company? http://www.rowdylabs.com/blogs/pitchtothegods
  124. Worse is Better by OrangeTide · · Score: 1

    Read some of the famous papers by Richard Gabriel on why "Worse Is Better". This isn't really an answer to your problems, but it may help explain why things are the way they are.

    Worse Is Better

    Worse Is Better[2]

    People in the LISP world often refer to this. Of course Worse Is Better hasn't seem to help FORTH at all, it's the most "worse" solution of them all. (I'm not trolling, I really am a serious FORTH fan. But FORTH is elegent because of it's simplicity in one's ability to write a compiler for it, not because it's easy/easier to use)

    --
    “Common sense is not so common.” — Voltaire
  125. In addition by Brigadier · · Score: 1


    ode to teh anal retentive personalities. Anyone who has had a one and one with his VP, will realize the guy doesn't give a flying f*** about dotting your "I"s and crossing your "T"s. Every project has a budget, and your job as a project manager is to complete this project on time and within budget. I program but my profession is a Job Captain in an architecture firm. I'm good at what I do because I dont waste time arguing ethics. I figure out what the best job I can do with the time frame I have then I do it. If I feel that the time frame or budget is unreasonable I explain this. However there will always be someone else who will take the project and make it work. So the moral of the story .... get the job done just document everything and get yoru boss's signiture that way when the shit hits the fan yoru ass is covered

  126. Quick and Dirty? by qu4rtz · · Score: 0

    If memory serves, wasn't quick and dirty the kind of solution DOS started out as? I suppose that's food for thought. I guess if it's a solution to an immediate problem, quick and dirty is not always the best option, it just turns out to be the only option. When you have the time and resources, proper is a better way to go. But it's all circumstantial.

  127. HTML or Assembly? by stevejsmith · · Score: 4, Insightful

    Am I the only one who thinks that this question is just an attempt to get onto the front page? It's such a vague question. It's so fucking relative. How "quick" and how "dirty" is it? Sometimes you need to skimp, sometimes you don't. Nobody here is qualified to give you a decision based on the facts that were given. "I need to do something: Should I do it quickly but shoddily or slowly but completely?" Well, if somebody is holding a gun up to your head and telling you to get something done, there's no point in commenting shit. If somebody is telling you to write something that must last until the next Ice Age, then do it properly. What the fuck kind of question is this? On another note, should I use HTML or Assembly? I just can't decide. Help me out, guys.

  128. Re:Passion is the key - if you're passionate, rele by Anonymous Coward · · Score: 0
    We fired you because you were a guerilla hacker who did not get along with anyone.

    You did not attempt to improve the product, you attempted to reshape it your own image after being told not to do so.

    Further, you forgot to mention that you were already on a PIP (performance improvement plan) when you were fired and that I as your manager (along with other managers not even in our department) had fielded no fewer than 5 complaints from your peers regarding your being unreasonable and/or hard to work with during projects.

    Scheduling a meeting including you was a virtual guarantee that said meeting would run twice as long and that we would cover half as much agenda. You were king of neat-o ideas but a jester when it came to follow-through, except when, as you say, you decided to overhaul the code base when we were on vacation. In any case, I'm not sure why you're complaining. My understanding is you're doing pretty well right now ;-)

  129. False dichotomy by blahtree · · Score: 1

    The implication is that correct and proper is slow. This is certainly not true. Software that is planned out ahead of time and is built following decent practices completely avoids the late-in-project crawl that hurried projects suffer from. It avoids the integration nightmare, the endless debugging fiascos, and although it takes a bit more time up front, ends up in a product that is not only solid, but on-time.

    Rapid Development, by Steve McConnell has a lot to say on this topic. One of his more striking anecdotes regards a programming competition where one team set out to follow a strong process approach. They were far ahead during the first checkpoint, but accidentally erased all their work because they hadn't used source control. They came back the next year (with source control), and won.

    Organization will win out every time, regardless of deadline. Do it right the first time and you'll have your quick, with quality thrown in for free.

    1. Re:False dichotomy by Anonymous Coward · · Score: 0

      We spent a good 8 months pre-planning and designing a NAS/SAN system from the ground up. Of course about 2 months into the implementation of it we started doing major design changes and are basically back to the same point as if we would have just jumped right on our terminals and started pounding out code blindly.

      Planning out ahead only works if you use the plan, in my experiance the plan tends to change little-by-little each day. It's the nature of designing systems for a dynamic marketplace. [and I hate it.]

  130. Both! by Wonderkid · · Score: 4, Insightful

    Excellent question, and one I face too this very day. The solution is to get a WELL DESIGNED product (whatever the product is does not matter) out the door as soon as possible, but keep the feature set simple to a) Keep it reliable b) Make your life easier c) Help potential customers grasp the concept. THEN, obtain funding and/or use income from Version 1.0 to maintain company stability while you work on the more sophisticated yet equally reliable Version 1.1 or 2.0. alex@owonder.com

    --

    O'WONDERWe're working on it.

    1. Re:Both! by rocker_wannabe · · Score: 1
      The real problem is that PHB's aren't quite as stupid as we think they are. There are many programmers that wouldn't do a good job no matter how long they had because they don't use any sort of formal underpinnings. By the time they're halfway through the job they've lost the bubble and start depending on testing to figure out what they forgot or botched. The only chance they have is to throw something out there early and wait for defect reports. The fact is that it's mighty convenient for a lot of programmers to be asked to do something
      quick and dirty
      since they can blame the horrendous bugs on that instead of the ridiculous coding practices that they have.
      --
      "Meaningless!, Meaningless!" says the Teacher. "Utterly meaningless!"
  131. You don't need to sacrifice correct to have Q& by TheLastUser · · Score: 1

    You should always think the problem through before starting, then you can implement the Q&D solution in a way that lets you grow it into the CORRECT solution later on.

    I think this happens to everyone that codes for a product oriented software company, the best you can do is to make sure that what you create can be expanded with minimal loss of code.

    The sales guys never understand, they always think that because a Q&D solution works now as a demo that it is finished and can be rolled out to 100k users.

    Personally, as long as I don't get woken up at night when the code breaks, I don't mind coding Q&D. As soon as its me that takes the heat for a failure, then its my way of the highway.

  132. et al. by larry+bagina · · Score: 1
    et alii/alibi is latin for "and others"/"and elsewhere". et cetera is latin for "and the rest", "and others".


    Too bad slashdot doesn't have an editor to fix that kind of stuff.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  133. depends on the situation by LordBeaver · · Score: 1

    i think it depends on the situation. the company i currently works for insists on unit tests and loads of documentation for even the simplest of enhancements. no consideration goes into whether this change will increase revenue or what the impact of the change failing would be. as a result we have ended up with systems looking like products of a communist state! previously companies i have worked for have been willing to let developers advise on what they think the best approach would be so there would be a mix of top quality on areas that make revenue, and those that dont - a much more sane approach, and these are the companies i have worked for that still exist

  134. Go Into Research by hackrobat · · Score: 1
    This is what I've learnt over the years. If you're into commercial software development, your main objective is to make money. And always think short-term. If you want to write good software, you're better off in the research department (and quite a few large corporations can afford one).

    The amount of money your program makes will be inversely proportional to the life/quality of the program (don't pack too many features, or too much robustness (aka bullet-proofness) into the first release!).

  135. Don't fight it, use it! by Anonymous Coward · · Score: 0

    I am a firm believer of using tools in the way that they are useful, or not using them as I see fit. A screwdriver makes a fine hammer for a nail or two.

    We are a small software team inside a larger firm. We have three applications running. Two were done the quick'n dirty way. The third (that I was involved in) was done relatively properly. What I observe is that all three applications have their pros and cons. I could easily argue for and against proper development cycles based on them.

    As the applications mature I see that they grow towards eachother in lifecylce. The quick'n dirty ones get stricter and stricter (and longer) release processes with each new release. The properly done one gets more and more corners cut and went from a two-week release process down to four days without skipping steps in the process.

    I believe that every developer should be fully aware of the peoper development cycle and then have the freedom to decide to ignore each and every part of it. That works best because you are aware of the risks you are conciously deciding to run.

    Recently I became involved in a quick'n dirty project. However, just yesterday I came to the concusion that we have been working too quickly and too dirtily. Knowing the proper cycle allows me to not only point out the error of our ways, but offer a solution as well in the form of a small chunk of the proper release cycle.

    In your situation your job is not to fight the quick'n dirty way. You cannot argue the case, because it is too weak to be extended to each and every application you work on. Dirty hacks have their merits and may be perfecty acceptable in some cases. Just be on the lookout for problems that are easily solved by introducing little bits and pieces from the peoper release cycle.

    Instead of the whiny kid who is always I-told-you-so--ing you can be the hero who saves the day by offering a simple, proven solution to an acute problem.

  136. Let's not forget QDOS by Anonymous Coward · · Score: 0

    "Quick n Dirty Operating System"

  137. Speed is critical by gwernol · · Score: 1

    IMHO... in the real world you have to sacrifice good engineering methods to get your product to market quickly. I'm sure there are markets that prefer quality engineering over early delivery but in most software markets there is a lot of competition out there. If you can't get your product/new release out before your competitors your customers will jump ship and it doesn't matter how good your software is if no-one buys it.

    So to some extent you'll have to take a Quick and Dirty approach. Now this isn't really an either/or proposition. Its a spectrum from using full engineering methodologies at one extreme to a complete hack job (in the worst sense) at the other. You need to balance market priorities with longer-term engineering requirements. But in the end its the companies that respond to their customer's needs - including "I need this yesterday" - that succeed.

    Again, if no one buys your software because you don't respond to your customers, it isn't worth anything.

    --
    Sailing over the event horizon
  138. wtf does TPS stand for? by Anonymous Coward · · Score: 0

    what does TPS stand for?

    1. Re:wtf does TPS stand for? by Anonymous+Coed · · Score: 1

      Transactions Per Second.

    2. Re:wtf does TPS stand for? by wdemoss · · Score: 0

      Total Pile of Shit"

  139. A little of both is what's required by Mr_Tulip · · Score: 1
    In general, if you're writing a 'unique' program, or solving a problem that can't be solved using current software, then your solutions is probably required yesterday, and a few bugs likely won't cause too many problems for you.

    Perhaps there should be a disclaimer in the program stating "this is a quick and dirty solution to a problem, and should not be viewed as a final product" or something similar.

    However, it's up to you to then make time and rewrite or improve the program to make it 'correct and proper'. Either that, or shelve it altogether.

  140. the usual question by wannasleep · · Score: 1

    So, your marketing guy promises the moon, you are asked to deliver the sun and you have the time to go get a rock somewhere. You end up supporting a windows-like software. If you are lucky enough, you then get assigned to make version 2.0 that will be done properly while somebody else deals with the nightmare of 1.0. So, quick and dirty, to get the market share (if you have first mover advantage). Properly done, keep it for long time. By the way, quick and dirty means many sleepless week-end of work, because the delivery is invariably in monday (or tuesday if it is memorial day or whatsoever). If you do not have the first mover advantage, probably properly done will be better for everybody.

  141. Can of worms by pen · · Score: 1

    What a can of worms you've just opened...

  142. Quick and Dirty by eison · · Score: 1

    Get something now so that you have some success, some revenue, and some shot at being around for version 2.

    Sure, overall it's slower to do something quick and dirty then go back and revise. But, the difference is that someone else is paying you while you revise, and marketing has something to work with, and sales has something to sell; rather than having all of the time funded by your own investors and marketing/sales left with nothing to work with.

    There are many parallels; note that successful businesses (barring the recent few high-profile 'first movers') started out as small shops that worked on getting income, then getting something right, then expanding. You have to still be around next month, and next year.

    --
    is competition good, or is duplication of effort bad?
  143. Why not both?! by enigmals1 · · Score: 1

    Of course this doesn't work for eveything... but why not do both? Some things I've done the Q&D way to get the job done and then document everything later (taking quickie notes at the time helps drastically) because they need a solution NOW then I doc when the smoke clears. Now I realize sometimes it required two implementations because the Q&D solution may be totally different then the long-term correct one. Do the long term correct one later (with all the doc if needed). Then you look like you da' man and yet all the big heads are happy later. You can even chalk up the second itteration as a/some enhancment! ;)

  144. In-between solution by Jimmy_B · · Score: 1

    The best solution, IMO, is to do it quick and dirty, sacrificing all your design principles *except* for modularity. That way the dirtiness is contained, and you can clean it up later; plus, the correct and proper solution won't take as long as it would normally because of what you learned from doing the dirty version (in the same way that it helps to do a rapid prototype). Then, when doing maintenance, your approach to adding any feature and to fixing any bug should be to refactor. And I cannot overemphasize the importance of refactoring at every opportunity after you've written a dirty program.

  145. How About Having A Quick Process? by Anonymous Coward · · Score: 0

    If the only way to get the business is to be the fastest on the block then there won't be any business to jump on if you're not that fast (I'm assuming that this is custom software you were asking about).

    If each system is a one off, then the only hope of doing quality is that you can charge the customer enough to do a 2nd release for them.

    If on the other hand each system falls within a particular domain and type of system then you'd should hope to move to a situation where you have boilerplate requirements, specs, and project plans that can be filled out to suit. Don't forget to include proper costing otherwise you may have grabbed a job quick that's going to cost the company money.

    If you think about it, the number of sales, margins and company reputation are the only legitimate interests of the Marketroids in the development and sales process. You don't want to ignore those interests since your salary depends on the company making money from your efforts.

    So, if you really have to be quicker than the process allows, then it's a management problem. Should QA have different standards for release? Should the required project documents be less comprehensive? Are we forced by the market to kick out junk to get the business knowing that we'll get enough money and time to fix it before the customer relationship is poisoned? Does the market require that we ship junk because everybody else is underbidding the deals and the customers aren't smart enough to know they're getting junk and won't pay for anything else?

    If you have no hope of getting the CEO, general manager, or Engineering VP who you work under to fix the fingerpointing then you need to make friends with the salespeople or find some other constituency within the company that will keep you out of the soup when you continue to do what you have to keep the job. If this is the case maybe you should consider a new job.

  146. Comes with experience by Anonymous Coward · · Score: 0

    If you keep in mind the right way to do thing, the quick way will get less dirty. After you do it for years and years you'll eventually know how to get things done quickly and keep them maintainable. But in real life you can never do what you consider the "correct and proper" way to do things. You'll take so much time and waste so much money that you'll never recover it.

    This only refers to code though. Make sure you do not skimp on planning and documentation. If you don't know for sure exactly what you are building before you build it, it isn't likely you'll do it right. Document it before you start and get the people requesting it to sign off before you start.

    1. Re:Comes with experience by crazy-bones · · Score: 1

      Here here. This is exactly correct especially when deadlines (wich nobody pays any attention to until the night before) are approching.

      Pro's:
      -The best time to find missing requirements is during design and analysis not halfway through the development and testing.
      -In most cases the best roadmap for someone new to a project is the design documents not the code.
      -Standards. Everyone knows what everything means without a translator.

      Con's:(overcome with experience)
      -Overdesign. Creating documents for the sake of having it is a waste of resources.
      -People somtimes spend more time looking at the grammer than content.
      -If the project is small enough you can somtimes(emphisis on somtimes) get away with just looking at the code, as long as you document what the code does and that it exists.

      Recap/furthermore:
      -review the requirements.
      -analyze the problem and come up with some form of solution.
      -design the solution.
      -code the solution.
      -test the outcome.(are the requirements met?)

  147. A different kind of "Correct and Proper" by Bitmanhome · · Score: 1

    If C'n'P is costing business, then that means you're solving problems you don't really have. Customers don't need 100% perfect stability, nor 100% complete docs, and the programmers don't need 100% perfect dev docs. So you need to overhaul the C'n'P to provide what you need (good framework) while skipping the parts you don't (coverage testing.)

    --
    Not that this wasn't entirely predictable.
    1. Re:A different kind of "Correct and Proper" by axxackall · · Score: 1
      Customers don't need 100% perfect stability

      You're right. All they need is Microsoft products.

      Seriously, Microsft's success is an excellent demostration of how useless are perfect functionality and quality. I wouldn't point to any flame between *n*x and windows. Just consider how perfect Lotus Notus is and where it is now. Compare it with Office.

      --

      Less is more !
  148. What I do by MarkWatson · · Score: 4, Interesting
    Over half of my consulting jobs are in the "quick as you can" mode.

    I make the effort to point out the pros and cons of spending more time - then let my customers decide what they want.

    However, one thing that I do (for the quick jobs), is to send my customer a very short email (after agreeing on how the project will be done) summarizing our agreement to do a "quick as you can" project. Then, at the end of a project, I re-send the same email - remind them what they agreed to!

    The same technique should work if you are an employee at a company.

    Sometimes it is correct to do a "quick as you can project" - other times it is better to go for maximum quality. A quick project should produce correctly running code, but will be more difficult to maintain and modify in the future.

    -Mark

  149. Depends on your business objectives by Malor · · Score: 1

    To some degree, it's the old instant gratification versus delayed gratification. You can have one dollar now, or you can have two dollars later. If you take the dollar now, you can put it to work elsewhere. If your extended project will net you two dollars sooner than investing the one dollar would, then from an abstract perspective, it's a worthwhile investment.

    However, you must first be able to survive long enough to collect your two dollars, so if it's a matter of "publish or perish", you'd better publish and then clean up the mess afterward.

    Additionally, a company has many competing needs for money. If you're not in a publish or perish situation, and if you can show that using the money on your project will result in more profitability than using it on other projects, then in theory, you will get funded.

    Real politics, of course, often don't work this way, but the theory sounds good.

    Ultimately, process and engineering are only important, to a company, from a profit perspective. A high-quality process will generally result in a high-quality product, but not all companies care about quality. Process purely for the sake of process is wasted money.

    Process to meet business objectives may or may not be wasteful, depending on other investment opportunities.

  150. Put it in context by bugnuts · · Score: 1

    Q&D works great for certain things. If you're bidding on a contract that requires the ability to do 3d visualization and you code up something that can pass to allow you to bid... fine. When you get the contract, you can hire people to do it right or take the time to fix it.

    However, if you have to stand in front of a congressional inquiry to explain why you cheated, you will be sorry.

    Bottom line is, quick and dirty might not be the "right" way to do something, but has practical uses. "Not right" does not always mean wrong. Q&D should never be used when it's actually the "wrong" thing to do. Do not compromise yours or company ethics... it'll just disappoint your customer in the long run, and if you or your company depends on reputation it could hurt. Bad.

  151. Both by Alomex · · Score: 1


    In practice the most common thing I've seen is throw together whatever you have and take it to market, then clean up code afterwards (insert obligatory snide comments about Microsoft here).

  152. either way, you lose by Anonymous Coward · · Score: 0

    if you do it "clean n proper", your company doesn't make the ca4h to survive until next month, year,...

    if you do it quick n dirty, you company gets the cash, but will have to spend it on legal problems and (angry) customer support in a month, year,...

    so you lose either way.
    you should really think about changing your job, pal.

  153. Use both! by agent+dero · · Score: 1

    Here's what you do,

    You get a quick and dirty version, and release that ASAP. Name that one, "Client/Home"

    Then spend the extra 6 weeks to a year developing something Correct and proper, sell that for twice as much and name it the "Server/Professional Version"

    --
    Error 407 - No creative sig found
  154. The answer is simple: It's not your call. by tmoertel · · Score: 5, Insightful
    Quick-and-dirty vs. Do-the-right-thing -- what's the right choice? Let's consider the evidence:
    I keep finding myself on projects where a quick and dirty solution will bring in money for the company, and a correct (ie, properly documented, well engineered, process followed, etc) solution will get us left in the dust.
    If this is true, then the author of the original post has answered his own question: The quick-and-dirty solution was the correct solution. What he had initially labeled as "correct" -- good docs, adherence to sound processes, and so forth -- according to his analysis wasn't viable; it would have caused his company to be "left in the dust."

    So he did the right thing.

    And yet, he offers this testimony later:

    Most recently, work I did in record time was used to help bring in several large contracts, and then I found myself in hot water for not having followed process et al.
    What went wrong? I'll tell you what went wrong. The author apparently made the choice to go quick and dirty by himself. Instead, he should have forced his managers to make the call: If you want to go that fast, we'll have to cut corners. Are you willing to accept the consequences? Then he could have held them to their decision.

    If they came back to him later with complaints about quality or his deviation from internal processes, he would have had a sound rebuttal: You told me to cut corners, and that's what I did.

    But it's not always that simple. Sometimes it is irresponsible to cut corners, even when your managers direct you to do it. For example, if you're working in an engineering capacity, you have a responsibility to the public to protect their safety and well being. If your boss asks you to cut corners on the software that controls X-ray dosing in medical imaging equipment, your answer must be, No.

    Nevertheless, even in this case, the right thing to do is force the managers to make a decision, and hold them to it. I'm sorry, but I can't cut corners. We both have a responsibility to the public here, and so we have no choice but to find another way to meet our timelines. Agreed?

    So, to answer the final question:

    [I]s it better to do the quick thing and greatly increase the chance of $uccess now, or to do the correct thing and avoid pain later ... ?
    The answer is simple: It's not your call. Don't make it.
    1. Re:The answer is simple: It's not your call. by Anonymous Coward · · Score: 0

      What went wrong? I'll tell you what went wrong. The author apparently made the choice to go quick and dirty by himself.

      Perhaps, but from my experience it's more likely that a boss told him to go that route, and then blamed him later.

    2. Re:The answer is simple: It's not your call. by Anonymous Coward · · Score: 0
      If your boss asks you to cut corners on the software that controls X-ray dosing in medical imaging equipment, your answer must be, No.

      Well, either that or the single word "Therac".

      (Some Therac 25 info.)

    3. Re:The answer is simple: It's not your call. by mcdrewski42 · · Score: 1

      I'd say Mod this guy/gal/chicken up, but it's already at 5...

      He's completely correct; in most cases the actual Cost/Benefit ratio decision is not yours to make Your boss is paid to make those choices, you are paid to tell him/her/it what compromises each choice makes.

      If you're in the position of making the compromise, you will be documenting everything and discussing it with the people with the money (ie: clients, upper management or investors).

      --
      /* affect != effect */ void affect(int *thing,int effect) { *thing += effect; }
    4. Re:The answer is simple: It's not your call. by krysith · · Score: 1

      Or "Multidata"!

      Deaths in Panama

      Disclosure: I work for a manufacturer of treatment plan verification devices. It never hurts to actually ~check~ to see that the software is working as spec'ed.

    5. Re:The answer is simple: It's not your call. by Beliskner · · Score: 1
      If your boss asks you to cut corners on the software that controls X-ray dosing in medical imaging equipment, your answer must be, No
      The United States is proud of having the "Fire that asshole and don't give him welfare or medicaid like pussy Europe" system. If you're holding this threat over the head of your employee, then of course he will perform dangerous actions. This is why whistleblowers, the media, and direct unmonitored (possibly semi-anonymous) communication between all developers and clients is required. Managers in the US serve to isolate developers from the customers so that they can specialise in developing. However it's also the Manager's job to profit-maximise, so there's a conflict of interest
      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
  155. I Hate This by Ashcrow · · Score: 1

    I really do cause I find myself having the same problem. My employer gives me a list of programming assignments that need to be finished and how long each should take. Over half the time the estimated time is way to low to lay a solid code foundation and I find myself writing fast and sloppy code just to be talked down about it later. It's pretty frustrating ... but if I could have more than 15 minutes to write a PHPNuke-like portal with dynamic text-to-link parsing, theme support, and ARTC system I think I could do better. (Thats just an example).

  156. Seek the Tao by Enonu · · Score: 4, Interesting

    Tao of Programming, 3.2:

    "There once was a master programmer who wrote unstructured programs. A novice programmer, seeking to imitate him, also began to write unstructured programs. When the novice asked the master to evaluate his progress, the master criticized him for writing unstructured programs, saying, `What is appropriate for the master is not appropriate for the novice. You must understand the Tao before transcending structure.'"

    1. Re:Seek the Tao by Anonymous Coward · · Score: 0

      I counter with...

      "You dont have to be a farmer to know the smell of bullshit."

    2. Re:Seek the Tao by Anonymous Coward · · Score: 0

      Have you ever looked at real code ? Fuck the Tao. Only bug fat lazy retarded geeks quotes the fucking Tao.

    3. Re:Seek the Tao by shadowpuppy · · Score: 1

      While I'm not a master yet there is at least a kernel of truth here. When I first started programming all my code was unstuctured messy and not really all that great. My father said I needed to follow top down design. Now 12+ years later, I still don't design my code, but for some reason it comes out clean and maintainable.

      I guess it's the experience base. I'm much more likely to know what my code should look like. And when it starts to get messy, I can figure out how to correct it with a fair amount of ease.

  157. It's All About Managing Expectations...... by mzito · · Score: 1

    It's not that easy. It's one, a case-by-case situation and two, not so much a question of necessarily doing either, but rather level-setting expectations for your business and the client.

    You have to look at each problem/project/opportunity as a chance to do the following:

    -Make or lose money
    -win or lose respect
    -gain or lose political power (this is situational and more to do with you and your team than your company as a whole)

    How you deliver a solution is dependent on what of those three things you're going to focus on. The unsophisticated answer is to say that "making money" is the most important - but remember that winning respect from a client or business unit can make your team far more money over the long run sometimes. The guidance as to what you will be focusing on will often come from management/sales, as power tends to be concentrated in their hands.

    The two options you speak are Quick & Dirty and Long & Comprehensive. The most important rule is: Once you deliver the Quick and Dirty Solution it is THE solution. You will never be allowed to go back and fix it unless it is hideously broken, in which case you are in trouble anyway.

    So, you have to look at the amount of money you expect to earn from this client/LoB, both short-term and long-term, your current and desired respect level from same, and the amount of political pull you have from accompanying lines of business. If you're under a lot of pressure from management to deliver a Q&D solution, with enough political power and respect, you may be able to pull out a better solution.

    Cover your butt. Emails, phrased in a friendly way, just mentioning potential problems, can go a long way to helping smooth things over when things go to hell. Read about managing people.

    Now, the more overarching answer is that the quick and dirty solution is almost never the real solution, unless your idea of quick and dirty differs vastly from mine. It's just not the right way to do business, and will inevitably end up costing you and your customer more money in the long-term, and heaven help you if your customer figures it out.

    I work for a company that's building a product, and while we're under deadlines just like everyone else, we simply draw a line in the sand about what features won't be implemented rather than half-assing the ones we do. And just like everything else, its a tug of war between the people building it and the people selling it.

    The upshot of all this is that you have to manage the expectations of those that are in control. You have to say what will and won't be implemented, what corners you're cutting, and what the possible implications of those things are. It becomes far more about managing and dealing with people than building technology. I bet in your organization there are managers that somehow consistently manage to get their way - watch what they do, whether its simply presenting problems a certain way or they play golf with the boss - it could be anything. Learn from watching them how to manage the people that create barriers to your building a proper solution.

    Thanks,
    Matt

    --
    http://www.gridapp.com

    --
    me@mzi.to
  158. That's what business measure against by oscarm · · Score: 1

    More projects/project managers are being measured on two things: on time & on budget. 'Quick' helps them meet those targets. All that managers are concerned with is that the thing works when the client sees it, with little concern for futuure usability of it or if the code is well done/elegant. Most probably wouldn't be able to judge code in that capacity anyway.

  159. Sounds like Microsoft! by Anonymous Coward · · Score: 0

    They do this all the time, and look at the crap they put out.

    1. Re:Sounds like Microsoft! by JoeCommodore · · Score: 1
      I agree:

      Apple early 1980s, "Let's take this Xerox graphical user interface idea and do it right - we will work our fingers to the bone and make a logical and sensiblle operating system not tied down by all that legacy crap in CP/M or MS-DOS..."

      A couple years later - Microsoft, "Man this Xerox GUI stuff is hot shit, let's try to kludge something flashy together quick, before Apples cleans up their code, and make it look like WE are the innovators!"

      .

      Yep it's been going on for years except Apple has joined Microsoft's 'get it out the door quick' policy in of software (and hardware in some respects) releases and the Open Source movement is now the ones who are striving for "Correct and Proper" movement.

      Also MS and Apple can now attest the steady money is in the bug fix^h^h^h^h er... I mean product version updates. .

      Second point:

      Correct and proper can suck you into a perpetual 'planning black hole' and away from a actually getting anything accomplished.

      --
      "Enjoy what you're doing! If it becomes drudgery, you're doing it wrong!" - Jim Butterfield
  160. Disciplined Development Requires Patience by ChicagoDave · · Score: 2, Insightful

    In order to move software to a well-architected foundation, you need something that works and costs too much to maintain, or, you need large pockets of start-up or reasearch and development cash.

    In the first case, you can relatively easily take headcount, hardware, and software expenses for segments of system development and show that over time, the complexity of any given system begins to turn nearly straight up. (Imagine a line graph with a line that goes from left to right for 2 years, then begins to incline slowly for 2 more years, then goes straight upwards from then on). So the justification for re-architecture is that you can move the complexity back down to a managable level, flatlining enhancement and maintenance costs for a few years, as opposed to continuing forever on the hugely expensive track you're currently on.

    The latter scenario is much more difficult to implement since no CEO I know likes to risk money on planned development unless there are buyers willing to wait. You may also find (unlikely) investors that feel so strongly about the foundation of the software that they're willing to risk the initial cash-flows.

    The best bet is to make every attempt to refactor things and build things with refactoring in mind as you make progress. Try to use a layered architecture....try to abstract as much as you can...leverage any and all talent on your team to accomplish things in a "ready to refactor" manner.

    There's no hard answer. It depends on where the cash is coming from, who the customers are, what state any current products are in, etc etc. It also depends what type of team you have. If you have a bunch of hackers, guess what...you're going to be writing quick and dirty code. If you have a team that understands structured development and you have strong development leadership, then you're far more likely to get buy-in for more formal development practices.

    It's always a battle and it sometimes comes from above, but there are many coders that would shoot you if you tried to get them to write anything down on paper first.

    Personally, I prefer a formal environment that _I'm_ in charge of. This way, I get to set the rules for when things can be hacked or not.

    --
    http://chicagodave.wordpress.com
  161. Waiting to Celebrate by ackthpt · · Score: 1
    We were recently awarded a major project. That is, we were awarded a major project someone-else started. No vision for scalability, maintenance, etc. Massive tables (with relationships in varying stages of disorganization), huge catalog of stored procedures, pages and pages all cloned from each other with minor changes, etc.

    We're waiting to celebrate this victory. A colleague is adding 1 column to a table and it's proving to be an all day task, possibly running into next week. This is the cost of quick and dirty development.

    --

    A feeling of having made the same mistake before: Deja Foobar
  162. Not the money - quarterly reports. by Axe · · Score: 5, Informative
    As long as securities regulation require quaterly reports and valuation of company and manager performance is judged in three month interval we will keep getting screwed.

    Typical development cycle is from 6 to 18 month. If public companies reported once a year there would be less pressure to "close a quarter" and less pressure to do shoddy work for that on elast deal.

    --
    <^>_<(ô ô)>_<^>
    1. Re:Not the money - quarterly reports. by Anonymous Coward · · Score: 0

      i think its a question of your own self-respect.

      if you have to ask..........

  163. Eternal question by andrewuoft · · Score: 1

    This paradox is mirrored in this ancient literature - www.dilbert.com

  164. Read history. by Anonymous Coward · · Score: 2, Insightful

    I think that you will find that there have been numerous variations on this theme over the ages. I also think that you will have a very difficult time finding EVEN ONE that would be described as successful by any reasonable person and has survived until today.

    1. Re:Read history. by Anonymous Coward · · Score: 0

      China.

    2. Re:Read history. by Anonymous Coward · · Score: 0

      Successful?!?!?

    3. Re:Read history. by TheGreek · · Score: 1

      Yes. There's a lot of people scrambling to emigrate to China.

      Retard.

    4. Re:Read history. by Carnivorous+Carrot · · Score: 1

      Properly speaking, people do best when they are free to pursue their own affairs. Capitalism, properly, derives from freedom.

      See, the dirty little secret to all these "experiments" is that reality doesn't care if you laws are "well meaning" or not -- they restrict freedom, and have an easily predictable effect. If all you braniacs who think themselves so scientific would just look at all the massive death and destruction and redarding of progress caused by non-free societies, you'd be screaming for freedom, and it's corollary, capitalism.

      "Op Op Op!" you go, all apopleptic. "But if only we controlled people my way then things would be even better than freedom and capitalism!"

      (Small example: who the hell wants free medical care if it's 1954 level medicine?)

      --
      "Has [being a kidnapped teenage girl, raped repeatedly for months] changed you?" - Katie Couric to Elizabeth Smart
    5. Re:Read history. by hackwrench · · Score: 1

      What's the differece between feudalism and communism?

    6. Re:Read history. by lightcycle · · Score: 1

      Yes, as we all know the capitalistic USA has never been the cause of any death or destruction whatsoever.

      --

      The stars that shine and the stars that shrink
      in the face of stagnation the water runs before your eyes
    7. Re:Read history. by GuruJ · · Score: 1

      Presumably you think that you're from a "free society".

      However, any Western country has mountains of legislation and volumes of common law that decide what you can and cannot do, or must and must not do.

      If you're from a 'three branches of government' country, it's more or less guaranteed that at least one of these branches has members in it that are chosen without any interaction from it's constituents?

      This is freedom?

      Civilisation is antithetical to freedom. Civilisations are defined by the limits prescribed on people within that civilisation (eg. no killing people, no stealing things that belong to other people).

      Your definition of freedom needs some work, my friend. The only 'pure' freedom is that of anarchy, which is certainly not the same thing as capitalism or free enterprise.

      --
      -- Askari: Give JavaScript the bird.
    8. Re:Read history. by plague3106 · · Score: 1

      Yes, because no capitalist country has ever caused massive death and destruction. You don't think capitalism can slow progress too? What do you think the RIAA is doing? The telecoms? How does slavery fit in? That was done under a capitalist society as well.

      For what its worth, i'm willing to bet people will chose 1954 levels of health care over no health care if those are the choses.

    9. Re:Read history. by plague3106 · · Score: 1

      So in an anarchist society, i have freedom if someone can beat me up and force me to do something i don't want, like give up my food?

      I think your definition of freedom needs more work then the poster you're replying too.

    10. Re:Read history. by plague3106 · · Score: 1

      Feudalism (from dictionary.com): A political and economic system of Europe from the 9th to about the 15th century, based on the holding of all land in fief or fee and the resulting relation of lord to vassal and characterized by homage, legal and military service of tenants, and forfeiture.

      Communism: A theoretical economic system characterized by the collective ownership of property and by the organization of labor for the common advantage of all members.

    11. Re:Read history. by smashingpumpkins · · Score: 1

      Obviously you've never watched the Smurfs.

    12. Re:Read history. by hackwrench · · Score: 1

      But what difference does that make?

    13. Re:Read history. by Eccles · · Score: 2, Insightful

      I also think that you will have a very difficult time finding EVEN ONE that would be described as successful by any reasonable person and has survived until today.

      How about the Israeli Kibbutzim? Some are ~100 years old...

      --
      Ooh, a sarcasm detector. Oh, that's a real useful invention.
    14. Re:Read history. by GuruJ · · Score: 1

      freedom
      n.
      1. The condition of being free of restraints.

      Fundamentally, anarchy means that you are free of moral restraints on your actions. So yes, anarchy is a kind of freedom.

      There are other meanings of freedom as well, of course. But calling capitalism a 'free society' is pure propaganda. No doubt Communist Russians considered themselves 'free' of the capitalistic manipulations of Western societies.

      In reality, freedom does not exist as an absolute; there are just different sets of rules.

      --
      -- Askari: Give JavaScript the bird.
    15. Re:Read history. by plague3106 · · Score: 1

      In communism, everyone shares everything equally. Public parks might be an example of something 'everyone' owns.

      In Feudalism, one person (the Lord) owns the land. He allows people (vassals) to live on the land and farm it, in return for most of what they grow. The vassals are allowed to keep enough (hopefully) to survive, maybe a little more or less. Kind of like a madam would run a bordello.

    16. Re:Read history. by pchasco · · Score: 1

      Idiot It's not freedom as in "do whatever the hell you want." It's freedom from a tyranical and oppressive government, such as the british government that ruled before the revolution. I wish that there were two different words for them so that they wouldn't be confused. Of course there are branches that have some members selected by officials other than it's constituants. The judicial branch is a prime example. Some judges are elected, but others are appointed. It seems that most talk about how great thier country is because it has free health care. Nothing is free. At least in this country, I can choose not to pay your doctor bills -- for the most part. The dems want to change this too.

    17. Re:Read history. by smagruder · · Score: 1

      The better, less confusing term is "individual sovereignty". "Freedom" has so much cognitive baggage today that I'm surprised that people haven't given up on using the word. With "individual sovereignty", you make the vast majority of decisions that affect your own life, with minimal intervention from community/government interests, and this of course comes with the responsibility of not negatively affecting others' individual sovereignty.

      --
      Steve Magruder, Metro Foodist
    18. Re:Read history. by mfrank · · Score: 1

      So how was Stalin different than a king? Or Castro? Or Kim Il Jung (I and II)?

      When the state runs everything, *somebody* gets to be in charge of the state. That somebody is now the king. Communism is fuedalism based on flowery language that seduces the weak minded.

      If you want to conjecture a democratic communism, feel free. How long will that last when individuals can't own a gun or a printing press, because they all belong to the state?

      People who believe in the virtues of communism are retarded. I guess it's because they think that the system will be run by a bunch of touchy-feely bleeding hearts, when in fact it's inevitable that a sociopathic monster will eventually run the system.

  165. Deming model for quality by Anonymous Coward · · Score: 0

    If you want loyal customers. That is customers that recognize your brand being synomous with quality, then you must do things right. Quick and Dirty is short sighted and fine if thats the companies business model. But be preprepared in the long run to lose market share when a competitor does things right and your product fails. Remember quality is what creates loyalty, and loyalty means repeat business and new sales by word of mouth. Quick and Dirty is why America lost market share to the Japan in automobiles. Short Sightedness will only get you results in the short term.

  166. Quick and Dirty will always win... by NanoGator · · Score: 1

    ... because there's always a tradeshow just around the corner.

    --
    "Derp de derp."
  167. You're in the wrong segment of the market by Tailhook · · Score: 1

    The people you currently work for have expectations that don't align with your vision of what you want to do. You can find a different environment that has expectations more to your liking, but it will take more effort.

    Apparently you have particularly high-minded ideas of the kind of systems you want to put your effort into. You want to make quality, enduring products that are elegantly designed and well tested. Find an employer that has those expectations (for real, not just lip service) and try to get a position with them.

    Perhaps you need to look at aerospace and build high quality, well tested embedded systems. Maybe you need to consider doing "research" development in academia. Maybe you should work for yourself and see if you high-minded vision of how things are supposed to be done can actually earn you a living.

    My point is that you're trying to change the behavior of your employer, when I think what you need to change is your employer. If that's not an option because you haven't built the necessary credibility in your career to interest such an employer, consider this; early UNIX (itself crap, but less crappy that what came before,) was put to work grinding out documents. It's creators are now off building elegance into their various Plan 9's. All the years they spent porting MULTICS crap to UNIX and writing printer drivers to print deadtree legal stuff eventually earned them them opportunity to do the sort of work you have in mind. The operative word there is "earned."

    --
    Maw! Fire up the karma burner!
  168. It's a question of optimization by Xeger · · Score: 5, Insightful

    To decide whether to do something QnD ("quick and dirty") or PnP ("prim and proper"), you simply need to estimate the net gain of either approach.

    So, for QnD:
    gain = productLifetimeProfit + cashFromEarlyAdopters - (productLifetime * costOfMaintainingCrappyProduct)

    And for PnP:
    gain = productLifetimeProfit - cashFromEarlyAdopters

    So...Is cashFromEarlyAdopters >= (productLifetime * costOfMaintainingCrappyProduct) ? If so, then go ahead and do it the quick-and-dirty way for a greater net gain.

    Just make sure you have a reasonable estimate for your product lifetime, and also make sure you fully understand the costs of maintaining your crappy product.

    1. Re:It's a question of optimization by tjic · · Score: 1

      I like the way you quantify things, but one thing you miss: market share is determined at least partially by how early you get into the market. Thus "productLifetimeProfit" is not the same term in both equations.

  169. Get the right people involved if possible by mpechner · · Score: 1
    Even if your business is about the bottom line, involve the right managers.

    The QA department sees time lost and money spent on engineers to support bugs reported.

    The Engineering VP sees additional head count to maintain or rewrite the code at some point in the future.

    The VP of Sales see his staff fighting bad press. i.e. lost sales.

    Make sure these same managers know what marketing is doing. In a well run company, there are a few, the marketing guys will be stopped in their tracks from pulling this type of shit.

    If you work for the average short sighted company, your screwed. I usually get the hell out as soon as I can. Although these days with the lousy job market, it might mean you have to smile and deal with a lot of shit for 6 months.

    Good Luck.

    1. Re:Get the right people involved if possible by Trollll · · Score: 1

      Definitely agree. Make sure that someone higher up than you knows the situation and at least tries to voice it to marketing and QA. Then at least when you miss the deadline or piss of QA it will make it more obvious that the issue really stems from bad planning - promises made by someone who has no idea whatsoever (aka "sales").

  170. Quick and dirty.... by entropy1980 · · Score: 1

    or do you mean M$?

  171. The meaning of TPS reports by scottvdp · · Score: 4, Informative

    I kid you not, these things exist. I learned all about them in grad school.

    TPS = Transaction Processing System, and TPS reports are a produced from them with many various options, interpretations, and meanings.

    1. Re:The meaning of TPS reports by Mnemennth · · Score: 1

      Hmmm... sounds like just a long-winded way of saying TP...

  172. Both! by RandyF · · Score: 5, Insightful
    When you get a quick time-to-market deadline, make sure you spend at least a certain amount of time up front on the proper structure and upgrade methodology. The goal is to have a product to ship that is relatively painless to upgrade, or even, if you can swing it, built into the product life cycle (i.e.: software as a service). Then, lay out the guts and the gui, keeping in mind the features and tweaks that will come with the first upgrade.

    This is really the SOP (standard operating procedure) for most of the big dogs out there in softwareland. It works pretty good and is generally acceptable to the user community. Think pluggable, modular (sort of like OO for the youngsters in the house, but takes more thought and works better), and non-statically linked.

    On the OO comment, there are some good OO tools and languages out there, don't get me wrong. It's just that you have to understand good modular programming to keep from OOing yourself into spegetti code, which is way too common. OO != modular if it's not done right. OO != OO if you don't understand it. The same thing goes for RDMS work. If you don't understand relational theory and the underlying structure of the RDMS in question, you might as well be using text files and awk. (boy was that a rant or what? ;^)

    good luck and good programming!

    --
    --==-- I've found Karma to be a relative thing... Ya know, the kind you invite to Christmas... ;)
  173. Would you get over yourself? by cpparm · · Score: 1

    When there is money, there is no pain. The PHB you so despise get it. Why don't you?

  174. It depends... by Austerity+Empowers · · Score: 1

    I find myself in the very same situation quite often. Worse is that I know the Q&D solution WILL have consequences, perhaps in a few years when I'm gone or on another project but the product needs changing.

    The correct solution for this dilemma is NOT black and white. You CAN BE FIRED if your boss isn't happy with the rate at work gets done (even if it's good, high quality work). I am not so idealistic that I believe doing good high quality work should come at the expense of a job, at least on the receiving end of a paycheck. Everyone must compromise to some degree, but in general I have seen choices made based in the following ways.

    If what do you want to do with your career? If you want to be an engineer, than your reputation with your peers and even with vendors and customers is critically important. You MUST do a good quality job. I'm not saying you should ignore deadlines and requirements, but be thorough and precise. It is your reputation and your most valuable asset, do not screw it up! Be professional.

    If your aspiration is management, then clearly you must be results focused. That is what your boss will hold you responsible for, the results are what you will have on your resume (and believe me, you will be switching jobs every 3-5 years, good manager or no). You will be evaluated based upon how fast you do something, using how much money with how many people and what immediate results happened. Moving up inside a single corporation is nearly impossible, it may be a decade before a position turns over, so you rarely will be around when a short term decision goes bad (and not all short term decisions ARE bad, sometimes they're the right thing), at least not if you are aiming high. You're looking for fast results and a way to climb to the next rung, it's hard.

    Also remember as an engineer (esp in small companies) you are going to be bought and sold with the product. If the product sux or has no lifetime, then you are shooting yourself in the foot for what? To look good to suits who view you as cattle?

  175. It'll get our employees KILLED by krray · · Score: 1

    Quick -n- Dirty in corporate is NOT done. Sure, you can make a quick buck, let's say 90% of the time.

    But when I see employees having to RE-DO their work ... that certainly didn't save me any money, did it? Also -- 10% of the time that we wouldn't save money ... it usually ends up costing us BIG TIME. Labor dollar mistakes can eat a company alive -- and certainly eat away at any savings from other projects.

    In the field -- as we are a rigging and erecting type company (if it's big ... we move it) -- trying to cut corners and do things quick/easy way could very well get yourself or somebody around you KILLED. Ever see 20,000 pounds come crashing down from 3 stories? It's ugly...

  176. Perl is the Answer! by jazman_777 · · Score: 1

    You get both Quick and Dirty _and_ Correct and Proper. It looks like both simultaneously!

    --
    Slashdot: Failed Car Analogies. Amateur Lawyering. Anecdote Battles.
    1. Re:Perl is the Answer! by Anonymous Coward · · Score: 0

      Just like anal love is right..it works no matter what and it smells pretty much the same.
      You homo.

  177. You're trying to win? Silly boy. by kfg · · Score: 1

    You're a software engineer.

    Here's how it's always worked and always will work.

    You do a project.

    If it goes well and makes money your PHB takes the credit because he managed it, but any problems with it are your fault because you coded it. The PHB gets a promotion and raise, you get 10 hours more work a week.

    If it doesn't make money it was *your* "overdesigned" project and it's your fault. The PHB pays no penalty and you get fired. Then he gets a promotion and a raise for having fired you.

    It isn't pretty, but that's the way it is.

    So how should you code? The way that covers your ass.

    KFG

  178. The small middle ground by Lysol · · Score: 2, Insightful

    Unfortunately, this is very hard. Business moves fast and programming, like any other science, can be very rigid and thusly unforgiving when 1 little thing is 'incorrect'.

    Most programmers I know like to take their time and think about stuff. Most biz people I know want the millions and want it yesterday - that's their job. There is very little middle road to walk here since money drives pretty much everything and ultimately that is the commanding force.

    Sure, you bnag something out, the contract get's signed and everyone's happy - for that moment. However, when bugs crop up, tensions flare and people start pointing fingers, etc..

    The only way I've seen it work - and I haven't seen it much - is to start from the get go and convince the people you work for/with that the project is not something that can be banged out soon. But, this will get a lot of frowns so in addition, you gotta speak the language of biz people. Make project and dollar predictions on why it will be better, in the long run, to do a better job in the beginning. When biz types start seeing dollar explainations, then they can start adjust schedules, contracts, etc.

    It's not hard to do, but it does take some dilligence and foresight. Like so many, I too have the urgency to just jump right in to something. But I've seen over time success is within reach when you, unfortunately, manage others expectations. If you cannot do this, then the people writing the checks will always have your balls in a vice.

    1. Re:The small middle ground by Anonymous Coward · · Score: 0

      but fixing bugs after shipping makes the job seem so much more difficult. Not only does it encourage support contracts, but it convinces clients that it really is hard to write good code.

  179. write good code quick. by $lacker1 · · Score: 1

    it's that simple. there should be no difference in the q&d and the correct solution. as for documentation, programmers read code, comments are for pussies.

    --

    //comments are for suckers
    //coders read code
  180. I SEE YOU ARE A VIRGIN by Anonymous Coward · · Score: 0

    Your post tells the whole world that you have never been laid.

  181. A common situation... by casual+lemon · · Score: 1

    I most often find myself being asked or pressured for the "Quick & Dirty", rather than "Correct & Proper".

    As a small software company with a somewhat specialized niche (that hasn't fully recovered from the recent tech slump), we often find ourself chasing the money, which usually requires getting code out fast, consequences be damned. In the vast majority of cases to which I've been a witness (and in some, to my shame and regret, a party), it has come back to bite us in the end, almost always for more time, effort, and money than it would have taken if we'd done it right the first time.

    But, our situation is one where if that "Quick & Dirty" check didn't come in when its needed, there'd be no one left for "Correct & Proper" later on. Of course, it's a vicious and ever growing cycle. Yes, it makes me and many of my collegues feel dirty (generally the other developers and technicians...not so much the sales people and PHBs; they just tend to feel relieved), but for most of us, eating is too much fun to give up. =\

  182. Here are your choices by packethead · · Score: 1

    Common logic would say that the following is undeniably true:
    1. Fast
    2. Cheap
    3. Good
    Choose two

    Now, your manager says:
    Give me all three or your "fn" fired!

    So you go off and do it fast and cheap and hope he doesn't find out it's not good....

    --
    .sig
  183. Time to market is not my job by version5 · · Score: 1
    Unless its my job to judge the market, predict the best time to release a product AND allocate sufficient resources to ensure that, I wouldn't necessarily prefer to put option 1 on my resume.

    An ordinary developer, however, usually doesn't make those sorts of decisions, and a sensible hiring manager would know that. If a product fails because of market conditions, its no reflection on the developers at all.

    --

    "It's Dot Com!"

  184. Do It Right by Anonymous Coward · · Score: 0

    Thirty years of applications design, development and implementation experience have taught me to always do it right.

    The challenge is to quickly figure out what is right for the particular circumstances. If the task is a one-time data conversion, where you can inspect the data before and after, a short perl script may be all you need. If you are developing the 'coolant overheat' routine for a nuclear power station, make sure every possible condition is identified, and handled in a failsafe manner, before design is even begun. And test, test, test.

    It helps to 'know your stuff'. I once had to appeal a management decision because it was wrong. His boss disagreed with me. So I took it up another level. He disagreed, too. So I put my job on the line and went a level higher still. I won that one. I was designing and building an ISAM engine. It had to work, first time and every time, without tuning.

    Have I broken every rule in the book? Certainly, when it was appropriate. EDI in 3 Weeks - No data, no specs, no requirements, no customer - No Problem! I do it by understanding the rules behind the rules. But it's a risk. It helps to be lucky.

    Morris Schneiderman
    www.ProjectsDoneRight.com

    1. Re: Do it right by nuggz · · Score: 1

      Perhaps there's a need to see to the real problem instead and fix that.

      Which is why people are mad at his hack, he didn't solve the real problem.

  185. Re:Passion is the key - if you're passionate, rele by mingot · · Score: 1

    Can't say I can blame them. I mean, I know how pissed of I would be if I came back from christmas vacation and the janitor had mangled my code.

    Oh, and could you refill the pack of toilet seat covers in the near stall in the second floor women's room? Mrs. Martin keeps complaining about it.

  186. Do what the boss wants... by Rohan427 · · Score: 1

    ..within reason (it doesn't take a brain surgeon or rocket scientist to figure out what "within reason" is.). I learned a long time ago as a hardware and software engineer to CMA - Cover My Ass. My answer to any question regarding "Can you do this for us?" is "Yes, if you give me the request and specifications in writing." Especially when it comes to doing something that doesn't exactly follow all the normal procedures and/or policies. I always follow up the request and specifications with something in writing stating what I can/will do, how I'll do it, and an approximate time that it will be done.

    This way, when someone bitches about something later (and someone always does bitch about something sometime), I can pull out the written request/response and CMA, putting the blame (if there is any blame to be put) on someone else.

    Of course, if I f' up (which I've never done ;) ), then I deserve to be bitched at.

    PGA

  187. Office Space by Cyno01 · · Score: 4, Informative

    Office Space, cult classic among cube workers, See also.

    --
    "Sic Semper Tyrannosaurus Rex."
    1. Re:Office Space by Angry+Pixie · · Score: 1

      Ah yes... the ratio of cake to people...

  188. Depends on your yardstick. by rtm1 · · Score: 1
    If money is the measure of value then the solution that makes you the most of it is 'better'. If quick and dirty makes you more money then do it.

    If you have some sort of other measure of value then your answer varies. I strongly suspect though that in business money is the only measure of value, hence the endless amounts of craptacular commercial code out there.

    --
    "Belief means not wanting to know what is true." [Nietzche, The Anti-Christ, 1889]
  189. The Right Way vs. Worse is Better by Ichijo · · Score: 1

    Here is a lengthy discussion on the topic. Basically it comes down to personal and corporate philosophy and what makes the most business sense.

    --
    Any sufficiently unpopular but cohesive argument is indistinguishable from trolling.
  190. Remember (and remind your boss) by $hecky · · Score: 1



    Good, fast, cheap. Choose two.

    Nate

    --
    You never know who will get one.
  191. Your situation is what I have experienced...... by Anonymous Coward · · Score: 0

    I have experienced the same situation... I have worked for a boss who demands a quick solution to a customers problems...and I have built these solutions, both quick&dirty and also quality, where I have spent a long time "getting it right". In both cases, I have observed that you will get dumped on because, "it took too long to build it", "it cost too much", or because it was q quick and dirty implementation "it's not expandable, it broke, the customer does not like it's features" etc. Now-a-days, people don't want things to cost a lot and they want these things right now, no waiting. The most anoying part is were you are to blame for all this...nobody cares to remember the reasons a project screwed up, (if you point out why it screwed up, that makes you look like a sore loser and most likely the source of all these problems in the first place). Sure, I can accept that a quick&dirty solution screwed up, but a quality solution works, but you get blamed not because it worked, but because it was quality and cost too much/took too long to build etc. Best advice is to find a better job, but probably there are very few good places to work at that still do quality work.

  192. Agile programming by pthisis · · Score: 1

    a quick and dirty solution will bring in money for the company, and a correct (ie, properly documented, well engineered, process followed, etc)

    Documentation and processes are there for a reason. If they're getting in the way instead of making software better, you need to get them changed. The ultimate goal of a software developer is to make working software, and often the best way to do that is NOT to over-engineer and follow ivory-tower software engineering theories. At the same time you don't want to hack together an unmaintainable monstrosity.

    But you really need to welcome changing requirements and keep the overhead of processes to the minimum needed to keep development going in the near- and far-term. ("Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.").

    Check out e.g. www.agilemanifesto.org. Above all, remember that "working software is the primary measure of progress."

    Sumner

    --
    rage, rage against the dying of the light
    1. Re:Agile programming by Anonymous Coward · · Score: 0

      What a load of crap. Anyone who thinks like this works for a large company with too many beaurocratic hoops to jump through. The only thing detailed documentation does for a company is to enable a programmer other than the creator to modify the code. Confuscious say: better to reduce turnover than to increase documentation.

  193. Take the money and run by nurb432 · · Score: 1

    If you arent first, someone else will be.

    And they will get the contract. And the nice shiny car.

    If you loose the customer later due to their instance on quick, after they find it wasnt well designed, there are plenty of other customers.

    And you still have the car.

    --
    ---- Booth was a patriot ----
  194. Damned if you do, damned if you don't. by Anonymous Coward · · Score: 0
    Spell out the consequences of doing it the proper way(won't be fast enough), get their approval in writing/email/whatever, and THEN do it the quick and dirty way.

    This is also known as covering your ass.

    It has been my experience that those who cover their asses have jobs longer than those who, procedures be damned, do what it takes to get the job done in time.

    Also, take up drinking. It helps to numb the mind when you are constantly shown the jerks who don't do anything(but do it by the book) as the positive example.

  195. Multiple problems by Performer+Guy · · Score: 1

    You have two separate issues.

    The first is the need to implement quick & dirty solutions, that's OK, sometimes software development is like that. Sometimes you stick with the quick & dirty solution way beyond it's anticipated lifetime.

    Your second problem is you work for real morons and/or cyncal assholes. Don't let their bullshit phase you, remind them of their decisions and your accomplishments. If you can't take the aggro go work somewhere you're appreciated. Leave them with all that quick & dirty code to maintain and bask in their suffering with no regrets.

  196. improve your ability to do q&d by raisin · · Score: 1

    Work on improving your ability to deliver decent code even when it's the quick and dirty solution. There will always be a need to get things done quickly, and it is the rare occcurence on a project that you actually have time to do things "right", so don't wait for it, expect it, or be wistful about it. It doesn't exist.

    I like to think of it as you're only as good as what you can put out on average. It doesn't matter if you "can" be a great coder, it's only how you execute from day-to-day.

  197. not just developers... by 0divide · · Score: 1

    I ran into this problem a lot when I was an IT Director at this design company. We would get a call that a freelancer was showing up that morning, who would need a machine with Photoshop, Illustrator, Quark and other applications and we would have ZERO time to get it done. It was hard enough finding a machine but it was much harder to explain that technically we couldn't put the required software on the machine. Of course, we would get (ahem) "push back" and be told that we would just work it out later, etc.

    Of course, we would bring it up, but the accounting people would just look at us blankly at tell us to get the project to deal with the budgeting, etc, but by then, the freelancer was gone, or we got a litany of excuses why they couldn't afford "real" copies (never budgeted into project) and "what did it matter anyway, it still works, doesn't it?"

    When my company was finally purchased, it was up to me and another guy to go through the software license situation and it cost a BUNDLE. We had to stick the absorbing company with the cost to finally get us legal and it was just horrid.

    So, as far as what's the right thing to do, I think that by the time you are asking that question, it might be too late. Best to snag the various higher ups and explain the situations before any of this arises and see if they react to you being "proactive" and all that. I was able to explain the fines and how the company could lose a ton of money, which you would THINK would work, but this was right around everything falling apart...

    I guess my only suggestion is to write a document explaining that you are indeed using short cuts and there might be some fallout later on--and have the producer or the project leader or whomever SIGN it to make sure people know the implications of their decision...hopefully it will make them think twice when budgeting and scheduling future projects...

    good luck!
    m

    --
    ---mike
  198. And now we know... by Loopy · · Score: 1

    ...one of the major reasons why a lot of work is outsourced to overseas locations. Many countries we do business with *cough*China*cough* are perfectly happy with killing people to keep them from saying something anti-government. It would be naive to assert that they would then be squeamish about overlooking a bit of shady business practice to undercut "correct/proper" businesses elsewhere and capture that market share.

  199. No such thing as doing it "right" by amigabill · · Score: 1

    managment never lets us do things well. They want it now more than they want it right or good. Today at work, the office manager told my chip design group that we will tape out the chip we're currently working on by the 31st of this month, a bit less than 3 weeks from now. A rush job now, some testing and timing verification will now go undone, and we'll most likely spend the rest of this time dong DRC and LVS, the two checks that see if the design is manufacturable (DRC) and if the silicon layout matches the schematic/netlist (LVS). Screw power analisys. Screw timing checks for some things. Screw the remaining functional checks to see if it actually does what we think it does.

    Yea, the poster got it right. Managment doesn't want proper documentation. They don't want testing and verification and quality. They want due dates, and apparently whatever is avilable on that date will have to be "good enough"... :/

  200. Start with Q&D and evolve by winkydink · · Score: 1

    Think product life cycle and ongoing revenue stream. v1 - quick & dirty v2 - almost there v3 - works well enough to know what features are truly missing v4 - mature product charge the customers for maintenance and make money

    --

    "I'd rather be a lightning rod than a seismometer." -Ken Kesey

  201. Whatever makes you the money is the good way by autopr0n · · Score: 1

    Thus spoke AynRandIthustra

    --
    autopr0n is like, down and stuff.
    1. Re:Whatever makes you the money is the good way by easter1916 · · Score: 1

      I hate that selfish bitch.

  202. Re:I think for the few truly excellent programmers by SilverGiant · · Score: 1

    And for the truly excellent managers: "Correct and Proper" does not exist. Ultimately, there is always a better way. As several posters have mentioned if Q&D works to the customer's (internal or external) satisfaction, it is the final solution.

  203. Maintenance contract by baby_head_rush · · Score: 1

    You don't spend your money on fixing bugs.

    That's what maintenance fees/contracts are for.

    --
    Oliver's army is here to stay Oliver's army are on their way And I would rather be anywhere else But here today
  204. Depends... by fehlschlag · · Score: 1

    In a process-oriented company, there are typically meetings that determine the time needed to release some feature, product, or what not. If the need outweighs the time for proper development, any corner-cutting or release-delay decision would be well documented, and reported up the chain. There should be no hot water for this process. It does work. Let the managers take the heat for marketing decisions.

    However, it can happen that a developer makes unrealistic time predictions (could even have happened to you - yes, and you over there too!). Perhaps the lack of documentation, specifications, or such, was kept secret, or even lied about. Well, in such case, the developer deserves all the scalding, roiling, frothing water the company can give, since this undermines their very trust relationship.

    Not saying you were one of those jokers, but I do want to iterate that company-critical decisions are often made by more than one person. This should be well documented, and as such, you really should have no problem.

  205. Did you CYA? by JimJinkins · · Score: 1

    I'm left trying to explain why it can't be the FINAL solution (to PHBs and Marketroids that were fully informed of the situation prior to any work getting done).

    If making money for the company is not a good thing, leave before they go broke.

    However, did you send management a memo or email *before* you started the job quick and dirty? Did it say how long you estimated for Q&D, vs how long by the prescribed process? Did you estimate how long to clean it up/make it right after delivering Q&D?

    If so, you could have just pointed to that CYA. If you tried to do that verbally, be aware that PHBs and Marketroids *cannot* comprehend/remember that kind of thing if it is verbal.

  206. What Did You Learn in Software Engineering? by emeraldWEAPON18 · · Score: 0

    Don't you remember from your Software Engineering Professor in college saying that everything that you learn in the class, the proper and theoretical stuff, is semi-useless in the real world? Remember that big software engineering project that sucked the life out of you for two months because of unreasonable deadlines?

  207. Manage the Manager by digulla · · Score: 1

    One thing which I usually find is that developers don't understand what managers are for.

    Most developers think that a manager is just someone who has no clue but the power to bother you.

    To put it simple: The developer knows and the manager decides.

    It's the job of the developer to understand the situation and come up with several (at least two) possible solutions for a problem, state them in clear words, list the advantages and disadvantages and make sure the manager understands them.

    Then, the manager will make a decision. An educated decision.

    But often, people don't bother to tell their managers what's wrong and why it is wrong and then, they wonder when the manager makes a bad decision.

    I have found that it's very simple to get along with management as long as you keep them posted and you know your facts. When they grill you and you can stand your ground (and you can only do this when you know what you're talking about), then they will start to trust you and your life will suddenly become very easy. Note that even saying "I don't know but I'll find out" is "knowing what you are talking about".

    Managers are just people, too. They know that they don't know as much as you do about the problem. They feel uneasy about this. Make them understand and they will be your friends.

    Try it. It might be an effort but it really helps to get what you want (a bigger machine, less distractions by managers who want to know what is going on, etc) :-)

  208. Oh, its a prototype, then. by Anonymous Coward · · Score: 0

    Okay, I'll level. I've been a programmer since 7 years old back in the old Apple ][+ glory days and I've grown up with it. I program at an astronomical rate, finished many (now on 9) commercially available products, and getting faster and more experienced each year.

    Of the products that I've worked on, they started off as quick and ditry (Lets call them.. uhm.. "PROTOTYPES") and later tried to evolve some form of standardization process that was constantly ridiculed regardless of how many graduate college courses or whatever the Quality inititive was modeled after.

    Two things I noticed:

    1) Management is never satisified with the incredible amount of documentation you produce.
    2) Management is never satisified with how quickly you write the program.

    I think I'll add the given the nature of my work, which is considerably tech oriented, I noticed that Marketing (CMO/Marketing Directors) are hopeless and useless when it comes to actually understanding any of it, regardless of what examples I use. I'm not trying to be sarcastic, but I've actually had to resort to:

    1) Explaining my product in terms of fairy tales.
    2) Comparing my product to animal behavior.
    3) Creating fantasy stories that include rather detailed information about the people's lives of the users of the program. I even had to include who was having a relationship with whom, in order to describe how security situations and stuff could exist.

    And yes, these examples were so well received we put them in marketing literature and I feel ashamed.

    Don't laugh, this is RL.

    Here's my beef -- as a fast and organized thinker, but also a researcher and experienced developer, I know the dirties before I even go into writing the program. Now that I'm self employed, I've noticed a -huge- jump in my performance, depth, and code quality. Probably easily an exponent higher in all areas.

    Due to the wonderful lack of team meetings, I can pick my favorite supporting tools, use the software I feel most comfortable with, and make rapid decisions for everything. HEAVEN! If I have an idea for a quick and useful new feature, I just add it. I can even wait for the program to be finished before writing the manual so my screen shots are even current. :)

    After 12 years in the industry, I honestly think Coding Freedom is more important than anything else, and I feel sorry for your plight about the balance between management's "perception" (which is exactly what it is) vs. pursuing the obvious direction with enthusiasm. Battleships don't win races.

    Honestly, I'd love to see a company with a pure Research model to allow the creation of profitable prototypes created by brilliant minds with maximum freedom. Under current business practices in the USA, its highly unlikely.

    It seems like the "Thomas Edison" approach to trial-and-error until you invent the light bulb and illuminate the world is considered laughable in today's world.

  209. the M$ model by Anonymous Coward · · Score: 0

    This demonstrates the m$ model and the faustian choice. History has shown that bug-ridden, mediocre software shoved out the door, grabbing market share leads to fabulous wealth only if you are not held liable.

  210. Software development is a balance by Metropolitan · · Score: 1

    As a QA guy, this is something I wrestle with constantly. There's a compromise, almost without exception, made on every project/product between having it done fast and cheap vs. having it being done properly (proper CMM technique, full documentation, usability testing, user acceptance, design reviews, etc.).

    QA is a study in compromise between these two points, as well as a balance between the needs of the user and the needs of the development organization (money/time, interface design, platforms, etc.). I can provide a certain level of quality assurance on any project, no matter what the timeline looks like, but those who lay out that timeline have to be willing to accept the risks that poses for the organization. A fast project often does equal a much higher level of risk.

    Something to consider, though: programmers, being creative people, often are at their best under the pressure of a tight timeline. It keeps them from drowning in the details, and can lead to some very elegant solutions. It can also reduce the amount of PHB micro-management, which has a whole string of benefits.

    Compromises have a way of staying around longer than we expect, waiting for a chance to come out and say hello in disturbing ways. A shorcut may just mean massive amounts of rework when porting to a new platform, database, etc. Remember all those old COBOL programs that were supposed to be obsolete a few years back?

  211. Fact of line. by litewoheat · · Score: 3, Insightful

    The sad fact is "Quick and Dirty" wins the race while "Done Right" goes out of business (or has a fraction of the total market. Microsoft is "Quick and Dirty" Apple is "Done Right" (basically). For homework, compare the two companies.

    1. Re:Fact of line. by tjic · · Score: 1

      Even Apple has a fair degree of Quick and Dirty.

      For "Done Right", check out Lisp Machines, NeXT, and other dead companies with beautiful products.

    2. Re:Fact of line. by Mryll · · Score: 1

      IBM and OS/2 ??

  212. This works in my relationships. by Anonymous Coward · · Score: 0

    I used to be a nice guy, you know, take the girl out, get to know her, develop a relationship and then move onto the physical stuff. Most of those startups went out of business in about 2 weeks.

    Then I changed my business strategy, went for the home run on the first date, and then fixed the bugs in the relationship later. This has proven a much more successful strategy, as the first version managed to survive 8 months, and the current version has been going for nearly two years now.

    Much better to put a functional product in use right away and then support any issues than to try and fix all the issues first in hopes that you'll then be able to sell the fully functional product. I think we'd all prefer that our products are used more.

  213. I don't get it by Gorimek · · Score: 1

    Could you maybe rephrase that in terms I'm more familiar with?

    1. Re:I don't get it by PeteyG · · Score: 1

      No

      --
      no thanks
  214. The only Software Engineering Principle ... by BrittPark · · Score: 1

    that make sense in a commercial environment is the good enough principle. What constitutes good enough is what calls for good judgement. If you're writing a server app that is expected to be mission critical, good enough is very good. If you're writing a one off desktop app, good enough can be quite sloppy. IMHO

  215. Know the goal and choose the right procedure by akar_naveen · · Score: 1

    Ofcourse Q&D methods are called quick and dirty for a reason. 'Quick' for quick rise and quick(er?) fall. 'Dirty' for all the dirty work done now and more of it later. If the company is old enough, it must have already realized the fact. So, the answer (for which method to choose) is simple -- if your goal is to make some quick bucks and disappear, you can go for Q&D. If you want to stay long, then you have work to develop and maintain good will among the customers, put eforts in choosing the proper development process and maintain such ohter ethics. Now, if you do not have enough power in your hands to modify the development process, how about trying the down-up procedure. Try convincing the co-workers why it's dirty and suggest the better process of doing it. Even if they don't follow you now, once the idea is put in their heads, you can sit back. They will observe them(the reasons for change of process) for themselves as they encounter problems. Once this level is achieved, the idea goes up the tree to the person who has the power to change, process repeats, and eventually the change (if good) will occur. As anything significant it takes lot of patience and faith.

  216. Effective Posture by BobHope2112 · · Score: 1

    Perhaps I'm in a conducive environment, but I have an effective means of minimizing this backlash.

    *Always* scope out the person-power to do the full blown project, and stick to your guns. In those situations where there is too little personnel or schedule to do the "proper" job of it, you can leave the postponement of "ancillary" tasks (testing, documentation, etc.) to the pointy-haired management corps.

    I cannot claim this has kept me from conflicts with my peers and superiors, but my integrity has remained largerly intact.

  217. Define a Minimum System by HermanAB · · Score: 1

    and a Full System. Then at the end of the Minimum System, people know what they got.

    --
    Oh well, what the hell...
  218. Snooze you lose... by obelixn13 · · Score: 1

    I've worked in big (> 200) and small ( 5) software companies, and I'm convinced its size thing.

    A larger company can afford to pay for extra process (docs, quality control), and usually can't afford to be without it.

    A smaller company can often get away with being a bit rough around the edges because its dynamic enough to take up the slack when things go wrong.

    Clients already know this of course, so they see it as a quality/price tradeoff. The difficulty for software guys in a smaller company is to have to justify their way of working to a client who expects impecible process, reports/updates, and it all delivered yesterday! Which is undoubtedly what the sales guys promised them when trying to project a 'professional' corporate facade.

    Just remember though, no matter how professional the facade - everybodys a cowboy. Thats the nature of software, the industry's still too young for anyone to know what they're really doing. Processes help, but they are a tradeoff..

  219. A Programmer's priorities by mcrbids · · Score: 1

    These are in order of priority...

    1) Make it work. It's very important to have something to show/sell!

    2) Make it work well. Once you have something to show, it's important that it generally behave as expected

    3) Make it work right. Finally, once you have something working and doing what's expected, it's important that sound design and engineering principles are used, particularly in maintenance to ensure continued ability to meet the needs as they evolve.

    This is where I'm more and more becoming an advocate of Extreme Programming. Primarily the concept of code evolution - that you quickly evolve the code to fit the needs as they evolve.

    My most common evolutionary path is to start with a hack, and make it clearly known that it's Q&D, and then when needs overwhelm it, we consider it a "proof of concept" and rebuild/rewrite as needed.

    Typically, when the Q&D solution isn't enough, the resources exist to pay for the "right" solution.

    Another great reference work is the Big Ball of Mud, covering the various reasons why software develops the way it does, and highlights the various forces at work.

    --
    I have no problem with your religion until you decide it's reason to deprive others of the truth.
  220. Standard Advice for Corporate Workers by rnd() · · Score: 1

    Do what your boss says, but document the communication where you mention your qualms, and document everything else. In other words, CYA.

    --

    Amazing magic tricks

  221. XP business by peripatetic_bum · · Score: 1

    is this what XP programming was all about.
    Get the code running, use the principal that 20% of the code does 80% of the work,
    Get it running, release often, and *DONT* too much time for the future stuff that you dont need?

    --

    Sigs are dangerous coy things

  222. How long is the code supposed to live? by Anonymous Coward · · Score: 0

    If this is just a "quick hack" that is expected to have a lifespan of a year or so, then you can get away with a Q&D "solution".

    But what if the code is supposed to live a bit longer, say a decade? Would you want to try to:

    - wade through such "code" left by someone else
    - maintain it
    - find and fix bugs
    - explain to management "Uhhh, sorry, but it will take at least two months to fix this one" when they sputter "But, but, it's only a single menu choice that has to be added!"
    - just understand large parts of it, while noticing that the pile of empty scotch bottles pile up just to keep you sane

    Management is flexible when they get the right kind of explanation of why one sometimes must go that extra mile to both design and implement it correct from the beginning. One argument they might listen to is "If we do this Q&D, it will take at least ten times longer to do any maintenance or even a next release. Are you (looking sternly at the manager) willing to take that decision? If so, I want that in writing before anything else.

    That way, when (not if, when) the brown stuff hit the ventilation device you have a piece of paper displaying you was forced into this position under protest, and your hands are clean.

    This will get you the attention of the ones in charge of the money... ;->

    This could of course also just be a display that you are not the right person for the job - that someone with more experience in the area would be able to do the implementation both quick and non-dirty. Sorry, but it had to be said.

  223. Proper by Exousia · · Score: 1

    The "proper" thing to do is probably doing what your boss tells you to do.

    --

    --Slashdot: News for Turds. Stuff that Splatters.
  224. cheap, fast, and good by goonda · · Score: 1

    for any project, IT or otherwise: you can only pick any 2 of [cheap|fast|good]. Think about it.

  225. My experience by markclong · · Score: 1

    I am currently working to do it right. We have been told we have the time it takes to do it right. We will have spent, by the time it is over, a year and a half on this project. It includes researching, designing, implementing, and deploying a multi-tiered backend. The phrase that got some people going for our idea was a quote from elsewhere on the Internet.

    "There's never time to do it right, but there is always time to do it over."

    I know I am lucky in that I am given the freedom to set my own deadline. This is a system we needed years ago but instead of rush it my boss is running cover all the way up the line for us so we have the time it takes to do it right. Middle management probably will not understand when one group says the same thing could have been done in a month or two and we say it will take 18 months. I hope that in the end they will see that unlike the other solutions implemented by the quick-n-dirty group, this one works.

  226. just a note by autopr0n · · Score: 2, Funny

    Wendy is so not going to call, loser.

    --
    autopr0n is like, down and stuff.
    1. Re:just a note by lpret · · Score: 1

      LOL, that's exactly what I was thinking.

      --
      This is my digital signature. 10011011001
  227. The easy answer. by Bluelive · · Score: 2, Insightful

    From experience, Build something working, Call it a prototype to those who want it 'clean and proper' Call it a trial version to those who want to sell it. Basicly, the proper way is too expensive in the short run and it will push costs up. Just make sure that v2 is made clean and payed for by v1. (either by investors liking the trail, or actually releasing it to the market)

  228. Question by autopr0n · · Score: 1

    How do you get girls naked when you can't even afford a digital camera?

    --
    autopr0n is like, down and stuff.
    1. Re:Question by Rufus211 · · Score: 1

      erm, you do realize he runs NineNine.com, a site very similar to your own.

  229. What? It's fairly obvious. Look at MS by arcanumas · · Score: 1
    Quick and Dirty, by far. (with extra dirty)
    You said you want money, so here. Do it like Microsoft products (Yes, sell your soul to the devil ). Buggy as hell and over marketed.
    Then, once you have a considerable user base (all frustrated) and locked in , you can correct the major problems and make it version 2 (or 98 or XP if you feel extra Devilish). So in other words you will be selling the bug fixes to your customers as a product. Don't forget that a good marketing plan is more essential than program design. I would suggest an extra dose of Dilbert on daily basis to get you started

    If you feel that the competition is more that 2 times better (one is not enough to worry), then for god's sake don't improve your software! On the contrary make it so that your customers can not switch from it to the competition's without major problems.
    Do not feel bad about your customers being forced to problems and inferior quality products. They will love it. Look at how many use Windows.

    I mean, the answer to your question is right in front your eyes.

    --
    Slashdot Sig. version 0.1alpha. Use at your own risk.
  230. remember EDS by linuxislandsucks · · Score: 1

    Remember EDS..guess which way they did it?

    later pain is never good for a company for one purchaser of the software system can sue and get your company over a barrel!

    --
    Don't Tread on OpenSource
  231. XP is the way to go by lokedhs · · Score: 1
    I find it interesting that not one of the high-score responses (I havent read the others) to this question has mentioned XP, i.e. Extreme Programming.

    XP was built on the knowledge you just mentioned: That the Q&D solution is necessary, and that if you try to follow set procedure (or the "waterfall model" as it's called) where you have a requirements, design phase, implementaion phase, testing phase you will most likely fail.

    Basically, what XP is all about, is to acknowledge that the specification is useless, beacuse after a couple of years when the project is finished, the end result doesn't look anything like the sepcification anyway. At least if you want to survive in a dynamic market. We have all seem that in the real world, the requirements change during development, and if they do, you need to go back and change the spec, and then possibly reimplement large parts of the code.

    So, how do you go about solving this? Well, first of all you have to understand and believe in a couple of mantras:

    • The implementation is the specification
    • Refactor mercilessly
    • Do the least thing that could possibly work
    • Test driven development

    Here is the list of development rules.

    The implementation is the specification

    This means that instead of writing a specification before programming begins, you let the application evolve (very similar to most Open Source projects actually) and if the requirements change during development, you change the code to adopt.

    Refactor mercilessly

    This is absolutely nessecary in order for the previous point to work. What it means is that you should not be afraid to change the layout of working code, to make it easier to add new features. With good refactoring you don't need a complex design in the beginning, which means that you get to market more quickly.

    I strongly recommend you read Martin Fowlers book Refactoring, it's a real eye-opener.

    This leads us up to the next point:

    Do the least thing that could possibly work

    If you are thinking of implementing a couple of abstract base classes and interfaces to make your object design super generic, so that it can be used for a lot of differnt things in the future. For example implementing a plugin architecture in your file parser or somehting like that, you need to ask yourself the following questions:

    Am I going to need this abstraction now? and If I need it in the future, will it be easy to refactor the code so it gets that functionality? If your ansers to there questions are "no" and "yes" respectively (which they usually are) then you should not do it.

    Essentially: don't do anything until you need it.

    Test driven development

    All this refactoring, and no solid specs can be a bit scary, especially in the beginning. A common question that pops up is: "how can we guarantee that the code works if you keep changing it all the time?". The answer is: unit testing. The rule of thumb here is: Implement the test first, then you implement the code so that the rest runs. Whenever you are going to fix a bug, write a unit test that triggers the bug first, and then fix the code so that the test succeeds. You then make sure you run the ever growing test suite several times per day. It helps a lot in catching regression bugs.

    For Java, I recommend JUnit.

    Now, the biggest problem you face is selling XP to your PHB's. They will more than likely feel that they are losing control, and they will be afraid that their nice Microsoft Project documents will become useless (no one seems to remember that (almost) every single waterfall project will overrun both budget and time constraints). However, there is

  232. The Solution is Communication by ReadParse · · Score: 1

    Document, document, document... and I'm not referring to the code. Make it clear to the weasels that THEY have a choice to make. Quick and dirty will get it out the door, and you'll have to come back and work on it again for the final version. Or if it's processes and technique, make sure they know that's the reason why it can't get done in time. Make the choice clear and let them make it.

    I've heard a lot of tales about people who aren't allowed to speak up about these things. BS. Screw 'em. If you're not allowed to speak your mind about these things and tell people the truth, the job isn't worth it.

    RP

  233. Exactly by lpret · · Score: 1

    Also, make sure to tell marketing that by having a better product, you'll naturally draw more customers -- allowing them to look better.

    --
    This is my digital signature. 10011011001
    1. Re:Exactly by The+Vulture · · Score: 1

      As much as I'd like to believe this, it doesn't hold water.

      The truth is (as has been pointed out to me many times by my various managers), if you don't get the product out when marketing needs it, you won't have customers, because somebody else *will* deliver.

      Granted, if you're the only maker of the product, you have some lee-way. However, a lot of software and/or hardware products are in a commodity market. Being the first to market with a new feature generally insures sales, despite how well the functionality works.

      Unfortunately, the motto in tech seems to be, "Ship first, fix it later".

      -- Joe

  234. A better question by Anonymous Coward · · Score: 0

    Sometimes the quick and dirty solution works as well as the elegent solution, the only difference from the users perspective is that one costs less to develop. Obviously for major development projects that you're planning on basing your comp... drugs, nm, this is lame

  235. Why are the extremes the only options? by Anonymous Coward · · Score: 0

    Pardon me for saying this, and I hope you won't think that I'm trolling, but this is a stupid discussion.

    Every post I've seen assumes for some reason that there is a binary choice here: either it's completely quick and dirty and crappy, or it's perfect and clean and way over-schedule. But what we're talking about here is not a binary choice; it is not black vs. white.

    Being a good software developer means striking a balance. There is a quality of code vs. development time tradeoff here, but it's a continuous spectrum between the two extremes, not a binary choice.

    The reason experienced senior developers make more money that junior developers is that it takes a lot of time and experience to learn to make the decisions about which point on the spectrum you should shoot for, given the current situation. Every situation, every product is different.

    In general, too, I find that it's best to change this point on the spectrum over the process of development. Early on it's more important to design carefully so you don't paint yourself into a corner. Later in the development cycle, once the design has had its kinks worked out, it's fine to relax things a little. One week before gold master, pretty much everything is fine to hack, as long as the hack will work. At the last moment, if you can fix two bugs with good hacks or fix one bug with a clean, well-designed, thoroughly coded and commented piece of code, you really should fix the two bugs with hacks and recode them _after_ the gold master.

    Software development is like most things in life; there are no clear cut rules, no certainties, and no real ways to come up with a formula to always succeed. At every point in time, you have to pay attention to what's going on and try to make the best decision you can, given your current situation and your projection of the future.

    Not really very satisfying, eh?

  236. depends by alienhazard · · Score: 0

    MS did it quick and dirty. Their stuff was teh crap, but now that they have all the money, they are starting to fix it.

    If you have the time, do it proper.

    or, you could just be a real good programmer and make quick and dirty mean correct and proper.

    --
    > "I allege that SCO is full of it" -Linus
  237. So what? by autopr0n · · Score: 1

    $uccess may be temporary, but the $ is forever.

    Seriously though, you should give customers what they want, and what they want is what they pay for. If you want to be all perfect, refactor the code for free when the job is done. Why waste your time with niceties when people aren't paying for it.

    --
    autopr0n is like, down and stuff.
    1. Re:So what? by smagruder · · Score: 1

      Why waste your time with niceties when people aren't paying for it.

      Ummm... because you and/or your company's name is on it? Reputation is gold.

      --
      Steve Magruder, Metro Foodist
  238. Welcome to the REAL world.... by caffeinex36 · · Score: 1

    Unfortunatly, if you are a consultant...that is the real world.

    I used to get soo frustrated....until I quit and moved to a big company....now I only get a little frustrated. ;)


    I blame this mainly on the economy....now adays its more about the "bottom-line" (shiver)...

    -Rob

  239. Documentation by Sedennial · · Score: 1
    Q&D will usually win out I've found. The best answer is documentation.

    • Take a few hours to figure out how to word things so that you don't sound antagonistic or hostile.
    • Look at everything from the COMPANY'S perspective and never write it with 'I think or I recommend.' Use 'The company's interests would be best served by ...., or From the company's final liability/cost viewpoint....' etc.
    • Outline the situation on one or two pages using language similar to the above.
    • Send this document to your manager/project director.
    • List the pro/con/liabilities/final costs of each scenario on a separate page and send the summary along with these pages to the person over the project manager, and the project budgeter/finance dept.
    • Date everything.
    • Date everything.
    • Did I say Date everything? :)
    • Keep copies showing who got sent what.


    You might make some enemies, but you will make some friends in high places, especially those people who control costs. This will earn you a reputation as a person who truly has the company's best interest at heart but will also allow you to know that whatever the fallout you will have done your best to make sure everyone is advised of the situation. And more importantly, the interested/relevent parties will not be able to say "I didn't know, you never said that to me!"
  240. What a place to ask by Anonymous Coward · · Score: 0
    Asking a bunch of developers who frequent Slashdot -- a rapidly developed and barely edited news site if they prefer traditional SDLC versus RAD development is a bit like asking MCSEs what their favorite distribution is...

    Don'tcha think?

  241. Sometimes, the best thing to do is just get a life by strangedays · · Score: 1


    Well.... IMHO there's fundamentally no answer to this because its an incompletely stated, perhaps not well formulated question. I don't mean to offend, but I think its too confused a query to be a useful debate. Its further confused because the Slashdot crowd mostly seem to assume that there's a valid technical answer to a business and quality issue? Why is that? To me, the underlying issue here is definition of Quality, as stated there really isn't one, or at least whats implied varies over time in an uncontrolled manner, so nothing definitive can be concluded as to whats ok, or not.

    • If the quick and dirty solution works, satisfying the customers stated, or implied quality criteria, its a job well done, thanks, move on.
    • If not, and the SOW, was incomplete, blame the project, business analysts, or business folks.
    • If the SOW was complete, and the system does not meet spec, then and only then is development performance an issue.

    Basically, its seems that Q&D approach works for your company and your customer, but not for you, thats awkward, maybe consider changing your job. Most any other answer is a slippery slope argument leading to a religious war, for the ever waiting language/methodology/tool fetishists and flame crews.
    I do think that management in companies that cause such issues and debates, mostly reveal themselves as incompetent and not worth doing business with, whatever your quality stance, as they clearly have not defined their business process model sufficiently to trust the results or communicated the quality approach to the staff.
    My advice (FWIW), fire your company, or the PHB's and move on with your career, if the situation cannot be improved by discussion. Otherwise quit worrying about their dumb mistakes that you can't fix. In other words, maybe its time to just Get a Life.
    FYI, I am a technology manager, a PHB to most of Slashdot I guess, and sorry to bust any bubbles but not every shop is this dumb internally.
    Of course, thats only true for some limited ranges of stupid, and some sets of PHB's. YMMV.
    --
    There is no god; get over it already! Never exchange a walk on part in the war, for a lead role in a cage.
  242. Quick and Dirty? No such thing. by rocky28 · · Score: 1

    An old boss of mine had the quote. "There's no such thing as quick and dirty. Just dirty." Which means, as soon as somebody revists the quick and dirty solution you provided (and they always will, no matter what how much "this is just a once off" posturing you do) it will take longer to extend, longer to understand and harder to maintain.

  243. The reality is... by karlandtanya · · Score: 1
    If you're making money for the company, they may whine and complain, but you'll have a job.


    So, go ahead and give the "fast/cheap/correct: pick 2" argument to management. That argument is a false choice. If you're the person responsible for the execution of the project, it's up to you to find the balance that will satisfy your Customer. Here is the process that I use; YMMV:


    1. Identify the Customer. The Customer is defined as "the person/company to whom I have committed to provide something". Usually, there are several in a project. Your Boss. The Project Team Leader. The Client. The End User. Regulatory Agencies (OSHA, FDA, NRC, etc.)


    2. For each Customer: Identify the Customer's Requirements. This is usually the hardest part of the process, as often the Customers

    a) Truly don't know their requirements.

    b) Have trouble being specific.

    c) Ask for conflicting requirements.
    This is the part of planning where you should spend the most effort. It is an iterative process.


    3. Requirements can be broken down into three categories: Functionality, Schedule, and Cost. They are listed in order of priority. Notice that Cost is last. This is actually the Customer's least significant requirement, but the one they think is most important. Remember this.


    4. Resolve conflicting requirements: "Yes, Boss--I can put a back door into the log. But didn't you say you wanted it to be secure and auditable?" "Yes, Mr. Maintenance manager, I can put quick-release guards over all the couplings. But, the OSHA inspector is going to throw us both in jail if I do!"


    4.5 Set your own limits as to what you'll deliver and stick to them. Know what sticking to those limits will cost you. "I will only write proper code, for I am REAL PROGRAMMER" might not be such a good idea. "I will not design or participate in the design of unsafe equipment--even if it costs me my job." might be a good idea.


    5. Document commitments to Customers. If the requirements are vague, make the commitments specific, but limited to what you know you can provide.


    6. Specify Change Control procedures. If you ask for a change, you get a document showing impact to Functionality, Schedule, and Cost. Boss gets a memo and he has to understand it. Client gets a change control form--which he has to sign, and maybe he has to write a PO addendum.


    7. Follow Change Control Procedure! Stick to it! Everybody wants you to "just add this bit/indicator/field, it's no big deal". A thousand little changes can kill you. Don't let it happen. There will by crying and gnashing of teeth. Be ready for it. Endure it. It will pass.


    8. The Customer will screw up. All of them. So will you. Deal with it by fixing the problem as quietly and professionally as possible. Don't ever point fingers. Especially when you're right.


    9. Protect your Customer from embarrasment. Let him know you have done this without embarrasing him. If you deliver the goods, and protect your Customers from embarrasment, they will sing your praises to high heaven. Guaranteed.


    10. If you have a big ego, turn it off and remember you're a professional. If you can't, get out; this is not your field.


    Sometimes, you do the best you can and realize that the "corporate culture" where you work means that you get yelled at a lot. BFD. It's a job, not a play date.


    Sometimes, you realize that management is going to drive this ship onto the rocks and kill all aboard. Jump ship before the wreck.


    Sometimes, it's good just to have a job.

    --
    "Reality is that which, when you stop believing in it, it doesn't go away." - Philip K. Dick
    1. Re:The reality is... by easter1916 · · Score: 1

      Indicator!?!?!? Shriek! Are you still developing in RPG?

    2. Re:The reality is... by karlandtanya · · Score: 1
      RPG? Rocket Propelled Grenade?


      No, I do a lot of industrial controls. Sometimes plant engineers see more blinkenleitzen as more better. Usually, the Electrician or Maintenance Mechanic knows better.

      --
      "Reality is that which, when you stop believing in it, it doesn't go away." - Philip K. Dick
    3. Re:The reality is... by easter1916 · · Score: 1

      Report Program Generator... one of the features of this language was indicators (basically booleans) that controlled a lot of the code. It was awful!

    4. Re:The reality is... by ralphdaugherty · · Score: 1

      Indicator!?!?!? Shriek! Are you still developing in RPG?

      I looked at the parent post and didn't see the word indicator, but yes, as a matter of fact, I still program in RPG. Right now on a 16-way 3 TB AS/400, just one of several we have. I process data in files with more than 1 billion records with hundreds of concurrent users and batch jobs banging on the data. Billions of dollars of sales, thousands of stores, hundreds of thousands of items, all being processed by RPG programs. And before this gig, I was cross town at a distributor who's a really big company. Same deal, our RPG programs do the heavy lifting.

      By the way, if any of you had accomplished creating an OS like OS/400, you'd be bragging about it day and night. But since you didn't, you'd rather not know about it.

      rd

    5. Re:The reality is... by ralphdaugherty · · Score: 1

      7. Follow Change Control Procedure! Stick to it! Everybody wants you to "just add this bit/indicator/field, it's no big deal". A thousand little changes can kill you. Don't let it happen. There will by crying and gnashing of teeth. Be ready for it. Endure it. It will pass.

      Indicator!?!?!? Shriek! Are you still developing in RPG?

      Ok, I found what you referring to, but was not parent post for some reason.

      rd

    6. Re:The reality is... by easter1916 · · Score: 1

      Ralph, you're way off base. I worked on the 400 from 1988 through late 2000, on far bigger installations than yours, if we must have a p!ssing contest (Enterprise Rent-A-Car in St. Louis, used to own the biggest single north American cluster of AS/400s). I think ILE RPG is a decent language and environment and ideally suited to many business needs. I also know that it's a very productive environment. What I was specifically referring to, in a joking manner, was the RPG II-style use of indicators (and the cycle, for that matter).

    7. Re:The reality is... by ralphdaugherty · · Score: 1

      yep, it's true, I can't read minds, so glad to hear it was from someone who knows what they're talking about when they were joking about RPG. Enterprise may have been bigger, but I don't think it was far bigger than the $20 - $25 billion per year in sales transactions that have been handled by our clusters of AS/400's for the last several years. One data warehouse we did required IBM to tweak OS/400 to handle the size of it back in 1998. Almost all this work is done with RPG/400 programs, not ILE RPG, although I wrote a job site web server backend three years ago in ILE RPG in 12,000 lines of code over three months. Ran like a champ, but I think that particular database I/O intensive code would have been just as good in RPG/400.

      rd

    8. Re:The reality is... by easter1916 · · Score: 1
      No mind reading required, just reading. By the way, I found it interesting that you chose to drag OS/400 and the AS/400 into the mix. All I mentioned was indicators, a feature of the language (independent of the platform the language compiles on). Perhaps to offset the fact that the language is, dare I say, dull?

      The AS/400 and OS/400 may shine, but please -- RPG/400? Without ILE features like service programs? Sure, it works in the same way that COBOL works. That doesn't mean it can't be bettered or replaced.

      For example, Java under OS/400 is a speed demon. I had ten good years of fun and high income as an AS/400 developer using RPG, but eventually realized that IBM was repositioning the platform as a server and promoting Java as the development language, with good reason. So I made the switch.

    9. Re:The reality is... by ralphdaugherty · · Score: 1


      mind reading required when you say "Agh, RPG". I dragged OS/400 into the mix because it was a chance to tell Unix/Linux people about a real OS, not that they could deal with it.

      Calling an RPG/400 program and leaving LR off is pobably better than a service program, in my opinion.

      Yeah, IBM has fscked it up good. I ranted for years on midrange forums. I hope they go down hard when people tell them to take Websphere and its connection extortion to do anything and shove it.

      rd

    10. Re:The reality is... by easter1916 · · Score: 1
      connection extortion
      What do you mean? I've never worked on WS, just Tomcat and Weblogic, so I'm not familiar with the WS licensing costs.
    11. Re:The reality is... by ralphdaugherty · · Score: 1

      "connection extortion"
      What do you mean? I've never worked on WS, just Tomcat and Weblogic, so I'm not familiar with the WS licensing costs.


      IBM uses Websphere as their tollgate to do anything. They attempt to make every IBM product require Websphere, and Websphere licensing is about $425 per user per server per year last I heard. This is on top of whatever the IBM software products cost, and on top of paying thousands of dollars for Websphere. They charge for all these products based on the size of the box, so Websphere on a decent sized server is over $10,000, plus the user licensing, plus whatever their other products cost. This is their plan for replacing hardware sales as their main source of business. They actually think hardware is a commodity and that Websphere is something special. They're going down hard.

      rd

  244. Gradual improvements. by ls-lta · · Score: 1

    If this is something that could become a standard product (or shared code), then make incremental improvements with each customer. I'd look at where you spend most of your time debugging and either fix that, or do something to make debugging easier.

  245. A dirty secret about managers' references by fellini8.5 · · Score: 1

    Most (big) companies have a policy that managers can only confirm the employment, start, and termination dates of former employees. The legal issues are thorny* when a not-quite-positive reference is given for a former employee. So the policy is you can't even give -good- reference either.

    (* by "thorny" I mean "their lawyers will eat you alive")

    So, always make sure, if you're good, to get personal references; there's usually no policy about co-workers. If you think your boss will sing your praises, well, they probably can't.

    --
    Kineska: Cinema, soapbox, music & musings
  246. shhhh.... by lpret · · Score: 1

    I'm only 20, i still have 2 years of ignorant bliss!

    --
    This is my digital signature. 10011011001
    1. Re:shhhh.... by NineNine · · Score: 1

      Enjoy it!!!! Drink too much. Hit on women you'd never normally consider hitting on (because they're awesome). Don't fucking work at all. You'll have the rest of your life for that. And most importantly... turn off your damn computer and go get drunk, laid and stupid. Chances are, you'll spend the rest of your life in front of a computer!

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

      Sounds like advice from someone who lives with his mother.

  247. CMM by Anonymous Coward · · Score: 0

    There is a widely accepted set of guidelines developed at IBM known as the Capability Maturity Model. As organizations develop and grow, they should develop repeatable processes.

    There are 5 stages in this model, and clearly your organization is at stage 1: Initial, where sound practices are often sacrificed to meet unreasonable schedules, and project management is weak.

    You might want to find out more.

  248. Python by darnok · · Score: 1

    I frequently find myself in the same situation, and have switched to using Python wherever possible for the Q&D solution.

    I've found that, when I write Python code, I generally get the structure of the code pretty right, though I may wind up skimping on documentation, may code stuff inline that should be separated out into functions, and so on. The step of converting Q&D code to production quality using Python is a whole lot smaller than in e.g. C.

    Even if the final version has to be in C/C++, then I find implementing a Q&D version in Python first allows me to write better C/C++ code later on. Again, I suspect it's because using Python enables me to get the basic structure of the code 95%+ right on a first attempt, and then it's largely a matter of translating Python to C/C++.

    Whatever you do, don't try creating a Q&D version in C/C++ if you can possibly avoid it. C/C++ code tends to be degenerate into unreadable/unmanageable crap much quicker when you're using it for Q&D code; they're great languages for production quality code, but just not that well suited to Q&D code.

    IMHO, YMMV, etc...

  249. Product vs. Project Development by plasticmillion · · Score: 1

    One important distinction is between development of a "packaged" product or of a custom project for a customer. In many cases, a customer project will be most successful if you get something out the door and delivered to the customer as quickly as possible. Since they probably didn't know what they wanted in the first place, this will give them a chance to play around with what is, in essence, a prototype before you sit down and craft a masterpiece that no one will actually use. For product development the picture is very different. Here the temptation is to throw quick-and-dirty hacks into your product for every potential customer to land a sale. The result is a bloated, spaghetti-code-ridden product that takes longer and longer to extend because its design does not lead to easy code reuse and specialization. This is a death spiral for any software development company and must be avoid at all costs. With products it is indispensable to make orderly releases based on requirements driven by a synthesis of customer needs, not the "urgent" requirements of one customer.

  250. How it works... by wzinc · · Score: 1

    - Quick 'n Dirty = v1.0 - Correct and Proper = v2.0 By cleaning the code, you can improve speed and make a more robust program, both great reasons to have a pay-for 2.0 upgrade.

  251. you are correct by autopr0n · · Score: 1

    And if Bill Gates just understood this, maybe he'd make something of himself, as opposed to living in his parents basement.

    --
    autopr0n is like, down and stuff.
  252. Now vs Later by nuggz · · Score: 1

    I agree.

    Quick and dirty hacks may not solve your problem, if they don't solve the problem ie long term maintainability, they are not a solution.

    If it doesn't do what it should, it is not a solution.

  253. If you're telling your mother... by NineNine · · Score: 1

    ... then you're not doing it right. It's that simple.

  254. huh? by jafac · · Score: 1

    ALL engineering is a series of trade-offs.

    Imagine the PERFECT project, where everything was 100% perfectly accounted for, every situation was coded for, and fully tested, and the goal of shipping with exactly zero defects was met.

    A perfect product would take an infinite amount of time to complete.

    At some point, you've got to make a trade-off between quality and timeliness (or whatever other factors limit you). Perfection is an unrealistic ideal. Shoot for it. But don't shoot at it.

    Where you draw the line, depends on a host of factors, some of which are impossible to determine until after you've shipped. It's the job of the engineer to draw that line, and make the best possible product, given the parameters of the requirements.

    Isn't this a rather basic question?

    --

    These are my friends, See how they glisten. See this one shine, how he smiles in the light.
  255. Is being first to market a priority? by cesars · · Score: 1

    Sometimes there is no choice but to do it the quick and dirty way, and being first to market is such a situation.

    Company A and Company B are working on a product that does basically the same thing. Both companies know that they are both working on a similar product, and they both know of potential customers that will go with the first one to provide at least a decent solution. A correct and properly tested solution might take a year to develop, a quick and dirty one that does the job six months. What do you think is going to happen?

    Yes, the development team might say "Well, we will fix it on version 2, and do things the proper way." But then, the Feature Wars start. The customer wants a set of features, and the competing company, which by the way, finished it's product shortly after you, is promising them for version 2. Whoever gets those has an advantage. And so it starts again, a race to be the first to market with such and such feature, and whatever got done wrong on version one stays that way (because there is no time to fix it), and more stuff done the wrong way goes to version 2.

    It looks to me that the "Quick and Dirty" way can't be avoided in money making, "first to market race" projects. And that covers about every for profit company out there.

    --
    Do you want the job done right, or do you want it done fast? - Homer Simpson
    1. Re:Is being first to market a priority? by shaldannon · · Score: 1

      Yeah but if you think about how many "first to market" projects are now dominant in their market, maybe you'd rather do things a little more correctly....

      --


      What is your Slash Rating?
  256. I'm living this by SimJockey · · Score: 1

    I started a project over a year ago. When we started we were well staffed and on schedule. I was being thorough and documenting things very methodically. Then management started to take staff away, and things got a bit messier. Then the client changed their mind and kept the same schedule. And I started putting most of the design together off the top of my head, figuring I'd write it down later. Well, now we are almost done, there is a fundamental flaw in the design basis that the client is blaming on us (me). And my bosses want me to do things even quicker and dirtier, just to get it finished. I get blank stares when I tell them that that's what got us into this problem in the first place.

    Oh, and I'm not talking about coding. I'm an engineer and I design oil refineries. Sleep well on that knowledge, I know I don't.

    --
    Laugh while you can, monkey boy!
  257. Like "The Office" by Anonymous Coward · · Score: 0

    If I'm not mistaken you brits have a sort of psudo-reality show called The Office. I don't really know that much about it, and you don't know much about Office Space, but I think we can just assume they are similar :P

    1. Re:Like "The Office" by DoctorFrog · · Score: 1

      Strange, I was under the impression that Office Space was actually funny.

    2. Re:Like "The Office" by Anonymous Coward · · Score: 0

      I'm American, and The Office is way funnier than Office Space. Don't be a dick.

    3. Re:Like "The Office" by DoctorFrog · · Score: 1
      As my post implied, I haven't seen Office Space so I can't make a direct comparison. I find The Office painfully boring and unfunny; so sue me, I made a joke about it.

      I'm a Irish/American dual citizen, have spent roughly equal amounts of my life on each side of the Pond, and enjoy both British and American comedy. Let's not project cultural blindness where none exists, okay?

      Oh, and don't be a dick.

  258. Gotta Start Somewhere by X!0mbarg · · Score: 1

    If more professionals stuck to Quality and Proper Programming, then it would become the Accepted thing. Too many times corners get cut, and there's Hell to pay afterwards. Most of the time, it's rightfully deserved, too!

    Of course, you can't discount the Bosses Breathing down your neck for something that they wanted Yesterday, but you have to make a decision for yourself: "Is it worth my rep, my time, and my personal worth to cheapen this project with half-assed corner cutting?"

    If you ever need a frame of reference, think Windows 9x. Too many corners cut to Try to bring it out in the right Year, and Still never got it all worked out. That, and so much time and effort wasted on "Creative Sabotage" of the OS to prevent compatability with 3rd party programs, and "Easter Eggs" buried in the code by Bored programmers that would have been better off spending their time killing Bugs...

    But I digress...

  259. a lot of hot air... by jaiteace · · Score: 1

    Dear Agnes
    I don't know whether I should breathe through my nose or through my mouth. Please help.
    breathless

    Dear breathless,
    it all depends, are you walking or running?
    yours,
    Agnes

  260. But your mom, by Anonymous Coward · · Score: 0

    tells you the day you were born, and with some simple mathematics can discover the exact moment your parents copulated. And with some persistance, you can trick them into revealing some sort of detail about where they were a couple weeks before July 4's Marijuana Concert of the Lifetime with the BeeGees and Yes.

    I know where my mother was before my conception, in a giant forest with mosquitoes and bears. (Marriage Honeymoon). Gosh I hate mosquitoes and bears.

    1. Re:But your mom, by Anonymous Coward · · Score: 0

      You can tell "the exact moment"?! I can tell you've never actually been through a pregnancy (whether you're male or female).

      Babies come when they want to, not when mathematics dictates.

    2. Re:But your mom, by Anonymous Coward · · Score: 0

      But your parents might tell stories about how "late"/"early" you were. Then all you need is to work backward using the mathematical formula that is used to determine that.

  261. It Oughta Be The Customer's Decision by reallocate · · Score: 1

    This ought to be the customer's decision. If they know the trade offs, there are times when a quick and dirty solution is appropriate.

    But, it is a rare customer who has the experience and knowledge to know what the trade offs are. If you're lucky enough to work for a company that explains those trade offs to the customer, you can push for the decision to be made there.

    If you work for an outfit that takes requirements and then never talks to the customer, you have a problem.

    Customers often don't think about maintenance or upgrades, or tech support. So, they don't often remember to add it to their list of requirements. In my experience, it is a rare development shop that will tell the customer that they're probably going to need that, and more. Most vendors I've dealt with abhor chasing down requirements (and the customers loathes the process even more). So, they build to incomplete and incorrect requirements. Invariably, the first time customers gets their hands on real, working, code, they start to realize what they really need. The result: bashing on the vendor because "yes, you met the requirements but you didn't give me what I want..."

    I have seen a few vendors submit two-tier proposals. One is the quick and dirty bid, the other the doctinaire bid. If a vendor honestly explains the differences, the buyer can make an intelligent call.

    --
    -- Slashdot: When Public Access TV Says "No"
  262. Never Compromise Quality by Arandir · · Score: 1

    Never Compromise Quality. It's not worth it in the long run.

    If management and marketing expect you to shit code out your ass on demand, then make them give you some toilet paper in the form of a signed document saying you will not be held responsible for any stench resulting from the project.

    And continue to follow the process! If you can't get your code through a review, make someone in charge sign a waiver and keep several copies of it on file.

    Also write up some release notes listing all known and potential bugs, and make everyone you can find sign it.

    And while you're covering your ass, get your resume in order and keep sending it out to companies with a clue. Eventually the tech sector will turn around and you can bail ship.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  263. Why are you asking slashbot? by sheldon · · Score: 1

    Quite clearly if you are getting in hot water for the Quick & Dirty solution, then you're doing the wrong thing.

    You're also asking the wrong people. You see, this isn't a techy question, this is a business question. You don't get to make this decision, and there is no right answer from any technical point of view. It's entirely up to the business need. Is a prototype that you're going to scrap a completely acceptable solution? Sometimes it is, sometimes it isn't. It depends.

    Speaking from a customer view point, a lot of us have been burned by dorks like yourself who think they can win a contract by showing us a prototype and claiming it's the final product. We've bought the bait, paid the money and then wondered why after a year the solution still doesn't work right.

    The information super highway is littered with the bodies of such bad deals and they leave a really bad taste in the mouth. So while you might be thinking it get's you the deal right away, the long term impact of your actions is a bad reputation for your company. And word spreads around... You're definition of Success is hardly in the customers best interest, as you apparently are only looking for ways to soak us for cash.

    It's up to the PHBs and Marketroids who you apparently disdain to be making these decisions because they are the ones who understand the customers position, not you.

    1. Re:Why are you asking slashbot? by shaldannon · · Score: 1

      Your disdain of his position is quite off-base. If you reread his remarks, you will observe that he wants to do it the right way, but his supervisors only give him enough time to do it the quick and dirty way. Furthermore, they expect him to do it properly (which takes longer) in the (shorter) dirty timeframe.

      On top of that, he's a programmer, not a salesman. He isn't the one handing you the Q&D software and telling you that it is robust, fully functional, and everything you ever wanted.

      I understand how being told that and finding out otherwise repeatedly could leave a sour taste behind. Don't blame the programmer for doing what it takes to keep his job because management refuses to find a better solution than the impossible. Sales and marketing staffs often promise the world to the customer, then expect the management to get the programmers to turn out the code overnight, documented, in a package with a silver bow.

      I believe there needs to be a balance. No, software engineers should not be solely responsible for determining how long projects would take. The purists among us would overengineer them into oblivion. On the other hand, too often management has no concept at all of what goes into developing software, and the people in marketing expect such things to be as easy as magic. Thus, marketing and management should not have sole discretion on timelines and styles.

      What needs to happen is for management (preferably management with development experience), marketing, and IT to figure out what processes to use and allowable timeframes that are mutually agreeable.

      --


      What is your Slash Rating?
  264. the domino effect... by opcenter · · Score: 1
    I've watched it all go downhill at my company. Though I've only been here for two years, it was slightly better when I got here and from what I've heard from my elder coworkers, it was much better 5 years ago.

    People used to have time to do projects correctly, but when one person takes the quick & dirty approach, upper management starts expecting the full process to take the same amount of time as the shortcut. So, eventually, no one does anything completely right and they cut corners everywhere or else they'll lose their job.

    Subsequently, the marketing people start making promises we can't keep and we're constantly working 60 hour weeks to try and keep up to the point where we start burning out and product schedules slip. We start losing customers, then revenue. So the layoffs begin because of lower profits.

    So in the end, there's just one guy doing a half-assed job as fast as possible while the rest of us are either in mental institutions or unemployed.

    From that, I would say do the quick & dirty approach if you want to keep your job.

  265. I've always done it that way by Anonymous Coward · · Score: 0

    ..and invented docs afterward.
    YOU HAVE A FUTURE IN THIS INDUSTRY.

    Best Wishes,
    Bill Gates

  266. cover your ass by Anonymous Coward · · Score: 0

    I've been in very similar situations and discovered the solution is to tell the suits/marketeers up front in WRITING of the cost/benefit differences of the two approaches, then let them decide.

    Later when they complain about the shoddy work of the quick, dirty and cheap solution they chose, wave the email in front of them.

  267. Plan it right, do it close, think "Phase 2" by RDFozz · · Score: 5, Insightful

    First, as someone else in this thread stated, the first version of whatever you crank out, no matter how well-thought-out, isn't going to be ideal. Until the product has hit the real world, and real people have used it to perform their work, there will be unidentified inadequacies, design problems, shortcuts needed, etc.

    I always approach things from the "Do it right" perspective -- initially. I figure out what seems to be the best approach to resolve the problem. Admittedly, part of "best" does involve budgetary issues - on a shoestring budget, "best" can't include hundreds of thousands (or even tens of thousands!) of dollars' worth of high-end hardware and expensive software, and that's unlikely to change even over the course of years, in most cases.

    Once I've decided the "best" solution, I look at how clean I can make a solution that fits into the budgetary constraints I'm working in. Lay the groundwork for versions 2 and 3, as long as it doesn't prevent you from reaching your version 1 goals.

    Now, it doesn't necessarily pay to be to lay that groundwork too extravagantly; as noted earlier, at least part of version 2 will be responding to the comments, complaints, and critiques of the users of the system. Unless you have the luxury of spending an extensive amount of time with end users, getting their input on everything from validation, auto fills, and screen layouts to the color schemes to use, there will be requested changes.

    Also, remember that you're almost always serving two masters; the end user who sits in front of your creation, and the guy who signs the checks. If you want to finish the project, the check guy has to be happy; if you want to get more work down the road, the end users better be happy.

    Ultimately, communication is key. As others have said, document what will and won't get done, and get sign-off on it. When (not if) the client wants to change things, point to the contract that either says that the delivery dates will changes or that changes will be made after everything on the current approved timeline is complete, and that the client will pay when things change.

    You're stuck in the middle of everyone using the various aspects of the program (not to mention the people writing those precious checks), so take on the role of middleman fully. If the end users convince you that something is required, discuss it with the check people until they either understand why it's needed or make it clear they don't care why. Do you best to make sure the client understands why you recommend against a particular course of action. Document when they choose to ignore such advice. Then do what they want (barring ethical/moral/legal issues - only you can decide if you're willing to get fired (maybe "blacklisted") over what's going on).

    In short, pull as close to "do it right" as you can, and try to make it as easy as possible to come back later and fix the "quick and dirty" parts, if you can. And make sure everyone knows what's what.

    --
    R David Francis
    1. Re:Plan it right, do it close, think "Phase 2" by ergo98 · · Score: 2, Interesting

      First, as someone else in this thread stated, the first version of whatever you crank out, no matter how well-thought-out, isn't going to be ideal. Until the product has hit the real world, and real people have used it to perform their work, there will be unidentified inadequacies, design problems, shortcuts needed, etc.

      Completely correct. An old saying is that you should plan to program it twice, because you will be reprogramming it, no matter how large the pile of documentation and hours of planning sessions. Spending multiples more time "doing it right" when it, with pretty much certainty, will be rewritten is just a waste of time and effort (the same premise holds for all of the composite components that make the application as well).

    2. Re:Plan it right, do it close, think "Phase 2" by God!+Awful+2 · · Score: 1


      Completely correct. An old saying is that you should plan to program it twice, because you will be reprogramming it, no matter how large the pile of documentation and hours of planning sessions. Spending multiples more time "doing it right" when it, with pretty much certainty, will be rewritten is just a waste of time and effort.

      Not necessarily. *You* may not be re-programming it. How many startups have you worked for? If you can do it quick and dirty enough to impress the man upstairs, some poor new grad will be stuck maintaining your spaghetti code while you are VP of R&D or at least director of new product research.

      -a

    3. Re:Plan it right, do it close, think "Phase 2" by jeremyp · · Score: 1

      There is another old saying "If you plan to throw one away, you'll end up throwing two away". If you go in with the mentality "oh well v1 doesn't matter because we're going to scrap it" it'll be so poor that v2 will be only a little better than where v1 should have been.

      --
      All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
  268. Deutschland by MAXOMENOS · · Score: 1
    You forgot to mention the part about your employer being located in Berlin. Not that I'd mind living in Germany for a few years .. but my girlfriend almost certainly would object. Perhaps after I finish my second masters, I should apply?

    Alternatively, you (plural) could open a Portland, Oregon office, and hire a lot of good talent for cheap.

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

      Or come to Seattle and hire more folks cheaper!!!!!!!!!

      However the traffic sucks and there is NOTHING here anything like the autobahns.

    2. Re:Deutschland by StarFace · · Score: 1

      Yeah, the rain situation would pretty much be the same, too.

      --
      V
    3. Re:Deutschland by God!+Awful+2 · · Score: 2, Funny


      You forgot to mention the part about your employer being located in Berlin. Not that I'd mind living in Germany for a few years .. but my girlfriend almost certainly would object. Perhaps after I finish my second masters, I should apply?

      What... and give up on your third masters? I'm disappointed in you.

      -a

    4. Re:Deutschland by MAXOMENOS · · Score: 1

      Touche'

  269. And what exactly is your point? by Mensa+Babe · · Score: 1

    well, that's great if you code your own stuff, but shutting the warnings and strictness off if you are not the only coder on a team is not exactly a good idea. others might not be as good as you are.

    Do you even realise how incompetent and internally inconsistent your words are? Because you do know the syntax and lexical scope of pragmata, as well as the semantics of use and no keywords, right? *sigh*

    --
    Karma: Positive (probably because of superiour intellect)
  270. Results Count by way0utwest · · Score: 1

    I primarily work in an Operations role, but spent some time with Dot Com Bombs and larger companies, both as an admin and a software developer/maintainer. In the last 12 years, I've learned a few things.

    First, users don't know what they want, by and large. It's a gross generalization, but it tends to be true (IMHO and experience). They have an idea, but as soon as they see something, they want it a little different. Hence all the custom software.

    Are businesses all that different? Not really, but it seems each manager/owner/CEO wants things a little different. Maybe it gives them an advantage, maybe not, but they want it and are willing to pay for it (to a point).

    That being said (and you must keep that in mind as a developer). They want results quickly and cheaply. But quickly more than cheaply in general. It doesn't matter if it isn't the best solution, or the most elegant, or even the fastest. "I want it now, Daddy" (insert best Willy Wonka movie imitation).

    I've worked on large, managed, planned, projects and worked on impromptu, "hey that would be cool" projects. Some have failed, some succeeded, but there wasn't a correlation between the failure and success (from a business standpoint) and the method of coding/developing.

    In fact, I've come to favor the quick and dirty method kind of mixed with XP. Do it quickly, do small changes and GET FEEDBACK immediately. If you've gotten some experience, you can coddle something together as a proof of concept, but something that still is coded well and is maintainable. Keep in mind, often you're doing the maintenence, so hopefully you learn over time that functions are better than cut and paste, classes simplify future development, etc.

    Also, you will maintain it. Or extend it. Turn bugs into features (hopefully not vice versa) and keep users happy by showing progress. And responding to their needs and whims. That's what we get paid for. Want to write elegant, efficient, perfect code, head over to SoundForge and help out.

    You've got to walk the line between writing good code and GETTING THINGS DONE. Results count. Not elegance.

    I understand this doesn't work for shrink wrap or large deployment software, which can't really work with a rapid development model (more gross generalities), but it doesn't seem like that is what the poster was working on.

  271. Rotund employees? by wikthemighty · · Score: 1


    Clearing major changes with your cowworkers is generally a good thing.

    Yeah, we've got a couple of large people working here too.

    --
    "There are people who do not love their fellow human being, and I _hate_ people like that!" - Tom Lehrer
    1. Re:Rotund employees? by Anonymous Coward · · Score: 0
      Yeah, we've got a couple of large people working here too.
      Some advice to folks who work with large people:

      When you order out for pizza (or go out for lunch), count them as two individuals.

      The large people invariably take twice as many slices. They don't realize they are doing it, since they finish eating at the same time as everyone else; they simply eat twice as fast.

    2. Re:Rotund employees? by Anonymous Coward · · Score: 0

      Not here. I am slim, perhaps even skinny (I actually tried to gain a little fat a year ago, but lost it again as soon as I stopped trying), and I eat as much as anyone here, and I'm quite sure that I *can* eat more than most people, if I wanted to. I think I eat about twice as much as a "normal" person, sometimes I actually have trouble carrying the plate with one hand - and I still go up to fill the plate a second time.

  272. Not mutually exclusive by Anonymous Coward · · Score: 0

    Granted, most implementations I've seen have been either quick, dirty & unmaintainable vs. correct, proper & maintainable, however it doesn't need to be that way.

    There are many simple, easily understandable architectural decisions that are quick to implement, and open your system up for easy extensions and improvements.

    1. Establish an object heirarcy (OO only of course). It doesn't have to be exactly right, it just has to be there. You can then easily add common methods to superclasses & all subclasses will have access to them.

    2. Separate presentation from data.

    3. Separate interface from implementation.

    4. Small methods with single functions (see 3).

    5. Function lockdown; force coders to perform operations in one way only (retrieving a record, generating an error etc, again, see 3.)

    There are certainly more things one could do, however you're now overlapping with 'complete & proper'. These simple steps will not only give you a system that's quick to implement, but they will give you a system that is completely flexible to future changes & additions.

    On second thot, don't bother. I'm making major $$$$ from incompetents that don't appreciate this ;>)

  273. Code elegance, precision and other stuff. by rfernand79 · · Score: 1

    The problem is all engineers have provided a Q&D solution at least one. Time? Money? Other constraints? I can't tell, but it sometimes seems people prefer things tat "work quite well" to things that actually work they way they're meant to work. Yesterday, /. pointed out the availability of Edsger W. Dijkstra's manuscripts. Some people are still inspired by his pursue of code elegance, well-though, goal-defined programming and getting it right from the beginning. Seriously, most software developers live from maintenance contracts (a.k.a. fixing the shit I developed for you) rather than selling a fully-functional, fully-tested 1.0 version. We should all try to get it right the first time. This is particularily true for engineers (not programmers); The use of well-tested and mathematically solid algorithms while coding a well-designed system (which followed a thorough analysis) should be our "de facto" way of life... not just patching things we wrote out in a hurry.

  274. Or... SIDS Stupid Ideas Taken Seriously by GetSteved · · Score: 1

    Commander: "We have a hopeless situation... We're all going to die!!!! Engineer, HELP!"

    Engineer: "We can make it work, but it won't be pretty!"

    E: (to other engineers) "What if we crossconnect the plasma conduit directly into the warp drive, then tie it to the transporter via the deflector dish?"

    C: "Will that work?"

    E2: [With Sarcasm]"Once... maybe"

    C: "Good enough. Make it so"

    E: "Alright, but if anyone asks, this was your idea"

    E: "I can't believe I'm doing this"

    C: "What's that?"

    E: "Oh, nothing..., just checking my dignity at the space dock"

    E2: "I can't believe you suggested that. I'm embarassed to be on your team."

    E: "At least we'll still have a team to be on..."

  275. What world are you working in? by 0-9a-f · · Score: 2, Insightful

    There's small business, where Quick'n'Dirty is literally the difference between Life now, or a slow and lingering Death. But either way, you're still around for a bit longer.

    There's mid-sized business, which is (hopefully) either growing too fast to know what it's really doing, or comfortably well-off (established products and/or customers, etc). If it's growing fast, Quick'n'Dirty is again the only way, because otherwise the momentum stops and you risk the whole house of cards crashing down.

    If you're a comfortably established mid-sized business, or larger, then you really have to focus on keeping what you've got. Customers will leave if you don't look after them, and products will die if you don't maintain them. The only two uses for Quick'n'Dirty are:

    1. QADFIP - The Quick And Dirty Fix-It Program, that overcomes a glaring error, or sudden change in requirements.

    2. A competitor falters, and marketing have one chance - THIS WEEK! - to pick up their customers. See number 1.

    If you deploy a QADFIP, the PHBs need to understand that it is a QADFIP, and that you willl spend the next week (or so) cleaning it up TO KEEP THE CUSTOMERS it won you.

    To use Quick'n'Dirty programming under any other circumstance is self-defeating - and you will find yourself ultimately accountable for your actions, regardless of who told you to do it.

    Remember - you did it, not that loser in marketing.

    --
    With each breath in, a flower somewhere opens; with each breath out, a flower withers away. In between lies beauty.
  276. What a load of bullshit by Anonymous Coward · · Score: 0
    Who is it that said "a subject is not fully understood until it can be explained without jargon"?

    A true "master" will produce code that succinctly solves the problem - maybe something like replacing 10K+ LOC with about 100 or so. And those 100 or so will be well-documented and so damn simple and maintainable that everyone reading it will say "Damn, why didn't I think of that solution."

    Something obtuse, obscure, and hard to understand is the mark of a curmudgeon, not a master.

  277. GMP (no, the "Greatest Management Principal") by tz · · Score: 1

    Reward something, and you will get more of it.

    corollary:

    Penalize something and you will get less of it.

    It sounds obvious, but that is what most companies suffer from. It sounds like they actually reward you for producing the good looking façade with bailing wire and duct-tape beneath. They say they don't like the "not following procedure". But what happens? Nothing? Next time do they say "do it right" or "do it now"?

    Do you sign off on the release, or is that a PHB function? Is it YOUR boss' function? Is the "heat" for not doing it right coming from somewhere else? Did you clearly state the quality when you made it available or it was taken from you for release?

    Screens saying Alpha Version when started might help. What I can suggest is that you ask the people giving you heat for not following procedure require such a screen until THEY sign off on it which THEY should only do when all the procedures are followed and all the loose ends are tied up.

    If they don't have the authority to prevent release, or don't want to exercise it, ignore them. They are merely acting as a conscience in a company that doesn't want one.

  278. Final Solution by Animaether · · Score: 1

    ( author likely wasn't unaware of this, but.. )

    The author may want to look up the history of the term 'Final Solution' (Google will do), just so you know if you really want to use it in the future - especially when saying the method would be quick and dirty.

    --

    To get back on topic, I use a little of both whichever is the most appropriate method which doesn't cause too much trouble down the road.

    For example, the proper way for a windows-run application I wrote to check for FTP uploads would be to enable the FTP daemon's ODBC support and hooking into that.
    The quick and dirty way instead is to check the upload directory contents on what would could be called a cron job.

    Turns out the quick and dirty method is actually the most stable, with the fastest response times. Even though technically it's far from proper (coding) procedure.

    On another job, documentation (yes, not quite coding, but it applies), I could simply run a code interrogator and present the clients with the results from that. It has all the info they should need.
    Instead, I'm making an extremely detailed report which can be presented well both on monitor and print (thanks CSS).

    In the first case, the speed and reliability was much appreciated.
    In the second case, doing things properly is far more appreciated.

    So it really depends on the job and what the consequences are/would be.

  279. No Conflict, really! by rleibman · · Score: 1

    You should read a little about theory of constraints, in particular conflict resolution diagrams, as it would help you to find solutions for your problem.

    The main question is one of: Profit now Vs. Profit later. This conflict (or some would say apparent conflict) is what you as an engineer need to explain to management, this is the tradeoff that is being made, and in order for the conflict to disolve you need to find solutions that satisfy both, or at least make the trade-off knowingly.

    1. Re:No Conflict, really! by Baron+of+Greymatter · · Score: 1

      There is no conflict. If you are talking about a publicly-held company, there is only one correct (and legal) answer: Profit Now!

      The only reason for business is profit for the stockholders. If we are talking about a public company that is mandated by law (at least in the US).

      A product (software or otherwise) may not be perfect, but if it has been announced, is being offered for sale, and isn't an unmitigated piece of s#!t (or even if it is, but let's keep Microsoft and some car makers out of this :-D ), you have to release it bugs and all.

      One old saying is "There is never enough time to do it right, but there is always enough time to do it over." Another one is "There comes the time in the life of every product when it becomes necessary to shoot the engineers and start production."

      Good engineering does not make short-term profit (although it can and should make long-term gains). Products out the door make profit. Short-term profit makes the stockholders happy. They do not want to wait.

      It makes more common sense to have a well-engineered product that won't fail or require updates or redesigns. But a product in constant design doesn't get manufactured/released (in the case of software), shipped, and sold.

      The bottom line is that Quick and Dirty gets a product out the door. Slow, deliberate, and well-designed does not.

      --
      Microsoft's VP of Customer Service is Helen Waite. If you are having problems with their products go to Helen Waite.
  280. Hear! Hear! by Anonymous Coward · · Score: 0
    Want to make that stop?

    Put the developer on a plane to see the customer, and have the dolt who broke the product apologize. Do it all at company expense - because you'll never have to do it again, so what's $2000?

    If the programmer quits over doing something like this he wasn't worth keeping - he doesn't have the backbone to admit he fucked up. And if he does have the backbone, he will have learned a valuable lesson.

  281. Communication by Anonymous Coward · · Score: 0

    The answer is simply that there needs to be constant communication between you and the people making the business decisions. Inform them at the beginning, of a project what following proper processes will do for the project, for the code and for the business.

    Be honest about how much more work it is for you to do one thing or the other, and what the benefits are. As issues come up through the project, be honest about the impacts, and what differences there are between the quick fix and the proper fix. When the project is done, do a post-mortem and analyse what could have been done differently.

    Let business make the important business decisions, but inform them of the impacts of their choises. Ultimately the code you are writing in this case belongs to the company you work for. The company needs to make the right decisions, and the company should be responsible if the decisions that were made resulted in proper process not being followed, not you. You job is to inform and deliver.

    You'll find after a couple of projects with this approach, everyone will begin to understand the issues involved, and the right decisions will tend to get made mor often.

  282. Don't polish a turd by EmbeddedJanitor · · Score: 1
    Sometimes quick and dirty is the way. Sometimes you need to do some fire fighting. However, firefighting does not stop when the fire is out - you still need to go back and clean up the mess.

    Tell the PHB that the action was a temporary firefight measure and now the real solution needs to be put in place. If the quick fix was a turd, then throw it out and do it properly - don't go polish the turd

    Unfortunately I think too many PHBs are overcommitting and too many engineers are shit scared of losing their jobs ("You can't do that in a 40 hour week? No sweat that Indian outsourcing place will do it in one 60 hour week."). This means that likely you don't get a chance to catch up and straighten out the mess. Put out one fire, move to the next.......

    You have to be careful that you don't end up creating more problems than you solve.

    --
    Engineering is the art of compromise.
  283. Q&D worked for the most... by SharpFang · · Score: 1

    Q&D worked for the most successful company in the world, Microsoft, so apparently it's a good idea. Just make sure about your license agreement: "You can't hurt us, we can hurt you" and "All your money are belong to us", that's about all Microsoft has there and it seems sufficient.

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
  284. Geez, he's writing code by Anonymous Coward · · Score: 0
    Not searching for world peace. Why don't you have him sing "Kumbaya" while you're at it?

    It's a business decision - profit some now with a crappy product or lose market share hoping to make profit up later with a better product.

    If he's not a corporate executive he has no right to make that decision - that's what the boss is supposed to do.

    Just be damn sure he documents the decision-making process...

  285. Do both! (No, really.) by ummit · · Score: 1
    Darn good question. (One of the most important there is, I'd say, because variants of it underlie all sorts of crucial design decisions.)

    I've got two answers. The first (even though it sounds like a stupid cliche, of the sort that Dilbert's PHB is wont to mutter) is: "work smarter, not harder". See if you can't do the Correct & Proper thing, in the same sort of compressed timeframe that you were afraid was forcing you into the Quick & Dirty thing. You're a code jockey, right, with the latest high-productivity development tools? So show us what you can do! Why should Correct & Proper have to take so long?

    Yeah, I know, sometimes it does, especially if you're not so much writing brand-new code, as figuring out and trying to fix a bunch of old, broken, legacy code. So the second answer is: when you're forced by schedule pressure to take a Quick & Dirty shortcut, that you're probably gonna have to go back and do right later, at least make sure it will be possible to do it right later!

    Far, far too many Quick & Dirty shortcuts end up being impossible to get rid of, because they have far-ranging repercussions. Perhaps the quick&dirtiness is exposed via an API, in such a way that fixing it would require rewriting all callers. Perhaps the quick&dirtiness shows up in a data file format, meaning that you can't fix it without invalidating (or having to convert) all the existing data files. Etcetera.

    So when you find yourself doing the Quick & Dirty thing, take some time to think about the Correct & Proper thing you'd rather be doing. (You've already done some of this, or else you wouldn't be asking the question in the first place.) Figure out how the Correct & Proper thing would interact with the rest of the system, and make sure that your Quick & Dirty shortcut either interacts the same way, or that there will be a graceful migration path available.

    The only thing worse than an ugly, Quick & Dirty shortcut is an ugly, Quick & Dirty shortcut that can't be fixed later, no matter what, even if you do find yourself with the resources and the motivation to fix it, because it's become ossified in some way. (Think 8.3 filenames for but one example.)

  286. 45 billion dollars sez Q&D not the answer by tjstork · · Score: 1


    Microsoft, for all their reputation as purveyor of buggy code, has done some doozies of redesigns that saw them win in some major areas.

    Netscape got a two year head start on MS, but MS's rewrite of IE for version 4 - with its real programmable hierarchy, pretty much left any NS offering in the dust until gecko came out years later.

    Windows NT had a much better guts than did OS/2, and took much longer to get to fruition. Even Windows 95, for all of its goofiness, was a carefully calculated and lengthy development. W95 offered a real transition from both DOS and 16 bit windows to at least some kind of 32 bit OS and without really too much aggravation.

    The whole .NET technology platform was a long time in the making.

    Access was a -long- development, but it proved much more successful in killing off competitive desktop database competitors then did the acquired FoxPro.

    Bottom line is that hacks only take you so far, and eventually, you will lose by doing them.

    --
    This is my sig.
  287. Edsger W. Dijkstra opined on this subject... by stienman · · Score: 4, Informative

    "Being a better programmer means being able to design more effective and trustworthy programs and knowing how to do that efficiently. It is about not wasting storage cells or machine cycles and about avoiding those complexities that increase the number of reasoning steps needed to keep the design under strict intellectual control. What is needed to achieve this goal, I can only describe as improving one's mathematical skills, where I use mathematics in the sense of "the art and science of effective reasoning". As a matter of fact, the challenges of designing high-quality programs and of designing high-quality proofs are very similar, so similar that I am no longer able to distinguish between the two: I see no meaningful difference between programming methodology and mathematical methodology in general. The long and the short of it is that the computer's ubiquity has made the ability to apply mathematical method more important than ever."
    prof. dr. Edsger W. Dijkstra - EWD1209

    -Adam

    1. Re:Edsger W. Dijkstra opined on this subject... by tjic · · Score: 1

      What percent of Dijkstra's career was spent in the private sector, and what percent was spent as a tenured prof?

  288. a matter of perspective by Anonymous Coward · · Score: 0

    I have a coworker who is famous (infamous amongst the software team) for proclaiming "I get things done fast". He gets work cleared from his to do list very quickly, and management thinks he's a genius for it. He's even been given a raise.

    From the rest of the team's perspective, he gets things done the excruciatingly slow way. First, he gets the job "finished". Then, one of us has to fix it so it actually works, after having wasted an hour in debate with him over the crapiness of his work. His ego, kindly boosted out of control by management, will not allow him to accept the fact that his work is unusable. We could get things done twice as fast if it weren't for him taking the "quick 'n dirty" way.

    But as to which approach is "right" - it's a matter of perspective. From his perspective, he is clearly doing the right thing as he completes his work list quickly and gets glory and money. From management's perspective he is doing the right thing - he is performing exceptionally well according to the only measures of performance they are willing to deal with. From the team's perspective he is a nuisance that costs the company in wasted time and money, and makes our jobs more stressful. We try to stop him from getting his hands on anything too critical, but it's hard for us to control.

    The best approach can depend on where you stand.

  289. Not necessarily a dichotomy by cait56 · · Score: 5, Interesting

    "Quick & Dirty" is not necessarily the opposite of doing things properly.

    Faced with a choice between "quick and dirty" versus a long process that is not even ready to produce code until everything is known, there isn't a company in the world who won't go with quick and dirty.

    The long elaborate process doesn't really work anyway. The world changes too quickly.

    What you need is a methodology which emphasizes development in stages. XP (Extreme Programming) and Feature Driven Design (a variant of UML) are two examples.

    The important thing is to identify your fundamental interfaces, make sure those are right. Document them. And then feel free to code each and every component as "quick and dirty" as you ever imagined.

    If you did the first part right, you can replace components later, add new components, etc.

    If you didn't document your interfaces well... you've just delayed the failure of the project through absurd amounts of overtime. You have zero chance of longterm success.

    It isn't even necessary to always have a grand master plan. Well documented simple interfaces can frequently be extended in ways that weren't anticipated when they were first created. But you have to focus on the interfaces - that's what allows for evolution.

    The most obvious example of this is the Internet itself. The OSI stack was trying to do things "thoroughly", IP just wanted to be "flexible". Flexible can be developed cheaply, and unlike either pedanticly thorough methodologies or complete anarchy, has a chance to build itself up one useful piece at a time.

    1. Re:Not necessarily a dichotomy by cadfael · · Score: 3, Interesting

      I agree. Where I work, we often complain that we don't have time to follow a process, but we usually keep the products rolling out and the customer happy, because we built a continuing improvement cycle into the post shipping date. Rather than normal bug fixes, we work hard to find out what the early adopters need fixed, and what else they used. This might leave some buggy features uncorrected for a longer term, but if the buggy feature is unused while a new feature keeps the customer happy, no one complains.

      --
      -- The Hollow Man
      Non illegitimati carborundum
    2. Re:Not necessarily a dichotomy by dasmegabyte · · Score: 0, Troll

      XP is crap. Sorry, TRUE XP is crap. If you've heard of XP and think it's a good idea, do not make the mistake of reading anything about it. Just continue doing the part you heard about and thought was a good idea (like constant interaction with the customer or collaboration). Do not take the logical step and attempt to become a disciple of XP. You will either find yourself doing some of the stupidest things imaginable, or you will go insane. Visit softwarereality.com and you'll see what I mean.

      --
      Hey freaks: now you're ju
    3. Re:Not necessarily a dichotomy by cait56 · · Score: 2

      XP is better than no methodology. But I agree that it has flaws. The most important of which is that it does not recognize the need for architectural design. But if your company currently has no process at all, you aren't going to be able to get an architectural process recognized. Officially adopt XP, and try to do the architectural work "off the books". Even that is better than "quick and dirty".

    4. Re:Not necessarily a dichotomy by dubl-u · · Score: 1

      Do not take the logical step and attempt to become a disciple of XP. You will either find yourself doing some of the stupidest things imaginable, or you will go insane.

      Personally, I don't think anybody should be a disciple of anything.

      But XP works for me, and I know quite a number of other people who it works for. Just yesterday I was pulled in a meeting at one of my clients; the CEO wanted to tell their two biggest investors how well it was working for them, and she wanted me to explain it to them.

      She's excited because we're delivering solid software with very low bug counts. We give them new versions every week. They can see the software progressing. And they love the fact that they can completely change what's on the schedule for next week or next month without a peep from us.

      If you've heard of XP and think it's a good idea, do not make the mistake of reading anything about it.

      Sounds like you're looking for some disciples yourself!

    5. Re:Not necessarily a dichotomy by dubl-u · · Score: 1
      The most important of which is that it does not recognize the need for architectural design.

      Wrong!

      XP practitioners feel that architecture is so important that we don't let an hour go by without thinking of it. We change the design as we go to suit the current code base. It's called refactoring.

      Doing XP, the designs of my programs are much, much better than they used to be. And it's faster. Much faster.

      That's for three big reasons.
      • When you do all your architecture up front, there's a lot of head-scratching and puzzlement; you have to make a lot of guesses about the future, and those are scary and hard. If you wait until you're the problem comes to the fore, it's generally pretty easy; you have a lot hard data and actual experience, so the solutions come quickly.
      • Another is that if you only do your architecture in phases, during the time between phases, the factors that guided your architecture will evolve. By the time you reach the beginning of the next architecture phase, the current architecture is out of date. You then have to do a lot of work to get to the new architecture. That's like waiting until every dish in the kitchen is dirty before washing any; rather than scraping off dried gunk, it's easier if you just wash them as you go.
      • The third is that you don't have to over-generalize up front. With XP, you write only the code you need today. Tomorrow, if an object is insufficiently general for a new feature, you can add the generality then. Unless you are a 100% perfect guesser, reduced speculative work means reduced waste.
      It sounds crazy and takes a bit of practice, but it works stupendously well
    6. Re:Not necessarily a dichotomy by shoeless_barney · · Score: 1, Flamebait

      Bottom line, IT just has to get back to delivering solutions in a timely manner. You don't need 20,000,000 worth of tools to do it, or a team of 50. Just determination, backed by a little pride. Most of the time, business users ask IT for a "Drink of Water", we tend to want to build them "Water Treatment Plants". By the time the plant gets close, the business users died of thirst.

    7. Re:Not necessarily a dichotomy by dubl-u · · Score: 1

      "Quick & Dirty" is not necessarily the opposite of doing things properly.

      Agreed. A short-cycle iterative process is quick, but it need not be dirty. If you pick something disciplined, like XP, it will be very clean.

      If you can deliver new features every week without compromising on quality (and an XP team can indeed do that), then that may make your bosses just as happy. Especially if you do the ones with the highest business value first. As I mention elsewhere in this thread, it makes mine even happier than under classic methods.

    8. Re:Not necessarily a dichotomy by Gordo_1 · · Score: 1

      Faced with a choice between "quick and dirty" versus a long process that is not even ready to produce code until everything is known, there isn't a company in the world who won't go with quick and dirty. You obviously haven't heard of 3D Realms, developers of the (hotly?) anticipated game DukeNukem Forever. According to their FAQ: * 1.11 - When will DNF be released? DNF will be released "When It's Done." What this means is that 3D Realms will not release the game until they are sure it is the best first person shooter ever. There is no exact date, and any dates currently offered by anyone are purely speculation.

    9. Re:Not necessarily a dichotomy by theglassishalf · · Score: 1

      ...you mean, you release beta software, then send out patch after patch until you get it reasonably fixed ..just in time for the next version with all new bugs. Sounds like a large Redmond-based software company in the mid- to late- 90s.

      This is what is WRONG with software development today. If I had $15 for every lost hour of productivity due to software that was released with a "few buggy features"...well, I wouldn't be in debt anymore.

      I wish it wasn't so damn easy to distribute patches these days...companies might have to commit actual resources to testing, and maybe even, *gasp*, knock back the release date when software ISN'T FINISHED YET.

      -Daniel

    10. Re:Not necessarily a dichotomy by tius · · Score: 1

      And this is why a programmer will never be an engineer.

      Would you honestly take this approach with a project like a flight control system? Some things require a little more fore thought than the wank & code approach offers.

      To not have solid requirements and design process simply raises the real risk of catastrophic failures that will cost lives in such systems.

      The company I work for designed some of the networking equipment used by the FAA. It is required to be operational 99.999% of the time. Show me a single project like this that was accomplished by quick & dirty methods and didn't fail.

    11. Re:Not necessarily a dichotomy by kimota · · Score: 1

      I understand what you're getting at, but I've seen too many instances of other parties getting involved. Accounting hears about the request for a drink of water and demands they get the same, only at x gallons per minute for their needs; your boss, the magazine reader, reads about purified water and decides nothing less than that will do; the physical plant says you have to make the drink of water tie into the fifth iteration of their drink of water system, which has never actually successfully produced a drink of water; auditing says you have to comply to the ISO "drink of water" standards; and marketing wants to be able to say that your company offers the BEST drink of water of any company in the market in order to convince potential customers that your company's not going out of business anytime soon. Hence, the water treatment plant. In my experience, this is what happens to make a simple project (d?)evolve into, for lack of a better word, uncompletability.

      --Kimota!

      --
      Who moderates the meta-moderators?
    12. Re:Not necessarily a dichotomy by pmz · · Score: 1

      The world changes too quickly.

      No, it's just the requirements are being defined by girls choosing an outfit for the prom.

      I believe it is a fact that humans are roughly the same as they were 10, even 20, years ago! Why is it that we can't come up with a plan and stick with it?

      What you need is a methodology which emphasizes development in stages.

      My problem with branded methodologies, is that by the time the team is up to speed on the method, the software was due two weeks before. What there really needs to be is a cultural evolution, where people default to simply thinking before acting. A Professional Engineer that starts building a dog house in a manner like Homer Simpson would be laughed out of town. Why is it that no one is laughing at the software "engineers", who, essentially, are no better or smarter than our thick-skulled friend, Homer?

    13. Re:Not necessarily a dichotomy by russotto · · Score: 1

      The FAA air traffic control software is hardly a model for success. How many decades did it take? Most of us don't have the better part of 30 years to develop the software we're writing.

    14. Re:Not necessarily a dichotomy by pmz · · Score: 1

      XP is better than no methodology.

      A yugo that runs is better than walking to work in the rain...er, perhaps I need a better analogy.

      Anyway, my point is that XP seems to be more of an academic effort--an experiment--that gets press and starts a bandwagon rolling. Then people blindly attempt to jump on the bandwagon, but most miss and land in the mud.

      What is better than no process is the team recognizing that basic things need to be done to be successful. A version control system is a start, but someone on the team really needs to know how to use it. A non-verbal communication method is needed, even just a mailing list, so that every nifty idea isn't lost the next day. People need to respect that no one person is the "driver" of the project, unless there is a designated architect (who should have oodles of experience), and that the typical programmer egos need to be set aside. Simplicity should be favored over buzzword-completeness. Flash-in-the-pan IDEs and development tools should be avoided. A mix of developer ages is critical (two college grads, two mid-career, one or two seniors, etc.). Older developers should mentor younger ones. Etc.

      The fact that job descriptions are changing every three years helps nothing in developing mature teams. There was also a very insightful comment a few days ago that profit-interests for contracting also force hiring all-junior teams (I found this terribly discouraging). So, it seems that getting a good process rolling is truly an uphill battle. The software industry still has a very long way to go.

    15. Re:Not necessarily a dichotomy by drunk_as_in_beer · · Score: 1

      ...you mean, you release beta software, then send out patch after patch until you get it reasonably fixed ..just in time for the next version with all new bugs.

      Recent grad, eh? Welcome to the world of software development. This is what the customers want, this is what they get.

      --
      --Drunk as in Beer
    16. Re:Not necessarily a dichotomy by smagruder · · Score: 1

      This is why Open Source is taking off, and this is why more and more software development entities are going "non-profit." Pressure to "ship" with bugs is all but removed, and adaptability is preserved/enhanced. Bill Gates' software economy is morphing into a software ecosystem before our very eyes. And everyone will benefit.

      --
      Steve Magruder, Metro Foodist
    17. Re:Not necessarily a dichotomy by Hognoxious · · Score: 1
      "Quick & Dirty" is not necessarily the opposite of doing things properly.
      I would have less of problem with Quick & Dirty if people who did it knew that they were doing it. More than once, I've said something like "you'll tidy this up for the production version, right?" only to be met by wind-blown tumbleweed & sounds of distant bells.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    18. Re:Not necessarily a dichotomy by Hognoxious · · Score: 1

      Indded, not a dichotomy at all; observe PriceyWhorehouseCowboys, greEDyS, Toilet & Douche or any of their ilk. You'll find that, with the right methodologies and top notch personnel, it's possible to combine the best aspects of dirtyness - poor architecture, unreliablility, duplication - with a total absence of speed.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    19. Re:Not necessarily a dichotomy by Hognoxious · · Score: 1
      XP is crap.
      To be fair, though, it's a lot more reliable than Win95.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    20. Re:Not necessarily a dichotomy by cait56 · · Score: 1

      That's the chaotic way of doing it.

      The build-as-you-go approach releases a subset of the components with with a subset of the features. But that subset should still work.

    21. Re:Not necessarily a dichotomy by mfrank · · Score: 1

      Isn't that the same development process Daikatana used? :)

    22. Re:Not necessarily a dichotomy by nicware · · Score: 1

      Well, Feature Driven Design may be a variant of many things, but not a variant of UML. The Unified Modeling Language (UML) is a graphic language and not (even close) to a methodology.

      It is used by many methodolgies for drawing pictures of i.e. relationship between objects or interactions between objects, but the UML itself is a language - nothing more, nothing less.

  290. Its like the Speed of Light by TransmissionX · · Score: 1

    Development costs become infinite once you reach Correct and Proper.

    1) Quick and Dirty = the fastest way to get the program functioning to meet immediate expectations.

    2) Correct and Proper = the carefully planned, perfectly engineered, flexible, and robust solution that will meet today's requirements and accomodate all of tomorrow's unforeseen circumstances.

    Item (1) exists, item (2) does not.

    We can only approach Correct and Proper, but never actually achieve it. Each step closer to Correct and Proper requires qreater and greater development time.

    You just have to decide how much time and energy you can expend on a given problem when you shoot for it. Get as close to correct and proper as you can while staying in budget (time and cost). Just make sure everyone involved understands the limitations imposed by the budget.

    Its always a balance.

  291. Do what the customer wants, and nothing more... by Anonymous Coward · · Score: 0

    If the customer values getting the product early and sacraficing quality, and are willing to pay for it...LET THEM. They will pay for it in support later (assuming your contracts don't warrant your products will be free from defects). If the customer values quality over time and price, they will want you to take the time. The bottom line, the "Correct way" is what the customer is willing to pay for.

  292. Uh oh... by zulux · · Score: 1

    "Iraq has weapons of mass destruction."

    And from the looks of it, they usd them on themselves.

    --

    Moneyed corporations, non-working 'poor' and criminal prisoners are turning productive citizens into tax-slaves.

  293. that's my middle name by AssFace · · Score: 1

    "Quick n Dirty" is my middle name.

    I'm thinking of getting it tattooed over my back in gangsta script.

    west-syyyde

    --

    There are some odd things afoot now, in the Villa Straylight.
  294. i am reminded of a quote i read in dr.dobbs by 2057 · · Score: 1

    it was in a book review for a book about programming techniques.. "Make it work today, optimize it tommorrow" as soon as ur done with your project, sumbit the dirty solution and later on optimize it properly

    --
    For The Best Jazz/Hip-hop fusion > COlD DUCK
  295. best thing by pyrrho · · Score: 1

    is to follow your principles into the street where you will be sleeping from then on.

    --

    -pyrrho

  296. Not so binary answer by ratl · · Score: 1

    It takes a programmer to come up with a binary solution. ;-)

    The question between Q&D en Clean and Proper made me think how I judge the projects I get offered.
    This is in short the steps I usually take:
    1. Real life truth: There are no customers who actually want to foot the bill for doing everything clean and proper.
    2. Question: What would actually be required to do this job according to:
    a) Technical requirements
    b) Professional ethics (No keyboard errors in typing this)
    c) Maintainability (Commercial sideline: and who is going to profit from this?)
    d) When is the stuff I didn't do going to bite me in the ass.
    3. (Scary part) Communication: What are the customers expectations of the work delivered?
    4. Given a reasonable assumption of clean and proper (I usually use CMM level 3) which things can I scratch from my mental checklist with the lowest risk given points 1 to 3?
    5. (Scary part deux) negotiate the difference.
    6. Choose: you are either a carpenter or a guy who can nail two pieces of wood together (see 2d).

    Ratl.

  297. A convenient excuse by Anonymous Coward · · Score: 0

    Quick and dirty makes a very nice excuse. Just do a half-assed job, and if you ever get called up on it, just say a few magic words: "I needed to get it done fast because of the schedule". There will be no debate about whether your actions cost the company or not, no question as to whether there really was a deadline or any schedule pressure, and under no circumstances will any logic be applied.

    If you have some control over the amount of acceptable general "looseness" in code quality for a project, determine in advance a good position on the "quick 'n dirty" to "correct and proper" spectrum that meets your needs in terms of quality and timeliness. Then move a long way over towards the "correct and proper" end, to account for the fact that people are far more lazy and ignorant than you expect, and will use the "quick 'n dirty" excuse whenever they're given half a chance.

  298. Depends on your Environment by Godeke · · Score: 1

    If you have built good autoupdating tools (or are writing a web application) you can do quick and dirty with little impact on the user. If you *should* is is an endless argument (the XP crowd vs the Waterfall). My preference is for XP style, and so far it has allowed a company I'm part owner of to out maneuver a company that has (conservatively) 10,000 times the cash and resources that we have. They keep asking "how do you program so much so quickly". A handfull of *skilled* (don't try XP with newbies) designer/programmers will outperform a room full of lackies every time.

    Leave you unskilled programmers to the task of "refining" code, and your talent to "building out" the code. The unskilled programmers slowly learn from the techniques they are working with, and join your design team over time. Thus quick and dirty evolves into "correct" code.

    --
    Sig under construction since 1998.
  299. Pay $1 now instead of $10 later by tuxlove · · Score: 1

    I almost *always* opt to do it right the first time, regardless of the consequences. If you don't, nobody is going to give you the time to redo it correctly. And they're going to ream you for not doing it right the first time even though they didn't want to give you the time and resources to do it in the first place. PHBs are, by definition, incapable of understanding the simple mathematics of the situation: pay a little now, or pay a lot more later. I do my best to quote "quick and dirty" development times that are sufficient for me to actually do it right, and I usually get away with it. Those instances where I can't get the time, I either purposefully underquote the time estimate, knowing full well the project's going to slip, or work overtime to do it right in "Q&D time". I don't mind being underhanded about it. I'd rather do the job right or not at all than do it crappy, and often underhanded tactics are the only way to deal with PHBs.

  300. Quick & Dirty Product: by sapgau · · Score: 1

    One example of a Quick and dirty commercial product is Crystal Reports (I'm currently on v8.5).

    It has gone through several version numbers but it still behaves like the version I first used 4 years ago.

    This is evident on error handling. One example is when connecting to an Oracle db and letting the connection to timeout(i.e leaving Crystal open all night). Crystal doesn't catch this and simply explodes with an exception window. You wonder how difficult would it be to check for a 'ORA' type error code before trying to render a report.

    Other cludges include the extensive use of formula fields for handling special conditions in the result set.

  301. moron MiSinterpretations of 'organization' by Anonymous Coward · · Score: 0

    for many, the only motive for anything they do is monIE, so the 'organization' of things, is around that, period.

    as soon as you remove the mammon motive, things clear up considerabully.

    there's a 'cost' to everything. be it time/monIE/energy, etc...

    lookout bullow, the daze of the Godless phonIE payper liesense stock markup FraUDs/georgewellian corepirate nazis (see also: SourceForgerIE(tm)), is WANing into coolapps.

    consult with/trust yOUR creator. vote with yOUR wallet. that's the spirit.

    the ?pr?/marketeering budget for promoting good/the right thing, is $0.00. it's ALL volunteer work. however, the reward/'payoff' is immesurable in yOUR terms of measure.

    as for the continuing exploding infant problem,..., you know something's going to happen there.

    as for va lairIE's excessive use of his pateNTdead PostBlock(tm) devise, what a fauxking whoredoggIE heis.

  302. Re:Passion is the key - if you're passionate, rele by Anonymous Coward · · Score: 0

    How the heck is this offtopic? Just coz it's not answering in one easily understood sentence doesn't mean it's not answering.

  303. dumb question by mikewolf · · Score: 1

    this is so stupid.

    by definition, Correct & Proper is always the way to go.

    Thats what "Correct & Proper" means.

    Quick & Dirty == HACK

    are you just trying to get a rise out of people, or what??

    grow a brain.

    1. Re:dumb question by shaldannon · · Score: 1

      Not a dumb question at all. Almost always correct and proper takes a lot more time than quick and dirty. And invariably, the amount of time management set aside is what you need for quick and dirty, not correct and proper; unless of course you live in some sort of software engineering utopia.

      How about giving the man a little more credit for a legitimate question and dropping the annoyed sarcasm?

      --


      What is your Slash Rating?
  304. A unique solution by Anonymous Coward · · Score: 0

    When you are required to do a quick and dirty implementation do the following:

    a) Embed a show stopper bug that is very hard to find.

    b) Make a big deal about how difficult the bug is to find and how hard you are working to solve it.

    c) Keep telling everyone that the bug will be fixed very soon. Keep their hopes up.

    d) When the CEO comes by to find out if he can tell the customer that the product will be ready on time - you tell him that you have found a hardware/design/requirement bug and you have implemented a "magical" workaround that will not only fix the product but make it better.

    e) Keep reminding everyone what a great programmer you are and how little credit you get for solving the really tough problems. Make a special effort to remind your bosses and the CEO of this when it get close to your review date.

    If you master these simple techniques you will soon be promoted to manager... Where a whole other set of "Techniques for Success" will need to be learned.

  305. Processes is for monkeys by Anonymous Coward · · Score: 0

    In my 14+ years in the software industry, what I've found out is that you can have a good balance of Quick and Dirty vs Too much Process.

    Typically managers want to make monkeys out of you... and that drains the passion out of development. What managers want is to give a bunch of UML and say go out and do this, and dont think! This is the begining of creating "replaceble parts" out of engineers. I despise those environments and thrive in environments where I dont get pigon holed into a corner to do a tiny little task without much thinking. The heavily process based places got very little out of me, and the ones that gave me the freedom reaped lot more out of me.

  306. Re:Passion is the key - if you're passionate, rele by Carnivorous+Carrot · · Score: 1

    > had fielded no fewer than 5 complaints from your peers

    1. "He keeps looking at me."
    2. Surfing too much
    3. Trying to hack past surfing porn filter
    4. "He keeps looking at my feet."
    5. I keep having to fix his bugs.

    --
    "Has [being a kidnapped teenage girl, raped repeatedly for months] changed you?" - Katie Couric to Elizabeth Smart
  307. Well... by sharkey · · Score: 1

    I know MS-DOS started out as QDOS. Who made CPOS?

    --

    --
    "Outlook not so good." That magic 8-ball knows everything! I'll ask about Exchange Server next.
  308. depends on the problem by Anonymous Coward · · Score: 0

    If you are building a mission critical system that will kill people or create irreversible harm to a party if the system fails you had better do the well documented strict process control. If it does fail you will get sued or have a massive recall on your hands. Have long email records and always let management make the hard choices. But be upfront with management. Don't be a famous engineer. ( avoid space shuttle o rings or foam impacts )

    On the other hand, web development is not mission critical in most cases. And it really depends possibly how critical the information and security etc.. ) I'd say you need a minimal process to operate out of. Initially it will slow people down ( since nearly all web developers are hackers and will complain about any process ) but once they get use to it things can move quickly. Particulary, a team effort because everyone has to be on the same page. That is, source control, installation, and some minor QA. Do it right from the beginning. Have someone other than the programmer check the core functionality. Rough edges that are not core features can be chisseled out later. I'd also say if its not mission critical you probably don't need to sign a paper at every step. But atleast have the minimal process.

    Also, just spending a little time in the beginning to hammer out a design will save you tons of time and can possibly prevent huge rewrites later on.

    Typically, I'll see companies play it real loose in the beginning. They will mess up. The customers will be pissed and heads will roll. Then they goto the complete extreme with too much process. Then they might loosen up a little and we'll be in the middle of the extremes. But if you start out in the middle from the very beginning you can avoid all this.

    Also, having no process is a real pain if a company grows. Because the newbies will not be able to integrate well with the product and there probably is no source control or installer.

    I'd say the folks at Netscape started the release the alpha and patch it later culture.

    Just my 2 cents...

  309. Quick(er) and Proper by 0xDEADC0DE · · Score: 1

    One thing that always kept me from taking time to do things the right way is that it takes a long time to figure out where to start. Doing it right actually does not take a super long time when you know exactly what you need to do.

    Doing things the right way myself is one thing. But getting other people on the team to do it the right way take can a LOT of explaining, and we end up arguing little points that are a total waste of time.

    This project on freshmeat a few days back. It's HTML templates for test plans, use cases, project risks, etc. That could help do things the right way a lot quicker.

  310. There's never time to do it _right_, by BattyMan · · Score: 1

    but _always_ time to do it over.

    --
    Exceeding the recommended torque is not recommended.
  311. As someone who regularly faces this... by Anonymous Coward · · Score: 0

    I work for a very large company who shall go unnamed. We have process for everything, and typically, when it comes to my department, the only thing it succeeds in is slowing up the works. Technically I'm supposed to have as many as a dozen different people sign off on changes to a very complex business-rule core that I maintain, along with one other guy. It's considered one of the black arts of the company, and as such there are only 4, perhaps 5 people who understand how the darn thing actually gets its work done. However, it's the basis for almost every significant device we use. We're not a software house, we're in another industry entirely, but have a large IT shop to support it. The problem is that everybody signing off on my stuff doesn't have a clue how it works or that it works correctly. Half the time I have to invent new business rules for cases that the marketing and even operating people never considered when dreaming up new services.

    We have another piece of the IT shop that is chronically behind. They're never caught up, and they always have to put stuff off because it missed a "critical" (as defined by the corporate process) meeting or review, or they don't think they have the time to do it. They whine a lot, their developers are mostly mindless droids that write the code their spec tells them to, any changes throw them into a complete panic, even if it doesn't affect them, etc.

    As with all things, your approach should depend on your situation. I tend to play fast and loose with the process when I know the business really needs something done, but nobody's got the balls to put it on their corporate timelines and risk looking bad for the sake of internal politics (this is on a timescale of 18 months, yes months, to market). Often this is to compensate for the aforementioned group that can't get their asses in gear and get stuff done. I've put in many 18 hour days with my coworkers to pull of amazing stuff that nobody will ever know about - just because we slipped in the solution unannounced and everything works fine in the end. If we hadn't, opportunities would have been missed, the ninnies over on the other side would have fallen further behind, etc.

    On the other hand, stupid projects that I want to see die horribly because I think they're a bad idea? Run 'em through the full process, making sure to follow each and every exacting step. Usually they die slow and painful deaths.

  312. Profit vs. Process by FooGoo · · Score: 1

    It's simple spend the money on the process now or spend it later. Companies have processes because they reduce the risks. The risk is if you get hit by a bus tommorrow all your projects may die with you. Because you did not follow the standard process your replacement may take twice as long getting up to speed where you left off. You are paid to follow the process and devliver a product.

    Now if the process is too inflexable for your business maybe it's time to revise the process or implement tools to make the process more efficient.

    Process and policies may be a pain in the ass or seem like a waste of time/money but they do serve a purpose. They let everyone know what the rules of the game are.

    When I need to step outside of a process I tell my boss that this product/project will be late because of a breakdown in the process and I get them to waive the requirement...never hurts to follow up with email.

    Marketeers like to think of themselves as visionaries shaping a new world. So while your half way through the current project they are dreaming up the next great thing. They may need to be dragged back to reality and the process should help you do that. A good process should keep everyones eye on the ball...the same ball.

    My random thoughts on the subject.

    --
    People who bite the hand that feeds them usually lick the boot that kicks them
  313. I love this. by hackwrench · · Score: 1

    It seems to maintain that there is only one type of freedom. Anyone who has no medical care wants free medical care even if it's 1954 level medicine. Money controls what people do. If you don't have money then you can't do certain things. I go, if only we controlled people my way people would have different freedoms. Now who wants to be free to go to an amusement park with 1954 level rides?

  314. We always do both by Theovon · · Score: 1

    Where I work, we do a Q&D solution for trade shows, etc., but when it inevitably doesn't do everything marketing and/or the customers want, we use that time to do it properly. Eventually, we do end up with some good designs. I'm also fortunate enough to have an employer who believes me when I tell them "this is how much time I need", although that often pisses them off because it's always much longer than they'd assumed before they asked me.

  315. Always plan to refactor by Cranx · · Score: 1

    No matter how quick and dirty it is, you can always keep in mind where your code should separate so you can refactor them piecemeal later. The long, slow development process should allow for refactoring anyway, so Q&D should be the normal programming method while you are prototyping, and then you refactor your code into nice, clean, re-visitable, re-usable modules. It's the best of both worlds. Just don't refactor more than you need to; no code ever really lives forever. Make it clean enough to acheive your goals but don't go overboard.

  316. Nitpick... by Cyno01 · · Score: 1

    Technically Mallrats is a prequil to Clerks, Julie Dwyer died in the pool the night before Mallrats takes place and Randal and Dante went to her funeral the day after that. There's also a timeline of events in the booklet in the Chasign Amy DVD.

    --
    "Sic Semper Tyrannosaurus Rex."
    1. Re:Nitpick... by bigdavex · · Score: 1

      Technically Mallrats is a prequil to Clerks, Julie Dwyer died in the pool the night before Mallrats takes place and Randal and Dante went to her funeral the day after that. There's also a timeline of events in the booklet in the Chasign Amy DVD.

      I don't think that implies one should watch them in chronological order. Watch Clerks first, because it's the best film, IMHO.


      Would you recommend watching the Star Wars movies starting with episode 1?

      --
      -Dave
    2. Re:Nitpick... by Phroggy · · Score: 1

      Would you recommend watching the Star Wars movies starting with episode 1?

      After Episode III comes out, I might. I don't know.

      --
      $x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
      $x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
  317. Go for the top! by G4from128k · · Score: 1

    1) do it quick and dirty to save the corporate cahones 2) get promoted before all the inelegant bugs surface 3) let the next poor schmoo explain to the PHB (now you) why the miracle system is no longer working

    --
    Two wrongs don't make a right, but three lefts do.
  318. Cleanliness and Brittleness by crucini · · Score: 1
    In the product world, it is nearly a gaurantee that compition will implement a feature that marketing (or engineering) will figure is a "Must Have", while your product is in alpha Q/A.

    But there's no guarrantee that the meticulously developed code will be more agile at responding to these unforseen inputs than the dirty code. Remember, the meticulous code was designed around a specific requirement, and now the requirement changed. So the question is, when you decomposed the initial problem were you smart and lucky enough to properly identify the fault lines and build in the right kind of flexibility?
    1. Re:Cleanliness and Brittleness by Jboy_24 · · Score: 1

      But there's no guarrantee that the meticulously developed code will be more agile at responding to these unforseen inputs than the dirty code. Remember, the meticulous code was designed around a specific requirement, and now the requirement changed.

      True, there is no Gaurantee, but there is a much higher probablility that clean code is more agile to requirements changing.

      An example, one of the earliest temptations towards Q&D in developing web based applications is to abandon MVC. Put the database calls in the view and display the results of the calls. For small script programs (simple message boards, feedback pages) this is adiquate. Each row in the table matches perfectly to the data on the page.

      But, say your new requirement is a new database? The client INSISTS on Oracle, or an integration to another database program? Basically the time you saved by not abstracting your model in a class and passing that to the view is lost by having to redo all your view pages. As well, the maintance aspects of that is also a concern, in that instead of creating a nice 'switch' in the back end to two different DAOs both giving the same bean, you have to maintain two sets of views. OR you put the database switch logic into the view (Ewww).

      There are many cases like that, where slowing down, doing things with a methodology instead of jumping in feet first is a huge advantage to change requests. In J2EE and MVC (for web applications), change management were huge considerations in the development of the framework.

  319. Plan for the long run, make stuff work now by Offwhite98 · · Score: 1

    My approach has been to gradually assemble a reliable work environment with mature infrastructure over time but to build the current software with what is the best I can do at the time. For example, I am current creating Enterprise applications for a corporation and we are slowly migrating to Java and away from Perl and VB. And while nobody on the team has a great deal of experience with Java, several of us are learning rapidly and making decisions which will help us write more robust software in the near future. The first few applications ported over to Java were not the cleanest, but we learned from our mistakes and kept building.

    And that should be your biggest lesson in IT or any field. Learn from your mistakes and develop solutions that help you do better in the future.

    Another point I would make is to start with a good base of technology. I am finding that Java is a great base lately in large part to the support from the Apache Foundation and the associated Jakarta, Ant and XML projects. Coming from a Perl background I can see a big difference in the available Java packages that are extremely easy to integrate for a complete solution versus the Perl archive of modules which are sometimes incomplete or poorly tested.

    My overriding rule for IT development is use what works, and actively avoid anything that is not proven.

    --
    Brennan Stehling - http://brennan.offwhite.net/blog/
  320. Pick your battles by keyslammer · · Score: 2, Interesting

    I've been doing software for a long time now (13 years, professionally) and I've seen some of my cleanest, best documented designs go almost unused, and some of my quickest, dirtiest hacks grow into the cornerstones of the system.

    Software development is about dealing with change. Requirements change. Technologies change. Business plans change. Development teams change. Sometimes when we try to do the right thing, plan everything out, document it, create clean interfaces instead of holes in the wall... what we're really doing is betting against change, and that's always a longshot.

    The best way to design, IMHO, is to start with a few good quick hacks that solve the bulk of your problems. Then put it into production and let the feedback tell you what you need to do. What do the users like? Where is the redundant functionality that merits adding infrastructure? What parts of the system are most problematic? We never really understand what we develop until we've had to build on it for two or three generations.

    So my advice is leave your hack in place. If you have to change it a month from now, and then a month after that, that's a good sign that it's something that's worth doing right. If not, then your hack was the right thing to do, after all.

    If you want to insulate yourself against getting slammed in the face by that hack, the best investment of your time is to write some good test suites. This way, if you add something that breaks your hack, you know about it quickly.

    Just my little contribution to the background noise :-)

  321. Re:Passion is the key - if you're passionate, rele by Anonymous Coward · · Score: 0
    My take is that most managers would rather have developers that at least pretend to do what they're told, no more, no less.

    We probably have the same employer. My employer has chosen a very unique end-run around customer service: automation to reduce headcount. These are the rocket scientists responsible for making you talk to a computer that might (or might not) create a trouble ticket that might (or might not) get worked on by a human being.

    When a member of the top-tier of management (aka CTO) decides that this is The Right Thing(tm) and none of his subordinates have the balls to point out that he's full of shit...the shitty environment trickles down. It becomes a war between the coders (who want to justify their jobs) against the users (who actually do the work utilizing the tools provided by the coders).

    I don't foresee an end to this cyclic problem until people wake up from their apathy and start providing feedback to the companies that piss them off.
  322. The trick is... by AchilleTalon · · Score: 1
    to bill the customer for the pain.

    Very odd thing, but down to earth one. This how almost consulting firms works. They need to show the lowest price to win the contract. So, the do it Q&D and almost working properly. Then, as bugs and problems arise, the customer has very few choices than paying them again to fix it and do it right.

    And if the customer is not happy, just let him know he is the very first person responsible for all this fiasco (for him).

    This is very frustrating for those of us who like to do a good job and do things right. But be realistic, nobody is willing to pay for something he doesn't see an immediate advantage for. So, even customers want Q&D jobs rather than right and clean ones if it doesn't fit the bill (lowest price).

    --
    Achille Talon
    Hop!
  323. Depends on what "quick and dirty" means... by Call+Me+Black+Cloud · · Score: 1


    If it means borrowing some SCO code, perhaps you should do it nice and proper.

  324. "Q&D" is an important tool by dcavanaugh · · Score: 3, Informative

    Not to be overused, of course, but consider the advantages:

    1. You have the ability to launch a project in the absence of a complete specification. If your customer is truly unable to describe what they want (until they see a Q&D system that gets part of the job done), then what is to be gained by dragging out the specifications process until any potential benefits have been lost? At the end of the day, the PHBs get the impression that "Our IT people couldn't get it done."

    2: You have the built-in escape from a failed project. "This is just a prototype system that will help us build the specifications for a REAL system later... Let's deploy this little toy and learn from the experience." Of course, there is a very real chance that the "prototype" goes into real production. But if the project sucks, then it's super-easy to activate spin-control and launch the formal design of the "real" project. What is the escape route when you are $150K into the design/planning process and you suddenly realize that the goals are unattainable?

    3. Consider the world of rapidly changing requirements, where the target moves faster than the geeks can write code. When does the traditional process catch up with the latest requirements? NEVER

    4. Although documentation suffers, this is not always a bad thing. It certainly creates a dependency on the people who delivered the project, especially after a few of these little "science projects" are performing mission-critical tasks. Ask some of the currently unemployed geeks how their formal project plans and documentation made their employers feel safe in cutting the IT dept.

    5. We have competitive issues arising from offshore outsourcers, and H1B labor. If there is one method that these people are in no position to emulate, it is the "Q&D, design while build" technique. The time zone and language barriers are both show-stoppers for Q&D projects.

    Maybe the PHBs would stop looking to squeeze every IT dollar if we simply delivered useful projects a bit cheaper and alot quicker, even if the quality is not precisely as we might like. Hell, it sure works for Microsoft!

    The Q&D method is inappropriate for large projects or inexperienced staff. There are skills for "guerilla tactics" that not all developers or managers have. Not every problem should be handled with Q&D methods, but there is a time and place for this kind of thing.

    Which is the more satisfying job: leading a small group of IT commandos and attacking relatively small targets, or leading an army of morons in a war of attrition, armed with a 3-inch thick plan that is riddled with inconsistencies?

    Years ago, I remember insisting on a formal approach and getting mostly criticism in return. Now I am flexible. Experience has shown me that I have to put aside professional pride when the immediate interests of my customer are better served by a band-aid approach. It's all very simple: If we take care of our customers, then we create positive karma, and some of that comes back to us. If we miss an opportunity to take care of a customer, then the competition takes care of them for us. Nobody was ever promoted because they held back a project until the specs and docs were complete. The risk of a missed opportunity is sky-high, whereas the risk of a half-assed project is often manageable, especially if the cost is kept low.

  325. Perhaps it's time to change your process? by putaro · · Score: 1

    If you can't follow your process there's something wrong with it. Seriously - it doesn't fit your needs. You should look around for a process that will work for you and give you decent results in the time frames you have to work in. The Extreme Programming methodologies come to mind. I've always found that I can get a Q&D prototype up and running quickly. If I've done my architecture correctly up front and have my APIs set up right I can go back later and upgrade modules on a piece-by-piece basis without having to chuck EVERYTHING. Once you have something working it's a lot easier to get junior engineers to make improvements.

  326. 15 minute increments by Anonymous Coward · · Score: 0

    I work for a client who calculates all of our time in 15 minute increments, and will spend 15 minutes of his own time to cut down 1/2 an hour of ours. Everything done for him is Q&D and there is nothing we can do or say to convince him otherwise.

    We've explained how the lack of documentation, decently verified backups, backup systems, etc...will eventually shut down his entire multi-million dollar online business.

    Nothing is more soul-crushing for a geek.

  327. My criteria by Y2K+is+bogus · · Score: 1

    Here's my criteria regarding development:

    Elegance
    Amount of work to complete
    Simplicity
    Redundancy
    Extensibility

    I find my self working on projects that I have no expectation of future maintenance. Now, for some that would mean that they can do a simple hack and not have to worry about it. For me, it's exactly the opposite. If I'm not going to be maintaining the code in the future, I try to make it follow the 5 criteria above. The lesser amount of questions that someone has to track me down to ask, the better.

    With that in mind, here's my explanation of my criteria:

    Elegance. This is a subjective criteria. This is a measure of how much the design or code bristles against me. I can look at something and decide if it's elegant, or not. It really has a lot to do with how generic the code is to the application. I prefer designs that are reusable and not highly specialized.

    Lazy factor. This has 2 sides, how lazy I am, or how much MORE work it will cause for me in the future. Often these Q&D solutions merely mean more work to make it right in the future. Rather than take the Q&D route, I like to put the effort in up front and be done with it. I am confronted regularly by this.

    Simplicity. This really plays towards the work and elegance. The simpler a design, often the more powerful and generic it is. You're not done until there is nothing left to take away before it doesn't work. Simple is easy to understand and maintain. It is also easier to reuse.

    Redundancy. How much of the work are you repeating from project to project? Wouldn't it be better if you could design a more generic, simpler system that can be reused for multiple purposes? If you and another developer are duplicating effort, that's a waste. This also plays into code quality quite heavily. If you end up duplicating efforts, you often end up writing the code differently enough that it doesn't easily get fixed, or it introduces a bug. Building generic underpinnings that have cosmetic changes are my preferred method of work.

    Extensibility. This is the core of generifying. Code shouldn't be tied to one function or purpose. Look at everything as an opportunity to make it as generic as a library. This way, when management asks for new products, you can reuse the core of another project and simply change the cosmetic features.

    All of these points play into Elegance. If you can integrate all of these into a project, you are often rewarded with elegance. Others will recognize it and be more willing to trust your judgement and code. It's important that the sysadmins, who will be maintaining the running of your code, trust you and have confidence in you.

  328. QD vs. CP = Healthy Tension by gathas · · Score: 1

    Neither QD or CP are good solutions. Somewhere in the middle is where Engineering and Marketing negotiate to get something out the door that works and is reasonably sustainable. This is where good management comes in.

    If Engineers ran the business, product would never ever ship. Correct and Proper plans make the assumption that we can plan for the future 100% accurately. I don't know how many projects I've been on where some zealot engineer claims that we have to redesign everything because it sucks, goes and redesigns and the same guys comes back 6 months later saying the same thing.

    If Marketers get the upper hand they end up promising products that god himself could not build.

  329. Spend more time. by krilli · · Score: 1

    You must invest more man-hours. Vertically, not horizontally. Add more programmers and manage them well. Then you for example code the quick-n-dirty stuff yourself and your underlings clean up after you as you move on.

    --
    Jag pratar lite svenska.
  330. Uncanny... by DeepEyes78 · · Score: 1

    I worked in a software development group at a rather large corporation using .NET where the development mantra was "Ship It ASAP!" for the last two years. Such a mindset didn't allow for any true functional specs to be written, features were added/removed during development on an ad-hoc basis (then the UI spec would be updated to reflect this). I complained about the lack of functional specs in the beginning of May and was laid-off at the end of June. I was told it was for "Economic Reasons" but I knew otherwise. In hindsight, I probably should've just kept my mouth shut (I'm young and still learning) because from what I understand that group got the funding it did simply because it delivered despite the lack of process. Other groups seemed to be stuck in a rut simply because they were trying so hard to get things done the "right" way that they haven't delievered anything in a timely manner.

    I just figured that I'd share my economically painful lesson. Cheers. :0)

  331. "Perfect is the mortal enemy of Good Enough." by kriegsman · · Score: 1

    I once told our development team that I was going to ease up a little bit. The software no longer had to be Perfect; I was now willing to accept Excellent instead.

    Never underestimate the power of Good Enough.

    -Mark

  332. MOD PARENT UP by Anonymous Coward · · Score: 0

    A good post...

  333. You can have Cheap, Fast, and Good... by Anonymous Coward · · Score: 0

    but you may only have two for any given project.

    You can have Cheap labor and a Fast timeline, but quality will not be Good.

    You can have a Fast timeline and Good quality, but that is not Cheap.

    You can have Good quality and Cheap labor, but that is not Fast.

  334. The true answer... by stephens_domain · · Score: 1

    The true answer lies in the question:
    "Do I have to maintain this project?"

    --

    ..
  335. The sad thing by deadgoon42 · · Score: 1

    The sad part is that most corporations are looking for the correct solution, but they want it at the quick and dirty pace. Where I work, everything goes fine as long as you do it quick and dirty and don't mention it to anyone. But as soon as it is found out you are doing it the quick and dirty way, management steps in and comes down hard. They don't really care that you were doing it quick and dirty, they are annoyed because someone found out about it. So after you get berated for doing things the quick and dirty way, you have to do things the correct way, but then you get berated again for not being as productive as before. Explainations fall on deaf ears or are called excuses. So it's back to the ole quick and dirty and the cycle starts again.

    --

    Smeghead every day of the week.
  336. /. Format Failure by Anonymous Coward · · Score: 0

    softwarereality.com

    Please code in referenced sites as hot links properly. During these coding threads, some of us are so excited that we're reading with one hand, so it becomes extremely difficult to manually cut and paste the link into Mozilla.

    1. Re:/. Format Failure by spectral · · Score: 1

      (mozilla) firebird has an extension available to right click and deal with non-linked website addresses. I don't have it installed, and the extensions page on texturizer is fucked up cuz some idiot put his name in the javascript and didn't escape the apostrophe in it..

    2. Re:/. Format Failure by Anonymous Coward · · Score: 0

      it becomes extremely difficult to manually cut and paste the link into Mozilla.

      Are you trying to be funny, or what?

      If not, you do know that you can just highlight the code, then middle-click in the mozilla window to go there, right? (At least in Linux - users of other OS's probably have a few more steps, like "edit -> copy, or CTRL-C, or some such nonsense.)

    3. Re:/. Format Failure by Anonymous Coward · · Score: 0

      What the fuck is a "hotlink"? A "hotlink"? I bet you refer to Slashdot user names as "Screen Names" as well, don't you? You fucking looser.

    4. Re:/. Format Failure by Anonymous Coward · · Score: 0

      Looser? Looser than what? I think you meant loser. Loser.

    5. Re:/. Format Failure by jtev · · Score: 1

      Um, hotlink is what the HTML spec calls them to dude. Wake up and smell the espresso.

      --
      That which is done from love exists beyond good and evil
  337. They are not necessarily mutually exclusive ... by Anonymous Coward · · Score: 0

    This may have already been suggested, but a good approach in these situations, assuming the resources are available, is to do it both ways in parallel - one team does quick-n-dirty and the other does prim-n-proper. This way, you're quick to market but also have a head start on release 2 which replaces release 1 when ready.

  338. This is a judgement call by Orion+Blastar · · Score: 1

    My past two jobs required quick and dirty programming. Start coding on day one, or get written up. Any analysis and design is rejected and programs got written by the seat of our pants. They wanted complete life cycle in days or weeks, not months, and that included QA testing.

    I consider this "Fast Food" programming, fast development but harmful and full of flaws.

    PHBs and managers only seem to watch the time it takes to write a program and not the quality of the program. Anyone who takes the time to do any analysis and design and write flow charts and object charts get terminated or put on probation until they can do things the way we were not taught in college.

    I was a "Legacy App Developer" two jobs ago in a law firm that let 30 IT people go in four years out of an IT staff of 35. Being in the "legacy" group, meant that I got the programs that ex-coworkers had worked on and that were incomplete, undocumented, missing flowcharts and other design documentation, and full of more bugs than an Ant Farm or a Microsoft Beta Operating System. I had to work with spaghetti code, it was VB so it contained a lot of GOTOs, they didn't follow our naming convention and used i, x, y, z, s, c, and other short names which I had to rename to make more sense. All in all, working with this code to put it up to standards took longer than I thought. But I made it more reliable, faster, and documented my work as I went on looking at it. As a result, the managers took a look at it and saw that thanks to my changes now anyone could work on the code, and since programmers are a dime a dozen now they could fire me and then hire someone for a fraction of my cost to work on them. Last I checked they fired my replacement and are looking to hire someone else. He took over a year trying to convert all the ASP and VB apps to Dotnet and couldn't.

    But anyway if we don't do quick and dirty programming, they will outsource it to people in other countries either by H1B Visa workers, or out of country sweatshops.

    --
    Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
  339. Your job by Fnkmaster · · Score: 1
    Is to explain the tradeoffs to your manager and make a decisions jointly. The one mystifying thing you wrote is that you did a quick hack previously, and then got in trouble for it, even though it helped bring in contracts. This probably means communication about the project and its nature was poor. Did the marketing people understand they were showing demoware 2003, and not something finished and working? Did your manager have buy in about showing such a thing off to get a contract?


    Sometimes quick and dirty is right for the company, and sometimes well engineered is right for the company. On the one hand, products that miss the market are likely to result in a company that goes out of business. On the other, products that get to market but are so shitty people can't use them won't win market share, unless they are the only game in town, or there is some sort of major contractual lock-in. Ultimately, quality is an engineering tradeoff factor, along with development time, and all those other tadeoff axes (gosh, I forgot my project management 101 stuff - go read "Rapid Development" for a decent primer on this - it's a great book, you won't regret it even if it is from MS press). The key point is that these are decisions that will affect the business and product engineering side of the company, so don't make them unilaterally and then get shocked when people feel fucked over.

  340. gray area by embedded_C · · Score: 1
    As a developer, you often don't have the luxury of making those decisions. The software engineer in me says that it's best to do it the proper way, but often it's just not feasible.

    I'm on a contract now where we are documenting the design after the product has been coded and tested successfully, so it CAN be done after the fact. In fact, I would say that it NEEDS to be done... whether or not it is now or later is debatable. But in the interest of the complete lifecycle of the software, you've got to follow processes and procedures.

    I'm assuming that you are not a CMMI certified outfit, because otherwise you wouldn't even be asking the question... the answer would already be decided: Do it the Right Way.

    I guess what I'm saying is that if management wants it quick and dirty, then give it to them, but make sure you impress on them the fact that you need to budget time and money to document the software after your delivery.

  341. Engineering Rule #1 by ChrisCampbell47 · · Score: 3, Insightful
    • Fast
    • Good
    • Cheap
    Pick two.

    Keep it in mind, and you'll be amazed at how it applies to everything.

    1. Re:Engineering Rule #1 by Channing · · Score: 1
      or in XP...
      • resource (costs/people/tools)
      • quality
      • time
      • scope
      and other agile methods add risk. Basically pick N-1 of N variables.

      See also Quality is free.

  342. What planet are you from? by Anonymous Coward · · Score: 0

    Well I don't know what things are like where you're from, but here in the Real World "Correct and Proper" isn't even in the dictionary.

  343. Management and IT don't mix by Anonymous Coward · · Score: 0

    When will mamagement/marketing or any other departments learn to estimate appropriate IT deadlines. To many business decisions are made not knowing their repurcussions on the front line of IT timelines. IT workers get stressed trying to meet ridiculous deadlines, and quality work is never achieved, nor is it a requisite from the managers. It's time to treat IT workers as normal people and give them reasonable deadlines!

  344. Re:I think for the few truly excellent programmers by jc42 · · Score: 1

    "Quick 'n Dirty" == "Correct and Proper"

    Funny, yeah, but also a useful approach, if done right.

    When I'm faced with "Get it running fast", I try to make sure that I toss in terms like "prototype" and "proof of concept" at every opportunity. Especially when dealing with PHBs or customers.

    Then, when they complain about bugs or missing features, I say "Yeah, and here's a list of some others I know about." And I add that I'll be happy to work on improving the prototype into a useful tool.

    It helps a lot if you know how to do "prototype" programming. Write the prototype with the idea constantly in mind that you're writing hooks on which to hang all the things that people will want in the future. Plan on extending it. Call small functions that don't seem to do much, but you've realized that a useful program will want a lot of extending there, so you encapsulate it now. And so on.

    If you keep hitting them with the idea that you consider the quick-and-dirty version to be just a prototype, they're a lot more likely to be happy with it despite its limitations, and to want to pay you to add all the things that you didn't have time for during the prototype phase.

    You can also preempt a lot of criticism by constantly complaining about how it should be done now, but they keep bringing up new things that they want it to do. And when a new feature means you have to radically rewrite something you did earlier, complain about it, but let them know that if they really want it, you're willing to spend the time to make it work right.

    --
    Those who do study history are doomed to stand helplessly by while everyone else repeats it.
  345. Rare realistic comments on this thread by Anonymous Coward · · Score: 0

    wow :)

  346. Develop good code writing habits by coldtone · · Score: 1
    Quick and dirty never really hurt me. Lazy and Sloppy has. You can write quick code well. For example:
    public void doIt(MainData data)
    {
    Data bubba = data.getBubba();
    Data bubba2 = data.getBubba2();
    temp_3 = bubba.correct(bubba2);
    if(temp_3 = -32)
    System.out.println("Error not compatible");
    }
    could be written as
    public void checkClientCompatibility(Client client, Company company)
    {
    if(!company.isCompatible(client))
    System.out.println("Error not compatible");
    }
    My point is that it doesn't take more time to write well written code, then sloppy code. If you can read it and it makes sense it is easier to fix later. If its just sloppy then you wont be able to do much with it.
  347. Not flamebait, but you should change careers. by NullProg · · Score: 1

    From your question I gather your either:

    1) Fresh out of college with no practical experience. Are you complaining about the $50k worth of kowledge you just "learned" is useless?

    2) A Married/Sports/Party guy with no time to spend exta hours in to make the project happen. You do know that being a programmer is like being an architech only your the supervisor and crew. If your not willing to stay late to make it happen, then you may not be a programmer. Have you ever slept in your office or cube?

    3) A VB Warrior who just got burned because your 20+ man hour dialog sucks (user unfriendly).
    (Sorry, I just had to throw that in. Current history from one of our VB warriors). :)

    4) A person who writes shoddy code and expects the QA Lab to catch it. If you can't send your binary to the client directly, then you shouldn't be submitting it for testing in the QA Lab.

    Thats it from me. No Advice, no speeches, just a sigh.

    Enjoy,

    --
    It's just the normal noises in here.
    1. Re:Not flamebait, but you should change careers. by shaldannon · · Score: 1

      No offense intended, but the situation he describes isn't exactly uncommon. Maybe you have the good fortune to work in a software shop where you are allowed to properly design, implement, document, test, and release a product. I assure you that there are shops out there that take a realistic project schedule, chop it in half, and then chop the allocated development staff in half. Suddenly a 6 month, two man project becomes a 3 month one man project.

      Under those circumstances, the choices he faces are valid. Trust me, even if you spend 60 hours a week, you aren't going to cram a properly developed product into 3 months on your own when the original timeline anticipated 2 people and 6 months.

      My last gig saw a lot of that happen, and I've heard from other people that it's becoming more common as the economy gets worse (Recovery? What recovery?). Management knows that programmers are hard pressed to find new positions, and so treats them like slaves.

      I think his question is legitimate. I'm just not sure there's a good answer to it.

      --


      What is your Slash Rating?
    2. Re:Not flamebait, but you should change careers. by that+_evil+_gleek · · Score: 1

      Eh, no, but, he may need to stop working for the enemy. ;-]
      Let me explain. I would have answered his question like this:

      It depends. Do you work in a company's software department, or are you a software contractor? If you're a contractor then the answer is not Quick and Dirty, it's Quick and Dirty and Cajole. If you can turn in crap, and cajole the other guys into /thinking/ its acceptable, [meet the requirments sent forth in the contract], then the contractor gets to keep more of the money, in the sense, that they spend less man hours, so, they get more profit.... If you work for a company who has software, servers, etc, but are not a software contractor, in other words your product or services something other than software, but you have your own software, servers etc, then bug free is always better. Your users are your co-workers, just in other departments. Again, ESP if its server software. (and doubly so, if it's at HQ). And, since you'll have to fix the bugs anyway, and as downtime can mean lost revenue, attitudes are much different. You need to fix the bugs fast. And, maybe fix other peoples bugs fast. That's when you'll need to code at a even higher level, and code /quick and clean/. ... Nothing's worse than making a bad situation worse.
      Like a problem that affected one region, maybe 5 states, becoming a nationwide show-stopper... that's dirty, and it can happen so quick, just be sure it doesn't. ;-]

    3. Re:Not flamebait, but you should change careers. by NullProg · · Score: 1

      No offense intended

      None taken. Yes I do work in a shop were a lot of times in order to get the client you have to code without the proper requirements.

      Maybe I didn't state my point correctly. I have found, no matter how overworked I am (even my co-workers), everyone at least has time to write a minimal specification on thier own. All it takes is an hour or two and no matter how incomplete the first release is, with your own specification in hand you can produce the complete/correct version at a later time.

      Under those circumstances, the choices he faces are valid. Trust me, even if you spend 60 hours a week, you aren't going to cram a properly developed product into 3 months on your own when the original timeline anticipated 2 people and 6 months.

      I've never had to work at a job were management made all the decisions concerning the development stage. I guess I have been lucky in the fact that my PM's, Bosses, etc. have allowed me (or the team) to make the decisions in order to get the job done.

      Enjoy,

      --
      It's just the normal noises in here.
    4. Re:Not flamebait, but you should change careers. by NullProg · · Score: 1

      Yes and No brother.

      Throw in the code thats done by us for the trade shows and your pretty much correct. :)

      Like a problem that affected one region, maybe 5 states, becoming a nationwide
      I take it you have coded for multiple time zones and regions? Nasty stuff. I did it and it works.

      Enjoy,

      --
      It's just the normal noises in here.
  348. Fast, Quality, Cheap by Anonymous Coward · · Score: 0

    Your comments reminded me of a story often told by Intel people.

    One exec foolishly asked Craig Berrit about what does he want for product development. Does Berrit wants it to be fast, quality product or on the cheap. Berrit's answer was "yes".

    Rumor has it that the exec. was never the same after that question.

    It is often hard to strike that balance and explain it to arm chair quarterbacks who unfortunatly reviews your performance and signs your paycheck.

  349. Correct, Documented by pz · · Score: 1

    I've written a lot of code. Probably well over a million lines all told, in probably half a dozen different languages (APL, C, C++, Algol, assembler of various flavors, Matlab, Visual Basic, Lisp, who knows what else). Some of it was on contract basis, some as a salaried programmer, some of it as a graduate student, and some of it as a professional scientist.

    Every time that I made the choice to cut corners and take a quick-and-dirty solution to a problem, it came back to haunt me. I've lost track of how many times that's happened. However, I still elect that approach at times, because, at times, expediency is more important than correctness. Whenever I knowingly commit such a sin, I *always* document it in the code, and suggest a more rigorous approach in the comments.

    When I've taken the time to do things properly, it's given great joy to be able to, say, re-engineer fundamental aspects of an architecture without having to re-write vast tracts of it, or understand quickly and easily what a set of functions are intended to do, or be able to modify years-old code that I haven't looked at since it was initially written. As an example, I've recently been refactoring (to use a chic phrase) code written in the 1995-1999 time frame. Because I took the time to write it well, including documenting it properly, I've saved about 1/2 of the development time on my current project. How? Because I can read my old comments, understand what changes need to be made to integrate the old code into my current suite, and write the new code accordingly. BAM, productivity increases greatly.

    Short-term solutions are nearly never the right answer, but if you must, document limitations and any insights into correct solutions. You'll be happy you did when it comes time to correcting the problems later.

    --

    Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
  350. A simple answer by Anonymous Coward · · Score: 0

    There's 6 bazillion messages already and I'm posting as an Anonymous Coward. Chances are no-one will read this. However, I'll give you a simple answer that will work (and not just for programming).

    It comes in two parts.

    1) Never do anything that *you* aren't happy with. Always strive to do whatever it takes to make *you* happy with your work.

    2) Keep the scope down to the bare minimum so that you aren't wasting your time. Only do what's absolutely necessary. Make sure that other people agree with your assesment of "absolutely necessary" on a regular basis.

    Everything else will work out if you keep those two points in mind.

  351. Investment math discounts future by Tablizer · · Score: 1

    An important accounting/investment principle says "a dollar today is worth more than a dollar tomorrow", and not just regarding inflation. In other words, you discount future earnings compared to today's earnings. In some ways it is "anti-planning" to some extent, and may account for why managers and owners tend not to focus too much on anything further away than about 18 months. It is controversial whether information technology should be immune to Future Discounting rules. But, there is good theory behind the idea. It would be interesting to see somebody debate that IT is immune from this rule.

  352. Re:Passion is the key - if you're passionate, rele by Jouster · · Score: 1

    They call it off-topic because it's a first post, and it has a lot of content, the beginning of which, at least, doesn't immediately reference the topic of the discussion.

    Of course, if they actually read the whole thing (god forbid!), they'd realize that it is on-topic. And I would hope that between the karma bonus and the subscriber bit, they'd realize that I'm not just trolling.

    Jouster

  353. deja vu all over again by human1 · · Score: 1

    Donald Norman in The Design of Everyday Things says that every 20 years or so companies forget their own quality process/methodologies and have to remember/recreate/reinvent them. I say Amen!

    That why I find all the present hub-bub over 6-Sigma and TQM etc. so hilarious...we did all that crap at bell labs back in the 1980s! New management decided in the 1990s that quality techniques were "corny" and "too slow" and a new swath of suckers, er-I mean...engineers, came in. Now it's back to the future because these new "teams" built all this crap that didn't work well for customers.

    Why do managers refuse to understand the difference between a prototype and a product?! Why are they willing to settle for blame as the default quality process?

  354. One solution: by drskrud · · Score: 0

    I have an idea: Do the correct and proper thing quickly.... (I will mention here that I do not have any commercial developing experience... and I'm certain that everything works differently in the "real world".. but quickly doing the correct and proper thing works like a charm in programming classes).

  355. Go the Correct Method by Creative9000 · · Score: 0

    I will not even entertain the idea of doing a sloppy/quick dirty project. This has meant that on occasion I have had to turn down work because the client thought the estimated time frame was longer than they wanted. But as reputation is everything in this business, I will not compromise. I often tell clients that we follow strict procedures and standards as it is thier best interest, but if they are not interested then they can go find some hack who will gladly do a second rate job and charge a lot less. You will not believe how many have actually came back to me at some stage because "it wasn't working out" with their web developer. And I have looked at the site that has been produced for them by and it is full of errors and sloppy code, and is not flexible enough to add more functionality. Again - try to only take on jobs that you can take pride in knowing that the job is of good standard. The client can't complain if the site does everythig (and more) than even they anticipated.

  356. CLH methodology by DuctTape · · Score: 1
    I had a friend who came from a job where they used the CLH ("Code Like Hell") methodology to get stuff out the door as fast as possible. The code looked like crap, but it was used as proof-of-concept and to show off to potential investors. I also heard that it was a partial offshoot of WIJC ("Why Isn't Johnny Coding") methodology since computational results were always expected, especially since the SME used a WYSIWYG HTML editor to mock up the web page, so of course it should be a Simple Matter Of Programming to get it to work in the backend, right?

    Of course, when it came time to modify the back end, an appeal was made by staff to refactor the existing code, but the project manager said that unless it could be proved quantitatively that it would save development time to refactor than to just modify the current code, refactoring was out of the question. There's motivation for you. So of course they went ahead and bolted on the new functionality rather than waste the time that they didn't have to analyze whether it would be more efficient.

    This reminds me of a time when I had a project manager tell us to do a job as fast as possible and to customize our current methodology for the situation. But of course, when there were the inevitable quality issues with the release, he declared that the root cause was because the company's methodology was not followed by the development staff, leaving us hanging in the wind.

    A famous saying on a co-worker's sig was "Quality and Time-to-Market are everything." Too bad you can't have both.

    So, like, why are you in software development anyway?

    DT

    --
    Is this thing on? Hello?
  357. Quick, Cheap, and Good by rstens · · Score: 1

    Choose any two.

  358. Hire me. by magores · · Score: 1

    Ima 'spear-ienced Softwear Projekt Manger. Plus, I've got produkt mangment experience to. And I can market stuff. ANd I have a deep voice, so I sound good in tv pictures.

    Seriously. Hire me.

    Hire me.

    Seriously.

  359. Re: Sig by Tokerat · · Score: 1


    "This is a Website!"

    --
    CAn'T CompreHend SARcaSm?
  360. Less cheap'n'dirty'n'fast == MORE JOBS'n'MONEY by rod · · Score: 1

    Our industry does what naive works do.

    If you can think: Open Source is really bad for the software industry. First of all: Do you get goods in the supermarket for free? Is your medicine free? A lawyer? A doctor free?
    NO! But they are benefitted by the Open Source industry,
    How many software companies were seriously affected by this movement?
    I was explaining this do a doctor once, and he laughted....
    If we want to revolute, let's do it for the world, not only for us. This hurts our industry, taking money from it (people don't buy) and send the money to other industries (people use the money to buy a best car).

    Do you still think it's better to have software for free? EXPENSIVE SOFTWARE can employ lots of developers. Can generate good salaries!

    Software developers, engineers and students: WAKE UP! THIS IS THE WORLD, NOT THE FUCKING INTERNET BUBBLE!

    Let make software more slow, better tought, with more people and buying more technology!
    Why use PHP or Pearl if we can use paid software like Websphere? This generated JOBS for Websphere developers, for consultants, for everyone.

    If you have further questions about "The Real Software Thing", tell me.

    Lets make better for ALL US DEVELOPERS!

  361. You can have it cheap... by cliveholloway · · Score: 1

    You can have it cheap, you can have it good, you can have it fast.

    Now choose two. .02

    cLive ;-)

    --
    -- Trinity in high heels carrying a whip: The donimatrix - there is no spoonerism
  362. Wow! You're absolutely right! by Anonymous Coward · · Score: 0

    Congratulations, sir, you just won a new car!

  363. Q&D vs C&P by Anonymous Coward · · Score: 0

    Ive been through the same trauma. Heres what ive learnt :

    The responsibility was never on your head. Your manager is kicking you now because his ass is being kicked. He had patted you then because he had recieved good words. it happens ... all the time.

    The solution is simple, just be dumb, let your manager do all the decision making, propose to him all the possible alternatives and let him decide, make him realize that he is making the decisions and you are just following them. Next time he gets kicked, he will absorb the shock himself and will not transfer it to you, what you might end up getting is more responsibility and authority to make the decissions on future projects. Decisions then should be made through short but sharp meetings with all the departments involved. (fin, sales, QA,....)

  364. Promote the best way first. by plutoid · · Score: 0

    It is always better to do what is best for the company. Doing what is best for the company in the long term mean making the most money for the company. Having a good product helps realize more profits, which makes the project a bigger success. I think that if a strong argument is made for the best long term solution is turned down then there is a real problem with the company.

    --
    Regards, Jake Johnson http://www.plutoid.com
  365. extended to network consulting... by deviator · · Score: 1

    (rambling... I'm thinking of writing an article on this soon)

    I'm a consultant - regardless of cash flow or size, most organizations I've come across seem to fall into one of two groups:

    "reactive" - organization can only think ahead 3-6 months, and are too busy trying to manage day-to-day to do any real planning. These are usually characterized by a management team that is happy with the status quo & is just trying to keep their heads above water day-to-day. This is MOST organizations! They often see technology as a cost center--a liability--a necessary evil they have to keep propping up once in a while.

    "proactive" - organization has a much longer-term view & can adjust to new inputs in a smooth, methodical way. This is characterized by a management team that actually has a longer view of things--they see the "big picture" possibly several years down the road. These organizations are great to work for because they value your input & generally don't try to constantly override your suggestions. They see technology as it is--a tool to enable business to be faster/smoother/easier/more efficient/more competitive, and will pay accordingly to set things up correctly because they understand the potential return on investment.

    Unfortunately, only around 20-30% of the organizations I've encountered are truly "proactive" - it takes a bit more work and money up front to think "proactively" all the time, but in the end you end up with a solid, smooth-running organization. This methodology always comes from the top down.

    My clients are generally the proactive type because I've worked my contracts to be proactive--"reactive" companies don't see the value in paying to have someone maintain their networks, unless something _really_ breaks--and when that happens, they generally throw tons of money at stuff to fix it (always more than it would have cost to keep it properly maintained in the first place).

    So I guess this also extends to software development. Doing it right the first time means never having to do it again; saving money & headaches down the road. This doesn't mean to say the quick & dirty method isn't always the wrong way--but it's _usually_ the wrong way if you don't want to have to clean up the mess later on--added to your existing future workload, of course. Short-sighted management is _wrong_ when they insist on doing something half-ass to get it out the door if you know you'll have to redo it later.

    Of course, your local politics may vary. You might consider writing a short brief or proposal for your boss that explains exactly what you'll be doing--and how deviating from that plan will cause extra headaches/time/$$MONEY$$ down the road. I find that seeing things written up like this (especially if you can attach costs to it - you can generally get management's attention with actual figures) usually helps make your point. If your boss is constantly telling you to do things the wrong way and generally making your life a living hell, you probably need to get out of that situation.

    as a sidenote, regardless of the economy, life is too short to hate your job. You'll figure out a way to make ends meet.

  366. improve core code first by Anonymous Coward · · Score: 0

    I've been programming videogames for about 7 years, and I continuously improve our code to keep it flexible and reusable, both of which are critical to efficient game development in the medium and long terms (months to years) but not always the short term (days to weeks).

    Improvement consists of simplifying and clarifying: function and variable names; tight, non-redundant interfaces and objects; keeping cruft out; constantly evaluating the implementation verses the current need. Keeping functions and objects understandable enough that detailed comments are never necessary.

    I take more time with lower-level code because it's used more often, by other code and people. I write mostly low-level code, and probably spend 25% of my time cleaning up already working code.

    I've found it best to not fix other people's code, but to let them know what could be improved, and to signal others if it doesn't get improved as needed.

    BTW being "correct and proper" often leads to overdesigned, rigid code that is hard to tear down or retrofit as requirements change. Best to do what needs doing today without shutting the door on what needs doing tomorrow. When you do shut doors to keep things manageable, be aware of and tell others what you're shutting out.

  367. This is easy... by j3110 · · Score: 1

    The answer to your question can easily be reduced to, "Do you have to support it?"

    Seriously though, unless you hate the people that will be stuck with the mess, tell them it will take quite some time to get a solid version out. If they shoot themselves in the foot and tell you they need something by X, then when X comes and it's ratty and buggy and they point their fingers at you, pull out the logs/archives and point right back at them. When they want you to work extra to fix a bug, be sure to point out that they caused the problem, and now they will have to hire someone else to come in and help fix it. You shouldn't be penalized for their short-sited lack of management and planning skills. I would quit if anyone set a deadline earlier than I said was possible without hiring new help. My favorite is when you tell them you could have it by X done right, and they keep bothering you with other problems and wonder why you didn't have it done on time.

    If you don't want to work 60h/week patching patches, I suggest you do it right to begin with. I work in a small little IT company, and people look to us to fix their software. A lot of the time we have to tell them their software was developed by a highschool drop-out monkey, and it would take less time to rewrite the whole thing than it would take to make their software work. Usually it's something running on Access written in VBA, that would take all of 40h to replace with a decent MVC serverside scalable extendable application using free or cheap software, assuming you know all the technologies involved.

    --
    Karma Clown
  368. Well, I'll tell you what by Anonymous Coward · · Score: 2, Insightful

    There are 2 extremes of programmers: idiots and idiots. Everyone else falls somewhere in between.

    Half the idiots are the ones who absolutely believe that their 5 years of industry experience qualifies them to be sole judge of absolute right and wrong in things such as languages, technology, coding style, etc. These poor souls believe that all engineering should adhere to strict policies regardless of business timeliness. These idiots tend to demand schedule delays in favor of constant pursuit of architectural and stylistic perfection.

    The other half of idiots see no value in structure and discipline. These tend to be people who abuse XP and will always do only the bare minimum. They produce spaghetti code and are frequently strange people who have absolutely no regard for best engineering practices whatsoever. These guys always deliver utter crap on time and the working version 2 months before the company goes bankrupt.

    Then there are the in betweens - the rest of us. Those of us that can be flexible know when to deliver the fast, spaghetti code to land the customers. We know when to architect things for long term efficiency. And we know that usually, a good engineering team is a steady balance of these two. We know that engineering is a constant cycle of research, plan, code, refactor.

    So, to answer the question: if you're in that situation, unless you have faith in the people around you, quit. Chances are, you'll deliver the goods, save the company, only to have some self-proclaimed "god" of programming tear your code to shreds for being sloppy, make a fool of you, and never actually have to deliver under the same conditions.

    Face it, you're doomed.

  369. Sad But True by Geoff+Vass · · Score: 1

    There is almost never money available for jobs to be done properly but there is always money to fix problems. I think this is because when something is done right it doesn't occur to anyone that anything substantial was done. When there's some terrible problem everyone suddenly understands where the money needs to go.

  370. Get this by Anonymous Coward · · Score: 0

    We were about to ship our product (after *finally* fixing all P1 bugs, after 4 months of hard effort) to our main, cash cow customer when our Director of Technology decides subjectively from the code that we're not using STL enough. He decides that "1 week ought to be enough" to refactor the code base to use more STL to his satisfaction.

    So, we delay the release (despite the release candidate looking solid enough) to make the changes. Our bus dev guy was FURIOUS, but ultimately couldn't do anything but fret. Finally, we get the project to build, only to discover numerous problems - everything from strange slowdowns to intermittent crashes. At least 5 new p1 bugs opened.

    Needless to say, the extra 2 weeks that the "refactor" introduced was enough to send our customer running to our main competitor (they were doing diligence on both of us anyways) and eventually the company folded.

  371. Something is wrong if Quick & Dirty brings in by Taco+Cowboy · · Score: 2, Insightful



    While your case may not be an isolated one, the fact that dirty hacks bring in money, while properly documented one doesn't speaks volume on the correct (or rather, the lack of) implementation of programming practices at the place you work.

    No, I am not preaching stuffs like "Extreme Programming", but documentations is a must if we really want to tame the insanity of what we do - and programming itself is one of the quickest way to insanity.

    I do know that documentation takes time, but if you put in an effort on document what you write, the time invested on documentation WILL pays off many, many times when it comes time to extend / alter or debug the code that we have done, be it 3 days or 3 years ago.

    --
    Muchas Gracias, Señor Edward Snowden !
  372. India is the solution by jeanluc.bonnafoux · · Score: 1

    Well, assume you haven't got a lot of money to produce software... So you pay american developers to get the job done quick and dirty The solution is to hire a bunch of indian developers (Bangalore...). They will cost you far less money and you will get the job done the right way instead of "quick and dirty". If india is too expensive: try Romania, Russia and so on !

    --
    le souvenir d'une certaine image n'est que le regret d'un certain instant (M.Proust)
  373. Most of the responses are crap... by puppetman · · Score: 1

    Most people wrote, "Write a temporary fix, and then write a good solution after". I say bullshit. There is nothing as permanent as temporary code. Write crap now, and people who have to work on it in ten years will curse your name.

    Here's the low-down:

    If a feature/product is over-promised by marketing, and no one notices, then your company is too big to be efficient. You can do what ever you want. Marketing over-promised, and no one was savy enough to realize it. How will they ever figure out that you've done a shitty job?

    If your company is small, smart, and fast moving, then they'll notice. Check with marketing and management.

    A company must act as One; a company where marketing, engineering and management are not in sync will most likely fail.

  374. crappy code version 1 then from scratch for ver2 by Vaughn+Anderson · · Score: 1
    ..do the quick thing and greatly increase the chance of $uccess now, or to do the correct thing and avoid pain later (assuming there is money to pay for the pain later)?

    I have the same problem. It is very rare that I can sit down and do things the absolutely perfect way the first time.

    So what I learned from a very successful business owner (has done software for IBM, TRW, Motorola, etc...) and one of my best clients, is that you do the quick and dirty every time to start it off. Then 3 to 6 months after you get version 1 done, start from scratch.

    Mainly because as you are doing the Q&D, you want the speed and flexibility of crappy code to get features tested and useability refined. Then when you know what you want, after months of Q&D, then you go for creating what you now know is the best features/usability but with good solid code.

    I've heard clients complain about most excellent programmers that engineer the crap out of their code, do everything right, and their code is solid and immaculate.

    hehe, yes and these programmers are always late with their code, stuck on their own ideas and are unable to change their perfect code to add new features.

    The happy medium I have found is that I maintain a good solid methodogly so that my code is never super crappy, as this is hell to go back over. It takes extra time, but not as much time as documenting and setting up pefect objects on every corner of the project.

    I am sure most programmers have some sort of degreee of quality standard they won't drop below no matter how short the deadline.

    Right now I am working on an Content Management System that is based on some purchased code. But the current code is pure trash and filth. But I chose to change the big things first. And keep a long term perspective on features vs nice code base. When I explain this to the clients, they tend to appreciate the method of quick code and then clean/redo after the design phase is completed, it just makes sense to the money guys....

  375. An example priority list by MightyDrake · · Score: 5, Informative

    Several years ago, a guy on a Compuserve forum listed the seven facets he prioritizes at the beginning of every project. (I no longer have the post, so I can't give proper attribution, and these will be from memory.) He suggested that they should be considered and rearranged for each project. On any given project there will be two or three that stand out as particularly important.

    1) Time to market
    2) Cost to develop
    3) Maintenance
    4) Correctness/reliability
    5) Performance
    6) Extendibility/architecture
    7) Features (or can a subset be used for the initial release)

    At the beginning of the project the decision makers need to sit down and order this list for that particular project. Whenever it comes time to make a decision or tradeoff, they should compare it to the priority order determined for the project. If the tradeoff violates one of the top priorities then it should be considered with great care.

    Some examples:

    - In a PC flight sim game, Time to market and Cost to develop are probably the top two, and Features, and Performance are a little lower. Since game engines tend to turn over so quickly Maintenance and Extendibility are less important. And Correctness, while nice, really is one of the least important priority items (above a minimum reliability, of course.)

    - In contrast, in an FAA flight training sim Correctness is probably the most important followed closely by Performance (mostly as it applies to Correctness.) Maintenance and Extendibility would prolly be important to a company that's building sims for a family of aircraft. But it might be less important for a company that's building a sim for a one-off class of aircraft such as a fighter. (Albeit, the ability to add new weapons systems and threats might bump this up.) Time to market and Cost to develop end up having to just fall out from the higher priorities.

    - For many business applications, Maintenance tends to dominate the cost of using an app. For mission critical apps Correctness probably rivals Maintenance for top spot. And the rest will depend on the particular project.

    And so on. As I said, I may be mis-remembering one or two of those priorities. But the general idea is valid. A list like this can help a team spell out ahead of time what's imperative, against which they can measure their decisions.

  376. There is a combination that works. Sometimes. by noelp · · Score: 1

    We recently swapped out some expensive software (£30k/month) for some cheaper software (£60k + £15k/year) - and found three of four days before the old access was removed that the new solution actually had some pretty big holes in it wrt the web client side. We have contractual agreements with some of our customers that enables them to use the web access - so we needed a solution. I did the quickest, dirtiest, ugliest solution you can imagine. Seriously, it would make your eyes bleed. But it got us live and we fulfilled our commitment to our customers. However, I then had a tough job convincing management that it needed to be done properly. Once I had hammered the concept of what I had to have done across - they were quite receptive. 9 months later I have a Proper(TM) solution, and in all honestly we will probably be ditching the original software. Such is life. Anyway, the point of my ramble is that it is possible to combine a QnD solution with a long term proper one - as long as the powers that be fully understand what is going on. Which is easier said than done....but that is whole other story.

    --
    'Internet! Is that thing still around?' - Homer Simpson
  377. I think some people have been overcomplicating by goldcd · · Score: 2, Interesting

    and getting too far into the details of this specific problem, referencing coding techniques etc. The actual problem is common to pretty much any worker when he's asked for a good product as soon as possible - when he knows these two edicts are both impossible to fulfill simultaneously.
    Personally I feel the most important thing is to get the superior to 'buy-in' to what you're doing. If time's short and you don't feel the product will be great if done within this limit then tell your boss, explain your reasoning, document what's not going to be perfect and get him to stick his name to it.
    This actually helps in two ways, if it does all go wrong you have a very good defense (I told you so), but more likely your boss will get the initial constraints altered e.g. explain the situation to the client.
    Occasionally when time is short and the work is urgently required you're going to have to release a buggy mess of code. My personal advice is to get working on a point release of it the moment the original has left your hands. It'll take a while for the code to be implemented and the bugs surface. If the moment the user reports a problem you can produce a lovely working upgrade then they'll be impressed with your customer support and you can sleep at night.

  378. Or daily by Anonymous Coward · · Score: 0

    (all the people that modded your comment informative are morons, however it was very insightful)

    There is pressure to close a quarter and hiring is never done at the end of the year so it doesn't hit the 10k (annual report), however instead of reporting less often so there are fewer measurement points, wait a 100 years (hopefully) and see if we can have weekly reports that are constantly updated at a central server. this would eliminate any of that, even the 4th quarter hiring freezes (unless the holidays fucks up stuff).

  379. Old, old adage by Rogerborg · · Score: 4, Insightful

    There's never time to do it right, but always time to do it twice.

    --
    If you were blocking sigs, you wouldn't have to read this.
  380. Managing JFDI person v process junky person by freddled · · Score: 2, Insightful
    Most organisations have Just * Do It Person and Process Junky Person. As a software engineer you have to manage the balance.
    • If you live at the process junkie end of the spectrum, the software that you create is very expensive and may actually never get to the market.
    • If you live at the extreme end of JFDI space then the chances are your company will make money this year and then die the death of a million user group quality flames.

    When I have to cope with JFDI this is what I do.
    • First, don't cut off future improvement. It should be obvious but there is a fundamental difference between putting out a bowl of spaghetti and putting out a minimal solution with extension points.
    • Don't panic. Design reduces coding time, always. I don't care if you are talking about ten person years coding or two hours at 3am. Designing the solution always reduces coding and testing time. It also improves quality and therefore reduces your rework when the bug reports come in. If you have to fix lots of production bugs, extending your solution to meet Process Junkies idea of minimum quality will never happen.
    • Defend yourself. JFDI can't tell you to go straight to the code. This is a big problem, but ultimately JFDI should be managing the crisis that has led to the urgent requirement, not hassling you for scribbling designs instead of cutting code. Also, find out what JFDI is going to do for you when you solve their problem before you solve it. It doesn't always work, but we have all worked all night for someone who doesn't say thank you, or criticises the solution. Personally, I look for a written/email request for me to pull out the stops, stating a business need. Bombarding JFDI and PJ with emails at hourly intervals around the clock also helps drive home the point. Remember, JFDI person has that role because they aint subtle.
    • Think like the CFO. These guys want revenue and increased earnings per share this quarter. Future quality issues are secondary and, in some cases, are seen as a source of future revenue. JFDI cuts cost and therefore increases earnings per share. Instilling future quality and maintainability is fundamentally something that you do to make your job more satisfying, easier and professional. Only you and Process Junkie Person care about that. JFDI doesn't because they get more crises to manage if quality falls. CFO/CEO don't. So, don't be naive about the management being on your side in this, you have to protect yourself.

    So, fundamentally, until Software Engineering is a formal profession with audits and minimal standards, until customers can sue software companies for negligence in their engineering process, quality is down to you. If JFDI calls, you have to build in the quality, or at least the potential to reach the quality threshold yourself.
  381. Process Maturity and Process fixing by Paul+Johnson · · Score: 2, Informative
    Its always a danger sign when people complain that the official process is counterproductive, because they are usually right.

    The solution to this is to fix the process, not the people. In this case your "quick and dirty" approach has been shown to work and needs to be integrated with the official processes. Write down the criteria for projects where this process should or should not be used. State the limitations, costs and risks clearly. In particular, it sounds like you have difficulty getting resources to go back and do it right, so put that into the process. Then get your shiny new process approved by the process police and inserted into the official manual.

    There are two kinds of organisations that have process manuals and make sure they are followed. One is a mature organisation of CMM level 2 or above. The other is an immature organisation at level -1 or below, in which counterproductive processes are rigidly enforced. The test that distinguishes them is what happens when someone proposes an improvement to the process.

    Good luck,

    Paul.

    --
    You are lost in a twisty maze of little standards, all different.
  382. What's wrong with computer industry? by Arkan · · Score: 2, Insightful

    Just a few question for you Slashdot crowd:
    - why computer industry has to cope with such incredible decisions such as choosing between producing something good, or producing something quickly?
    - why computer industry has a so special place in our business world that practices that will be judged and punished as criminal (such as releasing a hazardous product, boast inexistent features, etc...) are so common that even Joe User doesn't care anymore?
    - finally, shoudln't we IT workers (from code-monkeys to gurus) throw PHBs, bean-counters and marketroids through the 100th floor windows?

    Maybe an beginning of the answer to the above question: other arts, craftmanships and industries have been around sometimes for centuries, and people working in this fields inherit the respect due to such ancient arts. But computer industries (both software and hardware) were born in an age dominated by money, where quality comes second to profit, and never had a chance to win the required respect to such critical appliances.

    --
    Arkan

  383. reality vs. model by Anonymous Coward · · Score: 0

    Many people think reality can be modeled. I like to invoke Taoist theology and point out that as soon as you try to make a model of reality (which is exactly what programs assume) you will lose the infinite facets of the object you are modeling.

    Its the whole, everything looks like a spring to a physicist problem. Only when it gets right down to it nothing is that simple. So what do we do about it?

    We create a model, make it as flexible as possible, and don't waste time coding the perfect code when the model is bound to change. Thats the lesson the market has figured out that we haven't. We're drawn to the model because we like to put eveything in a box and say "thats solved" when it never really is!

    Lou

  384. What I do... by bakreule · · Score: 2

    This was probably said before, but every situation is different. Everything must be looked at, balanced and decided as they come. But the best thing you can do is always keep a "paper" trail of every decision made. By paper I mean email, your notebook, anything written that you can reference later on. And if you have something to say such as a suggestion, the best way to do it is in email. If you made a suggestion verbally during a brainstorming, make sure to follow it up by email. It sounds very impersonal, but it's the only way to show that you're doing your part when the heat starts coming.

    And always carry around a notebook. Anytime any verbal agreement is made, or you produce something in a brainstorming section, write it down, with the date.

    Deciding where to draw the line between getting it out the door and getting it right is tricky, but whatever you suggest or decide will be written down, so you'll always be on the "I didn't slack, I did my job" side....

    --

    Buses stop at a bus station
    Trains stop at a train station
    On my desk there's a workstation....

  385. Really? by jotaeleemeese · · Score: 1

    I don't see any mention to deadlines and profit.

    This guy is great and all, but sometimes you need practical experience on a field to have an insightful opinion about it.

    --
    IANAL but write like a drunk one.
  386. Don't Believe Them! by SWestrup · · Score: 2, Interesting

    I used to believe my PHBs when they told me something was for one use and that it would be discarded afterwards.

    I once worked for a games company that asked me to take an existing text-only game, hack a graphic user interface onto the output routines, and produce a more up-to-date version of the same game. I told my bosses that it would work, once. The resulting code would be ready quickly but would be an unmaintainable mess, and unusable in other products. "Fine" they said, "Its just a market test".

    Nine months later I'm in hot water because I'm insisting that the Version 1 code for the game is unsuitable for use in Version 2, and needs to be rewritten.

    I have, since that time, had so many jobs in which I was required to maintain 'quick-and-dirty' code which ended up being legacy code, that I no longer believe anyone who says something is throwaway. I always try to make the code be portable and maintainable, because all too often, I'm the one who ends up having to port and/or maintain it.

  387. Thanks but no thanks. by jotaeleemeese · · Score: 1

    Life is too short, family and friends come first, I come second, work is a distant third or fourth.

    --
    IANAL but write like a drunk one.
  388. Pray does not help. by jotaeleemeese · · Score: 1

    A ficticious god will not help you out.

    Get things on paper and do your best while looking for a new job.

    --
    IANAL but write like a drunk one.
  389. This is off topic and I am sick of it already. by Mensa+Babe · · Score: 1

    When I follow the link to your "SID that never gets archived," whatever that means, I get this message: "Nothing for you to see here. Please move along." What is going on? Who are those krouts, ekrouts, surakrouts and other /.*outs/? This is not the first time I get annoyed this way. See this threads: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] to have some idea how I have been treated here on Slashdot. Could anyone please explain me what is going on? I hope someone will explain it and finally end this farse. And please don't use such subjects because they not only look stupid, but they also make the page wider than my browser window. Thank you.

    --
    Karma: Positive (probably because of superiour intellect)
    1. Re:This is off topic and I am sick of it already. by Anonymous Coward · · Score: 0

      no way, she couldn't be him.

  390. Concept ... by Anonymous Coward · · Score: 0

    Quick and Dirty ...
    Should be renamed "proof of concept" ...

    Disipline dictates that you throw your proof of concept away and follow a process for things destined for the field.

  391. Two simple advices by Aceticon · · Score: 1
    • Think before you code.
    • Avoid repetition - Cut & paste is you enemy. If you're re-using the same functionality over and over again, package it in a function or object or whatever. For some high-level functionality (for example a database access layer) consider code generation.
    What are the gains?
    • Since you thought before you coded, coding will be less of a 2 steps forward 1 step back process (as in "oops, it won't work this way"). This means faster coding and a clearer, cleaner and simpler results
    • Avoiding repetition of code will get you a smaller and cleaner code. It will also be clearer, more so depending on naming convention for functions. Additionaly, the "I copied 50 lines of code and changed the variable name everywhere but forgot one place" type of bugs won't be there anymore.
    • A smaller, clearer and cleaner code base will have less bugs (it's much more easy to loose your track and make mistakes in monster 1000 lines functions than in 100 lines ones). Less bugs means less debugging time. It will also be faster to fix and change in the future - 5 months later when you don't remember very well how the thing works you will much more easily figure it out again. It's less code to maintain. It won't have as many bugs that need to be fixed
    The same principles can be applied at higher levels of the software development process (design, architecture, the process in itself)
    The higher you go, the more the impact tends to be longer term and higher level (for example: a clean modular architecture will repay the extra effort when you re-use modules across applications).
    Things like documentation will bring scalability to your software development process (for example: people can become productive faster in an area of the code they didn't knew.)

    In my experience the lower level application of this principles pays itself almost immediatly - you end up delivering faster ('cause you code faster and you debug less).

    Using them at higher levels can be more tricky. Since the feedback cycles are longer (it take more time to see to end result of your work), experience will be much more important. Over designing is a risk. Adding un-needed flexibility is a risk. Partitioning things in the wrong way is a risk. It's faster to fix bad code than it is bad design. Sometimes management will stop the design process because from they're point of view no visible outcome is being produced (some managers need to see some form of program working to feel that things are getting anywhere).
    Investing in a beter design is more of a risk. On the other hand the rewards are much vaster - coding can quite ofter be done in half or a third of the time; it's the only way to get things like the modules that are reused all over the products in your company and have saved thousands of man days ...)

  392. Dirty coding isn't quicker by solprovider · · Score: 2, Interesting

    I think the question is wrong. It is not "quick and dirty" versus "correct and proper", with the assumption that "correct" takes longer. Usually a little thought about design can greatly reduce the amount of code required. Less code means less development effort, less documentation, and fewer bugs.

    You may need to try several algorithms to prove which one is the best, but this becomes instinctive with experience. Soon you will not need to code several approaches; just list the options, picture the code in your head, and drop the longer ones.

    Back in college (1989), my C teacher enjoyed my homework code because it was less than one page while the other students turned in 4 or more pages. A good portion of it was pointers and the ability in C to make one-line "for" loops that moved blocks of memory. I had to comment each line, because they were so cryptic that I would forget what they did before the code was done. But the programs were short, worked, and were maintainable with the comments.

    Yesterday at a client, I refactored some code. A few minutes earlier I had copied a function to make it work with a different global list. (The lists hold configuration data, so globals make sense. And the code is loaded for each run, so there is no chance of contaminating other portions of the app.) This was now the third copy of almost identical code. AFTER PROVING THE NEW FUNCTIONALITY WORKED, I made a generic function that took the list as a parameter and replaced the calls. Tested again, then removed the original functions.
    - The original code worked. It was not "dirty". But the new code is shorter and more maintainable.

    In the last week, we made a major architectural algorithm change to my company's product. The original code split a request into two parts, handled each request separately, then merged the results. This was "dirty" because a hack was needed to make transfer data from one portion of the request to the other during the merge. But it worked for the last 2 years: it allowed us to write the lower level code, and it did not affect the functionality.
    - We just added functionality where the hack would interfere. Now the requests must be handled as one. Because all of the lower level functionality existed, we were able to make the change with about 40 lines of code, replacing over 100 lines. There is still code that refers to the hack which will never be triggered because the input will never have the hacked parameters. We will remove the obsolete code AFTER the next release to save the need to retest many of the modules. (We are really close to the next release.)
    - This hack was almost "quick and dirty". It was done because at the time it was designed, none of the lower level code was available, and we could not envision how to integrate the two requests, and there was no need for them to be integrated. The hack to merge the data was added when we realized some data from one request was needed by the other, but it was extremely simple to pass the data. We remained aware of the issue, and were ready to "fix" it when some functionality required the integration. Since the separation occurred at a very high level, and everything was planned with awareness that this change would come, the integration was accomplished quickly.
    - We spent 2 days planning the change before writing any code. Because of this, the code took about 3 hours to implement. If we had just sat down and started coding, we would still be working on it, and probably have a buggy mess. Another benefit is that the new code is shorter and more maintainable.

    Better design always requires less code, which requires less development effort.

    I try not to write code the same day the specs are given to me. Tell the PHBs that the code will be need to wait for tomorrow. Your subconcious will work on it while you sleep, and the solution should be better, cleaner, and SHORTER.

    --
    I spend my life entertaining my brain.
    1. Re:Dirty coding isn't quicker by Zigg · · Score: 1

      Better design always requires less code, which requires less development effort.

      Sorry, I've got to take issue with this. One of the worst hallmarks of bad code that I've seen is when it doesn't deal with error conditions; i.e. ignores them (C), satisfies the compiler by swallowing (Java), catches all possible errors when only one or two should cause the catch action to be taken (Python), etc. While it's possible that other optimizations are going to give you shorter code, it is not automatically a truism that better == shorter.

  393. Refactor by Anonymous Coward · · Score: 0

    If the time to market is crucial, do quick and dirty and refactor later.
    Use Agile techniques to make refactoring less painful.

  394. Depends on the Consequences... by Zarf · · Score: 1

    As always, the correct choice depends directly on the consequences of each possibility. Which is worse? Getting the contract and dealing with a Quick and Dirty solution... or not getting the contract? Using terms like "rapid prototype" and "more robust solutions" help for explaining why you have to take more time to accomplish the same thing you just accomplished a second time.

    Sometimes a "Quick and Dirty" (tm) solution is the best solution since the customer may be planning on "upgrading" (tm) in the future anyway. I have a feeling that your particular issues, however, relate to longer "product lifecycle", and "more cost effective maintenance" issues. Something like : "spend more now so you save money later" just might work with your particular PHB.

    Just remember... Software Engineering is... HELL.

    --
    [signature]
  395. One day you will go postal by Anonymous Coward · · Score: 0

    when they mention process to you, and the marketroids will deserve it.

    Keep a notebook to document their abuses.

  396. YOU ARE SO FIRED! by Anonymous Coward · · Score: 0

    What?

    The YOU ARE SO FIRED! guy's not around when you need him.

    Right, this is the last straw.

    YOU ARE SO FIRED! IS SO FIRED!

  397. Simple answer, no solution by Anonymous Coward · · Score: 0

    The answer is simple and totally unsatisfying: It's better to do it The Right Way, but you will probably lose your job unless you do it Q&D.

  398. Proof of concept by originalLackey · · Score: 1

    Pass the Quick and dirty solution off as a proof of concept. That should get the customers interest while at the same time leaving you with a job.

  399. R&D vs Contract work by Fr05t · · Score: 1

    I was in the same situation as you were, and I didn't like it. I left, and now work for a company that does things the right way the first time. We can get away with this because our projects are internal and include a lot of Research so tons of documentation, reviews, unit tests, and standards. I think it's a personal preference where someone would rater be, but I've managed to find a happy place for me :)

  400. Re:Passion is the key - if you're passionate, rele by Anonymous Coward · · Score: 0

    You actually cry over that stuff? IT'S JUST CODE.

  401. Re:I think for the few truly excellent programmers by Communomancer · · Score: 1

    Actually, I don't even think there's such a thing as "Correct and Proper"...just "Quick n' Dirty" and "Slow 'n Dirty"

    --
    "UNIX" is never having to say you're sorry.
  402. Re:JFDI: The Process of Experience by PhilHibbs · · Score: 1

    (JFDI = Just F*cking Do It)

    Sometimes you need to drop all the fancy processes-control procedures and fall back on the JFDI methodology.

    But make sure you CYA as well.

  403. I feel your pain. by Anonymous Coward · · Score: 0

    I find it rare that my upper level management read old emails or looks at documentation to prove what quick and dirty strategy they have signed off on. Putting things like that back in the face of upper level managent within your own company (not outside consulting)can make you look very bad. Its very frustrating so I agree with this problem. Maybe my company doesnt have good responsible management?

  404. Q&D or ... by Anonymous Coward · · Score: 0

    Good, Fast, Cheap.
    Pick any two.

    That, I believe, sums it up.

  405. Egad! Glad I don't work there by Anonymous Coward · · Score: 0

    You're a student employee? I can assume that you don't yet have experience at other development shops then, outside of school.
    Honestly, the place you work sounds like an absolute nightmare for developers. But for that reason it might be a good experience to have, because you'll really appreciate more structured development shops in future jobs.

    No code commenting? What about documentation? Detailed design docs? Do you even use any change control or source code control?

    If that's the way it is, then I bet you guys work a lot of late nights and weekends. Most of what you're doing is either changing other peoples' code on the fly, trying to figure out who changed your code when it doesn't do what it used to, and not knowing what component A is even for, or why it was created-- because there's no documentation on it.

    It's great that they have set standards for method naming and variable naming, but are there standards for higher levels of design? For example, using well-known design patterns, object pools, that kind of thing?

    And most importantly, what about QA testing? Developers should only be doing unit testing and load testing... if you guys are doing QA testing (just making an assumption here), something is seriously wrong.

    The fact that the company was founded by CS PhD's is irrelevant. Being an expert in CS has nothing to do with knowing how to run a company, manage people, or creating a well-structured development shop (which mainly has to do with managing policies and people, rather than code).

  406. Welcome to the Real World by CERonin · · Score: 1
    Sorry, Ace, you took the Red Pill. Look, here's what I have learned:
    • 90% of everything is crap (Sturgeons Law). Than includes this post.
    • Of the "requirments" you are given, concentrate on the one's that will actually solve the customer's problem. The rest are political/cosmetic. Do you want a beautiful failre, or an ugly success?
    • Given the above, try to design your "bedrock/core code" 'the right way'
    • To many executives, the difference between "prototype" and "product" are the words "ship it". Avoid "public" prototypes if you can.
    • The first one is always crap (Mythical Man Month)
    • The second one you build will be even worse (Mythical Man Month)
    • use email to your advantage. If they make you do something that you disagree with, write a memo describing the various solutions to the problem. Give a copy to your boss (and whoever else you can distribute it to w.o. getting fired). Keep a copy. Then do it their way.
    • This is a bitter pill to swallow: It's their money, and if they want to put clown shoes on the Veanus di Milo it's their perogative (sp?)
    • Don't tell them everything if it truly won't hurt them. I was once told not to use XML for a parameter file. I said O.K. The only difference between my delivered paramater file and an XML file? "<?xml version="1.0"?>". Of course, I wrote the code that used the parameter file.
    • Never underestimate the value of a good API
    • Don't openly defy them, go around them if you can. Don't damage their authority. Discretion IS the better part of valor.
    • Remember, your job within your corporation is to make your boss look good. You're boss' job is to keep the jackals off your back so you can make them look good

    Gods, can you tell I'm over, uh, 35? Very few of us get to do it "the right way". Just try to do the most important parts "the right way". Remember to test. Remember to document. Pray a lot, even if you don't believe. It certainly can't hurt.

    --
    stirring the pot since nineteen mumblty mumble...
    1. Re:Welcome to the Real World by andy_geek · · Score: 1

      >> Of the "requirments" you are given, concentrate on the one's that will actually solve the customer's problem. The rest are political/cosmetic. Do you want a beautiful failre, or an ugly success?

      In case you haven't noticed, all-too-often a project's success or viability is tied in large part directly to those aforementioned "political/cosmetic" requir[e]ments. I'm just saying, if you're going to be all you-took-the-red-pill-so-deal-with-the-real-world- Ace, then the real world is like this: customers/clients couldn't give a flying fudgecicle how well code work - they want it to look pretty and Cover Their Assess politically. Above that, if it actually has functionality, that's gravy.

      Yeah, that's a cynical, under-informed blanket statement, but it's not too far off the mark. "Requirements" as a rule have much less to do with business rules and much more to do with animated GIF's, unfortunately.

      My two cents: keep the change.

      --
      "Don't matter how New Age you get, old age is gonna kick your ass." - Utah Phillips
    2. Re:Welcome to the Real World by CERonin · · Score: 1

      Us? Bitter? Noooooo, we're not bitter...

      Shoulda put a YMMV disclaimer on :) I came off Holier than Thou. After 20 years in the biz, I figured I could get away with it. (*Bzzzt* Thank you for playing!). Thank you for reminding me that this is "/."

      So, we're back to the question of how to balance Corporate/Political Necessity with Pride in Your Own work. I told you how I deal with it: tell 'em what you think the right way is, document it, and then follow orders. If the economy is tight (like it is now) document your decisions a lot. If the economy is good, find another job.

      And if you can do a good job in spite of the Pointy Haired Bosses, do it. And find a relaxing hobby...

      "Jeepers, if I can't look like Morpheus, can I at least look like Trinity... " The Kid
      --
      stirring the pot since nineteen mumblty mumble...
  407. Take the advice of someone who has tried. by Anonymous Coward · · Score: 0

    Do the Quick and Dirty. All the products Ive worked on Ive done Quick and Dirty. They arenot crap, but the code is messy and not properly commented. The only product I ever *DID* do properly took 10 years and by then nobody was interested. Q&D always wins. You can clean it up after (your boss) is rich.

    1. Re:Take the advice of someone who has tried. by pchasco · · Score: 1

      You should be ashamed of yourself.

  408. Get it in writing, and save it by ca1v1n · · Score: 1

    You need to get someone in marketing to sign something as part of the normal review process in your development cycle that has something like "Beta" or "Experimental" written all over it. If they refuse, you refuse to ship. If management has a problem with this, you can show them the working quick and dirty solution that marketing refuses to slap a "1.0" label on. Marketing is a proxy for your customer. Just because they're inside your company doesn't mean you should trust them any more.

    1. Re:Get it in writing, and save it by demian031 · · Score: 1

      don't worry about getting people to sign stuff. just get it in an e-mail, that's all you need. e-mails have been used in court, if your bosses are telling you to 'get it done' vs. 'get it done right', just get clarification in an e-mail and make sure they respond. its that simple.

  409. Quick not dirty by Anonymous Coward · · Score: 0

    I think that you can turn out a good product quick without having to go to dirty. Your processes should utilize as many tools as possible to make sure that the process doesn't impact the development but still gets good results. As an example using doxygen and mandating a certain amount of doxygen compliant comments be inserted in the code makes it very easy to mainain a system in the future by providing some explination of what is going on. Using a standard codeing format is also good for makeing a product that is easy to maintain. But the standard should be flexable and there should be tools out there that allow you to convert your less cooperative programmers ugly bracketing into a nice uniform code base. The other thing other than tools to help make a product that is quick and good is a good staff. A programmer in C or C++ should be at his fastest be able to pump out some real crap. But a good programmer is one that without taking to much time develop code that is more understandable and therefore a better product in the long run.

  410. but *will* they be there in 2 years? by gosand · · Score: 1
    I'd rather work for a company that's in business two years down the road, than work for a company that got lost in the dust.

    Who wouldn't? But what, in the long run, is better for the business? What is going to ensure that the company *is* there in two years?

    Yesterday I completed a 3 day class on the CMM (Capability Maturity Model) because my company is trying to get to level 2. Some interesting points - back in 1991, there was one company that was at CMM level 5 - IBM Houston, who was doing the Space Shuttle software. Now there are over 75 companies worldwide.

    Now, CMM level doesn't tell you how good your software is, but it tells you how mature an organization is. One very good point that the instructor brought up was that how mature an organization is really shows itself during stressful times. He also said that process improvement isn't the first priority of a business - the number one priority is taking care of business and the customer. I thought that was a very realistic way to look at things.

    But think of this: The poster wouldn't be asking this question if the quick-and-dirty solution was used only occasionally. If it becomes an SOP, then you and your company are in trouble.

    I tried to relate all the CMM info to Open Source projects. CMM isn't an engineering model, it is a management model. We know that OSS can be very well engineered, but the projects for the most part aren't very well managed. If you have a managed, repeatable process, you can project and plan things very accurately. That gives you credibility with your customers. Over lunch one guy pondered what CMM level Microsoft was at. I said they had no reason to get rated, because they don't have to answer to anyone. They don't need to have schedule credibility with their customers.

    The CMM was born out of the SEI and was mainly used by government contractors for years. The government put out an edict that they wouldn't consider anyone for a new contract unless they were at CMM level 2. So companies started getting evaluated. If you have ever been in a CMM level 2 or higher company, you know that things are pretty well-oiled. A lot of people think it is just red tape and management BS, but it can actually help you do your job if you let it.

    Hey, I guess I was listening in that class! :-) I know that CMM rating isn't a panacea, but a lot of people are complaining about the software jobs that are going to overseas companies. Most of those software shops are CMM level 2 or higher. If you have two companies that are pretty equal, and one has a CMM level rating and one doesn't, who do you think will get the project? It kind of reminds me of the car industry in the 70's/80's. Japan kicked our asses because we were sitting on them.

    --

    My beliefs do not require that you agree with them.

  411. Know what you are capable of 1st by Mr.+McD · · Score: 1

    I think the real question here is that you as company need to ask yourselves: "Do we currently have the skills in house to do this?" Too often, I've had bosses throw me into the fire on a project I had no business being on. For example, I ended up getting a crash course in Java, J2EE, Oracle, MQSeries, and Web Logic Commrce on an ecommerce system for a popular donuts and coffee chain. At the time, I was just a DHTML monkey. I was pretty psyched because I was going to be the JSP guy. 3 guys on the project, none with Java skills, let alone J2EE, and 1 month to do it in. The project got done by 2 of the 3 or us and was a 2 months late. Suprisingly, the company that I worked for, Type T, is now out of buisness.

    My point is that the quick and dirty approach seems to always apply when you commit to somehting is not your core compentency. In the case of Type T here, they should have NEVER said that they could do the job in a month. They didn't have the people to do it in the 1st pace. So no matter what, we were stuck with the quick and dirty approach. You need to put in about a month of learning Java, the how J2EE works, plus Oracle and Weblogic Commerce. Then once yo know that, youhave 3 weeks left to figure out you're going to get the shit done.

    The place I'm at now, we make an e-newsletter system that we resell. While I know it is morally challeneged, we do have some pretty good features and WE KNOW HOW IT WORKS. So when someone needs something extra, it's not difficult to do. Not only that, we can do it properly. However, we do have a similar problem to Type T: account managers sell the platform with features that it does not do. Then they wonder why it will take longer, thus force back into the QnD.

  412. I have a coworker who does this by NitsujTPU · · Score: 1

    You could always do like one of my coworkers does... take the glory, and then pin the blame on me when people ask questions...

  413. We've lost the concept of "prototype" by TheConfusedOne · · Score: 2, Interesting

    Frankly you can only spend so long designing a program the first time around. This is especially true if you're building it for a customer as they never really know what they actually want to begin with.

    So, you slap something together and you show it to them and say, "So is this what you were thinking about?" Usually they'll say, almost, but I want this different, and what about this feature, and why is that button over there...so on and so forth.

    Frankly I believe we used to call this prototyping. Now, in the real world it is easy to see that a prototype is a jury-rigged thing that will fall apart if you push it too hard. In the computer-world if the GUI looks polished than the program must obviously be done. :-}

    This is probably responsible for more things remaining Q&D than anything else. (Though some blame belongs with us programmers who don't always like doing the cleaning up work.)

    Maybe we need the graphical equivalent of duct tape on the prototype's GUI so people realize that it IS in fact a prototype. :-D

    --
    --- I wish I could hear the soundtrack to my life. That way I'd know when to duck.
  414. Meatball programming by Cnik70 · · Score: 1

    I'd have to say that 99% of the work I do is 'meatball programming' where we write up a quick program to take care of the immediate need (usually its a task to report on system functions or generate a summary of data) and then we go back and make it "look pretty" later when we are out of the crisis phase. I believe that this sort of task management solves more problems than a larger task force sent to research and then overresearch a problem. I've seen way too many problems grow into bigger ones mainly since someone was not willing to take the lead to solve the immediate problem now and worry about the landscaping later. Money is never made or saved by talking about it.

    --
    -Cnik
    1. Re:Meatball programming by jmcnally · · Score: 1

      Well put. Businesses are not in business to create works of art under the hood, they are in business to make money. The goal of a software development team is to put something together that solves the problem at hand --- the level of landscaping permitted should be a business decision based on the risks inherent in shortcuts (buggy code, difficulty maintaining code, etc.) and those inherent in landscaping (cost, missed business opportunities, etc).

  415. Consequences by Barleymashers · · Score: 1

    I am against quick and dirty, as stated it can get funding and results. My big hesitation is the statment 'assuming you get money later'-which in my experience never happens in my area. I have worked on several projects where features were done earlier in the quick and dirty way, after some period of time a new feature comes in that affects the earlier work. I knew nothing about the work and the person who did it had left. We had provided estimates and got the funding and now we went to do the work to find out that their was no documentation (just a shell of a high-level design). We had to suck it up and do alot of work to document the original feature first, and then do our requirements document. (yes--we should have looked in greater detail before committing to the project, but we thougnt the original developer followed the process and this was several years later). This has happened a few times, and was even more painfull we had to get to CMM Level II certification. We had to got back and document everything, and it was not the people who originally did the work who had to suffer. We are now being forced to go to III by our clients, and thankfully since we have stuck with the processes established getting level II it shouldn't be that bad. End result, I am for the process to be followed even if it seems to be more painful up front.

  416. No Way! by jaypifer · · Score: 1

    Regulations like quarterlies and annuals are the only reason I stay in the stock market. Hell, I'd be happy if the companies finances were totally transparent, not these trumped up, glossy marketing material with (as we've recently found out) criminally false numbers.

    The pressure put on companies to make every quarter look like they are financial superstars is purely internal. Quality companies are steady and make gradual income and gradual increases. Any investor who looks at a quarterly report and jumps to the "next best thing" is doomed to paying the government way more than his/her fair share. Companies that focus on stability and long term-growth will draw a crowd of investors that are more interested in the earnings of the company than in the price of the stock (since that's what drives it).

    Sorry for the almost rant, but regulation in this (public) industry is the only thing that keeps many of these companies barely on this side of morally upright.

    --
    Never go to sea with two chronometers; take one or three.
    1. Re:No Way! by DuckDodgers · · Score: 1

      The company I work for had a $30 million market cap and $9 million in the bank two years ago. Now it has a $200 million market cap and $50 million in the bank. We sell a good product, most of our sales are return business, and as far as the line workers know there is no corruption involved.

      The VPs and CEO still scramble like crazy to play all the games to inflate our figures, because every time they don't we get creamed.

  417. old code never dies by plcurechax · · Score: 1

    My development life was heavily influenced by my first job doing, as an in-house IS programmer, we had deadlines but no money value to these deadlines, although some were legal reporting requirements (i.e. taxes, census). Much of the work I did was to modify or update old code written by some anonymous previous employee. By dealing with the maintance of code that was from a year old to older than me, I learnt the important of maintainable code and started to take a longer term view of the software development process. Software doesn't stop at version 1.0, it is only really getting started.

    Since then I have had to untangle and update or maintain evil old code, from things like "never more than freshmen 1000 students entering", to "nobody will sniff the network", and hundreds of similiar assumptions that were no longer valid. I am leary of "Quick and Dirty" because these hacks can often outlive their expected life and will need maintance, yet these programs are expensive to maintain because to numerous bad assumption, numerous bugs, and lack of documentation and structure.

    I feel sorry for the submitter, he (or she) looks to be in a lose-lose situtation. Either he produces bad code, which have bad assumptions and cause grieve in the future, perhaps not to himself, but to whoever is responsible for support, or write the software correctly, and miss the deadline and risk his job. It seems that if Quick and Dirty isn't "successful" you also risk your job, and if "Correct and Proper" isn't successful you risk your job. Solution? Perhaps, find a more reasonable place to work. If you cannot make you current job a more reasonable place, with more honest and realistic expectations, look elsewhere. Working under those sort of lose-lose environment will not do your mental health any good in the long term, and the company or department will likely suffer in the long term anyhow when it repeatedly fails to met basic expectations of their customers, like producing a working product.

  418. Re:Passion is the key - if you're passionate, rele by Anonymous Coward · · Score: 0
    And, let's face it, if you're not happy with the code, it's probably not fit to be in the product.
    The problem is that unless you are the manager or project lead, you don't get to decide what stays and what goes. So this means that if you want to put quality in, you'd better do it from the start. The problem is that your manager doesn't care for quality code. He just wants something to give to his managers as quickly as possible so they can show the customer and get the contract before someone else does. What's the world coming to!?!
  419. Always do the correct thing! by LilMikey · · Score: 1

    What is success to a geek?

    Money, Power, a geek craves not these things.

    --
    LilMikey.com... I'll stop doing it when you sto
  420. From the monolithic corporation's point of view... by andy_geek · · Score: 1

    My big lesson in all this is that you can only do what you can do. Put another way, unless you're really passionate about the goals and ideals of your client/customer, don't sweat it if they want to do things in the silliest way possible. Your duty as a programmer/consultant/wonk is to point out where things might go astray and recommend going the other direction. But if The International House of Monoliths really wants to make stupid choices, hop in the boat and go down with the crew. Do not lose sleep over it.

    Of course, in academic or more-idealistic environments, you should feel free to die on every hill if you wish.

    Life's too short, friends. Think I'm gonna lose sleep because my latest client has chosen to ignore just about every Java best practice under the sun (under the Sun, even)? A resounding "heck no", I tell you! Think my managers will lose sleep when the time comes to fire my ass because the whole app has turned into the programming equivalent of Viet Nam? Lemme have a "heck no" from the crowd! I say, let 'em lay in their hastily-made and uncomfortable beds. Yes, it's demoralizing, but it's better to me than fighting with your customers/clients only to lose in the end.

    In acquiescence, there is bliss.

    --
    "Don't matter how New Age you get, old age is gonna kick your ass." - Utah Phillips
  421. Re:Passion is the key - if you're passionate, rele by coopaq · · Score: 1
    Never outshine the master.

    And never underestimate your coworkers jealousy.

  422. The easy answer: by aphor · · Score: 1

    Do the Q&D version TO THE LETTER of whatever precious little requirements documentation you can scrape into a manila folder. Press them to tell you in their own terms from their own perspective exactly what their expectations are. You must surrender your priorities and divine theirs. Enumerate them in writing and make them choose to agree, disagree, or ignore them. Only do good and right work where it is explicitly necessary to fit the requirements in whatever form they are written down.

    When they come back whining about what else they want (in the form of "you should have known to do this"), politely thank them for their new requirements (getting a statement of expectations is good), but remind them that new requirements make the sorting order of the old and new priorities ambiguous. Explain that you don't want to waste your time and their money doing things that are less important than other things which are more important to them.

    All of this communiction should happen as informally as possible while still retaining a record of what people said. A good rule of thumb is to refuse to conclude (officially acknowledge) any oral discussion of expectations/requirements without email. Try to start the discussion on email, and keep face-to-face discussions SHORT to limit their scope down to something which is trivial to reiterate in email.

    You must accept life in between the Q&D and good and right solutions. Be equally aware of the opportunities and consequences of both strategies in each moment. The better your awareness, the easier it will be to communicate those dilemmas to the customer. Tell the customer a choice must be made, and tell them your recommendations and reasons, but refuse to make those choices on your own. Doubtless your customer fails to understand the nuances of their own problems, you must be dillegent to help them understand as opportunities present themselves. Try to couch your presentation as a progress report: "We passed the last sticking point thanks to your direction, and we have arrived at a new fork in the road."

    --
    --- Nothing clever here: move along now...
  423. Re:Passion is the key - if you're passionate, rele by pmz · · Score: 1

    Clearing major changes with your cowworkers is generally a good thing.

    This is 110% true. A group of people who don't communicate is not a team. I've seen what kind of software is built when the team decomposes into people to don't talk to eachother. It is crap.

    Worse, are people who chase new buzzwords independently. That team is a non-starter, no matter how much money and PHB speak makes it seem otherwise.

  424. Easy by msheppard · · Score: 1

    It is usually easier to get forgiveness than permission.

    M@

    --
    Krispy Cream is people
  425. Moo by Chacham · · Score: 1

    You are not hired as a programmer. You are hired as a solution provider who happens to be a programmer. If they want quick and dirty, that is what you provide. Imagine you were a contractor, what solution would you provide then?

    As an interesting method to help yourself. Spend the few moments designing the solution. Then, implement it quickly. That way, portions of code can be rewritten better, without relying on defaults, and have proper error reporting and the like. But remember, the design is most important. If the design is quick and dirty, the code has no chance of long-term survival.

  426. Re:Passion is is a fruit by henchfel · · Score: 1

    Passion is another word that has become meaningless due to overuse and abuse by the marketroids and Madison Avenue. When I hear the word passion invoked these days I tune out because I know a sales pitch is coming. "At Staples we're passionate about paper clips!" Please.

  427. This is not as complicated as it sounds by Anonymous Coward · · Score: 0

    However, it takes immediate courage and alot of initial project planning documentation.

    1. Come up with a project plan:
    a) Document How, When, Cost and What of the best you can do in the expected ridiculous time frame (including realistic estimates of overtime).
    b) Document the same for the "right" way of doing things given that you have already done "a)". I.e. what % of "a)" is "re-usable" and how much time would that part take if you did not do "a)" at all.

    2. Present the whole thing for approval to Business (the pushers), the Standards Head(s) (the pullers), and your real boss (the guy who will end up taking the real heat).

    Note that approval is not of what to do but that they accept what you say (with the implied threat that they can go ahead and create and take responsibility for all of the details of the project plan, if they really want to).

    3. Get your boss to "ask" them to choose which combination of a) and b) that they want done. If you are asking this big question in the first place you do not have the executive authority to make the choice yourself.

  428. The dangers of over-engineering by Moeses · · Score: 1

    I've worked on a lot of projects where the requirements (mostly supporting business processes) change frequently. This happens because sometimes the client didn't know what they want, they didn't really understand their own business process or for their own reasons their business process has changed. In each of these situations the software must change.


    The key things I keep in mind are KISS (keep it simple, stupid) and not to over-engineer. Having studied CS and engineering in school I would try and identify similar functionality and factor it out, etc. Then due to changing requirements something would change for one part of the functionality that I had factored, but not for the other. I would have to undo all the factoring I'd done. In the end it would have been simpler to have similar code in 2 places, if the patterns are similar they will be easy to read and maintain.


    Now there certainly are times to really engineer a section of code, I've always known that, but I've learned when not to go overboard. There's no point in spending half a day to factor code that already works that very well may have to be undone a few weeks later. It's all about writing good-enough software because the code base is a living document, changing constantly in order to fulfill its role as a business function.


    There's a lot of other good comments here discussing situations and angles that I haven't and I agree with many of them. I just want to point out that it may be benificial to not consider some things you may have previously as Q&D, but rather as SIMPLE and GOOD-ENOUGH. Of course there are exceptions, but this is a lesson that I've learned that has really helped my productivity and ability to maintain systems.

  429. Pay me now or pay me more later... by dashing_cavalier · · Score: 1

    Why is it that there isn't enough time to do it right, but there's always time to do it over? When I was a consultant I witnessed many cases of do it now quick & dirty; hardly anyone wanted to take the time to do it right. Funny thing is that after all was said and done the projects that were done quick & dirty ended up costing *more* than the projects that were done right from the beginning, and took *more* time to finish. While I realize this is just my anecdotal evidence, I noticed that the leaders of the projects that ended up being completed on time and within budget spent more time up front negotiating clear requirements from the customers, planning and *thinking* about the architecture which produced a cleaner design, while the coders spent some time *thinking* about the code they were going to write before they began coding. Result? Better design, better code, less panic at the end of the project fixing design and code defects and adding in code for missed or misunderstood requirements.

    Besides, doing it right doesn't necessarily mean taking a long time to complete a project - how much time does it take to obtain clear requirements from a customer? How much time does it take to think through the goals of the project and technology involved? Not every project that's done right has to have everything completely specified according to the Rational Unified Process & designed with Rational Rose... Also, how many quick and dirty projects that crash and burn would it take to wreck a contractor's reputation? That will surely result in less revenue over the long term.

    --
    Meh.
    1. Re:Pay me now or pay me more later... by digitalunity · · Score: 1

      Laziness is a finely acquired art. Computer programming is very much related. The previous posts would make you think there is only two ways of doing things: Right and slow, or half-right and fast. In reality, there is a wide spectrum of correctness, all inversely correlated to the amount of time spent.

      My point is, you must find that perfect balance. You want to do it correct; at least to the extent that you don't have to redo it. That is the point at which the least time is spent on a project. If you have to come back to it, you didn't get it right the first time.

      Doing anything once, is always better than doing anything twice.

      --
      You can't legislate goodness. Let each to his own destiny, by will of his freely made choices.
  430. No Such Thing As Q&D by soundcore · · Score: 1

    There is no such thing a Quick & Dirty - only dirty. The best solution is to never tell the Marketing weenies about the 'quick' solution in the first place. You are the programmer damnit, do it your way. Otherwise they will *always* tell you to go the quick route then blame you later. This will continue ad infinitum until so much crap code and bugs build up that you can't ever straighten the mess out. you don't tell marketing how to do their pathetic jobs why should they tell you how to do yours? The clean and proper approach is *always* better because in the long run it *is* the fastest route. Never let anyone, especially someone who has never coded how to do your job.

  431. The Situation Dictates The Choice by holland_g · · Score: 2, Interesting

    Many other people have posted the same thing, but here is a real world example of when Quick and Dirty solutions are required:

    LIMA, Peru (Reuters) - Lacking the proper instruments, a Peruvian doctor at a state hospital in the Andean highlands used a drill and pliers to perform brain surgery on a man who had been injured in a fight, the doctor said on Thursday.

    "We have no (neurosurgical) instruments at the hospital. ... He was dying, so I had no choice but to run to a hardware store to buy a drill and use the pliers that I fix my car with, of course after sterilizing them," Cesar Venero told Reuters in a telephone interview.

    The patient, Centeno Quispe, 47, had arrived at the hospital in Andahuaylas, 240 miles southeast of Lima, after being hit in the head with a metal object in a street fight, Venero said.

    "I drilled holes in his skull in a circle, leaving spaces of 5 millimeters, took out the bone with the pliers and removed the clots that were putting pressure on his brain," he said.

    Andahuaylas is one of the poorest regions of Peru, a country in which more than half its 27 million people live below the poverty line.

    Venero, who earns $430 a month, said he had used tools from a hardware store on five previous occasions but for less serious operations.

    Quispe was making a good recovery in a hospital in Peru's capital, Lima. "

    --
    Holland
  432. There is one way to do things. The correct way. by grayantimatter · · Score: 1

    If you are doing the 'quick and dirty' to bring in money/profit for the company and its owners, with no monetary reward for yourself, then you're a fool. If there is not a direct profit, in my pocket, the 'correct and proper' is the only option ever presented. If they don't agree to 'correct and proper' then nothing happens. I refuse to endure the pain and misery of a 'quick and dirty' if the only tangible benefit is to make my boss richer. Heck, ESPECIALLY if the only tangible benefit is to make my boss richer, because the expectation is that 'quick and dirty' can and will be done every time, they (he) will pocket the profits, and I will stuck with the headache, pain and misery of managing and maintaining that 'quick and dirty' mistake for eternity.

  433. Well-engineered code is quicker (to write) by solprovider · · Score: 1

    To me, code that does not check error conditions is the primary attribute of "dirty" code. So "correct and proper" code would be longer if all you did was add error catching. But the "article" defined "correct" as properly documented, well engineered, process followed.

    As a consultant, my "process" is to talk to the client, sleep on it, write code, ask for clarification, sleep, write code, demo it while mentioning additional features that occured to me as I wrote it, repeat as needed, then deploy. I take notes constantly and comment code thoroughly. (Self-defense: I was brought back in 1997 to work on an application I had written in 1991.) I doubt this process is followed by anybody else, but I have yet to have an unsuccessful project.

    Design documentation happens during development. I cannot help it. I give functions and variables very descriptive names, such as "counter" instead of "i". I type my design notes as comments, then code around them, adding more comments anytime I pause to think. If there is anything tricky about the data store or the workflow, I add a note that describes how it works.
    - Instructions are added during the reviews with the users (demonstrations and training) because then I can see what needs more clarification. Most of the instructions appear where they are needed, rather than in dedicated "Help".
    - During a review to make certain that every application followed their guidelines, DuPont called me to ask where was the "Help" documentation for an application that had been in production for 16 months. I asked if anybody had complained or had difficulty using it, wanting to understand what needed to be documented. They talked to the happy users (salepeople, lawyers, and other office workers), and called back with "Nevermind."

    "Well-engineered" was the point of my earlier post. A little thought at design time can cut the total amount of code. On performance-tuning contracts, I have replaced hundreds of lines of code with less than 10 lines that function the same, except the new code does MORE error checking. The original code was the "quick and dirty" code written by less knowledgable programmers. It was more error prone, had to have taken more time to type, and needed more QA, which it had not received (which is why I was hired.)

    Maybe it is because of experience, maybe it is just my nature, but I cannot use any variable without checking its last use or automatically resetting it.
    - I also assume all input is bad. I usually work with Lotus Notes, which never guarantees a field is on a record. So my code always checks if each field exists before getting the value. The habit carries across platforms. I wrote a C program for Oracle data that had these checks in there. Yeah, they probably slowed it down a little, but my client was real happy when the DBA did an "upgrade".

    ---
    C requires much experience in the programmer to be able to catch every possible error. I love its ability to work directly with hardware, but it is a major pain to write code that deals with every possible case. I usually add comments with every function stating what cases are not handled by the code, but this depends on programmers reading the documentation. This is why I prefer Java (today): I give up some control, but development takes less time since more possible bugs are caught during compile. (And you can decompile and read the Java code of commercial products when they do not work as expected. Decompiled C is not much fun.)

    Java has the throw->try-catch-catch so that the compiler knows when the programmer was unable to deal with a particular case. It means that programmers who are writing code for reuse can tell later programmers when something is not handled. It beats the documentation method, since programmers can write code knowing the compiler will yell.
    - Rarely, the "error" does not matter. An example is an InterruptedException in the middle of a loop that is waiting for another process to finish. T

    --
    I spend my life entertaining my brain.
  434. Survival of the fittest by pchasco · · Score: 1

    Yes, it is insensitive, but it is fact. Why should I give up, say, 15% of my annual income to feed some poor homeless, my bad, "Disadvantaged" people that I do not know or care for. They are not my responsibility.

    Consider the original social system. The wild, before civilization. If you couldn't go out and get your own food, and create your own means alone or with your pack then you died. Simple as that. But now, that is not acceptable. If you can't provide for yourself, then I have to provide for you.

    In any society, there are going to be homeless people and others who cannot or will not provide for themselves. They will expect everyone else to provide for them. And in the the USA, as long as they can vote someone will reach into my pocket give it to them.

    In my limited knowledge, I think that the USA is as close as we are ever going to get to the way it should be. Just keep voting republican lol. Oh, and even though I am a republican the S11 bill still sucks.

  435. What about someone else's code? by keith73 · · Score: 1

    I started work at a company 6 months ago. The guy who wrote the original application finally left after months of problems. His code is HORRIBLE! apparently he used to belittle everyone else and tell them they were wrong. If I showed you his code and gave you his web site address, you could all go bash him, but I can't show the code for disclosure reasons. He did some of the most retarded things and it takes me 3-6 hours to make a simple change to the code. So now, everything has to be done quick and dirty, because the existing code is so bad. Since the day I first got here I've been trying to get the powers-that-be to allow me to re-write the code. Finally we were given permissions and myself and 1 other programmer are working on that now. It took quite a bit of arm-twisting to do it. Sometimes, even planning it out does not equal clean & proper.

    --
    -- Does anybody know where the 'any' key is on the keyboard?
  436. Re:Passion is the key - if you're passionate, rele by drunk_as_in_beer · · Score: 1

    I do things quick and dirty, so I have plenty of time to post on Slashdot.

    --
    --Drunk as in Beer
  437. Re:I think for the few truly excellent programmers by Beliskner · · Score: 1
    If you keep hitting them with the idea that you consider the quick-and-dirty version to be just a prototype
    Unfortunately, what happens nowadays is the contract goes to the company with the salesman that says, "Yeah, we've finished the software, we just need 30 days for minor tailoring to your needs and business presentation standards so that it fits seamlessly into your software ecosystem" or other such crap.

    Then you have 30 days from scratch, which cannot be extended. In economics it's called "Race to the bottom"

    --
    A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
  438. Executive Pressure Is Where It Starts by DougThews · · Score: 1

    I've been manager on too many dev teams where there's too much pressure from the executives about skipping what I call the fundamentals of good software development.

    The problem is that most executive "committees" go off and arbitrarily decide ideas, goals, and release dates without even consulting the technology people (and no, a CIO usually doesn't count because their too far removed from the real work). So, the end result is "here's what needs to be done, and we need it by ". Thus begins, the move to quick & dirty - because your job is on the line (how many times have I heard that one before?). My Link on IlluminatiLand

  439. Open source == better code? by Anonymous+Brave+Guy · · Score: 1
    Think about it--why does the Open Source model produce better code?

    You haven't been keeping up on current events, have you? :-)

    The first study you mention, and its conclusions, were obviously flawed in several ways, as the discussion here and elsewhere pointed out at the time. The new Reasoning study, currently under discussion elsewhere on Slashdot as well, finds rather differently, though apparently still suffers from several of the same flaws as the original, and thus has to be taken with the same pinch of salt.

    I agree with you that communal development projects, such as much of the Open Source world, tend to attract a certain type of developer, whose motivation and skill level may be higher than average for a number of reasons. However, since many of these guys are also professional developers during the day, and still have a good attitude and skillset then, it doesn't follow that Open Source necessarily produces better code than an equivalent closed source offering.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  440. Engineer, Don't Hack by Anonymous Coward · · Score: 0

    If it all possible don't hack some code together by trying to code as you go, engineer it! Proper documentation for a project before coding starts will make the coding orders of magnitude easier. Put another way, do a lot of thinking and a little coding.

    Get the projects requirements, do an initial evaluation of the time to implement each feature, look at the schedule and decide which features you want to include in the next release. Once that's done, you can generate more detailed specifications for the features and do another round of estimation and eliminate more features if your initial estimates were off. Read Kent Beck's Test Driven Development, Tom DeMarco's Structured Analysis and System Specification, the XP series, Edward Yourdon's Death March and Fred Brook's Mythical Man Month for starters.

    If there's not enough time to do everything, then don't bite off so much work. Do not attempt to get more features done by sacrificing documentation and critical thinking. You'll quickly have an application that is a total mess; lack of consistent style, just flat out bad approaches being taken, highly coupled and not very cohesive code, improper use of APIs, concurrency issues, etc. Keep in mind that not all bugs are easy to fix, especially if you can't reliably reproduce the problem (think concurrent programming).

    Also, I see a lot of people speaking as if the only value code has is sale value. From what I understand, most code is written to be used internally (use value). This makes proper engineering of an application all the more critical.

  441. The need for architecture by cait56 · · Score: 1

    There are aspects that can be evolved, and some that can't. XP, as championed, seems to work when the fundamental architecture of the system is either inherited or otherwise done outside of the XP process.

    A quick analogy from building construction:

    • Traditional methodologies have wanted to overspecify the building before allowing construction to begin. But there is no need to know where every office going to be, and where the whiteboard will be placed relative to the desk before you start laying the foundation. (I heard this analogy first from Ed Yourdon in the 70s).
    • The "non-methodology" "results oriented" / "project driven" approaches, in contrast, won't waste any resources on analyzing the need for a basement until the second floor is finished. After all, the second floor is more important to the customer.

    A good architectural design ensures the greatest independence between components, while allowing identification of the critical supporting infrastructure. With the building analogy, I can make the floor a "component" so that I now only care about how much total weigtht, the range of power/water/heat consumption that it is allowed to have, amount of traffic it will generate, etc. That way you can design stairs, supports, elevators, power conduits and plumbing. Interior Walls, lighting and carpeting are all details.

    There is a similar need in a system to be built with distributed components to correctly identify the fundamental infrastructure issues. If you mis-identify details as being architectural, you'll bog down the project. But if you dismiss fundamentals as details to be dealt with later, you'll be soon thrashing yourself against those fundamental barriers.

    My evaluation of XP remains that it fails to address identification of fundamental architectural issues. But in its defense, the chaos method shoots the messenger for even mentioning them. And chaos is the dominant methodology deployed today.

    1. Re:The need for architecture by dubl-u · · Score: 1

      There are aspects that can be evolved, and some that can't.

      And which would those be?

      And can you prove that they're impossible to change? Or are you only saying that you don't know how to change them and that you doubt anybody else knows either?

  442. Donald Knuth? by Haeleth · · Score: 1

    There must be others, as well...

  443. I like kittens. by Anonymous Coward · · Score: 0

    Actually, there'd be an increase in content. You can't go wrong with kittens. Can we have tiger cubs mauling Teletubbies too?

  444. Always improve your code by MattFlower · · Score: 1

    All code you write should be 100% about maintainability.

    Quick and dirty is never really the way out. But not being "quick and dirty" shouldn't always mean a 10 week programming experiment in order to make the "correct" solution though. There is a happy midpoint that you should be striving for.

    Focus on making the code that you write intentional and well-purposed. You should always write the simplest code that gets the job done. Don't make every task an opportunity to show off the big brains. In the end you'll just end up having to maintain the code that you write. By writing the simplest code possible, you'll make your code easier to read and easier to maintain.

    Simple means that the code is well laid out. It should use patterns that you should have learned in your free time. It should use the best architecture that you know. Sometimes you will have to venture into unknown territory and try some new algorithms and some patterns that maybe you haven't used. Do that sparingly though. You never want to introduce instability into your system by having too many "unknown variables".

    If you aren't a good programmer yet, you can learn a lot by reading code -- lots of it. This doesn't mean that other code is better. You'll have to figure out whether it's good by using brainpower. Other code will expose you to ideas you haven't considered yet. Trying a second (or fifteenth) language will help to broaden your horizons. Try taking on a side project at home for a while. If you are a web guy, try doing something with a UI. Diversity will help bring in new ideas.

    Read voraciously. Tackle the seminal books on Object-Orientation, Refactoring, and software engineering. Branch out in new directions and read about Aspect-Oriented Programming. Most of all, keep your head screwed on and figure out why to use those technologies.

    It is very important to be able to rationalize the decisions you make when you program. When you have a rationalization, make sure you write it down. Put it in comments in the code, but perhaps keep a journal too. I find lots of ideas I had forgotten just sitting in my journal.

    Eventually, you may find that you will have to upgrade the algorithms that you originally wrote to be smarter and to take advantage of something you didn't have time to consider originally. This is a good change if you have written good code to begin with.

    Finally, work in a place where you believe everybody is smarter than you. Always be the "dumbest guy" and work hard to become the smartest. Working with smart people will challenge you to be your best. Avoid the swagger of a programmer early in your career. There is a lot to learn and just maybe someone else might have something to contribute to your desire for world domination.

    How does all this correspond to your question? Maybe nothing. It was hard to tell how much experience you really have -- I just assumed you were new or maybe that you hadn't worked with a lot of good people. Being a good programmer helps to sort these things out in some cases.

  445. Incorrect assumptions by Lil'wombat · · Score: 2, Insightful

    The basis for your question is your belief that the quick solution will bring in the revenue/land the contract/ whatever.

    I think that assumption is wrong and here is why:

    Outside of new economy / dotcom era, things really don't move that quickly in the business world. I work for a fortune 300 company and we are lucking to make a decision about anything less than 60 days. I used to do government contracting and that was 1-2 year contracting sales cycle.

    Bottom line if your customers are existing/established businesses, then there are rules in place to prevent anyone from spending lots of money quickly. So time is always really on your side. Even when sales and marketing say that something is a done deal, its a go, we starting right now, it will probably be weeks before contracts are signed and checks cut and expenses authorized.

    Stop believing the lie that everything has to happen NOW, NOW, NOW.

    And ask your self, if the sucess or failure of your company is dependent on feature X being availble right now, why wasn't that identified long before this crucial moment? Whose doing the product development? Who is gathering requirements in advance of customer need? If your customer base is still in the fast and furious mode are they long for this world? If your company doesn't have a long term plan and is just reactionary are they long for this world?

    --

    Truth: If it's not one thing, it's another

  446. Triangle of Quality by Anonymous Coward · · Score: 0

    Well, there's the old "Triangle of Quality" - "Fast", "Cheap", "Good". Pick any two.

  447. Quick and Dirty Wins Every Time by MrWizard510 · · Score: 1

    It's a reality that people don't know what they want until they see it. Thus, closely following strict standards can slowly get you something that they (your customer) will want to have fixed, even if it is exactly what they SAID they wanted in the first place -- Where a Q&D approach will more quickly get that first product -- which still needs to be fixed -- out the door to them. The Extreme Programming technique tries to address these limitations, and they have some successful approaches which are very slowly being adopted. But in my experience in several software engineering areas -- NASA, IRS, Transportation Systems -- Q&D wins.

  448. The Ten Women Problem by Anonymous Coward · · Score: 0

    Here in the Valley, we play this game.

    Two men stand at a busy street corner and watch the women go by. One of them is it.

    For each woman that passes, he states immediately, before another one passes, if he would like to spend the rest of his life with her on a deserted island. He picks her.

    Rules are:

    • You can't say "I pick the one before this one".

    • You can't skip women for any reason. 90 year old crones are still women.

    • If you don't pick the first nine women that pass, the tenth one is automatically picked for you.

    Same goes with software. "Do I do release early and buggy/poorly designed, and capture market share, or do I do it right and risk being beaten to the market?

    As in the game, there are no easy answers.

  449. Re:Passion is is a fruit by ralphdaugherty · · Score: 1

    Passion is another word that has become meaningless due to overuse and abuse by the marketroids and Madison Avenue. When I hear the word passion invoked these days I tune out because I know a sales pitch is coming. "At Staples we're passionate about paper clips!" Please.

    It was appropriate as used here concerning one's own software development. Great software is written with passion.

    rd

  450. QuicknDirty:CorrectnProper:: by Sanga · · Score: 1

    DotCom:ResearchLab

    (or)

    StartupWithCash:OldCompanyLoosingMarketShare

    (or)

    excitingJob:excitingProduct

    You have to find out which side of the industry is hiring.

  451. Killed dead by Anonymous Coward · · Score: 0

    I work in the building industry as an Architect, but have also done some programming. I deal with issue all the time in buildings. There are 2 types of decisions in design, those that are critical and those that aren't. Without a solid structure the building falls down. Without solid detailing the building leaks, rots and is drafty, and hardware breaks. The color paint is highly flexible. Lucky for us we have 6000 years of building industry experience to back us up. If your goal is masterful performance, every facet must be considered and you need to hire expert craftsman. If it is utility, then pull standard tried and true ideas off the shelf and make them work in extremely obvious ways, so that anyone can pick up a tool and build it, no funkyness allowed. Build according to your needs and remember not everyone is a craftsman, or a grunt.

    Unlike in programming, people die if I make a critical error. Also, unlike in programming, performance failure is an open ended, and unlimited legal liability. In the case of negligence, I am personally liable and can have my car and house seized to pay damages.

    I also am expected to do things quick and dirty! The only way to make this work is with a clear chain of command, clear expertise, clear product goals, clear budget, clear functional requirements and teamwork. It isn't up to the contractor (or the programmer for that matter) to change the design intent. It is his job to get the job done exactly as directed, because any change to the plan could be a disaster in any large or complicated project. If he is making decisions on his own, they should be decisions within a clearly defined scope, and restricted to his expertise. Contractors always try to do things quick and dirty, I expect this, sometimes demand it, but they are always held to a standard. If they don't like my standard, they shouldn't have bid the project. If they deviate, sometimes they get away with it, sometimes I don't notice, but if something major breaks, they have to fix it until I am satisfied or they hear from a lawyer. It is brutal when things go badly, that is why the people in charge need to stay on top of things, and the people doing the work need to stick to the plan.

  452. Maybe if... by voxel · · Score: 1

    If you were a better programmer you could do it QUICK & PROPER... Oh what a concept.. Learn to code.

    --
    Modesty is one of life's greatest attributes
  453. What's the problem?! by Anonymous Coward · · Score: 0

    I don't know what the problem is. At my job everything is a work around/quick fix. We have work arounds for work arounds to work around the work around that's causing a problem with the work around and then we'll quick fix it later. Despite our arguments nobody seems to care, they just wanted their program yesterday so we do what we can.

    Given the choice we'd follow a procedure and document, but that's not really optional at the moment.

    1. Re:What's the problem?! by Mr+Muppet · · Score: 1

      I know that feeling well!! Our Managing Director has a habit of ringing from home on a day off, asking for something, adding "but it's not urgent" at the end of the conversation, and then booming "why isn't it done?" if we don't do it by the next day.

      Therefore, in order to get it done, we do a quick job. We avoid getting complained at, and if he ever says "why wasn't it done properly" (although it's not like he can actually read our code), we'll say that we weren't given enough time! Voila!

  454. You're looking for an excuse not an answer by Moe+Taxes · · Score: 1

    It absolutely does not take more time to write good code than it does to write "quick and dirty" code. What it takes is professionalism and pride in your work.

    What does it take to refactor instead of copy and paste? You have to be confident in your abilities; you have to be determined to be proud of the work you produce; you have to be fearless; you need to test your work; and maybe you need to spend 10 minutes and some brain power that will save some maintenance programmer hours down the road.

    If you need inspiration read Martin Folwer "Refactoring".

    If you write in Perl just ignore this post, there is no hope for you.

    --
    It took a real world war to end the airplane's patent wars. - Fâché Rouge -