Niko Heikkilä

Niko Heikkilä

👋🏻 Hello, traveller! I’m a software craftsperson with a strong passion for making work and life better for software engineers. This blog contains insights related to modern software engineering practices. Read the longer story of me, and if you liked what you read subscribe to my feed.

Latest Articles


Film Review: Poor Things (2023)

January 15, 2024 ☕️ 5 minutes read

Whenever there is a new film from the master of anarchistic cinema, Yorgos Lanthimos, I must remind myself to bring something to support my jaws into the…

#films#cinema

Five Essential Pointers for Improving Your Product and Process Quality

October 14, 2023 ☕️ 3 minutes read

One technique of ensuring my work will be remembered is giving back professional pointers on how the client can improve the quality of their product and process…

#lean#agile#testing#tdd

Clean Frontend Architecture with SvelteKit: Enabling Safe and Continuous Deployments

May 7, 2023 ☕️ 7 minutes read

The goal of every software team is to deliver the solution into their users’ hands sooner than later. In this post, I will explain how to set up a CI/CD…

#guides#frontend#architecture#design#svelte

Clean Frontend Architecture with SvelteKit: Building Confidence with Acceptance Testing

May 3, 2023 ☕️☕️ 8 minutes read

In the previous chapters, you saw how the heart of our architecture — services, gateways, and domain models — were covered with behavioural IO-free tests…

#guides#frontend#architecture#design#svelte

Clean Frontend Architecture with SvelteKit: Server-Side Routes and Components

May 2, 2023 ☕️ 4 minutes read

In the previous chapters, I have demonstrated the power of designing and testing a backend within the frontend, but you can only walk so far. I haven’t touched…

#guides#frontend#architecture#design#svelte

Clean Frontend Architecture with SvelteKit: Domain Modelling

February 28, 2023 ☕️ 5 minutes read

Whether you follow the domain-driven design or not, clean domain modelling is one of the most crucial problems we software engineers must tackle. Why is that…

#guides#frontend#architecture#design

Clean Frontend Architecture with SvelteKit: Handling the External Dependencies with Gateway

January 31, 2023 ☕️☕️ 8 minutes read

In the previous post, I designed our service and use case handlers. However, it had one glaring detail I left unexplained: the gateway. What exactly is a…

#guides#frontend#architecture#design

Clean Frontend Architecture with SvelteKit: Discovering the Use Cases

January 29, 2023 ☕️☕️ 8 minutes read

The essence of software lies in the problems it helps us to solve. Software that doesn’t offer a solution to the problem is only code for the joy of coding…

#guides#frontend#architecture#design

Clean Frontend Architecture with SvelteKit: Preface

January 28, 2023 ☕️ 3 minutes read

Long gone in the past are websites that purely displayed static, seldom changing content to visitors. Today, almost all user interfaces are web applications…

#guides#frontend#architecture#design

A Practical Guide to Micro-Commits

November 5, 2022 ☕️ 4 minutes read

In software development, there’s a lot of talk about small vs big batches. However, that talk mostly comes from the Lean methodologies perspective, which, while…

#git#testing#tips

Layman's Guide to Higher-Order Functions

September 27, 2022 ☕️ 4 minutes read

The single most important topic in functional programming is to understand what a function is. Inherently, a function is a way to map the input value of some…

#beginners#functionalprogramming#typescript#react

The Definitive List of Things I Don't Know

September 18, 2022 ☕️ 5 minutes read

I often ponder my work and where I want to head with it. Thus, it’s only logical to understand what I need to learn to get there. Moreover, the more I think of…

#lists#programming#career#beginners

Test-Driven Development on a Bus Ride to Hell

September 17, 2022 ☕️☕️☕️ 17 minutes read

I’m going to admit something: I had trouble understanding test-driven development (TDD) and it took me a long time to get over it. TDD felt mysterious…

#tdd#engineering#agile#movies

Be Effective, Not Productive

August 22, 2022 ☕️ 2 minutes read

I’ve recently participated in discussions related to developer productivity. I think productivity is harmful because it can fool us into thinking high-frequency…

#agile#teamwork#programming#design#thinking

Use Case Driven Development: How to Write Resilient and Robust Tests

