Work Day 38: Where did the day go?

This is one of those days where I’m not really sure what I did, but I spent a long time doing it. It all started when I decided to check out two MONSTER user stories we have in the backlog. I suspect we are probably going to split them eventually, but for now I decided to see if I could understand what needs to be done. I’ll give you the Reader’s Digest version—NO.

One story deals with integration which, if you held a loaded gun to my head, I couldn’t tell you jack about. On a data level, I can tell you what happens, and even what time of day the different files travel back and forth between systems, but I have no idea about how the code works.

The other story deals with the resurrection of my old nemesis penalty payments. In the interest of anonymity, I won’t call them by my system’s very familiar code name (and we won’t go into the bad names I’ve called them for years). As a BA, I struggled with understanding the ins and outs, the bee-bopping of these payments from one system to another, when they’re added or subtracted from different values, when they aren’t accounted for at all—as well as their bastard cousins the REVERSE penalty payments. These are all treated very differently than other transactions. This particular defect user story appears to deal with some ghastly error the adjusters are having where they try to change the monetary type of the payment and the system loses its mind and decides to not pay the penalty amount to the claimant—or is it that it pays them again? Honestly, I really thought that once I became a developer and could see into the code, that this quagmire would make sense, but NO. For one thing, I haven’t quite ascertained WHERE to look for the code that governs all this…I’ve found the PCF files, but that’s it so far.

And then it was 6:00 p.m.

Work Day 37: Admin Antics…

More GitHub hell today. The good news is that I got a code review and my code was approved! The bad news is that I had to get my code to the master branch for the release, which of course I couldn’t do, as I don’t have the authority. My code reviewer moved my code to the right location. I also had to create several more files for EACH environment we are going to need to update.

THEN…as instructed, I sent an email to our Test Environment Team, providing a link and explaining that I needed them to suck up my file into their vortex and plunk it into the next applicable Environment. This, of course, couldn’t be easy. My mentor asked, “Did you open an environmental ticket?” Sure enough, by the time I got back to my desk, I had a terse email telling me that I needed to open up a ticket. I found a random ticket in the system like my request, copied the basic verbiage to my ticket, and sent it off.

THEN…come to find out, there is ANOTHER document one needs to fill out when one adds any Admin data to the system. This document, of course, didn’t exist under the release folder for us yet, so I found an old one under another release, copied the format, added my role entry, and put it out onto SharePoint for the rest of my team to use for their release updates.

I’m not entirely sure I’m done filling out documents…it’s only Wednesday. I’m taking copious notes, so that I’ll know what to do next time I have to update any application data that requires a script.

AGAIN…the actual coding part of this took maybe 10 minutes of my time. I’m pretty sure I’ve spent more time flossing my teeth…

Work Day 25: Fun with GUnit Testing

I’m in GUnit testing hell. My mentor is back. In answer to my confusion he explained that l needed to do a GUnit test, if the pcf code I changed uses Java and Gosu utility classes. It took me a good hour or so to trace through to see where these classes were—sure enough, the pcfs use several utility classes.

I’m not entirely sure I set everything up correctly for the test. All the utility classes are part of Java or Gosu “packages” which l don’t think you put under “gtest.” There was one class not in that category, which appeared to already be in the gtest path. I painstakingly followed all the directions to set up an “All Tests” GUnit run in Guidewire. There were a total of 1008 tests to run—35 failed. I’m not sure what the hell that even means. I suspect I’m going to need to meet with my mentor to figure all this out. There is some sort of mechanism to ignore certain tests, if not applicable. I’m hoping that was the issue—that I just needed to exclude certain non-applicable tests (and not that I’ve managed to screw up the entire application with my two small changes).

I also realized after the fact that I should have written a test to include that would have tested my ACTUAL change. I thought that this was an all-encompassing test, and that my change would be tested with everything else by osmosis or something. If you held a loaded gun at my head, I couldn’t begin to figure out how to write one. I looked at one of the gtest files and it was so confusing I almost fell into a dead faint.

I have this horrible feeling that figuring this out is going to involve another Pluralsight video…

Work Day 23: Holy Cow…It WORKS!

This morning, after peering at files, searching for fo:table-layout=“auto”, tracing through all our code to see how a PDF export is triggered, scouring for ANY reference to Apache FOP (fun fact: FOP stands for Formatting Objects Processor) errors, I did a Google search on the specific error again and hit upon a reference about the columns widths needing to be specified. I check the two grids and THAT WAS THE DIFFERENCE. The grid that worked for the PDF export had column widths specified. The other grid had some specified, but not all. Once I added column widths and wrapLabel=“true” the PDF generated!

Now I just have to figure out how to unit-test. I did one test for one type of business and everything worked out perfectly. I’m having a devil of a time trying to test other business types due to the test data on my local machine being LAME. No other business type appears to have fully-fleshed-out claims with reserves and payment transactions to test for my change. If I could figure out how to query the db files for my local machine, I could get a better idea of what data is actually available.

