Looking back and looking forward

The new Code Academy class is now two weeks in. They’re getting one more week than we did to complete their first projects. Also, this is one more week for the students to decide if this path is for them, and conversely for the instructors to determine who continues on with the program. I can’t decide if they’re lucky for the extra time or not so lucky, as they have one more week to agonize over whether they made the cut. Spoiler alert: other than early drop-outs, we all made the cut, as did the class before, so I don’t think they have much to worry about, if they put in the work.

I have been reflecting on what, back then, would have been good to know about the role I have now…

1. Unless you’re on some outlier team, you will LIVE the production release schedule. In training, I think we got a 1-hour overview of a typical release process. Luckily, I understood how this works from my days as a BA. However, I had NO IDEA how important it was going to be to understand all the phases, dates, and what I needed to do for each phase, especially the run-up to that crucial “Hard-Freeze” date. Trust me, you do not want to have to make any changes past that date. Your product owner will NOT be happy about having to put in a code-unlock request because of something you didn’t account for that came up in a last-minute QA check.

2. You will definitely need to understand how to test. Years ago, as a BA, I’d rail and scream when we tested a change and it didn’t work. “Don’t these people even TEST???” I’d complain to whomever would listen. I didn’t get just how hard it is to test code from one’s local using limited data. I’ve had to give myself a crash-course in updating, deleting, and creating data on the back end using SQL just to get enough data to cover the bare minimum I need to test a user story. Whatever language you end up using in your new role, I highly recommending that you become extremely familiar with whatever testing tools are available to you. I’ve shared ad nauseum about my struggles with GUnit and JUnit testing, but I’m slowing getting the hang of this kind of testing (coworkers, STOP LAUGHING!).

3. Speaking of user stories, we are pretty much all an Agile/Scrum organization now. Once upon a time, we were Waterfall which I LOATHED, both as a mainframe developer and as a BA. We all marched toward a project production date (which had changed four times) with faulty outcomes, because we just HAD to make that date—which, of course, would get changed again, due to some outside constraint. I find Agile to be better, because it’s much more flexible, and you get immediate feedback on what you’ve created so far. Instead of the dreaded “Day 2” project, you get to make adjustments and bug fixes in the next sprint. My Agile team works Kanban, which is geared toward more of a production environment—we are technically “maintenance” so this works beautifully for us. Once you get to your new team, and if they don’t bring it up, ask about Agile training.

4. Don’t be afraid to speak up if you’re having difficulties. Your team is going to be forewarned that you are a junior developer and will need some assistance. You will have a mentor to help you with basic coding issues—mine has been a God-send.

5. Eventually, you are going to be in a position to help someone else. Remember all the help that your long-suffering coworkers and mentor have given you and do your damnedest to be of assistance.

6. If you’re really stressed, walk away. Go to lunch, take a walk, disconnect from the coding for a bit. Your upcoming instructor Dana is going to tell you to do that, and when she does—listen and do it! Yesterday, I was at my wit’s end over some damned “500” errors I kept getting when running a SOAP UI project with my local machine to test my code (another one of those nifty testing tools to become familiar with…if I weren’t married, I go kiss the creator of SOAP UI—it’s the best!). Anyway, as luck would have it, I had to leave because I had a doctor’s appointment 30 minutes away, which gave me a good long break from the task at hand. After I returned, I looked at the code again and the SOAP UI results, and figured out the issue. I hadn’t brought in code that another developer had committed to GitHub that morning. Also, my SOAP UI project hadn’t refreshed for some reason. The logs showed updates from a previous version of my code. Once I remedied all this, I was able to run my code with no issues!

To sum it up, my new job has been hard, but definitely worth it. There were unforeseen challenges, but I’ve been able to persevere with the help of many incredible people. To the new class, keep plugging away, both in class and in your new jobs, and you will succeed!

You’re on all the TVs!

…or, my 15 minutes of fame.

A very BIZARRE thing has happened at my company in the past month. They are about to start up another Code Academy class for 2020, and they’ve just put out the notice on our Intranet site — with Yours Truly as the cover girl.