August 20, 2022 ☕️ 5 minutes read

Recently, I had a discussion with my team regarding an always timely question: at what level should I write my automated tests: unit, integration, or end-to-end…

#tdd#architecture#design#mocking

Turning up the Developer Experience to Eleven with Mob Programming

August 8, 2022 ☕️☕️☕️☕️ 18 minutes read

This post was originally published in Futurice blog. Disclaimer: similar to other ways of working, both pair and mob programming are known to elicit heated…

#agile#mobprogramming#collaboration#lean

The Essentials of Simple Design

June 27, 2022 ☕️ 1 minute read

Few rules in designing clean code have been as crucial for me as Kent Beck’s four rules of simple design. To jog your memory, they are as follows: Well-designed…

#design#xp#tdd

How do you ensure your team receives feedback as fast as possible?

May 8, 2022 ☕️ 2 minutes read

Developer: “Hey, could you review my PR? I had this fantastic idea about X the other day, so I decided to give it a go. I think it turned out to be pretty good…

#codereview#design#management#feedback

New Computer — Who Dis?

May 7, 2022 ☕️ 2 minutes read

There is one thing uniting the people working in tech. Computers. Fresh from the box, many of them are happily unequipped to fulfil our grand visions and…

#nodejs#zx#opensource#automation

Sanctity of the Slow Web

April 18, 2022 ☕️ 1 minute read

There are too many places to mention, but I’ll list a few here: GitHub Explore can offer you many suggested packages based on the GitHub repositories you’ve…

#mentoring#reading#links

Effortless End-To-End Testing with Microsoft Playwright

April 17, 2022 ☕️☕️ 9 minutes read

Don’t care about reading much, eh? Too bad, but you can also skip the content and head over to my Playwright Kickstarter repository and learn how to use it for…

#testing#automation#frontend#productivity

Five Best Talks from DevTernity 2021

March 12, 2022 ☕️☕️ 8 minutes read

The promise on DevTernity conference homepage is to turn developers into architects and engineering leaders. A bold mission, which many major players in the…

#conferences

Growing Software Guided by the Living Dead

February 13, 2022 ☕️ 4 minutes read

While dipping our toes with test-driven development for the first time, a significant obstacle is usually finding out how to write our first tests. Happy cases…

#tdd#testing#patterns#refactoring

Uncertainty-Driven Project Development

February 12, 2022 ☕️ 3 minutes read

In the modern world struck by volatility, uncertainty, complexity, and ambiguity we are still pushed to estimate our work accurately. Some say estimating is…

#agile#estimating#projectmanagement#planning

New Release: Publicator

January 30, 2022 ☕️ 2 minutes read

Lately, I’ve been investing more time in Python projects. However, having worked with Node.js and TypeScript for the better part of the last few years, I…

#python#opensource#tools

Raising the Bar of Professional Software Development

January 30, 2022 ☕️ 4 minutes read

Recently, on LinkedIn, I shared my unapologetic opinion that you’re not a professional software developer if you don’t care to write automated tests to verify…

#professionalism#mentoring#craftspersonship

DevOps Is the Interface, Your Organisation Implements It

January 1, 2022 ☕️ 3 minutes read

Long Time Ago in a Software Company, Far Far Away The product management learns about a speculative need for the Feature that will help the company increase…

#devops#agile#scrum#management

Bringing Back the Technical Excellence: Rules of Thumb for Effective Software Lifecycle Management

November 15, 2021 ☕️☕️☕️ 13 minutes read

In software, legacy code is a code that runs in production. Don’t you love the defeatist attitude of this quote? You might have stumbled upon it on many…

#craftspersonship#maintenance#testing#tdd#documentation

Being a Good Developer: Tips for an Effective Code Review

September 11, 2021 ☕️ 6 minutes read

Hey! An earlier revision of this post described how to survive the world of pull request workflows. However, since then, I’ve grown more convinced that…

#codereview#pairing#mobbing#continuousintegration#codequality

When to Pair Program and When to Go Solo

May 23, 2021 ☕️☕️ 11 minutes read

I recently finished reading Practical Remote Pair Programming by Adrian Bolboacă. In the description, the author promises to teach you the structure…

#pairprogramming#mobbing#collaboration#books