The Alum suggested perhaps creating a “patch” for my coding changes, and then trying to figure out how to connect to one of the lower environments, employing my patch. I was confused back at “patch,” never mind the rest of that sentence.

And don’t even MENTION that dreaded “GUnit” test…

On a non-coding note, I’ve begun casting on for my new sweater! I still have to wash and block the sheep sweater I’ve been working on all summer. It’s probably going to be next Spring before I finish the new sweater, but at least it will be a nice, easy project to do during my continuing coding education saga.

Work Day 21: Fitting a square peg…

I’m happy to report that I’ve just about figured out the fix for my user story…okay, almost. There is a SLIGHT issue with the export to a PDF. The Excel exports are fine, but I’m getting big ugly errors for the PDF export. I suspect it’s due to the existing PDF already having entirely too many fields on the page, and now I’m plopping in one more field. Either I’m going to have to experiment with narrowing the fields in the pcf, or we may need to go to Option B—jettisoning an existing, less important field. I tried to see if l could modify the one PDF, perhaps to make a smaller font, but the configurations appear to be such that a change to one would constitute a change to ALL the PDF exports for the application, period. As much as I’d love to think I’m that frightfully important, the rest of the building (and all the offices countrywide) would probably prefer their PDFs to be a font size that doesn’t require a magnifying glass to make out the payment information.

My mentor is still out, but I’m going to consult with The Alum tomorrow to see if she has any insight into this issue. Perhaps there’s something I’m missing.

Work Day 17: Back to School!

…but all the other kids are WAY ahead of me.

Our first continuing ed session with our instructor was abbreviated. He’s having computer issues, so we mainly walked high-level through the object-oriented JavaScript code he’s got out in GitHub. We’re supposed to review this, and try to run it on our machines before our next session—later on, we’ll be doing more involved work, I’m sure. It looks like I’m going to have to get Node.js loaded onto my work laptop, as we’ll be using that. I’m not sure how well that’s going to interact with the rest of the apps on my computer. I think I’m going to ask my mentor and The Alum for their thoughts. I could possibly just do all the continuing ed work on my home laptop to be on the safe side…I’m going to load a copy of his GitHub code there anyway.

We also spent a good deal of time going over how we all are doing in our new jobs. Some people are doing very well, as either a) they don’t need Java, and/or b) they have people they can shadow. I’m at a standstill, as I’m still learning Java and Gosu, which is going GLACIALLY slowly. Honestly, I’m getting the most bang for my buck from the Udemy course at home, but it’s not very fast-paced. Some people in class have had good success using the online CodeAcademy site. I’m tempted to check it out, but realistically, between Udemy, Tutorialspoint, Pluralsight (zzzz…), studying our current code, and trying to learn Gosu (and somewhere in here I have to learn Spring Batch), I think I have enough going on. If I try to add one more learning tool, I’m pretty sure my head is going to explode.

This afternoon, a good friend pointed out that I should give myself a break. If nothing else, I’ve only had a decent work laptop on which to do ANYTHING for a short time now.

I hate feeling useless, though.

Work Day 16: I DID want something to do…

As I had yesterday off, my day count is now odd…

I had a horrendous dream last night that we had to PAY for our continuing ed with our Code Academy instructor. We had to go on a communal computer to do it, and the mouse turned into a REAL mouse…the tiny squeaky kind with little whiskers. I’m probably dreaming this because our first continuing ed session is tomorrow morning. Sadly, our instructor is not going to cover Java (which half of us need), but he’s promised to cover object-oriented programming principles, which can be applied to our Java self-learning. I’m really hoping it will help, as I’m still somewhat confused about it.

The good news is that I actually did some real work today. Our agile team was flipped a defect. Sometime between the last release and the upcoming one, our system now lets one put in an amount WAY over the amount one should. To preserve confidentiality, I won’t say what or where this is in the system—suffice it to say, it’s a big honking problem. While I didn’t solve the issue (no one has, yet), I did manage to figure out where to look in the code, and how to connect and trace everything back—just the thing I didn’t think I’d ever figure out. I managed to slam up against the java APIs, which are sort of a black box to me (from asking around, I get the impression that they are black boxes to a lot of people). The next thing we’ve been investigating is to see what changed between the two releases. Seeing as SEVERAL different groups have user stories in any given release, and there are several different repos for our systems, this isn’t as easy as it sounds.

Doing the continuing ed tomorrow is probably going to be a walk in the park, in comparison…

Work Day 11: Bureaucracy Redux

We have new and improved bureaucracy today…this time, HR bureaucracy! HR, as in Human Resources, or as my spouse calls it, “Inhumane Resources.”

