in which we use qt3 to blog about our tech jobs

So I’m currently being subjected to “onboarding” after being hired some 3 months ago at a Fortune 50 company as a mid-level software developer.

For context, this is a company that had literally hired single digits of bootcamp-taught developers prior to this fall, when they decided to open up hiring to qualified non-CS grads. College grads have for years been hired into a year-long onboarding program where they don’t even get their “real job” until they’ve been here a year and done a bunch of training and some rotations with various teams.

So they’re trying to figure out how best to onboard people with more experience with professional development but who aren’t being hired into senior or lead roles. Fair enough.

The joke is twofold: One, this is my second (whee) job in the field having been working as a full-stack dev at a startup for the last year. Two, I’ve been here for a few months already so I’ve been pretty well and truly onboarded as far as best practices and tech stack for my team and all that.

I lied: The joke is threefold. Three: The stuff they’re having us spend two weeks in a classroom on is not fucking rocket surgery, for fuck’s sake. Agile methodology and ceremonies. Basic TDD concepts. Monitoring vs logging. CI/CD pipelines. Basic REST API concepts (contracts, naming conventions, etc). What a “product owner” is.

This all would have been fine if I were fresh out the bootcamp. Interesting, even. Not so much today. Okay, fine. Whatever, it’s two weeks, they’re paying me for it, whatever.

HO HO HO, DEAR READER. It’s so much dumber than that!

So we get broken up into “pods” of 5-6 people with a coach, we write tickets and start tracking them, yadda yadda. But then we are informed that we will be mob-developing everything.

Remember every bad primary-education class ever, where 75% of the kids in the room didn’t give a single fuck about anything, and so every time the teacher asked a question there were crickets for 10-20 seconds before either you or some other nerd raised their hand to answer the fucking obvious question at hand, or miraculously one of the other people in the class tentatively ventured forth with “um, x is less than y?” Yeah, do that but in a professional context for two fucking weeks.

HO HO- fuck nope it gets worse. Get dressed down for talking too much and dominating conversations because the rest of the geniuses out there are apparently not fucking functional adults and can’t raise their hand or offer an opinion on anything. Apparently we’re supposed to let that 10-20 second purgatory extend until someone else finally has a neuron fire a single feeble spark that briefly punches through the suffocating darkness that is crushing all happiness and joy out of our very spirits because we’re all fucking stuck here until the end of the week.

I may be a little frustrated at this very moment.

Man, that’s familiar to me from a year ago. The flip side was that your ‘be the one person who has the knowledge and actual will to answer’ was construed as a plus for me.

Also mine was in India, so at the end of the day it had some perks.

Definitely weird when it’s your second career and you’re surrounded by people who this is either their first job ever (pretty much all my Indian colleagues) or first professional job, when I’ve already had one career for over a decade.

My corporate training the other week felt like “this platform we’re adopting for no reason at all and adds nothing but more bureaucracy and headache for everyone, was sold to the CEO because it is developed by a high-tech company who gets lots of press”.

Oh my god, this. I work with some truly brilliant early 20s recent grad types, but boy are they the exceptions to the rule of me being super not at all even a tiny bit interested in babysitting 22-year-olds.

Still love the career switch, but it’s been a pretty frustrating two weeks.

Hah! Luckily the place I’m at is coming out the other side of “wow everything about our technology platform and whole corporate approach is garbage, let’s burn it all down and hire people who actually know things and let them build it all back up from the ground.” So like what I’m doing (not in this two-week purgatory but in my actual job) is this awesome heavily asynchronous set of APIs using modern frameworks and written in Kotlin (which is really sweet, though it had a bit of a learning curve).

Almost there. Almost there. Almost there…

Sure, why not, I’ll play. I love my boring tech job. I mean, I don’t find it boring but a lot of people probably would. Best decision I ever made though was getting into the not-for-profit world, because my god did that cut down on the day-to-day bullshit. It adds certain other headaches, obviously there’s more budgetary concerns, but you figure out how to make what you have work.

As far as training goes, well there’s not a ton of that either, but generally between myself and my team we figure things out. I’ve had the opportunity to work with Python which, yeah, I’m a little behind the times, but as a guy who had worked almost exclusively in the MS stack, it’s a breath of fresh air. Things are pretty good.

