Yea but now you've got a whole new problem. Shitting on their home turf first thing every morning.
Hey Khane, you're the resident Biztalk guy, right? What's a day in the life of development from that side?
Have to patch a Cobol Module in Production, worst piece of code still actively executing, I've ever witnessed.
Some of our older systems don't follow our current standards, and aren't maintainedt in any version control system, thus the Source and Object File must be moved in Tandem, through each Development Region.
Some of the old stuff is fine, it might use goto's, but they'll be procedural, soundly structured and easy to follow. Some are complete fuckery, with pointers everywhere and data getting copied and moved across a hundred different variables, and barely any structure.
This one Module though, I've never seen such a complete disregard to order anything.
The module assumes data is passed to it, and immediately falls into conditional checks, no initialization, no paragraphs/subroutines, a liberal use of periods when terminating conditional stuctures (granted they may have been using a compiler that had yet to have end-if's). It's entirely dependent on fall-through, no nested if-else, no evaluates\case, one static array in the middle of everything. There are comments everywhere all over the code, from things like *1/29/86* added logic X,Y,Z and literally 12 lines of code where one developer listed out client info that he was using to test (there's data from actual customers, being used in test plans, sitting in the source comments of a Production module). Finally there is dead code, stuff that will never execute by design, I'm not sure what was intentional and what wasn't but there's an entire section that cannot execute by design because of prior logic, that supercedes it.
I look at the comments, and I see all my predecessaors, go in there to add an enhancement; realize the complete fuckery--and instead of trying to mend the code, just add a little more logic to keep the fucktasterpiece afloat. Believe me, when I saw that I said..."that's what I'm going to do", not because I don't like to do things right, but because I know enough and am old enough to realize, that the system I'm maintaining has been running for 30-40 years, and big changes to small peices, mean big changes to big peices, and I was not assigned to rewrite the codebase for the project.
But nope, nope, nope, nope, nope...can't do that, the way the logic was written I'm the one that has to pull the last peice out of the Jenga tower of "fuck you, this is my job security" circa late 80's early 90's" and set it up again. There's no honest way for me to add the logic I need because it's based on this fall-through design, what I need to add will always be stepped over, no matter how I position it in context to the code. I would need to add more fuckery to jump to a subroutine, to add the logic. It would probably work, but if it didn't not only would my code break something, but it would look like dogshit to everyone who read it, and I would be the last one to have touched it. So now I've got to be the one to restructure the whole stupid shit-nugget. Oh well, it's relatively small, it's a shame that it has other dependencies that I think are breaking it, since I've already rewritten most of it. I just have to walk through the code and what it actually does, as opposed to what the people who wrote it thought it was going to do, the nature of the system makes it very difficult to use a debugging software, and since it's a CICS module I can't even use Displays (printlns), without filling up the logs and fucking up CICS (I kind of can to an extent but it's a pain in the ass, and if I accidently leave any in then I'm in trouble).