<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ferit 🌟🕌</title>
    <description>The latest articles on DEV Community by Ferit 🌟🕌 (@thatferit).</description>
    <link>https://dev.to/thatferit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F94351%2F3b77b692-a6c9-4664-b042-68c3f573880b.jpg</url>
      <title>DEV Community: Ferit 🌟🕌</title>
      <link>https://dev.to/thatferit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thatferit"/>
    <language>en</language>
    <item>
      <title>Beware of the import</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Thu, 02 Jul 2020 15:22:06 +0000</pubDate>
      <link>https://dev.to/thatferit/beware-of-the-import-3hcf</link>
      <guid>https://dev.to/thatferit/beware-of-the-import-3hcf</guid>
      <description>&lt;p&gt;When you are working on an existing project for a year or more, at one point you change your webpack or babel configurations rarely. You add something here or optimize their.&lt;/p&gt;

&lt;p&gt;But what if you change scope and start working on a rather outdated setup? &lt;/p&gt;

&lt;p&gt;Here is me, interested in adding Storybook 😀 and ending up updating Babel 6 to 7 and trying to understand why existing imports are not working anymore.&lt;/p&gt;

&lt;p&gt;The great news is, babel as an upgrade script which updates your &lt;code&gt;package.json&lt;/code&gt; 🎉&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx babel-upgrade --write --install&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Does great things. It updates your old babel dependencies to the new ones. Yet somehow it didn't change my &lt;code&gt;.babelrc&lt;/code&gt; file so I was left alone trying to understand what I really need.&lt;/p&gt;

&lt;p&gt;When I opened it, I saw this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgflip.com%2F471gbi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgflip.com%2F471gbi.jpg" alt="meme" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So here we are left with this package.json:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4mlsysi82go86qxfqbpj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4mlsysi82go86qxfqbpj.png" alt="Alt Text" width="533" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I went through all plugin documentation pages I discovered that I don't need any of them except three.&lt;/p&gt;

&lt;p&gt;Once I changed that, the application was loading and everything looked fine until I hit a strange error:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"export 'timezone' was not found in 'Config/config'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And this is shown in 60+ files. Something that worked before isn't anymore.&lt;/p&gt;

&lt;p&gt;So let's check what this config file is all about:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import _ from "lodash";

const config = [...] // a lot of configuration

module.exports = config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So this code doesn't seem to work anymore. After playing around with &lt;code&gt;export default&lt;/code&gt; for 2 hours I realized one really important thing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The curly brackets in import {} are different than the destructuring {} used for example in const { timezone } = config&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🤯🤯🤯🤯🤯&lt;/p&gt;

&lt;p&gt;I'm not sure if a babel package or simple configuration is missing to allow the behavior before. It looks like in babel 6 + plugins using &lt;code&gt;module.exports&lt;/code&gt; allowed after compilation to use named imports.&lt;/p&gt;

&lt;p&gt;If anyone has a tip, please comment below 😃&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>help</category>
    </item>
    <item>
      <title>First relaxing week - wfh edition</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Sun, 10 May 2020 21:42:39 +0000</pubDate>
      <link>https://dev.to/thatferit/first-relaxing-week-wfh-edition-83m</link>
      <guid>https://dev.to/thatferit/first-relaxing-week-wfh-edition-83m</guid>
      <description>&lt;p&gt;&lt;em&gt;Thanks for reading! I'm writing about my remote work journey thanks to covid-19 forced me to&lt;/em&gt; 😂 _ I'm writing now for 2 months_ &lt;/p&gt;

&lt;p&gt;First of all, time is moving fast! It's been 2 months now, since I started to write at Dev.to as a way to handle this (hopefully) once in a life time experience of living with a global pandemic.&lt;/p&gt;

&lt;p&gt;After these 2 months, I can say that some of my Februar decisions seem to be related to Covid-19 but unconscious. 😅&lt;/p&gt;

&lt;p&gt;Nevertheless, I received the &lt;a href="https://dev.to/badge/8-week-streak"&gt;8-week writing strike&lt;/a&gt;. I'm happy about me writing down my thoughts and a lot of learnings. Yet I don't feel the need for a daily blog. I'm rather switching now to a weekly one and have to see what cycle works.&lt;/p&gt;

&lt;p&gt;This week at work is mainly about creating a new A/B-Test and also starting first architectural steps for some of our applications. After a short alignment with my Lead, we agreed in using the &lt;a href="https://c4model.com/" rel="noopener noreferrer"&gt;C4-Model&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I never used it before yet heard about it. We agreed that I start creating the first two levels of our architecture and continue with our Frontend chapter.&lt;/p&gt;

&lt;p&gt;The biggest change this week was a good one. With my team we started doing weekly "watercooler" hangouts. Randomly chatting, learning each other better. Having a more personal, friendship-like relationship &lt;a href="https://hbr.org/2017/08/having-work-friends-can-be-tricky-but-its-worth-it" rel="noopener noreferrer"&gt;helps&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Personal
&lt;/h2&gt;

&lt;p&gt;Mother's day is happening! And my lovely daughter is planning the whole week things. Like what kind of earrings to buy, what to draw, what kind of flowers to buy. It is amazing seeing her grow and doing all these things ❤️. &lt;/p&gt;