Those of us who are perpetually stuck at the pre-burn it down phase are jealous. Our data is garbage, and it feels like no one in the department outside of my immediate team cares. I’m supposed to be an analyst, but spend the majority of my day reverse engineering undocumented reports, guessing which data source was used when the same question gets multiple answers, and getting the technology to work…

…which, since I do have the affinity for the latter, meant becoming the unofficial help desk/IT guy that everyone complains to to when their stuff doesn’t work, but with minimal tools provided to actually fix it. I’m sure the actual help desk is sick of seeing my number pop up by now. All of this may be more forgivable if it wasn’t a multi-billion dollar company.

To end on a positive note, we’re picking up a couple data tools (Alteryx and Tableau) and the C-suite is pushing for a more data-driven approach to everything. There’s been some training that I’ve enjoyed and fingers crossed we can throw together some workflows in Alteryx to clean up the data and streamline things a bit.

I finally hit one of the high points of the software development rollercoaster just now after a pretty damn rough month (the stupid training thing that I blessed you all with upthread, plus Satan’s own gout attack, followed by this thing I just finally worked out).

Going from a fairly basic PHP webapp to heavily asynchronous enterprise-scale API work has been a jump, but this last couple weeks has been particularly special. Our principal engineer decided to implement caching for a few things for perf reasons, which sure yep I get it. So he implements it at a basic level and gets one example working on an endpoint, then hands it off to me. Good stuff, I dig it, I get to learn from him and he gets to not spend his time implementing a thing across a whole bunch of endpoints in the fairly large app I’m working on.

Except that it’s all async to the point that all the cache writes take place after the app responds to the client (again for perf reasons, and it’s a great idea). So we can’t really test it functionally as even with surprisingly beefy sleeps we still don’t have any confidence that the cache interactions happen when we assert against them in our tests. So we have to (and should have in the first place) write good unit tests for the service, but wait! I have to refactor the whole initialization so that the caches (which are instantiated lazily) can be injected so they can be mocked. This is a surprisingly tricky problem with the way everything is wired together.

But it’s working now! And I can write proper tests that will actually give us confidence that the cache service is doing what it should! I’m so happy.

Bonus shout-out to my principal, who was very open to my concerns and ideas of how and why to do all this refactoring rather than the alternative.

Oh good timing on this thread.

So today we had our weekly squad lead meeting, but this time our CEO and an Investor (who claims he was a software engineer) decided to join us. It took 10 minutes before the investor started berating us that fixing performance issues is a simple matter of putting Google Analytics on our site and looking at our largest database table, so it shouldn’t be taking us more than a month to get performance under control.

Except that it’s all async to the point that all the cache writes take place after the app responds to the client (again for perf reasons, and it’s a great idea).

Is this worth the extra complexity? Because writing to the cache when you first get the data, pretty darn simple. Doing it after returning all the data, using it, and writing the response to the call? Sounds a whole level of complexity more, and for what, one whole call?

But anyway, congrats on the coding.

There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors - Leon Bambrick

I’ll chime in today:
I have to do my fifth code of conduct policy training in as many years. As usual, they are portal based with videos and Q&A stuff that cannot be skipped through. There is an online test afterward to make sure we paid attention. The training takes about 2.5 hours for this particular version. I have NO idea why it keeps getting redone each year.

So, similar to 100% of the rest of IT here, it’s end of year project crunch. We’re all busy. We all wait until the last minute to do this shit, as it is usually at the bottom of the, “screaming at me,” pile. But, I’m loaded up today by boss and his boss with EOD needed items, so that means tonight, on my own time at the house, I’ll be watching Code of Conduct bullshit.

Please shoot me.

That’s downright inhumane. I’m so sorry.

I mean, probably. Every millisecond we can shave is golden, since we’re kinda right at the middle of a whole lot of user-facing stuff. Then again, it is a fair amount of dev effort to be sure. I dunno, man, I just work the tickets I get assigned to ;)

Hey Slipper, this is exactly me. It was ‘technically due’ last month, but I’m already maxed on time as last month we had a new version drop on the software support that is responsible for the entire product creation and management for the company.

