Job Reflection: 5 Years

I recently passed my 5 year work anniversary. Here's my ramblings since my last job reflection.

Time has really been flying: in the blink of an eye, I’ve completed five full years at my current company. I’ve been continuing to learn lots, and the projects I’ve been working on are all still pretty interesting. Here’s some of the things on my mind since my last job update.

Home office, October 2024.

Mentoring

One aspect of my job that I enjoy is mentoring new folks. I’ve touched on it previously: while it is a time-consuming task, it is fulfilling and has a positive impact on the team: we need more people to join, work on features, and own the feature areas they become a part of. The faster we can onboard people, the better the team can be. In the past, I have mentored one intern as a primary mentor, and a few others as a secondary mentor. I am not a huge fan of doing interviews, as I personally find it challenging to discern someone’s value in such a short value of time. Mentoring an intern is a longer trial period, where we give a relatively scoped project that actually adds value to an end customer, whether that be an internal company stakeholder or an actual external customer who has our switches. Such a project gives me, as a mentor, plenty of opportunities to evaluate how someone tackles a problem, communicates with others, and presents their solutions. While performance review cycles allow me to give feedback with a little bit of anonymity (aside from managers knowing), mentoring has given me plenty of learning opportunities to give more direct, constructive feedback. I’m nowhere perfect on this front, but I think I’ve been improving since I first started mentoring, so there’s that!

Software Release Management

Our company has been doing rapid software release cadences at about six releases per year. While the process isn’t new in itself, I’ve gotten a chance to take part in the behind the scenes effort on how to get a release cut from mainline, have it tested, triaged, and shipped in this time period.

At most companies, continuous integration and deployment (CI/CD) helps with getting things merged and tested. Here, we employ pretty similar methodologies; when we “cut” a release, we also subject that release to our entire suite of tests in builds and on our actual product testbeds to validate the functionality of our features, and to ensure no regressions on known prior issues. If we discover issues after the cutoff, we determine whether that issue is indeed a legitimate failure, and if so, we make the determination of whether to fix it in the release directly (and subsequently merge that same fix back to mainline) or to fix it in mainline only and mark it as a software defect.

Lots of things go on behind the scenes, like nagging people to look at issues in their feature areas, coordinating with upper management, who have a broader view and understanding of how features are being used (and the people working on them) to help guide our decision making when we stumble upon tough decisions. Personally, I liked exploring the various Jenkins scripts we have that keep things rolling. While I can’t speak about the internals too much, finding the root causes to observed issues in our CI/CD infrastructure has always been so satisfying. I would probably like to be part of another cycle of release management: it gave a nice change of scenery from the usual platform work I do.

Learning

As I type my thoughts down, learning new things on my own and from my peers around me will never ever stop. Internal tools and workflows are always changing, and keeping up with those changes is part of the job. It also keeps things interesting. While I don’t always agree with the changes we’re making at work (I can’t really discuss the specifics), the general direction that we’re heading towards is still one that I’m onboard with: so long as that is still the case and things are still interesting for me, I’ll stick along for the ride.

Internal Pressure

One of the biggest driving forces is to always do my best. This has always been the case even before this job: my metric for doing my best was to get as best of a grade I could possibly get at school. That required myself to make sacrifices along the way, whether it was prioritizing studying over social gatherings, or staying late at school to get things done. Work has been somewhat the same for me. I am getting better at not beating myself down too hard (flashbacks back to the first year when I was with the company).

The current project I’m working on has quite tight deadlines. Fortunately, I’m not on the direct critical path, so I’ve been trying to do my part of the project while helping to debug test failures as we ramp up our automated testing. Frankly, I’ve had second thoughts on my contributions to this project over the last half a year since a lot of my changes have been housekeeping work to refactor internal attributes to make things work for our project. The impact of my changes are not as directly known, for better or for worse. That being said, I think it’s still important work that needs to be done, and honestly, it’s been pretty refreshing getting to clean up our code base a bit. Still lots to do here to get us to a better place.

Conclusion

Anyways, that’s all I had this time around. It really doesn’t feel like I’ve been out of school for five years and working in industry. I have lots to learn still, and plenty of people around me to continue learning from. If anything, this project I’ve been on for the last half a year has really given me a new experience working with others that really give it their all. I have lots of respect for the folks on my team, and I hope to continue learning from the best.

Until next time!
~Lui

Injabie3
Injabie3

Just some guy on the Internet that writes code for fun and for a living, and also collects anime figures.

Articles: 274

Feel free to leave a reply