&lt;p&gt;As the last week was a short work week, we enjoyed the days going outside to playgrounds. They are officially open in Berlin, the weather is great and we are using this opportunity. Also we went to the berlin Zoo 🐘&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7c8qpni1elgwdht6t06m.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7c8qpni1elgwdht6t06m.JPG" alt="Alt Text" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And about Covid-19: &lt;/p&gt;

&lt;p&gt;As I said, we are getting back to a level of normality. This new situation definitely changed many things. I don't like crowds. I don't understand why people can't keep certain distances. Whenever I want to meet a friend now, I'm hesitating.&lt;/p&gt;

&lt;p&gt;Take care!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Calming down and starting architectural topics again - wfh edition</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Thu, 30 Apr 2020 14:28:14 +0000</pubDate>
      <link>https://dev.to/thatferit/calming-down-and-starting-architectural-topics-again-wfh-edition-2l9p</link>
      <guid>https://dev.to/thatferit/calming-down-and-starting-architectural-topics-again-wfh-edition-2l9p</guid>
      <description>&lt;p&gt;&lt;em&gt;Thanks for reading! I'm writing about my remote work journey thanks to covid-19 forced me to&lt;/em&gt; 😂 &lt;em&gt;I'm writing now almost a month now (Day 33/34)&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;So after doing all these things for our Apps Team, being in the Bugstream, tackling some big Pull-Requests, challenging Feature Design and helping out on other things, I'm definitely exhausted. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszqeo08oq2517cc91hwd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fszqeo08oq2517cc91hwd.gif" width="480" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I'm taking my time to read, reduce my list of open Tabs(80+) and learn. At the same time, I'm researching how much I could decouple our release of Chrome Extension to the Chrome Web Store.&lt;/p&gt;

&lt;p&gt;There are two possible solutions:&lt;/p&gt;

&lt;h4&gt;
  
  
  Use a CDN and Host the files on a Bucket
&lt;/h4&gt;

&lt;p&gt;The Chrome application is nothing else than a basic skeleton and loader. The &lt;code&gt;contentscript&lt;/code&gt; and &lt;code&gt;backgroundscript&lt;/code&gt; are hosted on our S3 Bucket and we regularly deploy via our internal CI/CD Tool. This way we would be fully autonomous from the manual google release process.&lt;/p&gt;

&lt;p&gt;This would allow us to start work with the Chrome Extension like with any other application. No fear to deploy and break things but rather doing it and if something happens, quickly rollback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; I'm not fully sure if Google Policies allow this. You can define specific TLD's and load javascript from there. I have to dive deeper into Chrome Documentations here.&lt;/p&gt;

&lt;h4&gt;
  
  
  Hybrid solution
&lt;/h4&gt;

&lt;p&gt;In 2019 another team refactored some parts of the rather outdated Chrome Extension codebase. The outcome is an already existing webpage version of it. It is the same codebase we use to release and upload to the Chrome Store. &lt;/p&gt;

&lt;p&gt;Due to some open product questions and the need to inject into our Zalando Shop, this approach means, we would keep 10-20% of the logic as a "Native" Chrome Extension and the rest is loaded via an &lt;code&gt;&amp;lt;iframe&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Still Google Guidelines. Yet, this approach should be a better compromise. We would be able to deploy and rollback most of the part and would only release a new Chrome version when we change the DOM Injection.&lt;/p&gt;

&lt;p&gt;The first solution seems the fastest and simplest, yet has a higher risk of rejection. The second approach for me looks like the a good compromise getting us closer to control deployments, free us up from manual releases (almost) completely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Personal
&lt;/h2&gt;

&lt;p&gt;The last two nights I experience that thanks to our son, I'm not getting enough sleep and it reduces productivity. In my case, it definitely makes it hard for me to focus. The combination of Ramadan and less sleep never went well 😄&lt;/p&gt;

&lt;p&gt;Yet I'm used to the 16h+ of no food, no water. I was even used to 4-5h of sleep for more than a year (thanks son! 😛). Yet I'm back to 6-7h since 2020 started and until recently. &lt;/p&gt;

&lt;p&gt;The reason with our son is most likely his last molars are breaking out and this pain makes him sleep restless. Also during day time, it was hard to calm him or understand why he is crying / shouting. &lt;/p&gt;

&lt;p&gt;Also, my wife seems to be working in a "system relevant" job (pharma) and we will try bringing our kids to kindergarten next week. They need to socialize and no matter how I might be afraid of Covid-19, the data for Berlin (Germany) isn't looking that bad. &lt;/p&gt;

&lt;p&gt;And about Covid-19: &lt;/p&gt;

&lt;p&gt;I'm now in a phase not caring much about it. It is a pandemic, it is more dangerous than the flu, yet it believe goverments will slowly get back to some amount of "normality". Yes, some industry will not be back on the short-term, maybe even for a year (anything around tourism).&lt;/p&gt;

