Blog | Niko Heikkilä

Blog | 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


Layman's Guide to Higher-Order Functions

27.09.2022 ☕️ 5 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

18.09.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

17.09.2022 ☕️☕️☕️☕️ 19 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

22.08.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

20.08.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

08.08.2022 ☕️☕️☕️☕️ 20 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

A Practical Guide to Micro-Commits

27.07.2022 ☕️ 5 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

The Essentials of Simple Design

27.06.2022 ☕️ 2 minutes 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?

08.05.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?

07.05.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

18.04.2022 ☕️ 2 minutes 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

17.04.2022 ☕️☕️ 10 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

12.03.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

13.02.2022 ☕️ 5 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

12.02.2022 ☕️ 4 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

30.01.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

30.01.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

01.01.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

15.11.2021 ☕️☕️☕️ 14 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

11.09.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

23.05.2021 ☕️☕️ 12 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

Health Check Before Jumping to a New Organization

09.05.2021 ☕️ 3 minutes read

Many software developers who have at least a couple of years of experience in this industry are often barraged with headhunting letters from recruiters…

#career#recruiting#agile

You Can't Grow Yourself Unless You Grow Others

24.04.2021 ☕️☕️ 9 minutes read

During our careers, almost everyone has regular one-on-one meetings, sometimes referred to as performance reviews. There we take time to go through our past…

#agile#mentorship#career#softskills

Reducing the Lead Times with Little's Law

28.03.2021 ☕️ 6 minutes read

There’s a fascinating law of mathematical theory applicable to agile software development, which helps you deliver features faster without sacrificing quality…

#agile#processes#extremeprogramming#continuousdelivery

Blocking Time for Tasks with Toggl

20.03.2021 ☕️ 4 minutes read

For people doing mainly project work, planning daily tasks is a constant struggle, which can cause severe issues with productivity and mental well-being. As a…

#productivity#tools#opensource#golang

My 21st Century Note-Taking Workflow

07.02.2021 ☕️ 4 minutes read

Taking notes is a serious business. While I’m not your typical person journaling everything they see or hear, I write a lot whether it be articles…

#productivity#writing#tools

The Unsurprising Truth about What Motivates Developers

26.10.2020 ☕️ 6 minutes read

Throughout the observed history, human motivation has adapted to demands and economies of the current age. The first establishment, Motivation 1.0, provided us…

#motivation#career#autonomy#mastery#purpose

Fight the Inner Impostor with Just-In-Time Learning

15.10.2020 ☕️ 2 minutes read

This post might come off like a weird spiritual tip for a developer, but bear with me a minute… Santosha A word I came across in yoga that fits very aptly into…

#selfhelp#motivation#learning

First Four Weeks at Futurice

13.09.2020 ☕️ 5 minutes read

Earlier in the summer of 2020, I made a bold decision to refresh and broaden my career from a product company to software consultancy. I was yearning to work in…

#career#onboarding#life

Kickstarting the Open-Source Culture in Your Company

15.06.2020 ☕️☕️ 12 minutes read

By the 2020s, every software company in existence should be using open-source code as building blocks for their products. Better than that, every company should…

#opensource#github#culture#workplace