But We Want This Client



  • Around here, the WTF tends to come in bursts, usually around release time. If it's epic, I'll just post it; otherwise I'll append it to a file (wtf.txt) on my desktop. In leaner times (between releases), I'll draw down the file and share. Lately, the inventory has been running a little thin.


    Then something like this comes along...


    Our system, like most, is intimately intertwined with our database. Sure, we have layers of DAO input and DAO output classes, but there is also that myriad of one-off query functions, conveniently placed in whatever editor the developer had open at the time. Add in about 75 assorted insert and update functions, and we have the makings of a fine birds-nest of WTF.


    Our sales folks informed us they're shanghaiing snagging signing up a new customer who wants to use our engine but doesn't want their data to leave their local site (and go to ours). And, OBTW, they don't want to pay for a license to run the database locally. How soon can we do it?


    Our senior managers picked up that this might be a potential problem, so they dragged a few of us into a room to discuss it. We pointed out that none of the free databases out there can reasonably handle the amount of data we require. Further, without a database, we'd have a) no reference data, b) no historical context in which to process transactions (think 50 First Dates), and c) to untangle the intertwined nest of code just to get it to compile without the database code.


    They go off, scratch their asses think, and come back with a multi-million dollar budget to do the as-yet un-specified work.


    Wait, the customer won't be paying us anywhere near that amount; if we do this, we'll be in a massive financial hole with no hope of breaking even, let alone making money.


    Nevertheless, we want this client!


    Ok, maybe it's a loss-leader type of deal. Our boss calls us in and tells folks to start coding up interfaces for the existing code so that someday, when we have figured out how to do it, we just need to re-implement a "few" classes.


    I point out that this might be a good time to refactor classes by functionality, as opposed to conveniently-opened-editor.


    After playing with some ideas, I decide that we can take any of the free disk backed caches (e.g.: ehCache), write a program to pre-load it with relevant reference data for the given client and save it to disk, and periodically distribute it to the client. The alternate interface implementations can just access and load the cache from the file(s). Of course, all the save and client-load routines would be stubbed because there is no historical data, and no place to save new data.


    Sales: No, you can't do that because the client doesn't want data files delivered (no explanation as to why).


    Us: MmmmKay, we can put the cache files into a jar (which would dwarf the application itself) and just distribute the whole thing every week. We can tell the client that it is internal application data.


    Sales: Ok, the client will accept that, but we must limit the frequency of deployments to quarterly.


    Us: But then our reference data will be increasingly stale as each quarter progresses.


    Sales: The client won't like that.


    Us: it's theoretically plausible to get it remotely from OUR system at initialization, but that's just a remote wrapper for a database service, and more importantly, transferring all that data will yield a start up time > 12 hours.


    Sales: No, that won't do.


    Aside: for reasons I won't go into, just assume that we can't grab each bit of information as it's required on-the-fly (e.g.: AJAX/web-request).


    Us: Well, you've kind of tied our hands here. The application will run without reference data, but won't do anything useful. With stale reference data, it will produce steaming piles of WTF that the client won't like. They won't let us deliver reference data often enough for it to be useful, and they won't let us get it dynamically. You've sold them something that can't possibly be built - at any cost in any time frame. Perhaps you need to rethink this sale before making any commitments.


    Sales: But we want this client...


    Us: Then perhaps you need to teach them the meaning of the word: compromise.


    I foresee a boundless supply of WTF stemming from this...



  • Wow, your sales team has a messed up incentive structure



  • @this_code_sucks said:

    Wow, your sales team has a messed up incentive structure

    I thought this was normal?



  • @snoofle said:

    Us: Then perhaps you need to teach them the meaning of the word: compromise.

    As well as the meanings of "not physically possible" and "cannot be done" and "moron".
    It also sounds like your sales team need to learn the concept of "cost benefit analysis".
    On the other hand, they already know the concept of "WTF" which means plenty of edification and elucidation for us here.



  • @snoofle said:

    Around here, the WTF tends to come in bursts, usually around release time. If it's epic, I'll just post it; otherwise I'll append it to a file (wtf.txt) on my desktop. In leaner times (between releases), I'll draw down the file and share. Lately, the inventory has been running a little thin.

     

    (SCENE: an elegant BOARDROOM, table is set with a fancy Italian dinner, surrouning the room are simple chairs for the respective CONCILIERES. The DONS are dressed in white tie. Seated near the center of the table is SNOOFLE.)

    SNOOFLE: I am a trusting man, but I am also a superstitious man, and so I have set many WTFs aside, in a file, in a safe place. And if anything should happen to me, or my family, such as a database transaction fails to commit, or a server should mysteriously die in the middle of the night, I'm going to blame some of the people in this room, and that I do not forgive.

     



  • @snoofle said:

    We pointed out that none of the free databases out there can reasonably handle the amount of data we require.

    Really? Really?

    They have more records and need faster transactions-per-second and higher availability than the guys who serve the .info and .org domains, which is all being handled by the perfectly free PostgreSQL database?

    Just what are the insane requirements?



  • @realmerlyn said:

    Just what are the insane requirements?

     

    1. Having at least one competent DBA on staff who can tune PostgreSQL to actually serve that volume

    2. There is no #2.

     



  •  How much would it cost to just buy them a license to run it locally? If the answer is less than "multi-millions"...

     



  • Just last night, I was pondering a hypothetical question of "What project would I, with a straight face, give an estimate of $Infinity for?" This sounds like exactly that project.



  • I've been in similar situations. Most times the client has a reasonable issue to be addressed - the problem is that it gets translated into insane "solutions" by the sales team.

    I'm sure the client doesn't want to pay extra millions for bespoke software instead of a database licence - they just want to reduce costs.



  • The business I spent more time at than any other grew quite a bit over the nine years I worked there. About four years in, the partners hired a marketing guy (whose very first move, predictably, was to change the logo) and started ramping down their own role in attracting new customers. The marketing guy, as is their way, could see no essential difference between selling networking technology and selling laundry powder or breakfast cereal, and his almost complete lack of technical Clue led to an inexorably growing disconnect between what customers were led to expect and what our products could actually deliver. I jumped ship when the reality distortion field became intolerable; two years later the business finally sank under the weight of its own growth and one of the partners lost his house.

    One of the nice ideas to come out of the Extreme Programming movement is making it a condition of contract acceptance that somebody who works for the customer will regularly spend time at the dev business offices, working directly with the dev team. Nobody actually does that, as far as I know, but it's still a really nice idea. Because sales people often fail to understand what they're selling and often commit devs to delivering completely nonsensical features that customers don't need and won't use.



  • @realmerlyn said:

    Just what are the insane requirements?


    I seem to remember that Snoofle works in some kind of financial services company. One of the shadowy companies that does the back-room stuff for the shadowy companies that sit behind the Wall Street organisations you've actually heard of.

    Think historical financial transactions - every personal account with every government pension fund. Then try running the Black-Scholes pricing model within the database. There aren't any open-sores databases with that kind of math. Writing transactions-per-second isn't the problem. More like reading gigabytes-per-second.

    Which makes it really funny that the customer seems to be going out of their way to get stale data.



  • @Tacroy said:

    @realmerlyn said:

    Just what are the insane requirements?

     

    1. Having at least one competent DBA on staff who can tune PostgreSQL to actually serve that volume

    2. There is no #2.

     

    I was just going to post that, when I was a DBA, we did some comparisons of oracle and postgres (both properly set up and administered), and they were neck-and-neck. Then I decided to see if any other sane people had already posted, and here they are.

    That said, snoofle has posted before about the DBAs he has to work with. I don't know if anyone he works with would have the sense to make some minor tweaks to the postgresql.conf file.



  •  My write in candidate today was 'snoofle'



  • @havokk said:

    It also sounds like your sales team need to learn the concept of "cost benefit analysis".
     

    I think their sales team need to grow a fucking spine.They desperately need some percussive education with a clue by four.

    The client seems to make some hefty demands and are sitting back in delight whilst snoofle's sales people bend over and grip ankle to appease the customer, rather than reporting back with "we can do that but it will dramatically raise the implementation costs which we'll have to pass onto you".

    Or... yeah. Sales should be motivated by commission on profit and not solely on the income figures.



  • And yet nobody just considered just paying for the database license for the client instead of spending several thousand dollars on development of a solution that is likely not even to work?<?p>



  • There was a primate intelligence study done years ago where they would place two plates full of candy in front of a chimpanzee. One plate would have obviously more candy than the other. The chimps were trained to choose a plate, and would get to keep the plate that they didn't pick. Despite multiple trials in which the chimps came to fully understand the rules of the exercise, they couldn't stop themselves from choosing the plate with the most candy.

    Those chimpanzees went on to be hired as Snoofle's sales force.

     



  • @realmerlyn said:

    …the perfectly free…

    "Free software" is only free if your time is free.



  • @havokk said:

    @realmerlyn said:
    …the perfectly free…

    "Free software" is only free if your time is free.

    If you have no free time, that's a different problem.



  • @havokk said:

    @realmerlyn said:
    …the perfectly free…

    "Free software" is only free if your time is free.

    As opposed to commercial software, which your non-free time renders even more expensive.



  • @havokk said:

    @realmerlyn said:
    …the perfectly free…
    "Free software" is only free if your time is free.
     

    Purchase costs, licencing costs, operational costs and maintanence costs are all different things.

    Don't confuse them.


  • Considered Harmful

    @flabdablet said:

    @havokk said:
    @realmerlyn said:
    …the perfectly free…

    "Free software" is only free if your time is free.

    As opposed to commercial software, which your non-free time renders even more expensive.

    I always thought of it as profitable.



  • @valczir said:

    I was just going to post that, when I was a DBA, we did some comparisons of oracle and postgres
     

    You can't do that. Oracle's license forbides it. If you are in the US, by posting this you just invited the BSA to audit you (it's good that you use a pseudonym).

    @valczir said:

    and they were neck-and-neck

    Results vary widely on artificial benchmarks. That is true for all big 4 DBMS (Postgres, Oracle, MS SQL, BD2). What is also true is that those benchmarks are called "articifial" because those situations never happen on practice, and any difference in performance your DBMS may have is smaller than what you'll gain by just adding 10% more RAM to the server.

    And, let's be honest, DBMS licensing is way more expensive than RAM, except when it's free.



  • @Zylon said:

    There was a primate intelligence study done years ago where they would place two plates full of candy in front of a chimpanzee. One plate would have obviously more candy than the other. The chimps were trained to choose a plate, and would get to keep the plate that they didn't pick. Despite multiple trials in which the chimps came to fully understand the rules of the exercise, they couldn't stop themselves from choosing the plate with the most candy.

    Those chimpanzees went on to be hired as Snoofle's sales force.

     

     

    At least those chimps could be trained to make the right choice when presented with numerals.  Sales people... not so much.

     



  • @operagost said:

    At least those chimps could be trained to make the right choice when presented with numerals.  Sales people... not so much.

    Big numbers ARE candy to sales chimps.

     



  • @flabdablet said:

    @havokk said:
    @realmerlyn said:
    …the perfectly free…

    "Free software" is only free if your time is free.

    As opposed to commercial software, which your non-free time renders even more expensive.

    My point is aimed at open-source zealots whose only argument in favour of open source is "but it's free!". If choosing a free software product means I have to spend ten thousand dollars developing my solution and and choosing a two thousand dollar product means I have to spend three thousand dollars developing then the "perfectly free" software is the more expensive choice. Exactly the opposite of "perfectly free".

    Or to put it another way, individual product cost is not that important. What is important is how much the entire project cost. The Linux-zealots I deal with every few weeks don't seem to get that. They think that "open source is free" somehow magically means "the whole project is free". That only happens if your time is free.

    I got the impression from realmerlyn's post that they are one of those open-source zealots, thus my comment.



  • @havokk said:

    I got the impression from realmerlyn's post that they are one of those open-source zealots, thus my comment.
     

    You know that "open-source zealot" is Randal Schwartz, right? (or someone impersonating him)

     


  • ♿ (Parody)

    @Zylon said:

    @havokk said:
    I got the impression from realmerlyn's post that they are one of those open-source zealots, thus my comment.

    You know that "open-source zealot" is Randal Schwartz, right? (or someone impersonating him)

    [insert just another blakeyrant about not knowing who Randal Schwartz is or why his shoulder aliens should care]



  • @boomzilla said:

    @Zylon said:
    @havokk said:
    I got the impression from realmerlyn's post that they are one of those open-source zealots, thus my comment.
    You know that "open-source zealot" is Randal Schwartz, right? (or someone impersonating him)

    [insert just another blakeyrant about not knowing who Randal Schwartz is or why his shoulder aliens should care]

    I had no idea who he was.  It's probably not him, but if it IS him, it's kinda cool, but also kinda proves the point :P

    I was going to say something about the "Schwartzian transform" that is linked on the Wiki, which is rather pointless in newer languages, but apparently has use to immediately free the used memory afterwards in Perl.


  • ♿ (Parody)

    @Sutherlands said:

    I was going to say something about the "Schwartzian transform" that is linked on the Wiki, which is rather pointless in newer languages, but apparently has use to immediately free the used memory afterwards in Perl.

    The perl idiom specifically might be (though I'd guess that it could look very similar in ruby), but there's nothing about the idea that newer language implementations invalidate:

    @wikipedia said:

    This idiom is appropriate for comparison-based sorting when the ordering is actually based on the ordering of a certain property (the key) of the elements, where computing that property is an intensive operation that should be performed a minimal number of times.

    Yes, many garbage collectors are different, but not all. Though the garbage collection is probably more of an interesting side note that was more important back when memory was measured in MB.



  • @havokk said:

    @flabdablet said:
    @havokk said:
    @realmerlyn said:
    …the perfectly free…

    "Free software" is only free if your time is free.

    As opposed to commercial software, which your non-free time renders even more expensive.

    My point is aimed at open-source zealots whose only argument in favour of open source is "but it's free!".

    And mine is aimed at anti-open-source zealots who seem more than happy to pay tens of thousands of dollars for a poorer feature set and less competent product support than they could have got for nothing.

    Clearly TRWTF is zealots.



  • @boomzilla said:

    @Sutherlands said:
    I was going to say something about the "Schwartzian transform" that is linked on the Wiki, which is rather pointless in newer languages, but apparently has use to immediately free the used memory afterwards in Perl.

    The perl idiom specifically might be (though I'd guess that it could look very similar in ruby), but there's nothing about the idea that newer language implementations invalidate:

    @wikipedia said:

    This idiom is appropriate for comparison-based sorting when the ordering is actually based on the ordering of a certain property (the key) of the elements, where computing that property is an intensive operation that should be performed a minimal number of times.

    Yes, many garbage collectors are different, but not all. Though the garbage collection is probably more of an interesting side note that was more important back when memory was measured in MB.

    The VERY NEXT LINE:

    @Wikipedia said:

    The Schwartzian Transform is notable in that it does not use named temporary arrays.
    That's the important part.  Any senior programmer worth his pay can sort something with only calling an operator once per object, not twice per comparison.  If you're hacking something onto one line in C# to avoid declaring temporary variables, go back to being a junior.

    Oh, also:

    @Wikipedia said:

    The term "Schwartzian transform" indicates a specific idiom, and not the algorithm in general.



  • @flabdablet said:

    tens of thousands of dollars for a poorer feature set and less competent product support
    Which product is that??



  • @Sutherlands said:

    If you're hacking something onto one line in C# to avoid declaring temporary variables, go back to being a junior.

    IEnumerable<T>.OrderBy is not a hack! (And neither is the expression version.)


  • ♿ (Parody)

    @Sutherlands said:

    @boomzilla said:

    @Sutherlands said:
    I was going to say something about the "Schwartzian transform" that is linked on the Wiki, which is rather pointless in newer languages, but apparently has use to immediately free the used memory afterwards in Perl.

    The perl idiom specifically might be (though I'd guess that it could look very similar in ruby), but there's nothing about the idea that newer language implementations invalidate:

    @wikipedia said:

    This idiom is appropriate for comparison-based sorting when the ordering is actually based on the ordering of a certain property (the key) of the elements, where computing that property is an intensive operation that should be performed a minimal number of times.

    Yes, many garbage collectors are different, but not all. Though the garbage collection is probably more of an interesting side note that was more important back when memory was measured in MB.

    The VERY NEXT LINE:

    @Wikipedia said:

    The Schwartzian Transform is notable in that it does not use named temporary arrays.
    That's the important part.  Any senior programmer worth his pay can sort something with only calling an operator once per object, not twice per comparison.  If you're hacking something onto one line in C# to avoid declaring temporary variables, go back to being a junior.

    Yes, thank you for elaborating on my point with a specific example.

    @Sutherlands said:

    Oh, also:

    @Wikipedia said:

    The term "Schwartzian transform" indicates a specific idiom, and not the algorithm in general.

    Yes. Did you have a point about that? I mean, one that applies to something other than your world of C#?



  • @Sutherlands said:

    @flabdablet said:
    tens of thousands of dollars for a poorer feature set and less competent product support
    Which product is that??
     

    Now, if only there was a site detailing horror stories of poorly-speced, badly-designed and incompetently-built systems which - despite being well over cost and delivered late - were still purchased by clients blissfully unaware of alternative (potentially open-source and community-supported) products that could have admirably met their requirements... 



  • @MiffTheFox said:

    @Sutherlands said:

    If you're hacking something onto one line in C# to avoid declaring temporary variables, go back to being a junior.

    IEnumerable<T>.OrderBy is not a hack! (And neither is the expression version.)

    I agree with you.  Boomzilla thinks that the Schwartzian transform is useful in anything other than Perl

    @Cassidy said:

    @Sutherlands said:

    @flabdablet said:
    tens of thousands of dollars for a poorer feature set and less competent product support
    Which product is that??

    Now, if only there was a site detailing horror stories of poorly-speced, badly-designed and incompetently-built systems which - despite being well over cost and delivered late - were still purchased by clients blissfully unaware of alternative (potentially open-source and community-supported) products that could have admirably met their requirements...

    So... no examples, then?


  • ♿ (Parody)

    @Sutherlands said:

    Boomzilla thinks that the Schwartzian transform is useful in anything other than Perl

    Yes. It's an idea that I firstly got from the wikipedia page, which says, "Some other languages provide a convenient interface to the same optimization as the Schwartzian transform." It talks about python, ruby, D and racket. I get some crazy ideas when I read stuff. It's almost better than the shoulder aliens.



  • @Sutherlands said:

    So... no examples, then?
     

    I'm sure I could quote several for you, but I'm also sure you're able to use a search engine yourself.



  • @Cassidy said:

    @Sutherlands said:

    @flabdablet said:
    tens of thousands of dollars for a poorer feature set and less competent product support
    Which product is that??
     

    Now, if only there was a site detailing horror stories of poorly-speced, badly-designed and incompetently-built systems which - despite being well over cost and delivered late - were still purchased by clients blissfully unaware of alternative (potentially open-source and community-supported) products that could have admirably met their requirements... 

    So some proprietary software is worse then open source software, therefore all commercial software is worse then open source?

    Since you people seem to want examples, someone look me straight in the eye and tell me there's non-commercial* software for Windows that's better then Microsoft Office? Or Visual Studio?

    * Open source != Non-commercial, btw. Some examples of commercial open-source software are Chrome and RHEL.


  • Trolleybus Mechanic

    @boomzilla said:

    [insert just another blakeyrant about not knowing who Randal Schwartz is or why his shoulder aliens should care]
     

    IIRC, it's the creator of XKCD. He recently converted, and is currently working on his new stickfigure comic  קךגד



  • @MiffTheFox said:

    @Cassidy said:

    Now, if only there was a site detailing horror stories of poorly-speced, badly-designed and incompetently-built systems which - despite being well over cost and delivered late - were still purchased by clients blissfully unaware of alternative (potentially open-source and community-supported) products that could have admirably met their requirements... 

    So some proprietary software is worse then open source software, therefore all commercial software is worse then open source?

    I'm not sure how you arrived at that conclusion from what I wrote - I can't see the logic in your argument. Is that what they call a strawman?

     


  • BINNED

    No, just your standard Internet Reading Comprehension FailTM.



  • @Lorne Kates said:

    @boomzilla said:

    Randal Schwartz
     

    IIRC, it's the creator of XKCD...

    Did anyone else just have a heart attack at reading the first half of this sentance, before they got to the end and realizing he's not serious?

     



  • @Sutherlands said:

    @Cassidy said:

    @Sutherlands said:

    @flabdablet said:
    tens of thousands of dollars for a poorer feature set and less competent product support
    Which product is that??

    Now, if only there was a site detailing horror stories of poorly-speced, badly-designed and incompetently-built systems which - despite being well over cost and delivered late - were still purchased by clients blissfully unaware of alternative (potentially open-source and community-supported) products that could have admirably met their requirements...

    So... no examples, then?

     

    As a recent personal experience, Xen/KVM (as part of about any Linux distro) vs Hyper-V (as part of Windows 8) on workstation. There were no note regarding VLAN differences between client Hyper-V and server Hyper-V. I tried to create virtual trunk port and since it didn't seem to work (Hyper-V isn't adding the VLAN tag to packets), I opened a case to MS. Let's just say that after 1.5hrs in phone, I apparently had to draw him a diagram what I'm trying to do and network layout. Currently waiting to hear back from them. Not tens of thousands difference in single license cost tho (unless you count the potential license cost of creating lots of supported guests for use that counts production).

    Another example could potentially be Vyatta Core vs Cisco/others, but as I don't have expierence of dealing with Cisco's support, I won't go in further detail. Vyatta does have offically supported commerical version as well & license/hardware costs of that are a lot cheaper than Cisco's & other major dealers. They offer both software-only (in which case you can create machine that suits your need) and appliance editions.

     



  • @havokk said:

    @flabdablet said:
    @havokk said:
    @realmerlyn said:
    …the perfectly free…

    "Free software" is only free if your time is free.

    As opposed to commercial software, which your non-free time renders even more expensive.

    I got the impression from realmerlyn's post that they are one of those open-source zealots, thus my comment.

    No, please don't sweep me under that bus. You apparently don't know me very well. I actually meant free more in the libre sense, not the zero-cost sense. I'm well aware of the support cost for all software, including "free" software.



  • @Zylon said:

    @havokk said:

    I got the impression from realmerlyn's post that they are one of those open-source zealots, thus my comment.
     

    You know that "open-source zealot" is Randal Schwartz, right? (or someone impersonating him)

     

    It's definitely me. I think I'd know if I was someone trying to merely impersonating me.

    Oh wait, right, how would I know?

    :-)



  • @realmerlyn said:

    No, please don't sweep me under that bus.
     

    Fair enough, no offence meant.

     


Log in to reply