&lt;p&gt;Take care!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>How a wrong Hook can DDoS you - wfh edition</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Wed, 29 Apr 2020 16:49:40 +0000</pubDate>
      <link>https://dev.to/thatferit/how-a-wrong-hook-can-ddos-you-wfh-edition-26hi</link>
      <guid>https://dev.to/thatferit/how-a-wrong-hook-can-ddos-you-wfh-edition-26hi</guid>
      <description>&lt;p&gt;&lt;em&gt;Thanks for reading! I'm writing about my remote work journey thanks to covid-19 forced me to&lt;/em&gt; 😂 &lt;em&gt;I'm writing now almost a month now (Day 31/32)&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;First of all, many of the topics from past weeks are finished 🎉&lt;/p&gt;

&lt;p&gt;This means I can get back to coding. Refactoring, Frontend Architecture and other stuff are waiting for me to be tackled.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ycr9q3h15e45u0imy6n.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ycr9q3h15e45u0imy6n.gif" alt="Get this react" width="360" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This week is the usual end of sprint ceremonies. We had our own Sprint Review and had to share the incident. As mentioned in the previous post some legacy code resulted in a DDoS like HTTP Call overload to one endpoint.&lt;/p&gt;

&lt;p&gt;This week, my curiosity caught me and I asked my co-worker to explain me what exactly happened. During our session, we discovered that besides some wrong decision on the API Design, the root cause was a small change in our React Code.&lt;/p&gt;

&lt;p&gt;So here is the learning:&lt;/p&gt;

&lt;p&gt;** Be careful when using React Hooks with dependencies **&lt;/p&gt;

&lt;h3&gt;
  
  
  What happened?
&lt;/h3&gt;

&lt;p&gt;The problem was that in one of our Provider Components, we had a useEffect-Hook with multiple dependencies. As my colleague added another one, not realizing that he was putting an &lt;code&gt;Object&lt;/code&gt; there and not a primitive data. The outcome 💥&lt;/p&gt;

