Articles

Hexagonal-Inspired Architecture in React

November 30, 2022

My grudge against the front-end community is that we’re too focused on improving low-level APIs and building new tools instead of thinking…

Accumulating Unintentional Tech Debt

October 31, 2022

I’ve consistently underestimated the effects of tech debt. All the books and blog posts have branded its negative impact in my mind, but I…

A Half-Hour to Learn JavaScript

September 30, 2022

I’ve been writing JavaScript on and off for nine years at the time of this writing. And if you’ve been close to a browser, chances are that…

We Don't Need Faster Frameworks, We Need Better Tooling

September 26, 2022

Around ten years ago, businesses realized that building desktop applications was not a resource-effective way to go. You must create…

My Writing & Publishing Pipeline

August 29, 2022

In early 2021 I set out to write Tao of React with nothing but raw ambition. I had finally decided to write a book, albeit a short one. So I…

Reading Code - GitHub Hotkey

August 21, 2022

After I read React’s code last month, I went on Twitter looking for recommendations about the next project to review here. There were some…

A Testing Philosophy

July 29, 2022

I’ve written a lot about software development, but I’ve been silent when it comes to testing. Quality assurance is not my strongest side and…

Reading Code - React

July 15, 2022

It’s daunting to even think about reading the code of a framework I’ve been using for years. I’ve always seen React as a black box that…

Why I Like Hexagonal Architecture

June 20, 2022

I haven’t written that much clean code in the last nine years. I’ve created features and entire products on my own. But looking at my code I…

Reading Code - React-Query

May 17, 2022

When I’m exploring an unfamiliar codebase I start with one of its public APIs. In this case, it was , arguably the most widely used React…

The Time I Built a Game

April 30, 2022

In the summer of 2021, I worked on one of the most complex projects I’ve ever put my hands on - a game. Gaming was the spark that sent many…

Functions, Objects and the Principles I Follow

April 11, 2022

I know my way around a React application or a REST API but when it comes to writing domain logic there is nothing to hold your hand anymore…

Things I've Learned About Interviewing People

March 30, 2022

I can feel my stomach turning before an exam no matter how much I’ve studied for it. But it’s nothing compared to the wave of emotions that…

Tao of Node - Design, Architecture & Best Practices

March 14, 2022

One of the main benefits of JavaScript is that it runs both in the browser and the server. As an engineer you need to master a single…

Ramblings About Clean Code

February 28, 2022

I learned to program in a bootcamp and together with all the introductory courses we had a brief lesson on high quality code. No matter how…

The Hard Things About Front-End Development

February 15, 2022

When I started programming there was a notion that front-end development is easy. At the time it was little more than arranging HTML…

The One Time I Needed Computer Science

January 25, 2022

When I was in high school, I would solve problems in math class, wondering when I would ever need to do this in life. Naturally, I was…

Reading Code - Redux

January 12, 2022

Few things have obsessed me throughout the years as much as programming. Maybe the only other activity that held such an important role in…

2021 Year in Review

December 28, 2021

Another twelve months have slipped by. In recent years I can’t keep up with the calendar’s pace and I finally understand what my grandmother…

The Perfect System Doesn't Exist

November 15, 2021

I am yet to meet a software developer or a construction worker who is satisfied with the job of the person before them. After more than…

Extracting Microservices from a Monolith

October 27, 2021

When I first started dabbling in distributed systems, I realized that some things I would have to grasp only theoretically. I understood how…

Migrating Legacy Monoliths With GraphQL

October 15, 2021

I can’t even fathom how much code is shelled out on a daily basis. Despite the hot market, putting together a team to deliver your company’s…

The Monopoly on Business Understanding

September 27, 2021

The cruelest thing to ever happen in the software industry is the belief that engineers don’t understand and they don’t have to understand…

One Line of Code Changed My Perception of Programming

August 26, 2021

In the first years of my career, I was fascinated by building products. I could masterfully chain together libraries and integrate third…

What Startups Taught Me About Writing

July 20, 2021

I’ve always wanted to write a book. Not sure how those aspirations started, but when I look at the colorful spines, ordered neatly on the…

On the Importance of Software Design

May 31, 2021

To get a deeper understanding of a concept we need to detach. To step away and find a new angle of observation. It’s surprising how much we…