I know one can argue that I just spent three months having an awesome coding vacation, during which time I barely knew what was going on with the rest of the world. However, believe it or not, I actually do need to take REAL vacation days before the end of the year. I’m one of those old company fossils who has over five weeks of vacation time a year—six, if you want to count the inevitable one week I carry over every damn year due to not being able to take the time because of some project or other that just HAS to get done (not that I’m resentful…). I’ve accepted the fact that I’m going to lose a few weeks this year, due to Code Academy, but I did want to use some of my time. Today, I put in for all the vacation days I’d like to take, concentrating on time periods where they aren’t going to miss me (granted, they aren’t getting much out of me right now, anyway, so I’m not sure what my point is).

Anyway, my manager approved my deluge of requests until the point where my vacation day balance suddenly went into the NEGATIVE. He showed in his system that I only have 11.60 hours of vacation time left. I showed in my year-to-date report that I have 225.20 hours left (and before you ask, I have NO idea where the .60 or .20 come from…).

So, I called HR. You’d think this would be a simple matter, easily cleared up—oh, you would be SO wrong. They have this massively confusing voice menu from hell. I chose the wrong option and ended up being transferred to THREE different departments, including our main company number, where the switchboard operator was under the impression that I was a former employee. I finally got to the actual HR department I needed…and was promptly put on hold.

After 45 minutes of my life that I’m never getting back again, the long and the short of it is that, due to my job change, the system somehow hosed all my available vacation time, save for 11.60 hours, which was “accrued.” Accrued from WHERE, I don’t know, seeing as I’ve only officially been on the new job since 10/16/2019.

It don’ git no better’n dis…

We hope this will be rectified by the holidays, so that I can get more that ONE day off for Christmas.

Work Day 10: No matter what job you have…

There’s no escaping bureaucracy.

In the continuing saga of getting up to speed, I found out that, yes, I was completely correct about the git config command I need to enter to accomodate large file names. However…I can’t do any config commands because I don’t have admin rights to my laptop. I went onto our tech support site to put in a ticket for this, and found out that my laptop is STILL under the name of the tech who built it. The guy who deployed it has no idea why it would still be in the build guy’s name. He suggested I wait until Monday and try again, when perhaps the system will have caught up and actually show that I am the user of MY OWN LAPTOP. Also, my manager is out until Monday, and I really didn’t want to explain to his Friday stand-in why I’m requesting admin rights to a laptop that, apparently, is not under my name.

Oh, and I’m also waiting for the docking station. The deployment guy ordered it and is waiting for it to come in. This means I’m still using the laptop without the dual work monitors, which can be tricky when one is doing things where two screens are much easier.

I’ve managed to make it through the w3schools site and SoloLearn for Java. I’m still wading through the Pluralsight videos. I’m liking the Udemy class, but I’m having a bit of a challenge trying to find time in my (now) busy personal life to fit this in. I’m pondering letting some things go that really don’t apply anymore. I really want to be successful as a developer, and I’m not going to be able to do that if I have to deal with other things in my life that keep me from learning what I need to or from doing my coding practice. Unfortunately, people just see that I’m out of formal training now and that I should be available for anything.

I am, of course, ALWAYS available for knitting and crocheting!

Work Day 3: Waiting…

I looked up the status on my laptop through our tech site, and it’s apparently 17.62% complete. That’s a slight improvement over the 14.48% it was at yesterday.

More Pluralsight today. Fun times. The good news is that The Alum pointed me in the direction of Simon Allardice’s video “What is Programming?” We did view this one for our Code Academy pre-work, but she reminded me that there is a section on object-oriented programming. It did help me to better understand the quagmire that is Classes, Objects, etc. for Java. I peaked ahead on W3 Schools, and apparently there are also “packages” but I’m trying not to think about that right now…

I’ve also been looking at our enterprise GitHub to better understand the code. May we pause here to say that our application code is NOTHING like the tiny bit of code for the classroom assignments. By that, I mean if you decided to print out our GitHub, you’d probably take out the forest for an entire state, and that’s for ONE repository. There are several repos for our application. I couldn’t tell you how all this code interacts and relates to the site. In an effort to make some sense of it, I’ve been taking past user stories for our Agile team and trying to reverse engineer them, to see what was changed. The simplest one I’ve found so far was changed in two jobs—most changes involve at least four jobs. I think, once I get my laptop and can set up my environment, I’m going to need to have someone walk me through the code, to explain how it’s working.

From what I can figure out so far, the code appears to be aligned with the major sections of the application—natch. The repos appear to be aligned to the database groups/schemas. I’m familiar with those, as I’ve done lots of database-querying as a BA. What I may do next is to get out the data mapping documents to see if I can align the field names with the fields in the application.

Tomorrow is my big presentation. I’m going to be showing my mentor, The Alum, and my manager my final project from class. Needless to say, I’m going to need to bring in my own home computer…I suspect that running a client and server on my present work machine would be…less than successful…