&lt;p&gt;This is how the code simplified looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;AnotherProviderComponent&amp;gt;
  {(filters) =&amp;gt; {
    return (
     &amp;lt;ProviderComponent filters experimentData={expData}&amp;gt;
      {(data) =&amp;gt; {
        return (&amp;lt;ComponentA/&amp;gt;);
      }}
    &amp;lt;/ProviderComponent&amp;gt;);
&amp;lt;/AnotherProviderComponent&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What happens here is that from another fetch Call we receive the variant in which the customer is (control or test) and load data and transform it differently based on the variant. So our &lt;code&gt;useEffect&lt;/code&gt; looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    useEffect(
      () =&amp;gt; {
        if (!isSomething) {
          getFancyData(
            requestId,
            experimentData
          );
        }
      },
      [
        requestId,
        experimentData // this is an object
      ]
    );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The problem that happened is that React is only doing &lt;code&gt;shallow comparison&lt;/code&gt; of such dependencies. If we provide a complex Object here, we will only provider a reference. &lt;br&gt;
With each re-rendering a new reference will be passed (from my understanding) and therefore useEffect is triggered every time something triggers a new render. In our case, the issue was one specific user calling us 10+ times and asking for thousand of items with detailed data. &lt;/p&gt;

&lt;p&gt;The fix of it is than simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    useEffect(
      () =&amp;gt; {
        if (!isSomething) {
          getFancyData(
            requestId,
            experimentData
          );
        }
      },
      [
        requestId,
        experimentData.variant // now we have only a string
      ]
    );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once we paired and went through the code, the issue was quickly clear to me but for someone who is new to react, this is can happen easily. I think my colleague (new to React) will never forget this 😂&lt;/p&gt;

&lt;h2&gt;
  
  
  Personal
&lt;/h2&gt;

&lt;p&gt;Ramadan continues and I don't experience downsides. Working from home, not commuting, no stress early in the morning to catch the train.&lt;/p&gt;

&lt;p&gt;More and more, I start realizing how much value to my personal life working from home has.&lt;/p&gt;

&lt;p&gt;Once we are back to normal, I'll ask to split my time 2-3 days office, 2-3 days remote. I miss my colleagues, our coffee breaks and lunch time but due to this whole Covid-19 situation, I strongly experience the value.&lt;/p&gt;

&lt;p&gt;As a side note, my wife is cooking amazing stuff always due to Ramadan 😋&lt;br&gt;
Downside, since last week our kids start to eat almost nothing. Either variations of noodles or variations of bread 🍞 with something. As a parent, somehow it stresses 😅&lt;/p&gt;

&lt;p&gt;Take care!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Paying the bill for tech debt - working from home</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Mon, 27 Apr 2020 14:34:28 +0000</pubDate>
      <link>https://dev.to/thatferit/paying-the-bill-for-tech-debt-working-from-home-333k</link>
      <guid>https://dev.to/thatferit/paying-the-bill-for-tech-debt-working-from-home-333k</guid>
      <description>&lt;p&gt;&lt;em&gt;Thanks for reading! I'm writing about my remote work journey thanks to covid-19 forced me to&lt;/em&gt; 😂 &lt;em&gt;I'm writing now almost a month now (Day 29/30)&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Did you ever had this moment where you have to control yourself to not say "I told you" ? 😂&lt;/p&gt;

&lt;p&gt;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). &lt;/p&gt;

&lt;p&gt;We released a new version and for two days it DDoS'ed basically some parts of our systems. 😅&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0wgf38e0l886fgdhryu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0wgf38e0l886fgdhryu.gif" alt="Attack" width="360" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How did this happen?
&lt;/h3&gt;

&lt;p&gt;From my understanding and observation it was a cascading effect of multiple existing "legacy" codebases which resulted in this issue.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;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 ⚠️&lt;/li&gt;
&lt;li&gt;Our web app was calling the endpoint for each render and until now, it was not discovered. Problematic Redux architecture ⚠️&lt;/li&gt;
&lt;li&gt;Wrong understanding of React and Memoization ⚠️&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The outcome was multiple rollbacks, many people stressed and definitely some missed orders. &lt;/p&gt;

&lt;p&gt;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".&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;As I started to be more opinionated, here is a past post, why a health sprint is not the correct way:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;div class="ltag__link__content"&gt;
    &lt;div class="missing"&gt;
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Personal
&lt;/h2&gt;

&lt;p&gt;First day of #Ramadan kicked in. And this is what my wife prepared for our kids:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0cyk78qzgppefcgow6d5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0cyk78qzgppefcgow6d5.png" alt="Alt Text" width="800" height="600"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;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 😅&lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;Take care!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Feedback, Feedback, Feedback - Working from home</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Fri, 24 Apr 2020 14:27:22 +0000</pubDate>
      <link>https://dev.to/thatferit/feedback-feedback-feedback-working-from-home-1a3m</link>
      <guid>https://dev.to/thatferit/feedback-feedback-feedback-working-from-home-1a3m</guid>
      <description>&lt;p&gt;&lt;em&gt;Thanks for reading! I'm writing about my remote work journey thanks to covid-19 forced me to&lt;/em&gt; 😂 &lt;em&gt;I'm writing now almost a month now (Day 28)&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Due to this whole Corona pandemic everywhere I missed keeping some notes about myself and my co-workers.&lt;/p&gt;

&lt;p&gt;I recommend to everyone to keep some sort of &lt;a href="https://www.paperplanes.de/2019/7/25/the-feedback-log.html" rel="noopener noreferrer"&gt;Feedback Log&lt;/a&gt;. I've tried this in 2019 combining this with a personal daily developer diary.&lt;/p&gt;

&lt;p&gt;The need for this is that twice per year we have our Feedback round. And now that I'm 'officially' Senior inside Zalando measurements, the requests are increasing.&lt;/p&gt;

&lt;p&gt;The things I care when giving feedback:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Valuable feedback highlighting the strengths &lt;/li&gt;
&lt;li&gt;Valuable feedback for possible improvements&lt;/li&gt;
&lt;li&gt;Providing KPI's with what they achieved.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm not a big fan of our Feedback Framework, yet it is iterating and trying to get better. Especially on the Engineering part it is still unclear.&lt;/p&gt;

&lt;p&gt;And for promotions, in big companies, you need to highlight that you worked on business related topics. Connecting what you do somehow to 💰 is necessary.&lt;/p&gt;

&lt;p&gt;Also, I'm using the &lt;a href="https://www.ccl.org/articles/leading-effectively-articles/closing-the-gap-between-intent-and-impact/" rel="noopener noreferrer"&gt;SBI-Model&lt;/a&gt; for giving feedback.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Situation: Describe the specific situation.&lt;/li&gt;
&lt;li&gt;Behavior: What did you observed about that persons behavior? Try to be objective.&lt;/li&gt;
&lt;li&gt;Impact: What was the outcome? How did it affect you / team / business?&lt;/li&gt;
&lt;li&gt;(optional) Next: Recommendation, how to improve when you're giving feedback development areas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole day was about writing feedback, so nothing else 😃&lt;/p&gt;

&lt;h2&gt;
  
  
  Personal
&lt;/h2&gt;

&lt;p&gt;I realized just today, only 2 days left until Ramadan 😱 this is the first year where I don't feel really prepared. I'm fasting around 16h. This will be also the first time in 3 years I'm not doing it alone at home.&lt;/p&gt;

&lt;p&gt;I don't know how it will affect my productivity (normally it's better, no food, no tiredness).&lt;/p&gt;

&lt;p&gt;Take care!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Can developers challenge product decision?</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Fri, 24 Apr 2020 14:05:28 +0000</pubDate>
      <link>https://dev.to/thatferit/can-developers-challenge-product-decision-4533</link>
      <guid>https://dev.to/thatferit/can-developers-challenge-product-decision-4533</guid>
      <description>&lt;p&gt;&lt;em&gt;Thanks for reading! I'm writing about my remote work journey thanks to covid-19 forced me to&lt;/em&gt; 😂 &lt;em&gt;I'm writing now almost a month now (Day 26 and 27)&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Work-related
&lt;/h2&gt;

&lt;p&gt;The beginning of this week is still mainly around tackling big pull-request and supporting our apps team.&lt;/p&gt;

&lt;p&gt;I prepared my open questions about a 3K LoC AB-Test which seemed too big. Big in, it is not easy to answer what is tested.&lt;/p&gt;

&lt;p&gt;Our open questions were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do we want to test the value of our Outfits API?&lt;/li&gt;
&lt;li&gt;Do we want to test the value of the Outfits UI as entry point?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From my understanding, the test was about a), yet the solution seems to be about b). Therefore, we scheduled a meeting with the Product Manager.&lt;/p&gt;

