Thread: Horrors of War

  1. #1
    Malum in se abachler's Avatar
    Join Date
    Apr 2007
    Posts
    3,195

    Horrors of War

    So I'm working on this project. Its not huge, about 4000 lines of code, but It started out as one thing, and has been and gone through several different states of being since then (feature creep with overtones of we had to figure out how to do the thing it does in the first place). There is a lot of code that is no longer executed, some that executes but whose output we really dont use anymore, and its basically one F-Huge blob of sphagetti code. Well, I suggest a rewrite and a new approach today that will eliminate this happening in the future, and wouldn't you know it, the boss was ........ed because I guess he was expecting the project to be finished this week or something based solely on the fact that the customer is coming to see the project because he promised them it would be finished despite the fact that I urged him NOT to have them come up until we had it finished and tested.

  2. #2
    Kernel hacker
    Join Date
    Jul 2007
    Location
    Farncombe, Surrey, England
    Posts
    15,677
    Yeah, that sounds familiar, sort of.

    Hope you can resolve something - perhaps you can explain to the boss that the prototype you have now is not a commercial quality product, and your boss can "Manage the customer expectations".

    --
    Mats
    Compilers can produce warnings - make the compiler programmers happy: Use them!
    Please don't PM me for help - and no, I don't do help over instant messengers.

  3. #3
    Malum in se abachler's Avatar
    Join Date
    Apr 2007
    Posts
    3,195
    Yeah, the problem is the customer AND the boss have no clue about software development. An application like this generally involves about 100 man years, and they are getting testy because 2 guys (the boss and myself) have spent 8 months on it. The bosses previous experience has been a few Labview applications and some simple C/C++ class based algorithms.

  4. #4
    Devil's Advocate SlyMaelstrom's Avatar
    Join Date
    May 2004
    Location
    Out of scope
    Posts
    4,079
    Quote Originally Posted by abachler View Post
    An application like this generally involves about 100 man years.
    100 man years for 4000 lines of code? O_O

    That's a pretty complex project.
    Sent from my iPad®

  5. #5
    Jack of many languages Dino's Avatar
    Join Date
    Nov 2007
    Location
    Chappell Hill, Texas
    Posts
    2,332
    So, show it as a prototype and explain that if they took it now, they get code that is not done cooking. Doesn't sound like it's your problem - it's the Boss's problem.
    Mainframe assembler programmer by trade. C coder when I can.

  6. #6
    Malum in se abachler's Avatar
    Join Date
    Apr 2007
    Posts
    3,195
    Quote Originally Posted by SlyMaelstrom View Post
    100 man years for 4000 lines of code? O_O

    That's a pretty complex project.
    The assumption being that it owudl be more than 4000 lines when finished. So far we have 16 man months. But truthfully, not all of that time has been spent on just this application, so the real figure is probably half that.

  7. #7
    Devil's Advocate SlyMaelstrom's Avatar
    Join Date
    May 2004
    Location
    Out of scope
    Posts
    4,079
    So your boss assumes you're finished... and you estimate that you're approximately less than 1% complete? Are you planning on consisitently scrapping the whole project and starting new every few months? I think I'd leave that one out of next year's PMO.

    I don't want to leave any assumption that I've had any experience working on large scale projects. In fact, at the prime age of 21, my professional experience has yet to move outside of Visual Basic, SQL, and a little Perl. (¬_&#172 I'm sure there is a lot of planning that needs to take place (and hasn't) and plenty of revisions that need to be done (and haven't)... but surely the project time estimations of the two developers should not be that different. At the rate you appear to be moving, unless your manager decides to put two dozen or so more software developers on the budget (not to mention a massive amount of overtime)... your software will likely be well past obsolete by the time you finish. (if you finish)
    Last edited by SlyMaelstrom; 02-19-2008 at 12:00 PM.
    Sent from my iPad®

  8. #8
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    "May you live in interesting times."

    Chinese wisdom never ceases to amaze me. But alas, such is the life of a programmer...

    After years of slavery, I finally broke free. Can you?
    There should be 24h helplines for programmers, I say!
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  9. #9
    Malum in se abachler's Avatar
    Join Date
    Apr 2007
    Posts
    3,195
    Quote Originally Posted by SlyMaelstrom View Post
    So your boss assumes you're finished... and you estimate that you're approximately less than 1% complete? Are you planning on consisitently scrapping the whole project and starting new every few months? I think I'd leave that one out of next year's PMO.

    I don't want to leave any assumption that I've had any experience working on large scale projects. In fact, at the prime age of 21, my professional experience has yet to move outside of Visual Basic, SQL, and a little Perl. (¬_¬) I'm sure there is a lot of planning that needs to take place (and hasn't) and plenty of revisions that need to be done (and haven't)... but surely the project time estimations of the two developers should not be that different. At the rate you appear to be moving, unless your manager decides to put two dozen or so more software developers on the budget (not to mention a massive amount of overtime)... your software will likely be well past obsolete by the time you finish. (if you finish)
    I woudlnt say 1%, and I'm nto scrapign he project. What I proposed was a rewrite to put the project into a more manageable modular configuration. I think we are basically over half done, but far from finished.

  10. #10
    Devil's Advocate SlyMaelstrom's Avatar
    Join Date
    May 2004
    Location
    Out of scope
    Posts
    4,079
    Quote Originally Posted by abachler View Post
    I woudlnt say 1&#37;, and I'm nto scrapign he project. What I proposed was a rewrite to put the project into a more manageable modular configuration. I think we are basically over half done, but far from finished.
    Well, I guess the lesson learned here is to be modular from the beginning. Programming is hard and I'm sure I'd find myself in the same situation that you have. At least, try to salvage what good you can get out of what's been done and put it into a more modular frame. Don't try to sell it to your boss as a re-write... sell it as "improvements in stability" or something sugar-coated to that extent. He's gonna try to blame you for this when the customer isn't satisfied, so you don't want to ........ him off more than you have to.

    Regardless... consider that your client has no knowledge of software and does not know what your application is fully capable of, you can probably sell it as doing more than it actually is if you know how to phrase things correctly and make it shoot some pretty lights here or there... I'm sure it won't be as bad as you may be thinking.
    Sent from my iPad®

  11. #11
    Registered User VirtualAce's Avatar
    Join Date
    Aug 2001
    Posts
    9,607
    If the code works then don't worry right now about it's super uber elite C++ 'ness. Just get it working and the boss will be happy even if you are cringing all along the way. Later on in future projects you can modularize it and make it 'prettier' even if it adds next to nothing to the actual program.

    I'd say it's a bit late in the dev phase to think about re-writing it. You essentially are saying you started with a poor design, built upon it, and now you want to fix the design? That entails much more effort at this stage of the game that may or may not be worth the fuss.

  12. #12
    train spotter
    Join Date
    Aug 2001
    Location
    near a computer
    Posts
    3,868
    Does the app meet the project scope (ie does the code do what the requirements docs specify to has to do and without crashing?)

    If so ship it.

    Learn from the mistakes (*) and pay more attention/time to design next project.

    I endevour to ensure each app I write is better than the last one. I do this by learning something from each app (even if that is not to ever take that approach again..).

    If I went back and applied this new knowledge to every app I have ever written, would never get to write another app.....

    [* It is only a mistake if you make the same error again, the first time is a learning curve.]
    "Man alone suffers so excruciatingly in the world that he was compelled to invent laughter."
    Friedrich Nietzsche

    "I spent a lot of my money on booze, birds and fast cars......the rest I squandered."
    George Best

    "If you are going through hell....keep going."
    Winston Churchill

  13. #13
    Malum in se abachler's Avatar
    Join Date
    Apr 2007
    Posts
    3,195
    Quote Originally Posted by Bubba View Post
    If the code works then don't worry right now about it's super uber elite C++ 'ness. Just get it working and the boss will be happy even if you are cringing all along the way. Later on in future projects you can modularize it and make it 'prettier' even if it adds next to nothing to the actual program.

    I'd say it's a bit late in the dev phase to think about re-writing it. You essentially are saying you started with a poor design, built upon it, and now you want to fix the design? That entails much more effort at this stage of the game that may or may not be worth the fuss.
    Well, the project started out as a simple video display application that woudl directly parse and convert motion JPEG. That was all the project was billed as at the start. So when i wrote it I didnt feel the need to over complicate it by makign a modular design. It started as maybe 100 lines of code so what would be the point. Well, after I finished that the boss springs the big banana on me and explains what the project is going to do, which still wasn tthat big a deal. I mean I had to break teh project into seperate .cpp files but that was it. Well, after we implemented his original method it turns out that while the program ran beutifully and executed his algorithm, the algorithm itself was flawed and didnt produce the results he wanted. So we mostly changed the algorithm keeping a few parts that worked. Again it ran great but the algorithm wasnt effecive. So this gets repeated about 12 times and you end up where we are and the architecture is so mangled that implimenting each new algorithm becomes more and more convoluted. Hind sight is 20/20 and had the algorithm we are tryig to impliment now been the first one we tried there ouldnt have been a problem, but the intermediate steps, with some of the code kept some deleted and some just not executed anymore has left it a mass of spaghettified flop sweat.

    Oh and forget about the design document, there isnt one, and the last time I asked for one is the last time I will ask for one.
    Last edited by abachler; 02-20-2008 at 11:54 AM.

  14. #14
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    Quote Originally Posted by abachler View Post
    Oh and forget about the design document, there isnt one, and the last time I asked for one is the last time I will ask for one.
    Of course, there isn't one. You were the one that started the project and didn't define/request one. You decided there wouldn't be the need to re-equate the project in the future and went on doing something that suited your immediate needs.

    Later you were told there was something more to it. Fair enough. That annoys anyone. But instead of taking the hint and starting fresh, you ended up in a snowball of code patching due to you not meeting the requirements that ended in this.

    I'm sorry, but I only see you to complain about. It's ok though. We all commited the same mistake... several times.
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

  15. #15
    Malum in se abachler's Avatar
    Join Date
    Apr 2007
    Posts
    3,195
    I hate to admit it, but I have to concede that it was my fault. I have been programming for years, but this is the first major application I was on and like a fnub I screwed the pooch. Going forward I will make sure to get a requirements document up front and hold the customer and the boss to it unless there is a documented revision. By default I will make the applications modular so that those parts that may need to be modified and are specific to that application will be physically seperate from the project specific elements.

    Do you guys have any other suggestions on how I can avoid this in the future? Any constructive criticism is welcome.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Project Sangheili: The Real World War (Game)
    By -=RM=-Shadow in forum Projects and Job Recruitment
    Replies: 0
    Last Post: 03-31-2005, 02:40 AM
  2. Recent Death Syndrome
    By Aran in forum A Brief History of Cprogramming.com
    Replies: 17
    Last Post: 03-29-2004, 06:51 PM
  3. War with Iraq - Read this article if you're interested
    By Davros in forum A Brief History of Cprogramming.com
    Replies: 4
    Last Post: 01-26-2003, 12:10 AM
  4. Why do countries go to war?
    By DavidP in forum A Brief History of Cprogramming.com
    Replies: 11
    Last Post: 10-11-2001, 09:32 AM
  5. No More Technology After World War Three
    By Unregistered in forum A Brief History of Cprogramming.com
    Replies: 16
    Last Post: 09-20-2001, 07:02 PM