Reflections on My Journey as a Developer

April 12, 2021

I don’t have the traditional programmer’s background. I don’t have CS degree, didn’t do well in math and wasn’t interested in programming in…

Reading Code - Lodash

February 28, 2021

What does it take to build a successful open source library? I imagined that most packages have complex structure, layers and abstractions…

Tao of React - Software Design, Architecture & Best Practices

January 18, 2021

I’ve been working with React since 2016 and still there isn’t a single best practice when it comes to application structure and design…

Reading Code - Express

January 11, 2021

I think that one of the best ways to learn about building software is to explore other code bases. Nothing beats seeing how a successful…

2020 Year in Review

December 22, 2020

We all started 2020 with the idea that it’s our year. In turned out it’s not. Everything was business as usual until March. Then Europe gets…

Conway's Law - The Reason Software Mirrors Organizations

September 26, 2020

A company grows and their now legacy monolithic software doesn’t perform well. Engineers are complaining, features take long to release and…

Why Do We Use Design Patterns

September 05, 2020

Something that I was thinking about a lot when I first started working as a developer was why do we use all those complicated design…

Chasing Errors in Unexpected Places

July 17, 2020

After a long break from personal projects, the situation around the virus inspired me to build something on the side again. I’ll spare you…

How To Write Good Comments

July 06, 2020

Comments - a powerful feature of each programming language that we either abuse or avoid as the plague. Undoubtedly one of the everlasting…

Encapsulate What Varies

June 15, 2020

The only constant thing about requirements is that they change. As engineers we need to translate the complicated patterns of the real world…

Avoid Passing Booleans to Functions

June 01, 2020

Proper software design is a challenge in which functions play a critical part. They are the fundamental building block that groups and…

Leaky Abstractions

May 27, 2020

Abstractions are used to hide broad and complex concepts behind a single idea which is easier to understand. We use them to remove the…

The Cost of Wrong Abstractions

May 18, 2020

You join a new team and after a brief onboarding you are given your first task. It’s a simple one - you need to display an additional input…

Bikeshedding and The Law of Triviality

April 29, 2020

A team of engineers are sitting in a conference room discussing a new service. They quickly decide on the API and storage. Availability…

Art, Details and Abstractions

April 25, 2020

The single thing that made me a better software engineer is understanding the concept of abstraction. To illustrate it, imagine this…

What Is Complexity?

March 31, 2020

What do we mean when we say that something is complex? A system, a module, a class - they can all have that quality. When we talk about…

The T-Shaped Engineer

March 12, 2020

The choice between being a specialist or a generalist is debated by many engineers. Nowadays, the industry may need something in between…

Tabs or Spaces

February 25, 2020

I don’t remember when I found out about the timeless debate on tabs and spaces. I’m a self taught developer and I’ve missed some of the…

The Economics of Technical Debt

February 04, 2020

Technical debt - a tool used to negotiate a refactor for the mess you made 6 months ago. It is often mentioned in the company of other…

Legacy Code and Chesterson's Fence

January 20, 2020

Ah, legacy code. Two words that can strike fear in the heart of any developer. Two words that if mentioned in front of your developer…

The Philosophy of Software Development

January 03, 2020

Software development is considered a field ruled by logic. Every decision we make is guided by rules that we can follow and understand…

2019 Year in Review

December 30, 2019

When I sat down in January I had quite the ambitious goals of where I want to be personally, professionally and spiritually in December…

To UI Engineering and Back Again

November 01, 2019

This is going to be one of those once upon a time articles so buckle up and prepare for a story. When I wrote my first lines of code I wasn…

How Good is TypeScript?

September 05, 2019

You may be asking yourself if using TypeScript for a project is a worthwhile investment of your time. The hype around it is high…

How to Structure of Express Applications

May 06, 2019

When I started my first job I worked with PHP. We built WordPress projects - sites, ecommerce and the occasional plugin. After I did that…

The Lean Design System

February 08, 2019

In the scope of this article I will explain what a design system is, how it works and the benefits it provides even for small hobby projects…

Jiu-Jitsu and Becoming a Better Developer

January 14, 2019

In the beginning of each year we start looking back at what we accomplished in the previous one and what we didn’t. We look back at the…