Perhaps I should back up. About a month ago, three of us alums from last year’s class were asked to come to Home Office (The Mothership) to have photos taken to shill for the new Code Academy campaign. We got down there and discovered that, far from being a few photos, this was to be a whole photo shoot! They had us walking around the building, carrying our laptops, looking like we were on our way somewhere important. We were coached, “Talk! Just like you would in any other everyday exchange!” I turned to the other two and said, “I don’t know about you, but our meetings are all Skype…we don’t walk ANYWHERE.” They has us sit at a desk, like we were working. They had us sitting around one of those collaborative tables, as if we were discussing something of great import—again, FAR from anyone’s reality. Any of my collaborations take place with people in Chennai at 8:00 am via Skype, or with people in the building at our desks, with someone inevitably teetering on one of those ridiculous padded filing cabinets that are supposed to double as a chair. We did all have fun with the photo shoot, and I was fairly certain my two much younger fellow alums were going to be the focus of the campaign.

But, noooo…

A few days ago, someone from another Agile team came up to me and announced, “We have a bet!” I looked at her…perhaps a bet over exactly when I’m going to self-implode from my ongoing GUnit testing cluster****? She got out her phone and showed me a picture she’d snapped. “Is this you? You’re on all the TVs in the building!” I looked and there was what had to be the worst picture anyone has ever taken of me, sitting at the desk pretending to work. She continued, “We were confused as to whether or not it was you, because that’s not your desk!” I raced down to the TV by the elevator and sure enough, there I was, large as life! I checked the Intranet site and there was an equally hideous picture of me with one of the alums. She, at least, looked good. I’m not sure what’s worse—that I looked every minute of my 55 years, or that they didn’t get all the detail of the hand-knit sheep sweater I was wearing—that one I knit all through Code Academy, to preserve my sanity.

Since then, I’ve had complete strangers stop me in the hallway, exclaiming, “Oh my God, it’s you! Your picture is EVERYWHERE!” The good thing about this is that I’ve also had people ask me about the Code Academy program. I’ve been able to give them an overview of the program and tell them that it was a fantastic experience, and that I’m very happy now that I’m a developer. Hopefully all this was worth it, and there will be a lot of applicants this year.

Work Day 28: I wasn’t supposed to do that?

…or “When you assume…”

Our offshore developer did my code review. He got back to me with some points he wanted to explain. As it was early, our tech lead arranged a call for the three of us. May we pause to say here that going over code with other developers is WAY easier than having tall, towering arguments with six business people on whether or not they want the words “Total Cost” capitalized in a report or not.

After I explained the amount of “deletions” (my changes for the word wraps and width limits seemed to show up as deletes and adds), he walked me through creating a branch from GitHub to apply my patch. I hadn’t done this yet, as my change isn’t being released until February. Instead, I’d cloned the November Release repo to do my changes and created a patch. He explained that I could at least check out a branch for now and push my changes there, without affecting anything in the main release branch, as long as we get rid of it before the December release. That way, he can properly review everything I did. I know what you’re thinking—did you learn nothing in boot camp? Yes, we used GitHub extensively in Code Academy, but we were dealing with a master and maybe five branches, at most. The company GitHub is IMMENSE with many, many repositories for many departments, that have many branches, where you make branches from branches for user stories. You honestly need a Dramamine before you attempt to sign in to look at it.

He asked where my GUnit test and coverage report were—or at the very least the screenshots. I showed him where this was in the documentation, and he pointed out that I still needed a coverage report. Thank God I didn’t have the webcam on because I’m sure my eyes bugged out like a squirrel about to be rendered semi roadkill. He patiently explained how to create this in Guidewire—it was simply a matter of clicking an icon. My cat Jack could manage it, if he had opposable thumbs.

And THEN, he saw the dropdown where I’d run my GUnit test earlier.

“You ran…all the tests?”

I explained that I’d followed the company GitHub Wiki instructions to the letter.

“You ran ALL the tests???”

Come to find out, I was only supposed to run tests pertaining to my code.

“Is that why it took over an hour to run?” Honestly, the entire process was three hours of my life I’m never getting back again.

It gets funnier. He looked at my code again and said, “and since you only changed the pcf files, and not any classes or methods, you really didn’t need to run a GUnit test at all.” I pointed out the one class test I thought pertained, but there was no actual change to that class, and it didn’t directly affect my two pcf file sections, so it was out of scope.

We left off there, so that the poor guy (being 10 1/2 hours ahead) could go home and go to bed. I thanked him profusely and hung up. He hung up the phone and I’m sure either howled with laughter over the crazy lady who thought she had to run the ENTIRE block of 1,008 GUnit tests for two tiny list view pcf changes, or fell into a dead faint.

