Paying the bill for tech debt - working from home
Tags: remote, webdev, development, watercooler
Published: 2020-04-27 14:34:28

---
title: Paying the bill for tech debt - working from home
published: true
description: Continuous journey of working from home due to COVID-19 outbreak at the world. This is my journey, my challenges in trying to be productive and completely changing my work habits from office first to remote first. (Working from home Journey (Day 28))
tags: remote, webdev, development, watercooler
series: working from home
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/vxamrfmykuk7sew5c53m.jpg
---
_Thanks for reading! I'm writing about my remote work journey thanks to covid-19 forced me to_ 😂 _I'm writing now almost a month now (Day 29/30)_ 

Did you ever had this moment where you have to control yourself to not say "I told you" ? 😂

What happened is that for an AB-Test, the common-sense was to not create a pagination feature for an API-request but rather accept that filtering is done in a Web Application (over 5000 items). 

We released a new version and for two days it DDoS'ed basically some parts of our systems. 😅

![Attack](https://media.giphy.com/media/Eq49yQGJL835K/giphy.gif)


### How did this happen?

From my understanding and observation it was a cascading effect of multiple existing "legacy" codebases which resulted in this issue.

1. We were switching from an API Endpoint which was connected to our DB to another teams Endpoint. We agreed that asking that Endpoint "Give me 5K items with detailed information" is an accepted behavior ⚠️
2. Our web app was calling the endpoint for each render and until now, it was not discovered. Problematic Redux architecture ⚠️
3. Wrong understanding of React and Memoization ⚠️

The outcome was multiple rollbacks, many people stressed and definitely some missed orders. 

Personally, I think the root cause here is that technical debt was not handled properly over some time. Especially our chrome web extension has a rather outdated codebase. The incident is basically the bill software teams pay whenever we move on and say "I will tackle it later".

We practice Continuous Integration (CI), Continuous Delivery (CD) and many other things (continuous learning) but I see continuous refactoring (CR) is totally missing. When growing as an engineer, this is definitely something one should discover from Junior to Senior. 

As I started to be more opinionated, here is a past post, why a health sprint is not the correct way:

{% link https://dev.to/fokusman/don-t-do-health-sprints-make-your-software-easy-to-change-day-20-21-ei4 %}


## Personal

First day of #Ramadan kicked in. And this is what my wife prepared for our kids:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0cyk78qzgppefcgow6d5.png) 

We want to provide our kids a positive cultural bias towards our religion (islam). My wife and I, both born in Germany, never felt accepted or comfortable representing our religion. So we want our kids to feel as much self-confident as possible about their identity. We don't know if this works, but at least they have fun 😅

This also means the next ~30 days I'm fasting between 16-17 hours / day. The first day worked well and one learning is that I can stop drinking coffee immediately. 


Take care!

Cheers,

Ferit