Reflections on 2021
These days, the Software Engineer staying within one or two frameworks and languages seems gone. At work, I develop in 4-5 languages (including DSLs) […and] integrate with
HashiCorp Vaultand push aroundGitLab pipelinesregularly, integrating with security scanning tools and configuring/controlling automated change records, test-reporting, and artifact deployments.
2021 has been an extraordinarily-busy year for me.
In late 2020, I earned my AWS Certified Cloud Practitioner certification and have been pretty deep into AWS and DevSecOps ever since. I now rip through Terraform as well as SAM to fulfill IaC needs at work. At home, I’m using SAM and CloudFormation, but still capturing IaC. GitLab pipelines are a nothing-burger to me now, and it’s curious to see how much I’ve grown.
Lately, I’ve been working with AWS patterns, primarily HttpApi/Private REST –> [authorizer] –> Lambda –> SES et al. I’ve become really quite interested in the utility of X-Ray–it’s everything that other packages (e.g. OpenCensus, OpenTelemetry, Sleuth, etc.) can give you in the way of spans and being able to trace a request from end-to-end, but it is dead-easy to integrate with in AWS and instrumentation with Lambdas is simple. I am in fact considering moving a public-facing API from HttpApi (faster, cheaper) to REST API (can support X-Ray) for its monitoring capability
The “advice” here comes likely in this form: these days, the Software Engineer staying within one or two frameworks and languages seems gone. At work, I develop in 4-5 languages (including DSLs) and across 3 major frameworks (Spring Boot, Quarkus, React mainly). I integrate with HashiCorp Vault and push around GitLab pipelines regularly, integrating with security scanning tools and configuring/controlling automated change records, test-reporting, and artifact deployments. I also have some ad-hoc “mad-scientist” experiments I conduct in the background; my latest was to scratch an itch for spell-checking projects with a dictionary list that lives with the project itself, and blocks commits if errors are found.
It’s been a weird year, but I absolutely love what I do and am happy to work where I do and with the people whom I call colleagues and–some–friends.
As 2021 winds down, I am building a new computer–it’s a beast and features an AMD Ryzen Threadripper 3070X CPU, 128GB RAM, all the things someone who wants the option to run 40-50 concurrent k8s-based VMs would want in a machine–and reflecting.
A lot of the annual retrospective here is administrative housekeeping:
- Our team is tiny, my friend and I are the sole engineers, but this means we can trade team-size for a focus on culture and quality. The price there is that we have to work harder to immediately-understand new technologies, but I’ll gladly make this trade!
- I’m likely going to be re-classed and receive another raise–we’re huge and slow to move, and I’ve been moving apparently “quickly” through ranks and ranges.
- I’m getting pretty good at the ad-hoc background-pushing on work code that I’ve been doing. My mad-scientist experiments routinely result in something useful.
- Our new manager seems like a genuinely nice human. I push against him, and continuously make, “does this make us stronger engineers?” noises, but we seem to have a very good relationship. We challenge each other, and we enjoy the outcomes.
I think the largest challenge I faced in 2021 was mentoring someone who, while a fine person, just wasn’t living up to being a good mentee. That’s difficult, as I don’t really know how else to approach the question of, “how do I improve,” without bringing up the fact that ass-in-chair time is absolutely required. The commitments he had made elsewhere really couldn’t permit as much of this as he should have in by now; hopefully he’ll work diligently to improve this and will guard this dedicated time vigorously. We failed that guy, as our projects range from, “brown-fielding? We should sunset and kill this!!” to “okay, now let’s do this thing that we don’t know how to do.” But I don’t think we bear all, or even most, of the blame here. When your mentor thinks more about your career and direction in terms of, “what should I learn next?” that’s probably a bad sign. I think I was personally shocked to see how much difference there is between the two of us; I am classed as a mid-senior at work, doing the work of a senior (we have quotas :| ), and lead teams and just plow through things. It’s hard to look back at a mentee with Beginner’s Mind. I’m actively re-thinking how to best mentor, and I remain convinced that ad-hoc “lunch and learn” type presentations of, “hey, here’s this neat thing I’ve been thinking about” or, “hey, here’s how we can do X” would be useful.
The largest success likely came in terms of a continued focus on engineering software with a firm “cattle, not pets” mentality. I’ve written some moderately-clever code in a few places, but the goal is for all this code to go away and be replaced with better code as requirements change and as we gain sophistication and understanding.