It was, as expected, a bit of a mess. But, hey, we ditched the old version that was built on Silverlight! But that means I’ve been damn busy.

Which means I literally will never have time to do those during work hours, as I work for a contracting company, and these items are my company required, not client required, making it hard to justify stopping for several hours to do when OH SHIT THE PRICING FOR ALL ITEMS FOR JAPAN GOT SET TO $.01! WHY DID THAT HAPPEN!

Man, this was so much easier in the days of IT yore. Back when HR and anyone else didn’t have portals or software with any method to check anything or validate who has yet to complete anything. You could get by with, “forgetting,” for quite a while with gentle email reminders and whatnot. Now? No. You get on Santa’s bad list on the very day after due date and they have a history of all of your video based training, etc.

But I digress. This is just a reminder: stealing, harassment, taking bribes, racism, sexism, discrimination, and insubordination are all bad, folks. All. Bad. Remember that.

No wait, just forget about it, we’ll remind you again next year.

Well get ready for a pre-christmas massacre. After that happened I sent an email to the CEO about how offensive that whole conversation was and don’t be surprised when the whole US team leaves in the next few months (the company was founded and mostly based in India, they are just now expanding engineering to the US). I felt confident sending that as I"m in a unique position in the company where I’m apparently the only US engineer that the India teams and CEO respects (not due to my skills).

CEO asks me to drive down to the office and meet in person. He goes through the massive context of the company, then the background in hiring the US team, what happened, why he’s so angry at the the US leadership, showed me emails (which I"m not sure is that appropriate but whatever), etc…

Today one of the main investors wants to chat with me on the phone about the situation. Reading between the tea leaves I think there’s been a massive communication break down, everyone at the executive level and below is talking past each other, then getting angry, then antagonizing each other, which only compounds the issue to where we are today. Which is, the CEO has said he is done being backed into a corner, he’s taking control and will steamroll anyone that gets in his way. That’s pretty much going to mean that at least several people in the US are probably getting let go and others are going to Nope out of there really quick (luckily most of them live in Boston where the engineering market is hot right now).

Going to be an interesting week.

Good for you for standing up to bulldozing execs and staying professional. That is tough to pull off.


This sort of on-boarding doesn’t work.

IMO, one of the biggest problems with onboarding is companies where asking for help isn’t openly encouraged. I used to have trouble asking for help, just because I started at places where it was frowned on. But it’s better if I just say “hey, where should I start with this task, I don’t know the code base”. Most of the time, this works great. When it doesn’t, I am better prepared to tolerate it (there’s a shit heel at my current job who is now the “soft-lead” on my team again; a couple of months into my current 2 year position I asked for help on something and I wastreated to him treating me as if I had never developed software before for the next 3 months. I have 15 years of experience).

When I am in a situation where I’ve been somewhere for awhile, I go out of my way to try to help new people get situated. I invite them to ask for help when needed, I offer to walk them through stuff, provide as much background context as possible (always important to do before people look at your old, garbage code).

I find these things, more than the majority of things companies do, build trust rapidly and make for more productive teams.

Yeah that’s not mob programming [Some Corp].

I’ve never done it, mind. But if someone is dominating the discussion there are one of two issues. Or both. One, people aren’t fully on board with it. Which is understandable, especially when you get less experienced people paired with more experienced people. It can be intimidating, and lots of people experience imposter syndrome (the only group of people that never sees members experience it are sociopaths). And then you’ve got all the different types pof people at various points on the spectrum of intro/extro/omni version. The second issue is that this person is using mind control. So. . . yeah.

I am generally skepitcal of mob programming. But I would never expect anything meaningful to come out of doing it in this situation. It takes teams awhile to get up to speed It can take months, many months, the better part of a year. Two weeks with some mob programming splashed in is garbage. But very corporate.

Your job sounds worse than mine in some ways.

Appreciate the solidarity! But now that I’m back to my actual job, all is more or less well.

Kall, keep yourself prepared. That sounds like a shit show waiting to happen. The CEO showing you things like that sounds like defense of future actions, and the investor wanting to chat sounds like someone trying to sway you to their side.

I can’t stand exec drama. The place I work for now has had it’s fair share of it.