Niko Heikkilä

November 7, 2021

Craftsman's Log – 2021.11.07

Oh, hi! How is your November going? 🍂

Lately, I've been busy moving from one project to another. I've recently finished a short consulting gig where I helped my team build a cloud-based publishing platform using AWS Cloud Development Kit. I will write more of my experiences with CDK to my blog at a later date.

I updated my blog to Gatsby 4, which now supports server-side rendering and deferred static generation. These features should help me when there are thousands of articles to build statically, but I want to save those precious build minutes.

In December, I will attend the DevTernity 2021 conference. Despite being hosted online, it feels great to watch a day full of inspiring talks from the masters of software craftspersonship. See you there (virtually)!

Next, let's take a look at the best articles I've stumbled upon and read during October and November.

On Collective Narcissism
There's a way to form groups with mutual respect and love towards its members, but it doesn't have to include rejecting behaviour towards people outside the group. Unhealthy group narcissism can occur anywhere: politics, sports, school, workplaces. So beware of the symptoms described in this article.

It’s entirely possible to have healthy pride for your nation or political group and the unique aspects of your culture without being consumed by the desire to tear down other groups and by the need for your group to be seen as superior.

Fighting the 100 % Utilization Trap by Slacking Off
This post hits the spot both in the consultancy and product development world. We can't expect to be fully utilized all the time without dealing with the myriad issues that arise as a consequence. However, we can't always be slacking either. Key takeaways are to form cross-functional teams, monitor the value streams, and nurture a generalist (not specialist) mindset among your teams.

People are not fungible resources. You can't just take them out of one project team and throw them in another. There is a context switch, there is a skill mismatch, there is domain knowledge, there are relationships to rebuild.

Better Onboarding with Local Development Environments
I've been onboarded to a significant number of projects, and unfortunately, most of the journeys start with the exact same chores. Check the documentation for getting the application up and running, check the tests (if any) to get a picture of how different features work, check what tools you need to have in hand when debugging possible production incidents. This can quickly become overwhelming and frustrating if solid engineering practices are not highly regarded, nor has the development experience been a focus area. Fortunately, we can do better.

Every company should aim to get their developers as productive as quickly as possible. How long does it take a brand new developer to get code in the hands of customers when they start at your company? Is it measured in months, weeks, days or hours?

How Non-Development Experience Can Help Your Software Career
Are you thinking of switching careers? It's entirely possible to build a reputable software engineering career, given you have relevant skills outside of the typical domain. Plumbing might be an edge-case here, but at least it provides you with real-world debugging skills having your hands full of shit every day.

Daniel is licensed in backflow prevention, journeyman plumbing, residential / commercial septic installation... and oh yeah, he's earned four certifications on AWS.

Minimum Viable Continuous Delivery
If you haven't yet read the glorious book, Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations order or loan it now. Meanwhile, take a deep gaze at this manifesto describing the minimum steps for real continuous delivery. Yes, your organization is probably advertising how it does CI/CD and DevOps but are you sure you're doing it right?

CD is the engineering discipline of delivering all changes in a standard way safely. It covers a broad spectrum of activities depending on what is being delivered. However, there are behaviors and abilities that must be met in every context to qualify as "continuous delivery".

You Don't Have to Follow Everything in the Tech World
The constantly evolving web development landscape may fool us to think that we should be following it all the time. That's not true. If you learn how to learn and pay attention to fundamentals, you can quickly upskill yourself in any area. So forget chasing the fancy new frameworks and libraries and follow Rach's advice instead.

What I’ve learnt through experience is that the number of languages I’ve learned or the specific frameworks I’ve gained experience with matters very little. What actually matters is my ability to up-skill quickly and effectively. My success so far has nothing to do with the fact I know React instead of Vue, or have experience with AWS and not Azure. What has contributed to my success is the willingness to learn new tools as the need arises.

About Niko Heikkilä

Software Craftsman and Extreme Programmer. Currently shipping quality code at Futurice. Building proprietary software for a living and loving it as much as free and open-source software. Linux, Windows, and macOS user. Follow this blog for insights on TDD, BDD, DDD, mob programming, technical agility, lean software development, continuous integration, and delivery.

For shorter posts, check my account on Mastodon.