&lt;p&gt;At the end, she decides what to put in here, yet we raised our concerns in creating such big pull-requests and the team should have smaller work packages (slices).&lt;/p&gt;

&lt;p&gt;One thing I will not easily forget is something she said, when she thought we were blocking this and we want less features:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I'm surprised that developers are now challenging product managers. I thought you do what we need. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fimvgzlz7notiwr8j0bhk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fimvgzlz7notiwr8j0bhk.gif" alt="Alt Text" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This hit me. I believe in any lean / agile environment giving feedback and asking questions is the whole idea of having such processes. Even when this person is not in your team. &lt;/p&gt;

&lt;p&gt;So, shouldn't developers request changes to Features? &lt;strong&gt;Yes you should&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Our job is not about doing what business and product want without questioning anything. Even if you have a good relationship personally, this will end up in &lt;a href="https://www.projecttimes.com/articles/are-you-practicing-agile-or-mini-waterfalls.html" rel="noopener noreferrer"&gt;Mini-Waterfall&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When a feature is given to us frontend developers, there are multiple levels we need to evaluate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the given design consistent (challenge UX) ?&lt;/li&gt;
&lt;li&gt;What hypothesis do we want to answer ?&lt;/li&gt;
&lt;li&gt;Are we measuring the correct things to answer it?&lt;/li&gt;
&lt;li&gt;How many different slices (work packages) do I see?&lt;/li&gt;
&lt;li&gt;Is it involving some legacy codebase?
...&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Today I (re)learned (TIL)
&lt;/h2&gt;

&lt;p&gt;Debugging can be a lot of fun!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4ot91ez4kponwg3sqaw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4ot91ez4kponwg3sqaw.gif" alt="Debugging" width="380" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I learned were rather trivial things. Yet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Be careful when using custom &lt;code&gt;X-Custom-Headers&lt;/code&gt;. Some weird bugs I discovered were related to our Frontend overwriting them, when WebViews were injecting them too.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scala Template engine (Twirl) is confusing. Nothing to add 😃&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Personal
&lt;/h2&gt;

&lt;p&gt;This week is really intense. I have many topics and deadlines at the same week. Thanks to my wife, who took another leave from work, I can focus.&lt;/p&gt;

&lt;p&gt;Yet, it's a lot of things and I will be happy when this whole week ends. Giving Feedback to 7 people, doing bug bashing for 2 weeks, fixing other stuff, questioning product designs etc..&lt;/p&gt;

&lt;p&gt;I guess this is what happens the more experienced you get. You see more stuff. Otherwise I start enjoying working from home. It's stressful (the whole covid-19 situation) but I feel better. Not commuting means less time wasted in busses, trains. Less exposure to sickness.&lt;/p&gt;

&lt;p&gt;Take care!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>You should not be afraid of a conflict</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Wed, 22 Apr 2020 11:04:22 +0000</pubDate>
      <link>https://dev.to/thatferit/you-should-not-be-afraid-of-a-conflict-working-from-home-journey-day-24-25-1pm4</link>
      <guid>https://dev.to/thatferit/you-should-not-be-afraid-of-a-conflict-working-from-home-journey-day-24-25-1pm4</guid>
      <description>&lt;p&gt;&lt;em&gt;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 24 and 25)&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Work-related
&lt;/h2&gt;

&lt;p&gt;I'm definitely now into too many things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The big pull-request (check out posts from Day 18-21)&lt;/li&gt;
&lt;li&gt;Our App moving towards WebViews for now. Me supporting them&lt;/li&gt;
&lt;li&gt;Our own A/B-Test&lt;/li&gt;
&lt;li&gt;Feedback Cycle (6 open requests).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will have some meetings over next week, to tackle open questions about this big feature packed pull-request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Today I (re)learned (TIL)
&lt;/h2&gt;

&lt;p&gt;How do you tackle conflicts?&lt;/p&gt;

&lt;p&gt;Two years ago I got the feedback that I'm trying to not be in much conflicts professionally even when I should. It's not about being toxic but rather having constructive discussions and also when I believe in something communicating clearly Why I believe in my opinion and the advantages.&lt;/p&gt;

&lt;p&gt;It could be a technical solution or non-technical. It could be giving feedback to a CTO. I should not be afraid, yet learn the tools.&lt;/p&gt;

&lt;p&gt;This week I realized how I changed from "I don't want a conflict" to "How can I raise this properly, so my concerns are understood without blaming someone."&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A person's success in life can usually be measured by the number of uncomfortable conversations he or she is willing to have. - Tim Ferris (4hour work week)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This quote keeps coming up again and again in my career, the more I learn and grow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical Learning:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be careful when you want to do &lt;code&gt;componentWillUnmount&lt;/code&gt; or using Hooks to have specific &lt;code&gt;unmount&lt;/code&gt; routines.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I found an issue where the unmount event is not triggered because we do a URL change and the browser updates the URL.&lt;/p&gt;

&lt;p&gt;This seems obvious yet I took me some time to understand why this is not happening 😂&lt;/p&gt;

&lt;h2&gt;
  
  
  Personal
&lt;/h2&gt;

