It's one of those days



  • When our team was first formed (3 years ago), one of our now-team-leads decided to use this at-the-time-obsolete piece of crapware as a tool to process rules. Unfortunately, it was s*l*o*w.  So slow that the users complained.

    Fast forward 2 years and they hire me. I'm asked to convert the tokenized rule output into garden variety java boolean expressions. Ok, no biggie. I write a reasonably generic conversion tool and spit out a series of tiny classes, one per rule, and a master class that evaluates them in the correct order, with the end result being a simple boolean (ruleset passed or failed).

    BUT, they decided that they want to keep the rules entry part of the original tool, so that the users don't need to learn something new.

    Ok, but when there are problems, nobody has ever heard of this thing, and googling brings back no hits (really!).

    Now they want to figure out a way to programmatically (as opposed to the existing manual process) spit out the rule token file so it can be converted into the java classes as part of the build. Of course, the tool has a handy dandy facility to do just that. *joy*  Except it doesn't work. And gives useless error messages (not much beyond "Error occurred"). And googling gives you nothing.

    Ok, I finally give up banging my head against this POS and decompile the whole thing. It turns out the bastards obfuscated the whole thing. So now, all the classes, methods and variables are of the form AAAAA1, randomly assigned, in mixed case with numbers. So is AbIl10 a string, method, or class? So is that method you're about to call a simple getter or a 20K line internal-main? Should I step in or over it? Naturally, the problem is occurring somewhere inside a doubly nested loop with over 20K iterations and lots of nested method calls. Grrr.

    Then, something unrelated happened in production and things were running slowly. They ask me to log in and check it out. They recently imposed a new system whereby we need to request temp access from the help desk. Ok, you'd figure that you call them and tell them who needs access on which box for how long and they enable it. Right? Wrong! You send an email to some manager who has to notice it and manually enter a ticket into some system, the operators must notice the ticket and get a senior manager signoff (again, notification is via email, which may not be noticed for a while), so the op can grant access, and send an email to your boss (who must notice it) and give you the temp password to log in and do your thing. So far, I've been waiting 3 hours and counting. It's a good thing it's just slow and not completely dead!




  • Ahh, the joys of red tape.  I wanted to buy a code gen tool (lisence is ~$300 per dev), which is taking over two months and counting to approve.

    How's the process for making DB schema changes at your place?



  • Can you share with us what the original crapsolete tool is called, or would that be too much de-anonymizing?

    @snoofle said:

    Now they want to figure out a way to programmatically (as opposed to the existing manual process) spit out the rule token file so it can be converted into the java classes as part of the build. Of course, the tool has a handy dandy facility to do just that. *joy*  Except it doesn't work. And gives useless error messages (not much beyond "Error occurred"). And googling gives you nothing.

    So tell me if I'm understanding this correctly: the users enter the rules into the original tool, it spits them out (or is supposed to) in some format that your converter turns into Java, and then your master class runs that against whatever the input is?

    Odds are the original rules entry format is probably a giant WTF in itself.  I'd bet the users would be fine with learning something new given that the original tool is so slow.



  • @C-Octothorpe said:

    Ahh, the joys of red tape.  I wanted to buy a code gen tool (lisence is ~$300 per dev), which is taking over two months and counting to approve.

    How's the process for making DB schema changes at your place?

    Before the lockdown, it was: figure out what you want to change, change it, test in dev, repeat in preprod, get manager to approve (eg: Hey Fred, it's tested, ok to deploy? Yeah sure!). Now, it involves DBA's and managers in three groups to have meetings over column types and naming, if we should use surrogate keys vs sequences vs whatever, how we should store the data in a col (eg: 'yyyymmdd' vs actual date, vs integer yyyymmdd) - $Deity forbid developers can decide these things, or that this should be done BEFORE we do the work, then get signoffs from qa team (that doesn't yet have authority to sign off on such things), then paperwork and forms in 2 disjoint systems (1 mainframe, 1 linux) with hierarchical approvals, then you get a window. If you miss it for any reason, do not pass go, do not collect $200.


  • @Justice said:

    Odds are the original rules entry format is probably a giant WTF in itself.  I'd bet the users would be fine with learning something new given that the original tool is so slow.

    Original rules entry format IS a giant WTF in and of itself. Our users are highly educated individuals who really don't care one way or the other; it's the team lead who picked the tool that wants to keep it around, and has forbidden anyone from mentioning replacing it with a new entry-tool.

    OTOH, I can come and go as I please here. Leaving daily at 3 is kind of nice in the summer. Come Labor Day, I think I'll be looking for a new contract.



  • @snoofle said:

    the tool that wants to keep it around

    Freudian slip?  :)



  • You work at a bank or insurance company don't you?  I worked at two big 20k+ employee insurance companies/banks, and it was exactly this.  The database team first talked to the logical data model team, who agreed upon a physical data model, THEN they would call you when they've successfully munged your original schema into something that perhaps looks like it belongs in a data warehouse.  You could go back and fourth for months...  I recall meetings that we would discuss/fight for three hours solid over ONE column.



  • @C-Octothorpe said:

    You work at a bank or insurance company don't you?

    Insurance company spawn. I've spent the last 30 years mostly at huge conglomerate procedure-riddled companies, so I'm used to it, and can, for the most part, get through it (you just become friends with the key developer on the-other-side and work it out before the meeting). Unfortunately, this place is just converting from startup-mentality to full-blown-sdlc on insistance from the new parent conglomerate, so they're overdoing everything. I predict that everything will stop dead in its tracks until the inevitable disaster which becomes publicly visible strikes. Then they'll dial it back.


  • @C-Octothorpe said:

    I recall meetings that we would discuss/fight for three hours solid over ONE column.

    Ooh, which one?

    I've participated in multi-hour long debates over three fields, once. Unfortunately, my argument of "they're completely redundant" lost over my opponent's argument of "I have more experience than you"...



  • @Xyro said:

    @C-Octothorpe said:
    I recall meetings that we would discuss/fight for three hours solid over ONE column.
    Ooh, which one?

    I've participated in multi-hour long debates over three fields, once. Unfortunately, my argument of "they're completely redundant" lost over my opponent's argument of "I have more experience than you"...

    I would usually get the "I'm an employee, so I win by default over you, you wortheless, stinking, paid $6 million dollars an hour contractor".  Actually, like snoof said, I had a friend on the inside who would help me out with the red tape.  The days that had the 7.5 hour meeting over a handful of columns and tables were the days that his manager was there instead of him because he would take a sick day, etc.  The arguments would be something like "why do we need an IsDeleted column when we have a DateDelete and DeletedBy column" or "why would anybody in their right mind use a double with a precision of 18 as an auto-incremented PK".


  • ♿ (Parody)

    @Xyro said:

    I've participated in multi-hour long debates over three fields, once. Unfortunately, my argument of "they're completely redundant" lost over my opponent's argument of "I have more experience than you"...

    And he was right! Just think of all the places where redundant systems save the day!



  • @Xyro said:

    I've participated in multi-hour long debates over three fields, once. Unfortunately, my argument of "they're completely redundant" lost over my opponent's argument of "I have more experience than you"...

     

    Redundancies are easy.  Just arrange it so that you can trigger a data inconsistency situation at will.  Then set it up to go off at 2am when Mr Experience is on-call.

    (And, needless to say, if you're on-call and he's exempt from it, arrange it so it happens at a time when you can bill double time for fixing the condition.)

     



  •  @snoofle said:

    @C-Octothorpe said:

    Ahh, the joys of red tape.  I wanted to buy a code gen tool (lisence is ~$300 per dev), which is taking over two months and counting to approve.

    How's the process for making DB schema changes at your place?

    Before the lockdown, it was: figure out what you want to change, change it, test in dev, repeat in preprod, get manager to approve (eg: Hey Fred, it's tested, ok to deploy? Yeah sure!). Now, it involves DBA's and managers in three groups to have meetings over column types and naming, if we should use surrogate keys vs sequences vs whatever, how we should store the data in a col (eg: 'yyyymmdd' vs actual date, vs integer yyyymmdd) - $Deity forbid developers can decide these things, or that this should be done BEFORE we do the work, then get signoffs from qa team (that doesn't yet have authority to sign off on such things), then paperwork and forms in 2 disjoint systems (1 mainframe, 1 linux) with hierarchical approvals, then you get a window. If you miss it for any reason, do not pass go, do not collect $200.

    Imagine all that, AND having to use Lotus Notes.

     



  • @snoofle said:

    @C-Octothorpe said:

    You work at a bank or insurance company don't you?

    Insurance company spawn. I've spent the last 30 years mostly at huge conglomerate procedure-riddled companies, so I'm used to it, and can, for the most part, get through it (you just become friends with the key developer on the-other-side and work it out before the meeting). Unfortunately, this place is just converting from startup-mentality to full-blown-sdlc on insistance from the new parent conglomerate, so they're overdoing everything. I predict that everything will stop dead in its tracks until the inevitable disaster which becomes publicly visible strikes. Then they'll dial it back add more layers of processes and procedures and checkpoints and so on..
     

     FTFY, you naive fool you.

     

     


Log in to reply