My boss, who’s still on a high from me doing actual work now, thought the whole thing was hilarious.

Work Day 26: GUnit testing hell, part 2…

…but there was light at the end of the tunnel.

My mentor explained that sometimes the GUnit errors have nothing to do with one’s code change, as you’re testing the entire code base, with other people’s code changes. He had me back out my changes (luckily I’d done a patch, plus took copious notes on what I changed), rerun the GUnit test, put my changes back IN again, rerun the GUnit test AGAIN, to see if the errors are due to issues in general or due to my code changes. Why I didn’t think to do this myself, I don’t know, but that’s probably why they pay him the big bucks to be a Tech Lead. Sure enough, the errors were the SAME, so my changes didn’t cause them.

Now I just have to figure out what the difference is between a “code inspection” and a “code review.” I emailed our tech lead, asking if I needed to provide anything else in order to get a code review. Apparently, I need a code inspection before the code review. Call me silly, but I thought these were one in the same…I scoured documentation for old user stories but there is no there there. The ones I found say “Code Inspection: non-applicable.”

On a more cheery note, my name made our division Town Hall meeting! Once for having 30 years with my company, and once for graduating Code Academy, along with all my other fellow graduates. Very exciting—I can’t think I’ve EVER rated a mention at the town hall meeting. Granted, my name appeared on a PowerPoint slide, but still, it’s really exciting to be acknowledged for something for which I’ve worked hard. Several people came up to congratulate me…for the 30 years. I’m not sure why they were more impressed that I’ve survived 30 years at the company rather than having survived coding boot camp, but I thanked them.

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 4: What I did on my summer vacation…

Let’s be honest. I had the BEST summer EVER. I spent three months tackling challenging problems, creating websites, coding in different languages—all while indulging my love of knitting and crocheting by using that as the topic for for three major class projects. Oh, and I got to defer dreary, boring crap in my everyday life I didn’t want to do anyway.

Now it was time to show someone the results…today was my big presentation for my boss, my mentor, and The Alum. Before anyone arrived for the meeting, I fired up my home laptop, got the two servers up and running on their ports, brought up my final project, got PostgreSQL going, etc. All was right with the world…until I tried to project my laptop onto the conference room big screen. I watched that lousy little dongle flash white over and over and over again. When everyone arrived, they informed me that a non-company device won’t work with the conference room multimedia equipment. That makes no sense to me—what if you have a guest presenter?

Despite the fact that I find this insane, the fact remained that my laptop was NOT playing nice with the big flatscreen. As luck would have it, my mentor had already downloaded my capstone project to his laptop. He also had my GitHub code. I was able to do the whole presentation from his machine. Everyone loved the site! I was able to intelligently answer questions about the application and the process. I also walked them through my code for the final project, too. Overall, it went very well!

Now, I just need a functioning work machine. Last I checked on the tech site, my laptop is 20.59% done. I’m really dying to know what comprises the .59%…

Work Day 2: This is Taz…

…he’s currently more useful than I am. At least he can sharpen pencils.

I met with my Mentor today over Skype, where he got a firsthand look at how SLOW my current work laptop is. He quickly decided that I’m better off reviewing documentation, becoming familiar with our company GitHub, exploring other links, reviewing the code, and doing tutorials until my new laptop comes in. So, I did all that today. I continued reviewing the Pluralsight video and W3 Schools for Java…until they got to the part about “objects,” “classes,” “constructors,” etc. That sonic boom you heard clear across the cosmos was my head exploding.

HEH???

My plan is to go over all that again tomorrow, and hope that overnight, while I sleep, tiny elves implant understanding in my brain, because I have NO IDEA what the hell it all means.

Day 64: When one door closes…

…we hope my ID badge still works in the revolving door back at the office.

It’s the last day of class. I’m feeling an immense sense of gratitude. I’m sad our three months of training are over, as I’m going to miss everyone. We are all going to meet weekly for additional follow-up training for a few months, but that’s going to be over Skype, so it’s not going to quite be the same. It’s also been nice to put a lot of everyday “busy-ness” on the back burner while I focused on classwork—I got to see what was really important. There are a few things in my life that I think I’m going to let go by the wayside, as they didn’t turn out to be as important as I once thought…not the knitting group, though! Never!