&lt;p&gt;Germany is relaxing the lockdown light 🎉 &lt;br&gt;
Yet I'm concerned as in Berlin many people act like nothing happened. No masks, no gloves, no social distancing. Berlin had always this shitty cultural attitude (trust me, I'm born here) and it looks like it never changed. I think because Berlin as a 3.5 million city got lucky with ~5K  corona infections and 100+ deaths. The numbers look like seasonal flu, but I doubt if we would continue like we did before, a second hit would be worse.&lt;/p&gt;

&lt;p&gt;Also I'm disappointed how politicians and many parts of the society don't care about kids. I have two small kids in the kindergarten and according to the news and decision makers, I need to keep them at home until August.&lt;/p&gt;

&lt;p&gt;How the fu**** ? No playground, no social contact to family. How should this work out?&lt;/p&gt;

&lt;p&gt;This shows me again, what I deeply experience and know from others:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Germanys is the one of the worst G20 states to raise kids.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's not about education, yet existing systemic racial inequality, but hidden in the data.&lt;br&gt;
It's not about the fact that germans are annoyed when a kid cries in the Bus, but are deeply caring about dogs when they are afraid of bus driving.&lt;br&gt;
It's the overwhelming institutional "we don't care" attitude. There is no platform to educate kids online. 100.000+ kids across Germany are not getting education and most are not lucky to have parents trying to do home schooling somehow.&lt;/p&gt;

&lt;p&gt;Especially in districts with high immigration rates, teachers don't care. Families often too. Even if, there is no easy way to reach out. &lt;/p&gt;

&lt;p&gt;It's frustrating and annoying. One of the richest countries in this world, has NO digital education strategy, NO homeschooling plan, NO digitalization of any educational stuff. &lt;/p&gt;

&lt;p&gt;Teachers got paid to do their work, but sending one email with some papers is not their job. It's their responsibility to come up with creative solutions.&lt;/p&gt;

&lt;p&gt;Besides, we realized with this new decision, my wife and I can't keep up this high-intense, stressful plan. 6h + 8h of work and having two kids at home is impossible to manage. So my wife reduces her work time, takes some leaves. I'm not happy with this, yet it's a decision based on rational thoughts (me earning more, she having a not clear future career in the current role). Yet, I believe many families will do the same due to systemic gender pay gap. Covid-19 will remove many of these achievements. Let's see how this will work out in one year.&lt;/p&gt;

&lt;p&gt;Take care!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>How to handle bug requests? - Working from home Journey (Day 22/23)</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Fri, 17 Apr 2020 13:56:44 +0000</pubDate>
      <link>https://dev.to/thatferit/how-to-handle-bug-requests-working-from-home-journey-day-22-23-5c96</link>
      <guid>https://dev.to/thatferit/how-to-handle-bug-requests-working-from-home-journey-day-22-23-5c96</guid>
      <description>&lt;p&gt;I'm switching my post structure. I think if people read, starting with Work + TIL (Things I learned) makes more sense. For the motivated Reader there is a Personal part 😃&lt;/p&gt;

&lt;h2&gt;
  
  
  Work
&lt;/h2&gt;

&lt;p&gt;I'm definitely now into too many things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The big pull-request (check out posts from Day 18-21)&lt;/li&gt;
&lt;li&gt;Our App moving towards WebViews for now. Me supporting them&lt;/li&gt;
&lt;li&gt;Our own A/B-Test&lt;/li&gt;
&lt;li&gt;Feedback Cycle (6 open requests).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the same time our Sprint ended and we are moving into "Bug stream" Mode. This means our Team will try to tackle incoming and existing Bugs 50% and the other 50% is about finishing last Sprint tasks + research upcoming topics.&lt;/p&gt;

&lt;p&gt;Inside Zalon (from Zalando) we decided to set up a rotating Bug responsibility.&lt;/p&gt;

&lt;p&gt;Every Team (5) will be in Bug duty for one sprint (2 weeks). This isn't solving bigger legacy Tech Debt tasks but it helps stakeholders (Customer Care) to have transparency and expectations.&lt;/p&gt;

&lt;p&gt;Right now, we have a dedicated Bug Kanban Board, we do Daily Standups with CuCa People to share updates, talk about possible new things (urgency).&lt;/p&gt;

&lt;p&gt;How do you tackle them? Let's discuss here:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;div class="ltag__link__content"&gt;
    &lt;div class="missing"&gt;
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Besides that, the Apps topic is blocking me heavily from anything else. Most of the time I'm trying to reproduce bugs, discover half of my time that the code is fine and something is either missing or configured wrong, e.g. some hard coded URLs are outdated or BE redirects to wrong URLs.&lt;/p&gt;

&lt;h2&gt;
  
  
  TIL
&lt;/h2&gt;

&lt;p&gt;When I was debugging a Back Button Bug, I discovered the following thing about React Router Dom:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be careful when using &lt;code&gt;&amp;lt;Switch&amp;gt;&lt;/code&gt; Routes and having an unmount Hook.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to Apps, we discovered that inside a Switch Component for two different Routes which are part of one "User Flow", an Unmount was triggered. &lt;/p&gt;

