• iusto (unregistered) in reply to JamesQMurphy
    JamesQMurphy:
    pcsc:
    A responsible person would give them two (or more) options, 'I'll do what you need now for $x and it'll be expensive to make further changes or I can rewrite it for you now for n * $x and it'll be more reliable and cheaper to make further changes'. The customer will nearly always pick the cheaper option, in which case all you can do is do the best job you can and try to leave a slightly less bad mess for the next person...
    Is that really responsible? Here's how I see that playing out:

    You: I'll do it for X, or I'll do it for 2*X and it will be cheaper to make further changes. Customer: Here's X, just do it. You: Ok.

    Months later... Customer: Please change something? You: I'll do it for 4X. Customer: Why, it only cost X last time? You: Remember what I told you? Customer: Aw c'mon, I've seen you guys work miracles before. ---or--- Customer: I don't like your attitude. What are you trying to pull? I'm paying X and that's final.

    If you're lucky, your boss will back you up. But I've seen, more often than not, bosses cave to the customer and you'll wind up incurring more techincal debt.

    What about something like "I could do it for 2X now, but then it'll cost 2X every time, or I could do it better for 4X now, then it'll only cost X for similar changes after that?"

    After all, if you already did it for one price, it's only natural that they'd expect you to do similar changes for the same price the next time...

  • MrOli (unregistered) in reply to Bob
    Bob:
    MrOli:

    You're in a position of trust. You quote your customer on what it will take to get the job done properly. Doing it right and finishing the job properly will cost 10% of what it will cost to build something unmaintainable.

    The customer is as educated as you make him. Not understanding your job doesn't make him 'stupid'. If he understood your job, he wouldn't need you. Do you understand how to wire a house?

    I see you've learned nothing from Alex's examples of others' mistakes. The attitude of 'get it done quickly, don't rock the boat, don't manage the project or expectations properly and get the fuck out of there as soon as possible' gives us all a bad name.

    Makes me wonder if you're an academic. Let me tell you how it works in the real world:

    1. Customer asks for something.
    2. You tell them you can do it "The Right Way"(tm) and save them enormous amounts of money later, but it will take a few days longer than the quick-and-dirty approach that they will ultimately regret.
    3. Customer informs you that they want the quick-and-dirty approach, because they need it now.
    4. You carefully explain why "The Right Way"(tm) is what they really want, because they will forever regret opting for the quick-and-dirty approach.
    5. Customer informs you that you have convinced them that "The Right Way"(tm) is better, that it will save enormous amounts of money, and that it is the choice that they should make...except they need it now, so they'll take the quick-and-dirty approach instead.
    6. You crawl back to your cube and start coding up a shameful hack and hope your mother never finds out what you do for a living.

    Sure, there are the "don't rock the boat" folk who would just offer the quick-and-dirty solution to make life easy for themselves, or simply because they don't know any better. However, there are others who do make the effort but still fail to get it done "The Right Way"(tm).

    Who is right and who is wrong? It depends. Sometimes there is a justification for the quick-and-dirty approach. Sometimes you need to hit a deadline in order to make a sale; if you don't make the sale, then it doesn't matter if you did things "The Right Way"(tm) or not: you are out of business. On the other hand, sometimes managers just like to wave Gantt charts about and tell their superiors that they can do things faster and cheaper than some other guy. They don't want to hear the arguments for doing it "The Right Way"(tm). Just like the bankers, they take big risks to make themselves look good in the short term. They expect they'll be promoted and the problem will come back to haunt the next guy. They can always blame it on the technical team for not convincing them to do it "The Right Way"(tm). This is where a paper trail comes in handy.

    I think we're both arguing the same point. One of the joys of the internet, where everyone is trying to be more right than the other, or at least shout louder.

    I'm not an academic. I was, about ten years ago.

    I write systems for several clients where there is always a balance between the amount of cash available to invest and what they need right now. The clients are very tight.

    One of them has a horrible Access system hanging off a horrible schema. We're replacing their system bit by bit and doing it properly and in a maintainable manner.

    The old system is well past its prime due to them outgrowing it in every sense.

    Our bits of the system become dated due to changes in process. Reports need rewriting and some subsystems need improving.

    The client is gradually waking up to this and investing, whilst we move them towards the system they should have bit by bit, using an Extreme Programing model to give them just what they want, but with some scope for future growth and some mind of potential future story implementation.

    Sure, there are some hacks. There are always hacks. There are always shortcuts. My point in this whole discussion has always been simply: stay idealistic, keep pushing your client, make the hacks but keep them documented, keep a mind towards them and refactor them out as soon as possible.

  • JimmyVile (unregistered) in reply to CaRL
    CaRL:
    Gary Niger:
    CaRL:
    Kevin:
    CaRL:
    $ sed -f editscript -i *
    In MS Access?
    The "sed" command is available for free on every major platform: Linux, Unix, OS X and yes even Winblows.

    [] You are aware that MDB files are binary [] You are aware that sed works on text files [X] Neither

    Yes, reports can be exported, but that's a pain...

    [X] Both

    And now, despite itself, like a starship on the event horizon of a black hole, desperate but powerless to stop, your brain is drifting ever closer to the root of the problem. Why in a thousand years would you pay good money to a vendor who puts your text files in such a miserable inscrutable excuse for a filesystem with a secret format, when there are plenty of better tools that are free, open, accessible, and readable?

    recap:

    a - I have problem X b - Fix it with solution sX a - sX does not work b - Well...eh...your problem is STUPID!!!

  • JimmyVile (unregistered) in reply to Code Dependent
    Code Dependent:
    Anon:
    using "Winblows" in place of the "Windows" immediately invalidates your opinion. Goodbye, see you next conversation.
    Quite right. The correct spelling is "WinD'oh!s"

    WinShit$Poopdows, from Billtard Gate$ucks

    My IQ must be going through the roof right now.

  • Bob (unregistered) in reply to MrOli
    MrOli:
    Sure, there are some hacks. There are always hacks. There are always shortcuts. My point in this whole discussion has always been simply: stay idealistic, keep pushing your client, make the hacks but keep them documented, keep a mind towards them and refactor them out as soon as possible.

    You da man! That's my approach too: visualise the ideal system, educate your customers about it, and then try to keep things moving in that direction as much as is practically possible. Sometimes it's three steps forward and two steps back, but that's still progress. Of course, it requires that your ideal system can be reached by evolution rather than a big bang, but that is probably a saner approach to most development.

  • Zusukar (unregistered)

    Certainly looks like Microsoft Access...

    Const MoveLeftDisMuchly = 100
    Dim aoReport as AccessObject
    For Each aoReport in AllReports
      If aoReport.Name Like "R_NewInvoice*" Then
        DoCmd.OpenReport aoReport.Name, acViewDesign
        Reports(aoReport.Name).Controls("txtCommentsControl").Left _
            = Reports(aoReport.Name).Controls("txtCommentsControl").Left _
            - MoveLeftDisMuchly
        DoCmd.Close acReport, aoReport.Name, acSaveYes
      End If
    Next

    Or something like that.

  • (cs) in reply to Anon
    undrline:
    Anon:
    Bobbo:
    I'm quite enjoying all this arguing today, please continue!

    No, we won't.

    Don't speak for us!

    I will speak for us!

Leave a comment on “Just a Small Change to the Invoice”

Log In or post as a guest

Replying to comment #:

« Return to Article