I want to thank everyone for making this possible (at this point, they’re all reading my blog). I wasn’t sure, in the beginning, if I could pull this off at an age where many of my friends are retiring. The last time I coded anything was over 10 years ago, and that was mainframe reporting. Now I’m able to create functional sites with HTML, CSS, JavaScript, Bootstrap, Node.js, Angular/TypeScript, MySQL, Handlebars, etc. Going forward, I’m going to learn Java. I couldn’t have done it without the Code Academy, our great instructors, and the managers that pulled it all together.

I’ve been asked if I’m going to keep up the blog. The answer to that is a resounding YES! Think about it…transitioning back to the department I left as a business analyst, and am now returning to as a developer–it’s material that’s just going to write itself.

I do hope my new laptop shows up soon…

Day 63: Transition…or, do I still remember all my passwords???

We watched more online training videos today (Zzzzz…), and had more guest speakers come in. I have to say, the DevOps speaker was very interesting, as I’m still learning about that. The other speakers were great, too. During the presentation by the Release Management speaker, however, I saw a lot of stunned deer-in-the-headlights expressions from fellow students who haven’t had any experience with the IT release process. I was thisclose to blurting out, “You poor souls—you have NO idea what you’re in for!” I also wanted to add that, even if everything in the release process is carefully followed anal-retentively to the letter, the resultant release can be a complete fiasco. I still remember the time years ago when a department did a demo to the masses (a “lunch-and-learn”, or as I call it, a “ruin-your-free-lunch-time-and-learn”) for a major release for a years-long project. They had to STOP the demo and end the meeting. Why? Because they couldn’t get past the first page of the site. Angry red error messages in big capital letters were blazing across the screen like a really bad scene in a Star Trek movie where the Klingons are about to blow up the ship.

The only good thing you could say about this is that at least I got to eat the rest of my lunch in peace…

As far as my transition plan goes, the good news is that my coworker emailed me the complete list of what I need on my new laptop, and what network accesses I’ll need. In fact, tech support has already granted me some of the accesses.

The bad news? My new laptop is going to take possibly 23 DAYS to come in. I desperately need a new one, as my regular work laptop is an ancient 2014 model that takes 10 minutes just to fire up when you turn it on, never mind anything else. We were provided lovely, sleek little laptops for our training that were just a dream to work with, but that was only for training. I can’t tell you how horrible it was to give back my wonderful laptop yesterday and revert back to my giant, crappy laptop that has all the speed, agility, and nimbleness of an aircraft carrier. My biggest nightmare is that my new laptop will take ages to arrive, and that the department will make me do BA stuff again, and I’ll be forever stuck again in the same rut. I’m probably being hysterical over nothing. My coworker assured me that, at worst, they’ll probably just have me study documentation and do Pluralsight Java videos until my laptop shows up.

More training videos…my favorite…

Day 62: Achoo!

I have a cold.

It was only a matter of time. We’ve all been cooped up in a classroom in the basement of our building for three months now. Several people have been sick over the course of our bootcamp. I’m just happy I never caught whatever that one guy had that caused him to stay home due to vomiting. I’m currently chugalugging Theraflu, hoping to stave off the worst of this. I’d just as soon NOT show up at my old department/new job next Monday morning with the Bubonic Plague. It could bring down the mood…

We spent most of today doing self-study “new hire” online trainings. We’re allowed to skip over some topics we might already be familiar with…things like “How to Fill Out a Timesheet.” Other topics are a bit more relevant. This, in turn, was punctuated with guest speakers. I have to say I was especially appreciative of the IT educational resources speaker. We now have a license through the company for Pluralsight. I’ve joked before about how I don’t get much out of just watching coding videos, but I think the combination of this and W3 Schools should help. My goal, going forward, is to learn Java.

I’m also trying to figure out how to keep my JavaScript/Node.js knowledge fresh, as I’m not going to be using it for my everyday work. One thing I thought of was to perhaps finish the server we started for the final project. We only built it out far enough for our required site pages. Over the years, I’ve seen too many developer friends let their skills go stale because they got complacent in their jobs—I don’t want that to happen to me.

On a cheerier note, I’ve been in touch with my manager. He’s got someone preparing a transition plan for me—It’s my coworker who has also been through Code Academy! That should be a plus. She should have an idea of where the gaps are, and what accesses and additional training I’ll need.

I just hope I remember where I sit…