&lt;p&gt;Before (dummy names):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return (
  &amp;lt;Switch&amp;gt;
     &amp;lt;Route ... /&amp;gt;
       {[FLOW_A_PATH, FLOW_B_PATH, FLOW_C_PATH, FLOW_D_PATH].map((path) =&amp;gt; (
      &amp;lt;Route
        key={path}
        path={path}
        render={(props) =&amp;gt; &amp;lt;AsyncComponent provider={providerComp} innerProps={props} /&amp;gt;}
      /&amp;gt;
    ))}
  &amp;lt;/Switch&amp;gt;
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return (
  &amp;lt;Switch&amp;gt;
     &amp;lt;Route ... /&amp;gt;
      &amp;lt;Route
        path={[FLOW_A_PATH, FLOW_B_PATH, FLOW_C_PATH, FLOW_D_PATH]}
        render={(props) =&amp;gt; &amp;lt;AsyncComponent provider={providerComp} innerProps={props} /&amp;gt;}
      /&amp;gt;
  &amp;lt;/Switch&amp;gt;
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Checking React-Router docs it is clear why code above triggered unmounts where it shouldn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt; is unique in that it renders a route exclusively. In contrast, every  that matches the location renders inclusively. - React-Router Docs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Personal
&lt;/h2&gt;

&lt;p&gt;This week, Germany will decide how to lift some lockdown rules. If kindergarten will stay close for a longer period than we won't be able to continue this stressful schedule with my wife. It hurts. &lt;/p&gt;

&lt;p&gt;Having a small kid (2y old) + 5y old is not easy to manage. Cooking, cleaning, educating etc. &lt;/p&gt;

&lt;p&gt;Right now, we decided to not do much focused homeschooling until May, but this can't be stay for longer period of time. I also realize slowly that our kids need social contact. Playing with some other kids, learning basic interactions is important. &lt;/p&gt;

&lt;p&gt;I've also realized how bad german school system is prepared. They don't have any online system for doing remote lessons. Using zoom, sending emails to parents etc. is not a healthy process for months or a year. &lt;/p&gt;

&lt;p&gt;This is part of german / European education system. Government wants to educate kids in the way they need them. Not how they should. Also as a muslim parent it is even more frustrating every year our daughter grows and all the shitty culture against us (People of Color) is slowly hitting her.&lt;/p&gt;

&lt;p&gt;Anyway, take care!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Developers: How do you tackle your bugs?</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Fri, 17 Apr 2020 13:55:15 +0000</pubDate>
      <link>https://dev.to/thatferit/developers-how-do-you-tackle-with-bugs-47a8</link>
      <guid>https://dev.to/thatferit/developers-how-do-you-tackle-with-bugs-47a8</guid>
      <description>&lt;p&gt;In my organization we set up a rotating Bug Stream process, to handle incoming and existing bugs. When blogging about it, I've asked myself&lt;/p&gt;

&lt;p&gt;"How are others tackling bugs?"&lt;/p&gt;

&lt;p&gt;So let's share how your team, organization is handling bugs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How are they collected?&lt;/li&gt;
&lt;li&gt;How are they prioritized? &lt;/li&gt;
&lt;li&gt;How are you fixing them ?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>discuss</category>
      <category>bugs</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Don't do Health Sprints - Working from Home journey(Day 20/21)</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Thu, 16 Apr 2020 14:31:23 +0000</pubDate>
      <link>https://dev.to/thatferit/don-t-do-health-sprints-make-your-software-easy-to-change-day-20-21-ei4</link>
      <guid>https://dev.to/thatferit/don-t-do-health-sprints-make-your-software-easy-to-change-day-20-21-ei4</guid>
      <description>&lt;p&gt;Another week and interesting things are happening. Changing the structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Work
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhgcfwbwfl3zmm9jyfdtq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhgcfwbwfl3zmm9jyfdtq.jpg" alt="Alt Text" width="640" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my previous posts I shared a lot about how to think about slicing,  having smaller PRs or commit messages. The last days I think I somehow escalated this up to my Lead and our Head of (see below)&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;div class="ltag__link__content"&gt;
    &lt;div class="missing"&gt;
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;How? I shared my concerns that this big feature and all the duplicate code is happening. &lt;/p&gt;

&lt;p&gt;Additionally, I discovered myself a dysfunctional pattern when dealing with PR comments.&lt;/p&gt;

&lt;p&gt;I'm also trying to help our Apps Team move to a WebView based Native App due to some re-org and the team moving to the Fashion Store. This can be very interesting as we are slowly iterating towards PWA's (Progressive Web Apps) and having a Native App with Web Views will provide us an interesting test-case for the future 😅&lt;/p&gt;

&lt;h2&gt;
  
  
  TIL
&lt;/h2&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1247808481614123014-711" src="https://platform.twitter.com/embed/Tweet.html?id=1247808481614123014"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1247808481614123014-711');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1247808481614123014&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;As this week was all about big pull-requests and anti-patterns, here comes another one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You should constantly refactor your code. Always plan for a small improvement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yes, it is basically the Boy Scout Rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Leave the campground cleaner than you found it. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whenever you touch a code and you realize something is hard to understand, a variable is named unclear or an import is unused, change it! Fix it! Improve!&lt;/p&gt;

&lt;p&gt;I think one of the big anti-pattern in Agile + Scrum is that once we start thinking in sprints, developers can end up rushing from sprint goal to sprint goal and forget about their code, architecture. &lt;/p&gt;

&lt;p&gt;The end result is: "Health Sprints" or "Tech Debt Sprints".&lt;/p&gt;

&lt;p&gt;The major issue a "Tech Debt Sprint" provides is that it will give you, as a developer, a wrong safety. The moment you have a Review near, Product Managers asking frequently "When can we show the new feature?" as developers we will tend to skip maybe some needed refactoring, bad design choice we made.&lt;/p&gt;

&lt;p&gt;Additionally, such "Health Sprints" only tackle added Tech Debt. What happens to existing problems? What if you own now a new application developed for years by others? &lt;/p&gt;

&lt;p&gt;All in all, I realize more and more that having a really good tooling in our frontend applications (linters, formatters, testing) and agreeing on best practices is important. They help reduce certain tech debt. And Architecture needs &lt;a href="https://www.thoughtworks.com/insights/blog/microservices-evolutionary-architecture" rel="noopener noreferrer"&gt;to evolve anyway&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  General
&lt;/h2&gt;

&lt;p&gt;I'm quiet exhausted, I guess due to 4 weeks being in remote work and slowly my body needs to rest. Rest from all the Covid-19 anxiety, stress.&lt;br&gt;
Rest from trying to work with all the noise and difficulties.&lt;/p&gt;

&lt;p&gt;Eastern I will do nothing. Try not to open even a laptop.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Working from home - Make your software easy to change (Day 19)</title>
      <dc:creator>Ferit 🌟🕌</dc:creator>
      <pubDate>Wed, 08 Apr 2020 17:22:57 +0000</pubDate>
      <link>https://dev.to/thatferit/working-from-home-make-your-software-easy-to-change-day-19-1nj6</link>
      <guid>https://dev.to/thatferit/working-from-home-make-your-software-easy-to-change-day-19-1nj6</guid>
      <description>&lt;h2&gt;
  
  
  General
&lt;/h2&gt;

&lt;p&gt;Another day, another surprise. Our daughter woke up feeling sick and we immediately got concerned (not thinking about Corona) as she was not at the day care or had any contact besides us. &lt;/p&gt;

&lt;p&gt;This made me think how easily something our kids can catch. Our theory is that either she touched sth or we and she end up feeling dizziness and nausea.&lt;/p&gt;

&lt;p&gt;Yet, kids are strong. Over the day she went from "I can't walk" to "Can I have ice cream" 😂 so hopefully on Wednesday things will be fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Work
&lt;/h2&gt;

&lt;p&gt;As I shared on the &lt;a href="https://dev.to/fokusman/working-from-home-how-to-deal-with-big-prs-day-18-57jb"&gt;yesterday blogpost&lt;/a&gt;, I had the hangout with our co-worker.&lt;/p&gt;

&lt;p&gt;I expected that he won't be interested in doing smaller PR's and cherry picking as he expressed this clearly in PR comments. I shared with him Why I believe he should have done it. At least, he shouldn't share a big PR after 2 months work. Sure he doesn't want to invest another day or two but the review and my feedback won't be easy. And it will take time. I will not +1 after our hangouts. &lt;/p&gt;

&lt;p&gt;At least, I shared with him my concerns and wanted him to have a clear expectation.&lt;/p&gt;

&lt;p&gt;All in all, the hangout went really well. I understood why he did what he did. I asked him also, why his Product Manager + Team believes having such a big fat feature is a good ab-test design. How do you know why something was successful, when you introduce 10+ things?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwb59g8x1aq9phhl9e58d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwb59g8x1aq9phhl9e58d.png" alt="Alt Text" width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also asked him why he didn't sliced it and started small or asked Product to rethink it. Yet, here I discovered another difference in the mindset. I care about product. I believe that as developers we should make them happy and proud about the team. But at the same time not sacrificing quality. You can't have both at the same time. &lt;/p&gt;

&lt;p&gt;I hope after all my comments, tomorrow I won't wake up seeing him ignoring them or trying to move any improvement to the "future".&lt;/p&gt;

&lt;p&gt;I've also discovered sth weird in Github as many of my comments where not saved.&lt;/p&gt;

&lt;h2&gt;
  
  
  TIL
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Always save your comments. Always "start the review". I missed that and 20+ comments were gone. By accident it was also a good thing as some comments where not needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I'm sharing something I found interesting, shared by my Lead when asked about the difference in peoples mindset and thinking about "do tech debt later." Quoting him :&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;He (Robert C. Martin) says the first objective of software is that it should have the agility to change and not that - it works. He uses an analogy to prove this.&lt;br&gt;
A. A software that works but not possible to change&lt;br&gt;
B. A software that doesn't work but easy to make change&lt;/p&gt;

&lt;p&gt;A. Will stop working because requirements will change and you cannot change the software&lt;br&gt;
B. I can change it to make it work as long as it is possible to make change &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So &lt;strong&gt;always&lt;/strong&gt; changeable software over non-changeable.&lt;/p&gt;

&lt;p&gt;Sounds logical and clear but we all know it's easy to end up on the right side rather staying on the left.&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Ferit&lt;/p&gt;

</description>
      <category>remote</category>
      <category>webdev</category>
      <category>development</category>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
