<?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: Yordan Ivanov</title>
    <description>The latest articles on DEV Community by Yordan Ivanov (@ivanovyordan).</description>
    <link>https://dev.to/ivanovyordan</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%2F19170%2F923e5a3b-4d53-4a8e-a060-21602ac484d0.jpg</url>
      <title>DEV Community: Yordan Ivanov</title>
      <link>https://dev.to/ivanovyordan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ivanovyordan"/>
    <language>en</language>
    <item>
      <title>I Quit DEV and Moved to Substack</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Sun, 17 Dec 2023 14:58:05 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/i-quit-dev-and-moved-to-substack-la5</link>
      <guid>https://dev.to/ivanovyordan/i-quit-dev-and-moved-to-substack-la5</guid>
      <description>&lt;p&gt;Dear awesome reader, I’ve got some thrilling news to share with you.&lt;/p&gt;

&lt;p&gt;I’ve got some thrilling news to share—we shaken things up and made the jump from DEV to &lt;a href="http://datagibberish.com/"&gt;Substack&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Are you wondering why I made that move?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Well, let me break it down for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  It’s all About You
&lt;/h2&gt;

&lt;p&gt;When you hit that “Follow” button on Medium, you’re not just crossing your fingers and hoping to stumble upon my latest piece.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nope!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With Substack, you don’t have to play the alghoritm game. You receive the full text in your inbox every time I drop some knowledge.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s like having a VIP pass to the data analytics party, and you’re on the guest list!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No more missed articles. No more scrolling through endless feeds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Substack is More Interactive
&lt;/h2&gt;

&lt;p&gt;Picture this: You’re sipping your morning coffee, and ding! There it is—the latest post from yours truly.&lt;/p&gt;

&lt;p&gt;But wait, there’s more! With Substack, you can hit reply and shoot me a message.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Got questions? Curious about my sources? Want to share your own insights?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Boom, we’re chatting!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Substack is not your typical read-and-scroll platform. You can shoot me a message faster than you can say “data-driven decisions.”&lt;/p&gt;

&lt;p&gt;I love replying to nice and curious people. So don’t be shy—drop me a line, share your thoughts, or throw your burning questions my way.&lt;/p&gt;

&lt;p&gt;Let’s make this a conversation, not just a monologue!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xHF63yND--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mk3cyqtzz6ubfgx6gnx2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xHF63yND--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mk3cyqtzz6ubfgx6gnx2.jpg" alt="Two friends talking" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility Matters
&lt;/h2&gt;

&lt;p&gt;So far, we have talked about the power of email.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But what if you don’t want to share personal information just to read some text online?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No problem, I’ve got your back!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Substack keeps it simple. You can devour my content without the hassle of creating an account. You don’t even need to enter your email address.&lt;/p&gt;

&lt;p&gt;So whether you’re in your PJs or rocking a three-piece suit, dive right in. It’s data insights at your fingertips, hassle-free.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what’s next?
&lt;/h2&gt;

&lt;p&gt;So, are you ready to elevate our data journey together?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Click that Follow Link&lt;/strong&gt;: Seriously, it’s like giving me a virtual hug. &lt;a href="http://datagibberish.com/"&gt;Hit that link&lt;/a&gt;, and let’s make this Substack journey official (&lt;a href="http://datagibberish.com/"&gt;link&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spread the word&lt;/strong&gt;: Tell your friends, your neighbor’s cat, and that fella who always hogs the office microwave. Share the love, and let’s build a community that thrives on curiosity and camaraderie.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay Tuned&lt;/strong&gt;: Brace yourself for mind-bending insights, quirky anecdotes, and the occasional dad joke. It’s going to be a wild ride.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Hint&lt;/em&gt;: There’s a lot of new content waiting for you there!&lt;/p&gt;

&lt;p&gt;Remember, dear reader, this isn’t just about platforms—it's about us. So grab your favourite beverage (mine’s cappuchino, in case you were wondering) and let’s dive into the Substack Sea together.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://datagibberish.com/"&gt;http://datagibberish.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See you on the other side!&lt;/p&gt;

</description>
      <category>substack</category>
      <category>content</category>
    </item>
    <item>
      <title>Stop Writing Spaghetti Code: Instead, Make it SOLID</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Wed, 11 Oct 2023 06:00:25 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/stop-writing-spaghetti-code-instead-make-it-solid-a7g</link>
      <guid>https://dev.to/ivanovyordan/stop-writing-spaghetti-code-instead-make-it-solid-a7g</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P1dBN6oF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F4d32b02c-cb84-44a6-9041-5bc2a03afbb5_1280x854.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P1dBN6oF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F4d32b02c-cb84-44a6-9041-5bc2a03afbb5_1280x854.jpeg" alt="" width="800" height="534"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by August de Richelieu&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In your relentless pursuit of delivering value in the data engineering realm, you often find yourself entangled in the web of code you weave. This infamous spaghetti code eats up your valuable time. It leaves you with a concoction that's hard to understand, maintain, or scale. Imagine needing a straight line but being handed a knotted string instead.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The result?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You spend more time untangling than you do advancing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The good news?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There’s a better way to approach your code.&lt;/p&gt;

&lt;p&gt;Enter the &lt;strong&gt;SOLID&lt;/strong&gt; principles. A structured approach that makes your code robust, clean, and easy to work with as projects evolve. It’s like having a master blueprint for every line of code you craft.&lt;/p&gt;

&lt;p&gt;Today’s journey will unravel the bowl of spaghetti code and lay down a firm foundation with SOLID principles. You'll traverse through the common pitfalls that lead to a tangled mess. You'll also learn how a shift to SOLID can save time, reduce bugs, and foster a culture of excellence.&lt;/p&gt;

&lt;p&gt;Oh, and I decided to finish the post with a meme. Please, tell me what you think.&lt;/p&gt;

&lt;h1&gt;
  
  
  Recognizing The Tangled Mess
&lt;/h1&gt;

&lt;p&gt;Most seasoned data engineers will attest that bad code can significantly bog down a project. Yet, spotting these issues isn't always easy, especially when you're knee-deep with deadlines. It’s like being so engrossed in a task that you don’t notice the chaos around you until you take a step back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Pitfalls
&lt;/h2&gt;

&lt;p&gt;The rush to &lt;em&gt;get things done&lt;/em&gt; often leads to overlooking the importance of code readability and structure. It's a slippery slope. Before you know it, you are skimping on documentation, leaving behind a trail of cryptic code that has team members playing detective.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zkz96hf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fbbbab720-70d9-4516-9eac-fc2a7c384e4a_1280x853.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zkz96hf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fbbbab720-70d9-4516-9eac-fc2a7c384e4a_1280x853.jpeg" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by cottonbro studio&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To sum up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ignoring code readability&lt;/strong&gt; and structure in the name of &lt;em&gt;getting things done&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Missing documentation&lt;/strong&gt; leaves team members playing detective.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Neglecting to refactor&lt;/strong&gt; or optimize as the codebase grows.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The aftermath?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A tangled mess that demands Herculean effort to decipher and adapt. It's not merely about the code; it’s a labyrinth that echoes a deeper problem in approach and understanding.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Bitter Harvest&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;So, what's the big deal about spaghetti code?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s face it, spaghetti code is more than a minor nuisance — it’s a giant roadblock when aiming for clean, maintainable code.&lt;/p&gt;

&lt;p&gt;The repercussions go beyond frustration. Messy code leads to time spent debugging, more errors, and a dip in team morale due to rising frustration.&lt;/p&gt;

&lt;p&gt;And again:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wasted time in debugging&lt;/strong&gt; and understanding the code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Increased errors and bugs&lt;/strong&gt; that stem from a lack of clarity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A hit to team morale&lt;/strong&gt; as frustration mounts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w3VZUIY9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fab2ec112-b0cf-45c9-8149-accc2c210897_1280x853.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w3VZUIY9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fab2ec112-b0cf-45c9-8149-accc2c210897_1280x853.jpeg" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by Yan Krukau&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s not ignore the elephant in the room.&lt;/p&gt;

&lt;p&gt;Developers &lt;strong&gt;waste a whopping 23-42% of their time&lt;/strong&gt; due to technical debt and loo code. This means a big chunk of the development budget goes to fixing or working around hard-to-understand code. It’s a stark reminder of the business impact of code quality. &lt;a href="https://www.infoq.com/articles/business-impact-code-quality/"&gt;Code Red: the Business Impact of Code Quality&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But fear not. There’s a light at the end of this tangled tunnel — the SOLID principles.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;The SOLID Shift&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The panorama of coding doesn't have to be gloomy. The SOLID principles emerge as a beacon of hope, illuminating the path to crafting code that’s not just robust but a joy to work with. They are like the cardinal points on a compass, guiding us amidst the stormy seas of code complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The SOLID Foundation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The SOLID principles are like the pillars that uphold the structure of exemplary code. Each principle is a guideline that nudges us closer to a codebase that’s easy to manage, extend, and collaborate on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Single Responsibility Principle&lt;/strong&gt; : One class, one job. It’s the epitome of focus, ensuring that each class has a sole reason to change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open/Closed Principle&lt;/strong&gt; : Open for extension, closed for modification. It promotes the idea of extending a class’s behaviour without tampering with its existing code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Liskov Substitution Principle&lt;/strong&gt; : Subtypes should be substitutable for their base types. It’s the assurance that a derived class can replace a base class without breaking the code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interface Segregation Principle&lt;/strong&gt; : Don’t force clients to use interfaces they don’t need. It’s about crafting lean interfaces tailored to client requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dependency Inversion Principle&lt;/strong&gt; : Depend on abstractions, not concretions. It’s the cornerstone of decoupling code, ensuring a modular and maintainable codebase.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren’t merely theoretical concepts but pragmatic guidelines that have stood the test of time. I plan to dissect those in a future article. Still, the insights from Uncle Bob’s &lt;a href="https://www.youtube.com/watch?v=zHiWqnTWsn4"&gt;talk&lt;/a&gt; further cement the pivotal role of SOLID principles in modern coding paradigms.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why It Resonates&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The SOLID principles resonate because they tackle the crux of the issues that lead to spaghetti code. They encourage a clear separation of concerns, making the code more modular and easier to debug and extend.&lt;/p&gt;

&lt;p&gt;Hey, I heard you like lists:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Encourages clear separation of concerns&lt;/strong&gt; , making the code more modular.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhances code maintainability&lt;/strong&gt; , paving the way for future adaptations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fosters a culture of continuous improvement&lt;/strong&gt; within the team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Facilitates easier communication&lt;/strong&gt; among team members.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;The cherry on top?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Refactoring, guided by SOLID, can &lt;strong&gt;reduce the time spent on maintenance by 25%&lt;/strong&gt; , saving time and money in the long run, &lt;a href="https://www.freecodecamp.org/news/best-practices-for-refactoring-code/"&gt;according to Enkonix&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Taste of SOLID in Data Engineering
&lt;/h2&gt;

&lt;p&gt;Imagine a chef trying to prepare appetizers, main course, and dessert all at once. That’s what a monolithic class handling all ETL steps does — a recipe for chaos. In the world of data engineering, chaotic code becomes evident when you task a single piece of code with all three tasks.&lt;/p&gt;

&lt;p&gt;Implementing SOLID, you'd segregate these tasks into distinct classes. Each honed to perfection in its job. This not only promotes code reusability but also eases modification. It's about having a well-organized kitchen where each chef masters their station, even during the rush hours.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YUg8CgWK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F81b3cdf8-d859-454e-a9bf-187d5229d627_1280x853.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YUg8CgWK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F81b3cdf8-d859-454e-a9bf-187d5229d627_1280x853.jpeg" alt="" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by Gustavo Fring&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I don’t want to make this article too long, so I’ll leave the practical example for another time. But until then, I have a question for you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Remember my &lt;a href="https://datagibberish.substack.com/p/redshift-to-snowflake"&gt;Snowflake to Redshift&lt;/a&gt; article?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s say you built your Extract-Transform-Load jobs to work specifically with Redshift. You don’t have any plans to change that, but the software developer in you tells you you need to build your code in a modular way. You separate each of the ETL steps. One day, you decide it’s time to move from Redshift to Snowflake.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How do you build your Loading piece?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Put your suggestion in the comments below, or just drop me a message by replying to this email.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;A Nugget of Personal Wisdom&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Embracing SOLID isn't just about writing better code; it's about fostering a culture of excellence. Throughout my journey, integrating these principles has cultivated a team environment where everyone values quality. This transformed the codebase from a bewildering maze into a well-charted map, where each line of code had a clear purpose and place.&lt;/p&gt;

&lt;p&gt;The beauty of SOLID lies in its simplicity and the profound impact it has on the code culture. It’s not about a rigid set of rules, but a mindset that champions clarity, organization, and continuous improvement.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Make SOLID Your North Star&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Embarking on this journey is like moving from a stormy night to a clear dawn. It’s about transitioning from the chaos of spaghetti code to the structured elegance of SOLID. The benefits are substantial, and the shift in mindset is transformative. Your code is not merely a means to an end but a testament to craftsmanship, ready to stand the test of time.&lt;/p&gt;

&lt;p&gt;The SOLID principles are more than a set of guidelines; they’re a philosophy that champions precision, clarity, and excellence. They're not about setting rigid boundaries but about fostering a mindset that seeks to continually refine and elevate the code you craft. It's about cultivating a culture where quality code is not an afterthought but a prime objective.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;So, are you ready to steer your codebase towards the SOLID horizon?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The journey from tangled code to SOLID isn’t just about refining code; it’s a culture shift. And it’s one worth making. Share your thoughts below or drop me a message. Let’s navigate this path together.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rczRzks5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc83fcdb4-50f0-466a-8bc8-9372e98860bd_500x471.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rczRzks5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://substackcdn.com/image/fetch/f_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fc83fcdb4-50f0-466a-8bc8-9372e98860bd_500x471.jpeg" alt="" width="500" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Boost Productivity with BLUF: The Communication Hack Every Data Pro Needs</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Wed, 04 Oct 2023 06:00:14 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/boost-productivity-with-bluf-the-communication-hack-every-data-pro-needs-1ke8</link>
      <guid>https://dev.to/ivanovyordan/boost-productivity-with-bluf-the-communication-hack-every-data-pro-needs-1ke8</guid>
      <description>&lt;p&gt;&lt;em&gt;Hi there, after a long hiatus, I'm thrilled to be reconnecting with all of you here! My summer was packed with exciting projects, leaving little room for blogging. However, I’ve gleaned valuable insights to share with you. Although I'm not making any promises, there's something about the calmness of Wednesdays.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy reading!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uR8WL1vX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1598257006458-087169a1f08d%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHwxMnx8cGVyc29uJTIwY29tbXVuaWNhdGlvbnxlbnwwfHx8fDE2OTU5Njc1NzB8MA%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uR8WL1vX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1598257006458-087169a1f08d%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHwxMnx8cGVyc29uJTIwY29tbXVuaWNhdGlvbnxlbnwwfHx8fDE2OTU5Njc1NzB8MA%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="woman in blue long sleeve shirt using silver macbook" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@magnetme"&gt;Magnet.me&lt;/a&gt; on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Are you struggling with writing engaging messages and getting answers to your questions quickly?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the bustling world of data, your day is swamped with tasks. You juggle complex projects and need to converse with team members, stakeholders, and developers. You often need to communicate some information with those groups, and sometimes you're too rushed to carefully craft your words.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;So what do you usually do?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You just dump everything into a long-winded Slack message and let them deal with it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I didn't have time to write a short letter, so I wrote a long one instead.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
— Mark Twain&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Guess what?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Your message becomes a daunting maze. Your Colleagues lose interest halfway, potentially missing the golden nugget at the end.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Don't worry.&lt;/em&gt; There's a simple and game-changing solution: making your messages concise, impactful, and actionable.&lt;/p&gt;

&lt;p&gt;Today, you'll see examples of poorly crafted messages and learn why they hinder productivity. You'll also learn how to transform a lousy message into a good one and how that affects productivity.&lt;/p&gt;

&lt;p&gt;I also have a small challenge for you at the end!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Scenario
&lt;/h2&gt;

&lt;p&gt;Picture yourself as the head of data engineering at PayTechFin, a fintech frontrunner. Your team is knee-deep in an exciting project: stock market data integration. That data is your magic key to fresh insights and strategic planning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wJsapSgI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1634078111185-8c26c5cbc294%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHw0NXx8ZmFpbGluZyUyMHRhc2tzfGVufDB8fHx8MTY5NTk2NDk2OXww%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wJsapSgI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1634078111185-8c26c5cbc294%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHw0NXx8ZmFpbGluZyUyMHRhc2tzfGVufDB8fHx8MTY5NTk2NDk2OXww%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="a woman sitting at a desk using a computer" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@kellysikkema"&gt;Kelly Sikkema&lt;/a&gt; on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One sunny afternoon, while sipping your third cup of coffee, a Slack notification pops up. It's from Alex, a talented analytics engineer on your team:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hey boss, I hope you're all doing well.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I wanted to share some updates on the data flow for our project. I was working on the ELT pipeline for our new stock market data. The extraction step works and we can load the data without any issues. However, the transformation is not without its challenges.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That's why I'm writing to you today. Unfortunately, the dbt transformation job for our stock market data integration project failed last night. It seems that one of the models is broken and needs to be fixed. I'm working on it right now, but it might take some time. I think it might be due to a mismatch in the data types.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Could you spare some time to help me confirm this and figure out the best way to resolve it?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Let's assess:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Is the message clear and concise?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Does it get to the point quickly?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;People often hide the main point, draping it in layers of context.&lt;/p&gt;

&lt;p&gt;This trap is easy to fall into, especially when you're swimming in technical jargon and complex data. However, this approach can lead to confusion and inefficiency. It contradicts one of the fundamental pillars of DataOps.&lt;/p&gt;

&lt;p&gt;Just think about it:&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://www.grammarly.com/business/business-communication-report"&gt;recent study&lt;/a&gt; by Grammarly revealed a  &lt;strong&gt;7% yearly increase in stress&lt;/strong&gt;   &lt;strong&gt;levels&lt;/strong&gt;  attributed to poor communication!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_oIPwuMj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1621252179027-94459d278660%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxzdHJlc3N8ZW58MHx8fHwxNjk1OTY1NTM2fDA%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_oIPwuMj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1621252179027-94459d278660%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHwxfHxzdHJlc3N8ZW58MHx8fHwxNjk1OTY1NTM2fDA%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="woman in black long sleeve shirt covering her face with her hands" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@elisa_ventur"&gt;Elisa Ventur&lt;/a&gt; on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Imagine receiving a lengthy message about data flow, only to find out that one of the dbt models is broken at the end. It's like finding out about a fire from a lecture on matchstick manufacturing!&lt;/p&gt;

&lt;p&gt;You don't want your messaging to be like that. You want it to be clear, direct, and engaging. You want to grab your audience's attention. And you definitely don't want to bring more stress to people around you!&lt;/p&gt;

&lt;p&gt;Enter the  &lt;strong&gt;BLUF&lt;/strong&gt;  technique.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is BLUF?
&lt;/h2&gt;

&lt;p&gt;BLUF — Bottom Line Up Front — is a communication technique that presents conclusions and recommendations first, followed by justification or background information. It originated in the U.S. military and is now widely used in various fields, including business communication.&lt;/p&gt;

&lt;p&gt;The concept is straightforward: lead with crucial info and follow with details as necessary. This way, your audience knows what you're talking about right away and can decide whether they need to read further or not.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vk7Cgt8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1505778276668-26b3ff7af103%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHwxOXx8ZGlyZWN0aW9ufGVufDB8fHx8MTY5NTk2NTU5OHww%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vk7Cgt8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1505778276668-26b3ff7af103%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHwxOXx8ZGlyZWN0aW9ufGVufDB8fHx8MTY5NTk2NTU5OHww%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="person holding compass facing towards green pine trees" width="800" height="539"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@jamie452"&gt;Jamie Street&lt;/a&gt; on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;BLUF is especially useful for online communication platforms such as Slack or email, where people are bombarded with messages every day and have limited time and attention span.&lt;/p&gt;

&lt;p&gt;Now, imagine if Alex had sent this message instead:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The dbt job for our stock market project failed. Suspected data type mismatch. Can you help? Thanks!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;See how much better this message is?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It is like a breath of fresh air. It cuts straight to the chase: there's a problem with the dbt job. You immediately know what Alex needs help with, enabling you to jump into action.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Your BLUF Playbook&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Using BLUF is not difficult but requires some practice and discipline.&lt;/p&gt;

&lt;p&gt;Here are some tips on how to use it correctly in an online business environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lead with your punchline&lt;/strong&gt;:  Start your message with the conclusion of the most critical information. For example: "The dbt job failed." or "&lt;em&gt;I need your feedback on the new dashboard by tomorrow.&lt;/em&gt;"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Elaborate briefly&lt;/strong&gt;:  Add context only if it's a game-changer. For example: "Possible data type mismatch in models." or "&lt;em&gt;The client is expecting a demo on Friday.&lt;/em&gt;"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Share relevant details&lt;/strong&gt;: Only if they're genuinely crucial. Example: "I'm looking into it but could use some help." or "&lt;em&gt;Please review the dashboard and let me know if you have any questions or suggestions.&lt;/em&gt;"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Close with a CTA:&lt;/strong&gt;  Seal the deal by stating what you need. For example: "Could you please help me confirm and resolve this?&lt;em&gt;.&lt;/em&gt;" or "&lt;em&gt;Please send me your feedback by 5 pm tomorrow.&lt;/em&gt;".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use it everywhere&lt;/strong&gt;: While BLUF originated in written communication, it can also be effectively used in conversations and interviews.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Voilà!&lt;/em&gt; You've just crafted a message that's straight-up dynamite.&lt;/p&gt;

&lt;p&gt;Remember, the goal of BLUF is to make your message clear and actionable from the start. Don't make your audience work hard to figure out what you want them to do or why it matters. Give them the bottom line up front, then fill in the blanks as needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why BLUF Matters?
&lt;/h2&gt;

&lt;p&gt;At this point, you might be wondering:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Does it really make a difference in how I communicate?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Absolutely, yes! Using BLUF can make your communication way more efficient and spot-on.&lt;/p&gt;

&lt;p&gt;After all,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;72% of leaders&lt;/strong&gt;  say effective communication increases productivity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ALsqApDl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1543269664-56d93c1b41a6%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHwzOXx8c3VjY2Vzc3xlbnwwfHx8fDE2OTU5NjU4NTF8MA%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ALsqApDl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1543269664-56d93c1b41a6%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHwzOXx8c3VjY2Vzc3xlbnwwfHx8fDE2OTU5NjU4NTF8MA%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="woman sitting around table holding tablet" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@brookecagle"&gt;Brooke Cagle&lt;/a&gt; on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And if that bit from Grammarly's survey is not enough, here are some more benefits of using BLUF:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It saves time and energy&lt;/strong&gt;  for both you and your audience. You don't have to spend a lot of time writing long and detailed messages, and your audience doesn't have to spend a lot of time reading and deciphering them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It reduces confusion and misunderstanding&lt;/strong&gt;. You don't have to worry about your message being misinterpreted or ignored; your audience doesn't have to worry about missing or forgetting important information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It increases engagement and response&lt;/strong&gt;. You don't have to wait for a long time to get a reply or a reaction, and your audience doesn't have to feel overwhelmed or bored by your message.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It improves trust and credibility&lt;/strong&gt;. You don't have to risk losing your audience's interest or respect; your audience doesn't have to doubt your competence or professionalism.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, BLUF not only sharpens your messages but also smooths out communication with your team and clients. It can help you achieve your goals faster and easier while also building stronger relationships.&lt;/p&gt;

&lt;h2&gt;
  
  
  BLUF in Action
&lt;/h2&gt;

&lt;p&gt;Let's look at some examples of how you can use BLUF in different scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 1: Informing Your Team About a Change in Data Processing Methods
&lt;/h3&gt;

&lt;p&gt;Instead of starting with the reasons for the change and the process involved, you could say:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We're switching to method Y for data processing from next week due to its improved efficiency. Here's what you need to know…&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This way, your team gets the crucial information upfront and can prepare accordingly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 2: Asking Your Client for Feedback on a Data Visualization
&lt;/h3&gt;

&lt;p&gt;Instead of giving a lengthy introduction and background on the data visualization, you could say:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I've created a data visualization for the sales performance of your products. Please take a look and let me know what you think.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This way, your client knows what you want them to do and can focus on the data visualization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 3: Reporting Your Findings from a Data Analysis
&lt;/h3&gt;

&lt;p&gt;Instead of presenting all the details and steps of your data analysis, you could say:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I've analyzed the data from the customer survey and found that satisfaction levels are highest among female customers aged 25-34 who use product X. Here's how I did it…&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This way, your audience knows the main takeaway from your data analysis and can follow along with your explanation if they are interested in the method you used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exercise
&lt;/h2&gt;

&lt;p&gt;Now, here's the challenge I promised in the beginning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lkhdC-0g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1638028459152-a6ee09e00253%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHw3fHxnbyUyMGZvciUyMGl0fGVufDB8fHx8MTY5NTk2NTkzMHww%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lkhdC-0g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1638028459152-a6ee09e00253%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3wzMDAzMzh8MHwxfHNlYXJjaHw3fHxnbyUyMGZvciUyMGl0fGVufDB8fHx8MTY5NTk2NTkzMHww%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="a bunch of signs that are on the side of a building" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@timmossholder"&gt;Tim Mossholder&lt;/a&gt; on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Imagine you need to tell your team to hold off on pushing code because of some heavy-duty code refactoring.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How would you BLUF this message in Slack?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Drop your answers in the comments or DM me by replying to this email.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;To sum up, BLUF is a powerful tool for efficient communication. It helps you deliver your message effectively, ensuring that your audience understands the key points without having to sift through unnecessary details.&lt;/p&gt;

&lt;p&gt;Remember, as data practitioners, our goal is not just to manage and analyze data but also to communicate our findings effectively. And that's where methods like BLUF come into play.&lt;/p&gt;

&lt;p&gt;So, next time you're drafting a Slack message or an email, remember -  &lt;strong&gt;BLUF&lt;/strong&gt;  it!&lt;/p&gt;

</description>
      <category>bluf</category>
      <category>slack</category>
      <category>messages</category>
    </item>
    <item>
      <title>3 Badass Productivity Hacks to Master Your Time Without Breaking a Sweat</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Mon, 06 Feb 2023 19:46:30 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/3-badass-productivity-hacks-to-master-your-time-without-breaking-a-sweat-3n5i</link>
      <guid>https://dev.to/ivanovyordan/3-badass-productivity-hacks-to-master-your-time-without-breaking-a-sweat-3n5i</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2Ff_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa21222c4-31d5-48c0-86c6-53a2660d00fe_6240x4160.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2Ff_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fa21222c4-31d5-48c0-86c6-53a2660d00fe_6240x4160.jpeg" alt="3 Badass Productivity Hacks to Master Your Time " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by Ivan Samkov on &lt;a href="https://www.pexels.com/photo/woman-looking-at-a-laptop-4240507/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As one of the very few data experts at your company, you have way too many stakeholders. Everybody needs your attention, and you don't have the time to push your goals.&lt;/p&gt;

&lt;p&gt;Let's face it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You have a prioritisation problem!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You don't have time to do &lt;em&gt;real work&lt;/em&gt; because you let other people decide how you spend your time. You are busy but not productive at all.&lt;/p&gt;

&lt;p&gt;You are not alone. In fact, &lt;a href="https://www.vouchercloud.com/resources/office-worker-productivity" rel="noopener noreferrer"&gt;79% of people&lt;/a&gt; admit they don't feel productive.&lt;/p&gt;

&lt;p&gt;By increasing your efficiency, you can do more with less effort. That means better results and, hopefully, the sweet promotion you dream of. You will also have more energy at the end of your work days and have the time for important people in your life.&lt;/p&gt;

&lt;p&gt;In this article, I'll share with you three simple productivity hacks. I have been using them for years to stay focused and keep on track with my priorities.&lt;/p&gt;

&lt;p&gt;We will explore three time-tested practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Timeboxing - How to get the most out of your calendar by defining your priorities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Notifications - How to reduce distractions from popups and sounds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Handwriting - How to stay concentrated and reduce clutter.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sounds good? Now off we go!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Timeboxing&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Timeboxing is one of the most popular productivity hacks on the planet. I won't insult your intellect by explaining what it is. Instead, I will give you some valuable tips I learned in the last few years.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The calendar can be your nightmare and your saviour.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Did you know more than &lt;a href="https://www.getclockwise.com/blog/the-state-of-meetings-in-2020" rel="noopener noreferrer"&gt;78% of people&lt;/a&gt; feel their schedule is out of control?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s look at your calendar for a moment.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How do you feel? Tired, stressed, annoyed?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do you have the time to focus on your tasks and show your strengths?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How often do you need to switch contexts?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This chaos is exhausting, and it has to stop!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Make space for what is important&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Reduce the number of meetings you attend.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Decline meetings you don't contribute to. Look for opportunities to turn other arrangements into recurring Slack threads. Ask yourself if an appointment is worth your time before accepting it. Make as much free time as you can.&lt;/p&gt;

&lt;p&gt;I know choosing whether to attend a meeting or not is hard. I make the same choice every day. But you can't focus on your priorities if you overflow your schedule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You need to put your priorities first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Faj776ut0beq0ikkjl60x.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Faj776ut0beq0ikkjl60x.jpeg" alt="A watch in a toolbox" width="800" height="470"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by Csongor Kemény on &lt;a href="https://www.pexels.com/photo/metal-tools-placed-in-wooden-box-4346893/" rel="noopener noreferrer"&gt;Pexels&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here's the truth:&lt;/p&gt;

&lt;p&gt;You might feel like you are missing out on something or letting people down, but I assure you this is not the case. Most people have the same problem with calls as you. In fact, they might feel relieved they don't have to attend one more meaningless meeting.&lt;/p&gt;

&lt;p&gt;But please, keep in touch with colleagues every now and then. They still rely on you for those dbt models, and you want them to update you with any business process changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Rest&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Add events for the start and end of the work day to your calendar. Workaholics — I bet you are one of us — start working early and continue until it's too late. The truth is, you don’t need to overwork yourself. In fact, my favourite manager so far, &lt;a href="https://www.linkedin.com/in/sovanesyan/" rel="noopener noreferrer"&gt;Serge&lt;/a&gt;, spent a lot of time breaking that habit from me.&lt;/p&gt;

&lt;p&gt;Quite often, we'd skip lunch because we got too many tasks.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But you don't like being hungry, do you?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, timebox your lunchtime too.&lt;/p&gt;

&lt;p&gt;I know you need more people in the team. The company relies on you to feed correct numbers to the board, but you need to rest.&lt;/p&gt;

&lt;p&gt;Even if you have the energy to work long hours, this work/life balance is unsustainable. If you don't take a break when you need to, you'll start making mistakes.&lt;/p&gt;

&lt;p&gt;I'm talking about mistakes like when I worked until 1 am and scaled out &lt;a href="https://ivanovyordan.substack.com/p/redshift-to-snowflake" rel="noopener noreferrer"&gt;Redshift&lt;/a&gt; much more than I needed to. My mistake could result in a bill increase of thousands of dollars for one night!&lt;/p&gt;

&lt;p&gt;What happened next was unthinkable:&lt;/p&gt;

&lt;p&gt;AWS noticed the spike and contacted us. They learned what happened and immediately offered to scratch our bill!&lt;/p&gt;

&lt;p&gt;This sounds great, but you should rely on something other than miracles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, take some rest.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Timebox everything&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Timeboxing will only work if you set aside time, even for your tiniest tasks. I have slots to check email, review code, or post a weekly music challenge — I ask my colleagues to publish a song in Slack on a weird topic I come up with.&lt;/p&gt;

&lt;p&gt;You have to be careful with this one, though.&lt;/p&gt;

&lt;p&gt;Refrain from overbooking yourself. You need to be available for people who need your help. But, if you drop whatever you are doing and help them on the spot, you'd ruin your whole schedule.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, leave some empty space here and there.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Batch tasks&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A group of researchers found out context switching could cost you &lt;a href="https://psycnet.apa.org/record/2001-07721-001" rel="noopener noreferrer"&gt;20-40% of your efficiency&lt;/a&gt;. Grouping similar tasks together prevents context switching and increase your productivity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Look for opportunities to batch tasks by context.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In my case, I have my team's daily right before the leads meeting. That way, I can gather the necessary information and pass it away immediately with minimal context switching. I also have created my &lt;em&gt;"team day&lt;/em&gt;" by scheduling all one-on-one meetings in a single day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick recap
&lt;/h3&gt;

&lt;p&gt;You don't have to be a productivity guru to get the most out of your time, but you must be mindful of your priorities.&lt;/p&gt;

&lt;p&gt;Timeboxing is a simple technique. It guarantees you can move the needle forward without burning out. You can even supercharge this productivity hack with some tricks for ultimate effect.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What more could you ask, right?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Well, hold on because we are not even halfway through!&lt;/p&gt;

&lt;h2&gt;
  
  
  Notifications
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://www.researchgate.net/publication/299931683_Energy_Efficient_Scheduling_for_Mobile_Push_Notifications#pf6" rel="noopener noreferrer"&gt;research from 2015&lt;/a&gt;, an average person would receive about 80 notifications a day.&lt;/p&gt;

&lt;p&gt;Some people would get up to 200 push notifications in a single day!&lt;/p&gt;

&lt;p&gt;Just on their phone!&lt;/p&gt;

&lt;p&gt;Eight years ago!&lt;/p&gt;

&lt;p&gt;Now add all those Slack popups, email pings and eight more years of technological innovation.&lt;/p&gt;

&lt;p&gt;I know what you are thinking:&lt;/p&gt;

&lt;p&gt;You don't mind all the sounds and red balloons. You are not even noticing them.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But do you know what?…&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You would still get distracted even if you don't check your phone after every ding.&lt;/p&gt;

&lt;h3&gt;
  
  
  You are Hooked
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Have you found yourself in a situation where you are in deep work mode, just to be interrupted by the welcoming chime coming from your phone?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You ignore it and continue your work. But for some reason can't stop thinking about the notification sound. Your curiosity eats you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What if it's something important?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You got to check your phone!&lt;/p&gt;

&lt;p&gt;So &lt;a href="http://erichorvitz.com/CHI_2007_Iqbal_Horvitz.pdf?from=https://research.microsoft.com/en-us/um/people/horvitz/chi_2007_iqbal_horvitz.pdf&amp;amp;type=path" rel="noopener noreferrer"&gt;fifteen seconds later&lt;/a&gt;, you grab your phone, unlock it and... It is a TikTok video of a cat with a funny hat. You watch the video and decide to scroll for one more second.&lt;/p&gt;

&lt;p&gt;OK, you had a lovely short break. Let's get back to work. You look at the clock and can't believe it...&lt;/p&gt;

&lt;p&gt;You spent 20 minutes watching that shit!&lt;/p&gt;

&lt;p&gt;This is precisely what those alerts are designed to do. Their developers want you to spend as much time as possible on the apps. Or, as Nir Eyal says in his book, they want you to get &lt;a href="https://www.nirandfar.com/hooked/" rel="noopener noreferrer"&gt;Hooked&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fp8qg2u69z8f8o5gi1od5.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fp8qg2u69z8f8o5gi1od5.webp" alt="https://www.nirandfar.com/wp-content/uploads/2019/11/Hooked-updated-cover-US-742x1024.png.webp" width="742" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;So, what productivity hack can prevent this from happening?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Get rid of notifications
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Do you need to know about somebody's birthday while you are in the middle of something?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Is it necessary to answer every single message immediately?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How important is knowing if "Someone viewed your profile" on LinkedIn?&lt;/em&gt; &lt;em&gt;Which notifications should you disable?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It is up to you to decide.&lt;/p&gt;

&lt;p&gt;My advice here is to do it case by case. Don't open turn all your notifications at once. Instead, wait until a popup appears. Allow yourself to examine your feelings about every alert and cut guesswork.&lt;/p&gt;

&lt;p&gt;If you find a notification productive, fine, but if it doesn't provide value, block that sucker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No popups and no sound prompts!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I left only three:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Phone calls - This is how I expect to get the news in an emergency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pings in a list of specific Slack channels - You know, work-related &lt;a href="https://dev.to/ivanovyordan/postmortem-reports-how-to-get-the-most-from-failure-for-massive-growth-5h5g"&gt;incidents&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Calendar events - Timeboxing and stuff.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don't get notified in any other case on my phone or my computer. I don't need to answer every message on Slack or Messenger immediately.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Does that make sense in your situation?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Let people know how to find you
&lt;/h3&gt;

&lt;p&gt;Here is the truth:&lt;/p&gt;

&lt;p&gt;Some people around you might get frustrated. You have to explain to them how important it is to get things done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tell them to call you in case you need to act immediately&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You are not ignoring or forgetting them; your answers are just lagging.&lt;/p&gt;

&lt;p&gt;In fact, my &lt;a href="https://dext.com/eu" rel="noopener noreferrer"&gt;workplace&lt;/a&gt; has a policy which helps people get in touch in some extreme cases. We need to add our phone numbers to our Slack profiles.&lt;/p&gt;

&lt;p&gt;I've been called once when my reverse ETL script almost broke the entire billing system.&lt;/p&gt;

&lt;p&gt;Now for the other part of the story:&lt;/p&gt;

&lt;h3&gt;
  
  
  FOMO
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8ncnqso53m5rrpcalw73.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8ncnqso53m5rrpcalw73.gif" alt="FOMO" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/Fear_of_missing_out%7C" rel="noopener noreferrer"&gt;FOMO&lt;/a&gt; will be strong in you in the beginning. You will need some time to get used to living without  &lt;strong&gt;unwanted&lt;/strong&gt;  interruptions.&lt;/p&gt;

&lt;p&gt;You must be in charge of your attention and control when you consume content. The best way to do that is to find the right time to look at what is waiting for you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How do you find your "me time"?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Put a short "Social media" slot in your diary. It's that easy!&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick recap
&lt;/h3&gt;

&lt;p&gt;Notifications are a killer for your productivity. You are a busy expert and need to decide which alerts bring value and which need to go. It is essential to let people contact you in case of an emergency. On the other hand, you can still make sure you have some time for yourself.&lt;/p&gt;

&lt;p&gt;We discussed two of the three productivity hacks I promised you. You might be eager to start working on those.&lt;/p&gt;

&lt;p&gt;But wait, we are still going!&lt;/p&gt;

&lt;p&gt;I left the most simple practice for the end.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Handwriting&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I am not joking. Just put a notebook and a pen on your desk.&lt;/p&gt;

&lt;p&gt;Handwriting might sound old school to you, but it works. It is a unique way of organising thoughts and ideas and keeping track of important information.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://linguistics.ucla.edu/people/hayes/Teaching/papers/MuellerAndOppenheimer2014OnTakingNotesByHand.pdf" rel="noopener noreferrer"&gt;study&lt;/a&gt; showed that students who used pen and paper wrote significantly fewer words. At the same time, they understand the material better.&lt;/p&gt;

&lt;p&gt;I used to type my notes on the computer. Whenever I had an idea or an item for my to-do list, I would open Google Docs or Notion and tap on my mechanical keyboard.&lt;/p&gt;

&lt;p&gt;Typing notes on the computer was working in a sense (if you ignore how distracting it was for my colleagues). The more significant problem was losing myself between apps all the time. I was activating random shortcuts on the wrong piece of software. I needed to fix the problem I had caused and find the right place to write a sentence.&lt;/p&gt;

&lt;p&gt;The clutter was killing my flow. Penmanship was the lifesaving solution for my productivity.&lt;/p&gt;

&lt;p&gt;If you are like me, you might have forgotten how it works. So here's a short instruction:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every time you have an idea, a problem or a task, write it down in your notebook.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Meeting notes?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Those can go there too.&lt;/p&gt;

&lt;p&gt;You can also borrow &lt;a href="https://www.youtube.com/watch?v=fm15cmYU0IM" rel="noopener noreferrer"&gt;bullet journaling&lt;/a&gt; ideas if you want to go all in. I personally use some symbols with a specific meanings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F0wmg8ghk79mc4t9h62st.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F0wmg8ghk79mc4t9h62st.webp" alt="Bullet Journal Keys" width="600" height="800"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source &lt;a href="https://wellella.com/bullet-journal-key/" rel="noopener noreferrer"&gt;Wellella&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Moments of silence
&lt;/h3&gt;

&lt;p&gt;It might feel awkward when you are in a meeting, and people seek your answer, but you are writing something. Don't stress yourself too much.&lt;/p&gt;

&lt;p&gt;Just tell them you need a few seconds to finish your note and speak. A few seconds of silence are not the end of the world.&lt;/p&gt;

&lt;p&gt;In fact, silence allows everybody to think for a bit before speaking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting things done
&lt;/h3&gt;

&lt;p&gt;Taking handwritten notes is a bit tricky. You'd be eager to start ticking off tasks from your notebook immediately.&lt;/p&gt;

&lt;p&gt;Don't do it!&lt;/p&gt;

&lt;p&gt;At the end of the day, the idea is to stay focused and minimise context switching.&lt;/p&gt;

&lt;p&gt;Add a small "Notes Review" slot in your calendar at the end of your workday. When the time comes, check your notes and plan them for the next few days. I love doing quick tasks right after the review and finishing the day with a sense of accomplishment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick recap
&lt;/h3&gt;

&lt;p&gt;Handwriting is becoming modern again. It helps you focus on the moment. All you need to do is to jot down a few ideas in your notebook. You'll use fewer words but remember significant bits better. You always know where your notes are, and you need to look at them at the end of the day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;You are a busy person, and everybody needs your expertise in data. You likely feel like you have too much on your shoulders and can't keep up with your tasks. In this article, I shared three of the most helpful productivity hacks I have used for years.&lt;/p&gt;

&lt;p&gt;We discussed minimising context switching with the power of prioritisation and timeboxing. You also learned how notifications impact your focus and why you don't need them. In the end, I told you why I gave up scribbling digital notes and started using an analogue notebook again.&lt;/p&gt;

&lt;p&gt;Now, it's your time to get in control of your productivity and do more with less effort.&lt;/p&gt;

&lt;p&gt;But wait, let's not end it here!&lt;/p&gt;

&lt;p&gt;Share what your favourite productivity trick is. I'd love to hear some stories you might have too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://datagibberish.substack.com/p/3-badass-productivity-hacks-to-master/comments" rel="noopener noreferrer"&gt;Leave a comment&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>Postmortem reports: How to get the most from failure for massive growth</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Tue, 03 Jan 2023 04:42:25 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/postmortem-reports-how-to-get-the-most-from-failure-for-massive-growth-5h5g</link>
      <guid>https://dev.to/ivanovyordan/postmortem-reports-how-to-get-the-most-from-failure-for-massive-growth-5h5g</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1517939415772-19aa53007105%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwyNHx8ZmFpbHxlbnwwfHx8fDE2NzI2OTU0MTk%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1517939415772-19aa53007105%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwyNHx8ZmFpbHxlbnwwfHx8fDE2NzI2OTU0MTk%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" title="man sitting on floor while using laptop" alt="man sitting on floor while using laptop" width="1080" height="787"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@brucemars" rel="noopener noreferrer"&gt;bruce mars&lt;/a&gt; on &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s face it, no matter what you do, things will go sideways. Whether it’s a bug in your code, a complication from your sources, or an unexpected behaviour of your teammates, you occasionally have to fix new issues. It’s annoying to hell when something you thought is fixed pops up again. And it’s always during your lunch hour!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Don’t you hate that?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We have to face the challenges that come with failure and take the lessons we learn to become stronger. We shouldn't be afraid to fail, as it can be the first step in our journey to resilience. We have to use our mistakes to become more experienced and, more successful.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You’ve been doing that your entire life, haven’t you? What if I tell you, you can do it even better?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;By implementing a postmortem process in your work – or even in your personal life – you can gain invaluable insights from your mistakes and use them as an opportunity to make positive changes. This process can help you develop a deeper understanding of the situation. You can also use it to inform future decisions and behaviours. Not only can this help you to become a better problem solver, but it can also provide an invaluable opportunity for personal growth.&lt;/p&gt;

&lt;p&gt;Thanks for reading Data Gibberish! Subscribe for free to receive new posts and support my work.&lt;/p&gt;

&lt;p&gt;I’m going to tell you what is a postmortem document, and how to write one in three easy steps. I’ll also share some examples of my favourite reports, I’ve read through the years. Even more, I have prepared a postmortem template at the end of this article as a gift to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Definition
&lt;/h2&gt;

&lt;p&gt;A postmortem is a document that describes the details of an incident. We usually write it after we resolve an outage. It is intended to provide an analysis of the incident, including the reasons behind it any lessons learned as well as potential action points.&lt;/p&gt;

&lt;p&gt;At that point, you may be wondering: &lt;em&gt;Why would I write a document when you already fixed a problem?&lt;/em&gt; Think about it:&lt;/p&gt;

&lt;p&gt;Writing a postmortem demands concentration and focus to ensure all necessary details are considered. It offers you the opportunity to analyse the incident in more depth and identify any issues that may be present in your processes and tools, enabling you to make your project more robust. By writing a postmortem document, you can ensure you are better prepared for similar events in the future and you can put in place the necessary changes to prevent them from occurring again.&lt;/p&gt;

&lt;p&gt;But wait — there is more!&lt;/p&gt;

&lt;p&gt;A postmortem report is a useful tool for providing stakeholders with information about a certain incident, offering them a detailed description of the problem as it unfolded. This report provides a clear and concise account of the incident which helps to build trust between you and your stakeholders. That allows them to feel confident in your team’s ability to handle similar situations in the future. But be careful, because with great trust comes great responsibility. 😉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1570579633427-03a051d25a22%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxNHx8bGlnaHRidWxifGVufDB8fHx8MTY3MjY5NTYzNg%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1570579633427-03a051d25a22%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxNHx8bGlnaHRidWxifGVufDB8fHx8MTY3MjY5NTYzNg%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" title="macro photography of person holding light bulb" alt="macro photography of person holding light bulb" width="1080" height="720"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@agustinfernandez" rel="noopener noreferrer"&gt;Agustin Fernandez&lt;/a&gt; on &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now, If you have never heard of the term &lt;strong&gt;postmortem&lt;/strong&gt; , that term may sound a bit creepy. At least that was my case before I learned what it does and how it works. It turns out postmortem is an incredibly valuable tool, used by teams to document their successes and failures and to identify ways to improve in the future. With this knowledge, postmortems can be seen in a completely different light - the light of shared knowledge and learned lessons.&lt;/p&gt;

&lt;p&gt;C_an I be completely frank with you?_ I prefer using the term &lt;strong&gt;incident report&lt;/strong&gt; as &lt;strong&gt;postmortem&lt;/strong&gt; still gives the chills.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Does that make any sense to you? Would you like to learn how to write incident reports?&lt;/em&gt; Let’s dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Document structure
&lt;/h2&gt;

&lt;p&gt;Writing a postmortem is a straightforward process. All you need to do is compile three sections, making sure that each one communicates key elements of the process. Don’t get tricked. The process may be simple, but you should take it seriously and approach it with great care. You want to put all the details correctly and optimise it for the readers.&lt;/p&gt;

&lt;p&gt;Now, here’s the step-by-step process:&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;You usually start by providing a comprehensive overview of what happened. You should include as much detail as possible, such as affected dashboards, number of affected records, duration of the &lt;a href="https://www.montecarlodata.com/blog-the-rise-of-data-downtime/" rel="noopener noreferrer"&gt;downtime&lt;/a&gt;, and any other information that may be relevant. This section should provide a concise summary of the events around the incident so that readers who are not interested in all the technical details can still gain an understanding of what occurred.&lt;/p&gt;

&lt;p&gt;In this section, you should also include a &lt;strong&gt;root cause analysis&lt;/strong&gt; of the initial failure. To identify the root cause of the incident, you’d typically use the &lt;a href="https://en.wikipedia.org/wiki/Five_whys" rel="noopener noreferrer"&gt;"Five Whys" technique&lt;/a&gt;, which involves asking a series of questions to dig deeper into the problem and analyze the situation from multiple angles. This approach can help you uncover the underlying issue and get to the heart of the matter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1532619675605-1ede6c2ed2b0%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxhbmFseXNpc3xlbnwwfHx8fDE2NzI2OTYwNzg%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1532619675605-1ede6c2ed2b0%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxhbmFseXNpc3xlbnwwfHx8fDE2NzI2OTYwNzg%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" title="man wearing gray polo shirt beside dry-erase board" alt="man wearing gray polo shirt beside dry-erase board" width="1080" height="720"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@kaleidico" rel="noopener noreferrer"&gt;Kaleidico&lt;/a&gt; on &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Details
&lt;/h3&gt;

&lt;p&gt;In this section, you provide an overview of the steps taken to diagnose and resolve the downtime. You’d usually use a timeline to structure this section, which would allow you to break down the process into distinct stages. This helps to ensure that all the necessary steps are taken to identify and address the issue as quickly as possible. Additionally, employing a timeline aids you in identifying any potential areas of weakness in your troubleshooting process. This allows you to assess your approach and make any necessary changes that can help you to improve your response in the future.&lt;/p&gt;

&lt;p&gt;But wait, let me tell you something very important!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do I have your attention?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;OK, Now:&lt;/p&gt;

&lt;p&gt;More often than not, you might be inclined to point a finger in an attempt to find the source of any mistakes or issues that arise. However, you must not do that! It is vital to foster a blameless culture within the team and to focus on the learnings that can be taken away from any given situation, rather than attempting to place blame on one particular individual or group. That way you’ll allow everyone to learn and grow. It is also important to remember that mistakes can be an invaluable opportunity for growth, as long as you address them in the right way. Therefore, it is essential to resist the urge to blame and instead focus on the learnings that can be gained in the long run.&lt;/p&gt;

&lt;p&gt;Thanks for reading Data Gibberish! Subscribe for free to receive new posts and support my work.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Actually, would you like to know a secret?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Usually, there’s not a single person responsible for an incident. Even in rare cases, when there’s just one involved individual, you should dig a bit deeper and look for the actual reason. Instead of blaming people, you should make your project a space for creative minds to learn in a safe environment. Just a few questions you can ask: &lt;em&gt;Should that person have access to the system that failed? Did anybody review their work? Had you set up any monitoring and notifications?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1523240795612-9a054b0db644%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVhcm5pbmd8ZW58MHx8fHwxNjcyNjQ5NDQz%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1523240795612-9a054b0db644%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxOHx8bGVhcm5pbmd8ZW58MHx8fHwxNjcyNjQ5NDQz%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" title="three men laughing while looking in the laptop inside room" alt="three men laughing while looking in the laptop inside room" width="1080" height="720"&gt;&lt;/a&gt; &lt;em&gt;Photo by &lt;a href="https://unsplash.com/@priscilladupreez" rel="noopener noreferrer"&gt;Priscilla Du Preez&lt;/a&gt; on &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Takeaways
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;You can't let your failures define you. You have to let your failures teach you.&lt;/p&gt;

&lt;p&gt;― Barack Obama&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That certainly holds true for all aspects of life, including work. You can do your best to try and prevent failures from happening, yet they still occur, time and time again. It is not the failures themselves that people see in you as a person and professional, but rather, it is how you use those failures to learn and grow that truly matters. We should look into the past to build a better future. That is why I believe this section is the most important in the whole postmortem document.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sounds good?&lt;/em&gt; Let’s see how to put that into action.&lt;/p&gt;

&lt;p&gt;In this section, document what went well and what went poorly. Aim for objectivity and focus on the facts. Analyse the incident and extract any lessons learned. This could include insights about your tools, communication issues, or anything else. Don't jump to solutions yet; just consider what you learned from the incident. It is crucial, to be honest, and objective when reflecting on the downtime. Ask yourself questions such as: W_hat processes could have been improved? Were there any tools or resources that could have been better utilized? Were there any communication barriers that could have been addressed?_ Consider the entire outage and make sure to evaluate it from all angles. This will help ensure you are extracting the most important lessons to improve the process for future similar incidents.&lt;/p&gt;

&lt;p&gt;Thank you for reading Data Gibberish. This post is public so feel free to share it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ivanovyordan.substack.com/p/postmortem-reports?utm_source=substack&amp;amp;utm_medium=email&amp;amp;utm_content=share&amp;amp;action=share" rel="noopener noreferrer"&gt;Share&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you gained valuable knowledge and insights from the lessons you learn. It’s time to think about how to make your project better and how to prevent the same issues from occurring in the future. Write down a list of action points. You can do that in a free text format, or in the form of Jira tickets. Just make sure those are linked in the postmortem document. Take your time. It is important to think about any potential risks that could arise from making changes, and how to mitigate them. Just make sure you consider all angles and other projects you might have. Discuss timeframes with anyone involved and make sure your actions would make your world a better place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1484480974693-6ca0a78fb36b%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxwbGFufGVufDB8fHx8MTY3MjY5NjI5MQ%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1484480974693-6ca0a78fb36b%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxwbGFufGVufDB8fHx8MTY3MjY5NjI5MQ%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" title="person writing bucket list on book" alt="person writing bucket list on book" width="1080" height="719"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@glenncarstenspeters" rel="noopener noreferrer"&gt;Glenn Carstens-Peters&lt;/a&gt; on &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That’s it. Three sections. You can make those as long or short as you want to. You can of course add some more sections if you wish. There are no strict rules as far as it works for you, your team, and your stakeholders. Just beware to get all the details right, avoid blaming people and focus on learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Showcase
&lt;/h2&gt;

&lt;p&gt;Okay, I know what you are thinking: &lt;em&gt;That looks great. Can I see some examples?&lt;/em&gt; Yes, there are!&lt;/p&gt;

&lt;p&gt;As mentioned in the beginning, I’m going to share some of the best incident reports I read through the years:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://monzo.com/blog/2019/09/08/why-monzo-wasnt-working-on-july-29th" rel="noopener noreferrer"&gt;Monzo&lt;/a&gt; deployed a faulty update preventing customers from doing some basic operations&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.cloudflare.com/how-and-why-the-leap-second-affected-cloudflare-dns/" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt; broke their DNS service because of wrong beliefs about time&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://about.gitlab.com/blog/2017/02/10/postmortem-of-database-outage-of-january-31/" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt; accidentally removed production data from their primary database and was down for about one working day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These examples are not here to shame the companies for their outages. On contrary, I’d like to praise them for the effort they made to write those documents and be transparent. Those reports are examples of dedication to provide the best possible service, strengthening relationships and sharing knowledge. I’d strongly encourage you to &lt;del&gt;steal&lt;/del&gt; learn something from those.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recap
&lt;/h2&gt;

&lt;p&gt;To summarise:&lt;/p&gt;

&lt;p&gt;Incident reports provide a comprehensive overview of the incident, a root cause analysis, a timeline of the steps taken to resolve the downtime, and a list of action points to prevent similar issues from occurring in the future. They are a fantastic way to learn from your mistakes and share knowledge with your audience. It is vital to foster a blameless culture and focus on the learnings that can be taken away from the situation, rather than attempting to place blame on one particular individual or group.&lt;/p&gt;

&lt;p&gt;We didn’t just talk about what a postmortem document is. We discussed how to structure a document, and what should be our focus. We also saw some extremely good examples from a few well-known companies.&lt;/p&gt;

&lt;p&gt;And that’s it!&lt;/p&gt;

&lt;p&gt;Well, not really. As I promised, I have a small gift for you. It contains some basic examples, of how to use it. I am sure that template would be useful no matter if you are just starting your journey in structured incident reporting, or already have some experience with it.&lt;/p&gt;

&lt;p&gt;All you need to do to access the document is to follow these three easy steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the button bellow&lt;/li&gt;
&lt;li&gt;Input your name and email&lt;/li&gt;
&lt;li&gt;Click the button in the confirmation button&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;ProTip:&lt;/strong&gt; You need to copy the document to your Google Drive account if you want to be able to edit it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pages.ivanovyordan.com/incident-report-template" rel="noopener noreferrer"&gt;Yes, I want to get the template!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don’t take my words for granted. If you are looking for a way to improve your learning, consider using postmortem documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now, it’s over to you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What do you think?&lt;/em&gt; Let me know in the comments, or message me directly. Please, be brutally honest!&lt;/p&gt;

</description>
      <category>postmortem</category>
      <category>incident</category>
      <category>failure</category>
      <category>learning</category>
    </item>
    <item>
      <title>How to grow your career in five easy steps</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Wed, 14 Dec 2022 10:30:00 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/how-to-grow-your-career-in-five-easy-steps-43e8</link>
      <guid>https://dev.to/ivanovyordan/how-to-grow-your-career-in-five-easy-steps-43e8</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bs-XKyu7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1620632889724-f1ddc7841c40%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw0NHx8c3VjY2Vzc3xlbnwwfHx8fDE2NzEwMTI5NTY%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bs-XKyu7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1620632889724-f1ddc7841c40%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw0NHx8c3VjY2Vzc3xlbnwwfHx8fDE2NzEwMTI5NTY%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="brown wooden blocks on white surface" title="brown wooden blocks on white surface" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@brett_jordan"&gt;Brett Jordan&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You graduated. The courses you attended, and your interest in data helped you land your first job. You started getting the basics and you like to do what you do. &lt;em&gt;Now what? What should you learn? How do you grow in your career? How do you transition to a different role?&lt;/em&gt; If you can answer those questions, you are among the very few people in control of their own success. In this article, we’ll talk about the importance to define your own career path, how to set your goals and how to achieve them. I’ll present you with a framework that would help you achieve success even if you’ve been in the workforce for some years.&lt;/p&gt;

&lt;h2&gt;
  
  
  Careers in the past
&lt;/h2&gt;

&lt;p&gt;In the past, you wouldn’t change workplaces more than once or twice in your life. Your career would be pre-defined for you. You’d move from entry to mid-level positions up to more senior levels. Eventually, after 30 or so years, you’d get your bonus and retire. People generally found success by climbing the ladder until they reached the top. This worked well because the skills required and career advancement routes were much more predictable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modern career path
&lt;/h2&gt;

&lt;p&gt;There is not one defined path to success, but having the vision to follow can make all the difference. Instead of a ladder, think of a climbing wall. You don’t only move up, but you could also get back from a management position to an individual contributor, or step sideways by changing careers. It’s not a matter of getting your qualifications and then taking a few steps in the right direction. The modern career path requires a lot more, and that’s extremely valid for new professions such as the ones in the data field.&lt;/p&gt;

&lt;p&gt;There are two options in front of you. Option number one is to define your own career path and grow according to your individual skills and needs. Option number two is to leave someone else to decide what’s going to happen with your life and follow the herd. I very much prefer the first option. Defining your career path will help you to identify the direction in which you should move to achieve success. By setting your own goals, you’ll have an idea of the progress that you need to make, and the skills you need to get. You’ll also be in a better position to focus on the tasks and activities which will lead to your definition of success.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YSA4YESB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1610768798760-e01a4b43814e%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw5fHxjbGltYmluZ3xlbnwwfHx8fDE2NzEwMTMzMDU%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YSA4YESB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1610768798760-e01a4b43814e%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw5fHxjbGltYmluZ3xlbnwwfHx8fDE2NzEwMTMzMDU%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="woman in white t-shirt and black leggings sitting on blue and yellow floor" title="woman in white t-shirt and black leggings sitting on blue and yellow floor" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@rahadiansyah"&gt;Rahadiansyah&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The framework
&lt;/h2&gt;

&lt;p&gt;So you got your first job and are now in front of that giant rock wall. &lt;em&gt;How do you find your path?&lt;/em&gt; I followed the same framework for years, no matter if it comes to my own career or the people who reported to me. It has always provided unbelievably good results.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Find your strength
&lt;/h3&gt;

&lt;p&gt;List your top five to ten strengths and write them down somewhere. Be sure you keep that list somewhere where you can access it because you’ll need it later. That is the most complicated step. It requires you to be objective and fair with yourself. You may want to attribute some treats to yourself, that you don’t have. You could also miss some strengths you don’t realise. The good news is you don’t need to do that alone. In fact, I’d encourage you to ask a couple of your close friends and family to confirm those with you. Knowing your strengths would help you know yourself better and spot opportunities. That’s a crucial step in the process, and I won’t overlook it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Make your definition of success
&lt;/h3&gt;

&lt;p&gt;Now that you know your strengths, it’s time to define what success looks like in your eyes. Most people define success as working in a corner office, driving a nice car, and working countless hours for a corporation. Others prefer to make just enough money to live and spend most of their time with the family. None of these two definitions is better than the other, and that’s the beauty of what we are doing. It’s your life, your values, and your success.&lt;/p&gt;

&lt;p&gt;Close your eyes for a moment and imagine your perfect day. &lt;em&gt;Where are you? What do you do? How did you get there? Do you live there, or you needed to pay for an expensive vacation? Are you alone in the woods, or playing with the kids at home? Did you need to work long hours? Did you have to make a shit ton of money? How does your work allow you to do that? Can you answer those questions?&lt;/em&gt; Perfect, that’s your definition of success. Write that down and keep it for later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IpNfVHtv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1484627147104-f5197bcd6651%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwzNHx8c3VjY2Vzc2Z1bCUyMHdvbWFufGVufDB8fHx8MTY3MTAxMzI4Ng%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IpNfVHtv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1484627147104-f5197bcd6651%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwzNHx8c3VjY2Vzc2Z1bCUyMHdvbWFufGVufDB8fHx8MTY3MTAxMzI4Ng%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="person sitting on top of gray rock overlooking mountain during daytime" title="person sitting on top of gray rock overlooking mountain during daytime" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@dnevozhai"&gt;Denys Nevozhai&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Establish a plan
&lt;/h3&gt;

&lt;p&gt;Right, you are almost there. You know what your strengths are, what you want to do with your life, and what it will take to reach your goals. &lt;em&gt;Do you need any&lt;/em&gt; extra &lt;em&gt;skills or experiences? What kind of books do you have to read, or courses to take? Should you be involved in more challenging projects? Do you need to learn a new language to be able to understand new datasets? Do you need to transfer departments to your company?&lt;/em&gt; Make sure to include all the changes that may be necessary to reach your goals.&lt;/p&gt;

&lt;p&gt;Now, draft a rough plan on everything you need to learn and do. Whatever your plan is, do tell your manager and ask them to support you in your journey! Your manager would be more than happy to help you develop the required skills and see you grow. A good manager would be proud of your success, even if that means separating your paths.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Give yourself some time
&lt;/h3&gt;

&lt;p&gt;Now that you have your career plan in place it’s time to start working on it. Look at your plan. &lt;em&gt;What are the one or two things with the highest priority that you can start working on? How can you measure your progress?&lt;/em&gt; Set some metrics for yourself and put some time in your diary. But be careful! Most people, especially less experienced ones, would rush through their learning and try to tick as many boxes, as they can. Instead of doing so, you should take your time. If you focus solely on acquiring new skills you wouldn’t have the time to put those skills into practice and actually get good. In the end, you’d have read a pile of books and taken countless courses, but wouldn’t be able to decide on the best solution for a problem. You might not even be able to apply your knowledge to practice. Plus of that, life is unpredictable. More often than not, you’d need to pause working on your career plans and focus on something that feels more important at the moment. So, don’t rush it. Give yourself some slack time, and avoid the stress of missed deadlines.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Review
&lt;/h3&gt;

&lt;p&gt;Finally, set some time to review your work. A solid review process is important for many reasons. It would help to identify if you are on the right track or if you need to pivot. It will also help to track and measure your growth over time. In addition, it provides you with a sense of accomplishment when you see how far you’ve come. Also, you’d change with time. Your values and priorities might change and that’s completely normal. Doing that review occasionally is a strong guarantee of success.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NsbEgrAc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1455849318743-b2233052fcff%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxwYXNzaW9ufGVufDB8fHx8MTY3MTAxMzM2Ng%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NsbEgrAc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1455849318743-b2233052fcff%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxfHxwYXNzaW9ufGVufDB8fHx8MTY3MTAxMzM2Ng%26ixlib%3Drb-4.0.3%26q%3D80%26w%3D1080" alt="two person standing on gray tile paving" title="two person standing on gray tile paving" width="800" height="534"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@goian"&gt;Ian Schneider&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There’s no strict path in your career. You are unique, and your career should reflect that. You can grow and shite only by defining your path and goals that matter to you.&lt;/p&gt;

&lt;p&gt;All that is not just the next fudge. I’ve followed that framework for that for years. I’ve also practised that with people I’ve been working with. Those five simple steps have helped me and my people realise what we value in life, build a plan and pursue happiness. Even if I don’t work with some of those people anymore, we are still in contact. All of them have told me how much happier they are because of what you and I just discussed.&lt;/p&gt;

&lt;p&gt;Here’s my request for you. Do that exercise just once. &lt;em&gt;Did you find anything new for yourself? Did your future become more clear?&lt;/em&gt; Drop me a message. I’d be more than happy to hear your feedback!&lt;/p&gt;

</description>
      <category>career</category>
      <category>planning</category>
      <category>success</category>
    </item>
    <item>
      <title>What is DataOps and why it should be important for you?</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Mon, 18 Apr 2022 09:31:42 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/what-is-dataops-and-why-it-should-be-important-for-you-4gp0</link>
      <guid>https://dev.to/ivanovyordan/what-is-dataops-and-why-it-should-be-important-for-you-4gp0</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iAcBE7q_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1532619675605-1ede6c2ed2b0%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwzfHxkYXRhJTIwb3BlcmF0aW9uc3xlbnwwfHx8fDE2NTAyNjUwNjI%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iAcBE7q_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1532619675605-1ede6c2ed2b0%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwzfHxkYXRhJTIwb3BlcmF0aW9uc3xlbnwwfHx8fDE2NTAyNjUwNjI%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" alt="man wearing gray polo shirt beside dry-erase board" title="man wearing gray polo shirt beside dry-erase board" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@adeolueletu"&gt;Kaleidico&lt;/a&gt; on &lt;a href="https://dev.toUnsplash"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Growing businesses are moving quickly. Modern data-driven companies use data to build KPIs and make decisions. Those fast-paced organisations need a state-of-the-art data platform that can adapt to all new offers, relationships, acquisitions and other changes in the business. Today we will answer the question of what is DataOps, and how it helps companies to get the numbers they need quicker, cheaper and more reliably. Let’s start with a bit of history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Assembly lines
&lt;/h2&gt;

&lt;p&gt;Before the Industrial Revolution, most products were made on demand by hand. A different person would create every piece of the product. In the end, a final person would assemble the parts by modifying them until they fit and work together.&lt;/p&gt;

&lt;p&gt;Then assembly lines were invented. Every individual in the line did exactly one thing in the exact same way. If someone’s job were to screw some bolts, they would do only that, the whole day, every day. The standardisation of the process made the products more consistent, reliable and cheaper, but we didn’t use people’s potential.&lt;/p&gt;

&lt;p&gt;Nowadays, we have large factories full of robots that produce enormous amounts of cars. This revolution freed more time for people to use their most powerful tool — their brains. Instead of spending time doing the same mindless tasks over and over, they can focus on making cars safer, more comfortable, and more aesthetic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BuRRRQ6B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1589793463357-5fb813435467%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwyfHxhc3NlbWJseSUyMGxpbmV8ZW58MHx8fHwxNjUwMjY1MjIy%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BuRRRQ6B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1589793463357-5fb813435467%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwyfHxhc3NlbWJseSUyMGxpbmV8ZW58MHx8fHwxNjUwMjY1MjIy%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" alt="people sitting on chair inside room" title="people sitting on chair inside room" width="800" height="1199"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@gieling"&gt;Remy Gieling&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While software engineering teams borrowed many production processes from manufacturing, data teams are just getting up to speed with assembly lines. They dump data into spreadsheets, cleanse it, categorise it, create the charts and send them via email. What’s worse is that all that work is being done manually for every single report.&lt;/p&gt;

&lt;p&gt;What is considered modern is having many people sitting on a chain of responsibilities and working with just one type of data and don’t know what other people on the line do. Software engineers work with application data, data engineers are interested in producing a kind of raw data, and business analysts build business objects. In the end, no one really knows what the PM needs.&lt;/p&gt;

&lt;p&gt;Just in the last couple of years, we started observing a more holistic view of how data is being processed and used. We call this Data Operations, or DataOps in short. Let’s see what exactly is that.&lt;/p&gt;

&lt;h2&gt;
  
  
  DataOps values
&lt;/h2&gt;

&lt;p&gt;DataOps is a set of principles that combine people, technologies, and processes and lead to better data insights. &lt;a href="https://dataopsmanifesto.org/en/"&gt;The DataOps Manifesto&lt;/a&gt; consists of 16 principles and five values. I grouped them into three main areas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hojJkex6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.substack.com/image/fetch/w_2400%2Cc_limit%2Cf_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F1a4f6cbd-800c-41d5-9072-e9952a67a4ce_1883x613.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hojJkex6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.substack.com/image/fetch/w_2400%2Cc_limit%2Cf_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F1a4f6cbd-800c-41d5-9072-e9952a67a4ce_1883x613.png" alt="DataOps process" title="DataOps process" width="800" height="260"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Image by &lt;a href="https://www.datalytyx.com/dataops/"&gt;Datalytyx&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tooling and Processes
&lt;/h3&gt;

&lt;p&gt;According to a &lt;a href="https://www.datafold.com/blog/the-state-of-data-quality-in-2021"&gt;survey by Datafold&lt;/a&gt;, almost &lt;strong&gt;40% of the respondents believe that too much manual work is the top reason for low productivity&lt;/strong&gt; of data teams. The same study shows that nearly &lt;strong&gt;60% of the teams validate data manually&lt;/strong&gt; before using it.&lt;/p&gt;

&lt;p&gt;A large piece of DataOps engineers’ job is to streamline the process from ingestion to dashboard. They are responsible for building the infrastructure, automation, orchestration and monitoring. They also create pipelines and models and advise on architecture and security. Basically, they support everyone who needs these sweet insights. To do that, DataOps engineers need to choose the best tools for the job, continuously evaluate the stack, and optimise the processes. Obviously, this means they also train the team on those tools and invent procedures around them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i6WmySN_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1427751840561-9852520f8ce8%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw3fHxjaGFydHN8ZW58MHx8fHwxNjUwMjY2MjYx%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i6WmySN_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1427751840561-9852520f8ce8%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHw3fHxjaGFydHN8ZW58MHx8fHwxNjUwMjY2MjYx%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" alt="person sitting on chair holding iPad" title="person sitting on chair holding iPad" width="800" height="530"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@adeolueletu"&gt;Adeolu Eletu&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This holistic view of the tooling allows DataOps practitioners to build a homogenous platform that does not feel like a Frankenstein. Those people have to decide what process should be used, ETL, ELT, or a combination of these. Depending on that, they have to choose the tooling for ingestion, transformation and storage. They also have to build the orchestration and provide the visualisation layer. Ideally, all this should be put in version-controlled code, which can be executed easily on a local machine. This code should then be run in different environments and deployed via CI/CD processes. All this provides us with better visibility, stability and reproducibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  People
&lt;/h3&gt;

&lt;p&gt;Tooling is cool and important, but people are critical. &lt;a href="https://www.apollotechnical.com/employee-retention-statistics/"&gt;Statics show&lt;/a&gt; that entry-level employees typically  &lt;strong&gt;cost 50% of their salary to replace&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A DataOps practitioner needs to understand that they provide their services to real people, not just some squares in Zoom or Slack. They should value quality, and one of the best ways to achieve that is by delivering early and seeking feedback. It’s not enough to do tasks and blindly follow instructions. DataOps means a deep understanding of customers’ needs and advising on the best solution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uRL9jeyW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1600880292203-757bb62b4baf%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxM3x8dGVhbXdvcmt8ZW58MHx8fHwxNjUwMjY2NDQw%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uRL9jeyW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1600880292203-757bb62b4baf%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwxM3x8dGVhbXdvcmt8ZW58MHx8fHwxNjUwMjY2NDQw%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" alt="high five" title="high five" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@krakenimages"&gt;krakenimages&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We don’t work only with stakeholders. There are also people in the team with different experiences and skills. That is great as different backgrounds and opinions increase innovation and productivity. On the other hand, this brings some challenges when it comes to tooling versus people. Overall, we should find a balance between people and “&lt;em&gt;good practices&lt;/em&gt;” but lean toward people’s preferences. I can give you an example from my life. I like having clean and nice git history of commits and Pull Requests. It helps us connect all pieces of a task, trace the history, and get a better understanding of the project’s evolution. This process works well for a small team of senior engineers, but it appears to confuse more junior members of the team. To be honest, I’m still struggling to find the balance with this exact use case. My current solution is to allow everyone to commit changes in the way that fits them individually. That looks like small chaos but helps us move forward with the project, and people learn best practices slowly.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How would you deal with that?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication
&lt;/h3&gt;

&lt;p&gt;Speaking about code documentation processes, good commit messages are non-negotiable to me. I don’t think we have to document every single piece of the project. On the contrary, the DataOps culture values shipping code early over waiting for the documentation. &lt;em&gt;Why then is this so important for me?&lt;/em&gt; Communication is the heart of DataOps. It’s the glue that connects people and technologies. Clear, concise and open communication is the key to a successful analytics team. A &lt;a href="https://www.zippia.com/advice/workplace-collaboration-statistics/"&gt;study from Zippa&lt;/a&gt; shows that &lt;strong&gt;86% of employees&lt;/strong&gt;  in leadership positions  &lt;strong&gt;blame lack of collaboration&lt;/strong&gt;  as the top reason for workplace failures.&lt;/p&gt;

&lt;p&gt;Within the team, we need to communicate what we have done and even more importantly, why we have done it. We can achieve that via good commit messages, pull requests, tests, daily stand-ups and knowledge sharing sessions. That way, we reduce confusion and repetitive work, provide more opportunities for learning and increase engagement. I don’t have to tell you how much team spirit increases productivity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--muciQFwg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1616587894289-86480e533129%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwzOXx8Y29tbXVuaWNhdGlvbnxlbnwwfHx8fDE2NTAyNjY0ODc%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--muciQFwg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://images.unsplash.com/photo-1616587894289-86480e533129%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DMnwzMDAzMzh8MHwxfHNlYXJjaHwzOXx8Y29tbXVuaWNhdGlvbnxlbnwwfHx8fDE2NTAyNjY0ODc%26ixlib%3Drb-1.2.1%26q%3D80%26w%3D1080" alt="man in blue and white plaid dress shirt using macbook pro" title="man in blue and white plaid dress shirt using macbook pro" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@linkedinsalesnavigator"&gt;LinkedIn Sales Solutions&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Cross-team communication is equally important. We should interact with our stakeholders on a daily basis. Only by understanding their needs, we can provide the best possible service. When I say communication, I don’t just mean calls and email. I also mean automated status reports, SLA dashboards, and all kinds of monitoring. We ought to communicate what data we can bring, what we currently have and how our customers are using that data.&lt;/p&gt;

&lt;p&gt;Processes, people and communication are the three main ingredients for the DataOps culture. Only by combining these three ingredients, we can guarantee we are providing the best service we can. We could spend a lot more time discussing that matter, but this is the baseline we all should agree on if we want a modern analytics process. &lt;em&gt;Do you see the point in these values?&lt;/em&gt; Great! Let’s see what kind of people we need.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who owns DataOps in the organisation?
&lt;/h3&gt;

&lt;p&gt;As we already discussed, DataOps advocates are responsible for all processes from request to dashboard. They own the ingestion, transformation, orchestration and the other needed tools. They are responsible for getting the whole context through meetings and written messages, keeping the software running, environments in sync and data secure. As you can see, we need people with diverse skills — programming, server infrastructure, communication, organisational skills, and many more. They need to learn fast and adapt to changes in business requirements to produce graphs and charts as quickly, cheaply and reliably as possible. These people can increase productivity not just in the team for in the whole company if we allow them to execute their ideas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JdhMXyS1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.substack.com/image/fetch/w_2400%2Cc_limit%2Cf_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F9faefebe-2fea-4658-8e83-f0cd4d1386a5_818x727.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JdhMXyS1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.substack.com/image/fetch/w_2400%2Cc_limit%2Cf_auto%2Cq_auto:good%2Cfl_progressive:steep/https%253A%252F%252Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%252Fpublic%252Fimages%252F9faefebe-2fea-4658-8e83-f0cd4d1386a5_818x727.png" alt="DataOps roles" title="DataOps roles" width="800" height="711"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Image by &lt;a href="https://datakitchen.io/"&gt;DataKitchen&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Very rarely, just a couple of times in our life, we would find the amalgam of all these skills in a single person. Most times, we have a whole team of data engineers, analytics engineers and business analysts led by some sort of a Head — Head of Data Engineering, Head of BI or Head of Data. Even more often, we’d see at least two of these Head positions under a larger analytics team. That helps individuals focus on the areas they are interested in but still understand what happens around them. On top of that, we still have someone who has the whole context. In the end, we are all responsible, from the CEO to every individual contributor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Slowly but surely, data teams are adopting processes from manufacturing and software engineering. The increase in productivity and visibility of all departments in data-driven companies gives them a great advantage over competitors. A strong analytics team following the DataOps principles is crucial for every modern business. I bet we’ll see an increasing need for people with data operation skills in the years to come.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What is your opinion on that matter? What does your organisation do to make sure it provides insights most efficiently?&lt;/em&gt; Share your thoughts in the comments below. Oh, and don’t forget to subscribe for new articles!&lt;/p&gt;

</description>
      <category>data</category>
      <category>dataops</category>
    </item>
    <item>
      <title>Dext switched from ETL to ELT, it’s that easy!</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Wed, 31 Mar 2021 00:00:00 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/dext-switched-from-etl-to-elt-it-s-that-easy-8gc</link>
      <guid>https://dev.to/ivanovyordan/dext-switched-from-etl-to-elt-it-s-that-easy-8gc</guid>
      <description>&lt;p&gt;Growing business without data hard. It’s also hard to build data stacks that provide the right data at the right time. ELT is de-facto the standard when it comes to agile data pipelines. Using this process will empower you to move quicker and be more confident at the same time. I’ll tell you how I led the transformation of Dext’s data ingestion to a world-class level, and how you can do the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  No data stack at all
&lt;/h3&gt;

&lt;p&gt;Like most companies, we at &lt;a href="https://dext.com/"&gt;Dext&lt;/a&gt; don’t make decisions out of the thin air. We rely on A/B testing, behaviour analysis, surveys and many more. To do that, we need data. A lot of data. The whole data journey at Dext started before I joined the company, but I know the story very well. Not to mention, I’ve seen similar evolutions before.&lt;/p&gt;

&lt;p&gt;Like most companies, we started querying limited data from a production database replica. We had graph and charts in the admin panel for the simple FAQs. Only people with technical knowledge had permissions to run on-demand reports.&lt;/p&gt;

&lt;p&gt;Like most companies, we wanted more and more. We reached a level where reports became so slow that people learned to avoid asking questions at all. We even started hitting database performance issues, which affected our service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data platform version 1
&lt;/h3&gt;

&lt;p&gt;Like many startups out there, we rely on AWS. That’s why it was a no brainer to build our data platform using their services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e8VRnFwz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ivanovyordan.com/assets/images/posts/etl-to-elt/etl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e8VRnFwz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ivanovyordan.com/assets/images/posts/etl-to-elt/etl.jpg" alt="Dext's ETL process" width="783" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We used &lt;a href="https://aws.amazon.com/s3/"&gt;S3&lt;/a&gt; as a data lake (where we dumped all raw data), &lt;a href="https://aws.amazon.com/redshift/"&gt;Redshift&lt;/a&gt; as a warehouse (where we placed it all nice and structured), &lt;a href="https://spark.apache.org/"&gt;PySpark&lt;/a&gt; as an ETL engine (where the transformations happened), and &lt;a href="https://aws.amazon.com/datapipeline/"&gt;Data Pipelines&lt;/a&gt; for the scheduling. As you can see it’s a standard setup. In fact, I bet many of you have a similar data flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Problems with ETL
&lt;/h3&gt;

&lt;p&gt;At the time I joined the whole “Data lake” as we called it, the project was in a work in progress state, but highly anticipated by the business. Spark itself appeared to be a powerful tool that served us quite well for a couple of years. We realised it is too powerful for the traditional ETL process we had. All we wanted was to extract some CSVs, database records and JSON events, mix and match them, and dump all that into a warehouse. Spark is perfectly capable of doing that, but its true power lies in data streaming, machine learning and so much more. We were trying to kill a mosquito with a bazooka.&lt;/p&gt;

&lt;p&gt;We also had one problem related to the whole ETL process concept. We stored the raw data in S3, and every time we wanted to debug something specific or perform a back-fill, we had to search in a large amount of raw data, which was slow and expensive.&lt;/p&gt;

&lt;p&gt;Last, but not least, finding real Spark experts in a not so hot technology appeared to be much harder than we thought it would be. At Dext, we hire only world-class talents which appeared to be a problem when it comes to a not so hot technology. We were able to extend the team a bit, but not as much as we wanted.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recap
&lt;/h3&gt;

&lt;p&gt;To summarise our use-case, we needed to store data in an easy to access way, transform it, and make it available for analysis. Our main problem, in short, was that Spark’s too powerful and complicated for that job. Not to mention how slow it is to traverse a data lake, and hard to find colleagues.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Does that sound familiar to you?&lt;/em&gt; Then it’s time for a change!&lt;/p&gt;

&lt;h2&gt;
  
  
  A new ELT was born
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Fivetran + Snowflake + dbt = ELT
&lt;/h2&gt;

&lt;p&gt;Yes, we were afraid of change too, but we knew we had to find a better solution. We needed something simpler, with fewer bells and whistles, that’s able to transform semi-structured data into a table. We were aiming at a toolchain based on more popular technologies - Javascript, Python, SQL, you name it.&lt;/p&gt;

&lt;p&gt;One day while reading random &lt;a href="https://www.snowflake.com/"&gt;Snowflake&lt;/a&gt; (the warehouse we recently &lt;a href="https://dev.to/ivanovyordan/migrating-from-redshift-to-snowflake-3bkc"&gt;switched to&lt;/a&gt;) documentation, I found the &lt;a href="https://docs.snowflake.com/en/sql-reference/functions/flatten.html"&gt;flatten function&lt;/a&gt; that helps us to work with semistructured data in an elegant and easy to use way. That made it all clear!&lt;/p&gt;

&lt;p&gt;We have already been using &lt;a href="https://fivetran.com/"&gt;Fivetran&lt;/a&gt;, which is probably the best Extract-Load (EL) SaaS to move data from various services to Snowflake. We could use them to load raw JSON events as well.&lt;/p&gt;

&lt;p&gt;With a large catalogue of sources Fivetran provides, and the power of Snowflake we had almost everything in place. We just needed a simple way to run our transformation queries.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a href="https://www.linkedin.com/in/dylangbaker/"&gt;Dylan&lt;/a&gt;, we had already been using &lt;a href="https://www.getdbt.com/"&gt;dbt&lt;/a&gt; for a while and have accumulated some good experience with it. All dbt does is enable you to transform data in your warehouse by simply writing select statements. It’s true power lies in &lt;a href="https://docs.getdbt.com/docs/building-a-dbt-project/jinja-macros"&gt;jinja macros&lt;/a&gt; and the &lt;a href="https://docs.getdbt.com/reference/dbt-jinja-functions/ref"&gt;ref function&lt;/a&gt;. Here I want to mention that while dbt is a truly awesome tool, I think the best part is it has an outstanding community and I really can’t express how amazed I am by the folks behind it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--prgn-7Az--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ivanovyordan.com/assets/images/posts/etl-to-elt/elt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--prgn-7Az--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ivanovyordan.com/assets/images/posts/etl-to-elt/elt.jpg" alt="Dext's ELT process" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Honestly, if you don’t have a data platform in place, you can safely stop reading. Just sign up for a free trial at Snowflake, Fivetran and dbt Cloud and let your imagination free!&lt;/p&gt;

&lt;h3&gt;
  
  
  The migration
&lt;/h3&gt;

&lt;p&gt;We started with a small proof of concept project, which as expected, happened to be really a quick and easy one. We swiftly put an action plan, created a Trello board for the project and started executing it table by table.&lt;/p&gt;

&lt;p&gt;The first step was to write the model and the tests (unit, integration and schema) for it. We built the model on a staging environment and looked at the results. While most of the cases we had a one-to-one match, there were occasions, where we found differences and most of the times, those were actually bugs in our Spark code.&lt;/p&gt;

&lt;p&gt;Then &lt;a href="https://www.linkedin.com/in/matthew-gardner-a1508298/"&gt;Matt&lt;/a&gt; from the BI team tested if there’s something that breaks the business logic, or if we have missed something. He performed most of his tests against the live production data. Again, there were some differences here and there, but most of the times, those were because of a failed pipeline runs back in the time and data we missed to back-fill.&lt;/p&gt;

&lt;p&gt;We left the production module for the production module running for a week or so and if everything was alright we proceeded to the last step. At this stage, we were quite confident with the state of the pipeline. We had to change a single line of code. Believe it or not, but none of our “internal clients” noticed the change. We didn’t have any service downtimes or data inconsistencies.&lt;/p&gt;

&lt;p&gt;It looks like a lot of work, but &lt;a href="https://www.linkedin.com/in/kamelia-mladenova-6b5676123/"&gt;Kami&lt;/a&gt; and I managed to go through the whole process in a few months. We had a completely new process, that was not just much easier and faster, but also, more reliable in every aspect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recap
&lt;/h3&gt;

&lt;p&gt;Obviously, not everything is flowers and roses. The price we had to pay for all these services was increasing every week, for the first few months. Although, paying for services is much cheaper than paying for people, we were not happy with our Snowflake expenses. We spent a few more weeks on optimisations (this one is another interesting story), and now we pay even less than what we were paying in the beginning. The most significant win is not the price, but the fact that anyone with basic SQL knowledge can now understand our process and contribute to the project. If we can do it, you can do it. 😉&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The low storage costs combined with the flexibility, power and popularity of SQL makes ELT the way to go for most data engineering processes nowadays. ELT allows data teams to incorporate modern software engineering practices - Agile practices, version control, working in teams, CI/CD and everything else you have used to.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Is ELT a good process for your use-case? What problems do you have with your data stack?&lt;/em&gt; Share your thoughts in the comments below, or &lt;a href="https://www.ivanovyordan.com/contact"&gt;ping me&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>data</category>
      <category>dbt</category>
      <category>snowflake</category>
    </item>
    <item>
      <title>QuickTip: GitHub profile readme</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Wed, 15 Jul 2020 00:00:00 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/quicktip-github-profile-readme-b59</link>
      <guid>https://dev.to/ivanovyordan/quicktip-github-profile-readme-b59</guid>
      <description>&lt;p&gt;GitHub is important for your career. You know It’s like your public portfolio. The question is how to make it stand out? Luckily, GitHub released a pretty cool feature, and in this quick tip, we will see how to use it.&lt;/p&gt;

&lt;p&gt;So, as we already said, GitHub recently released a new feature that can make your profile stand out, or at least look a bit more personalized. All you need to do is to create a profile-level READMEfile, and GitHub will display it on top of your page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why README
&lt;/h2&gt;

&lt;p&gt;We all know how important READMEs are for documenting every project. It’s often the border between working alone and finding contributors. I think using README for &lt;em&gt;documenting&lt;/em&gt; people is a great idea.&lt;/p&gt;

&lt;p&gt;But why do we need README when we can just write a short bio? Well, Markdown is more flexible - we can place links, images, or even GIFs. README also takes more space in the centre of peoples screens. With all that freedom and space awesome people can make awesome things.&lt;/p&gt;

&lt;h2&gt;
  
  
  How-To
&lt;/h2&gt;

&lt;p&gt;Enough talking, let’s see how to beautify our profiles. It’s fast, and you can do it in three easy steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://github.com/new"&gt;https://github.com/new&lt;/a&gt; and create a repository with the same name (including casing) as your GitHub username&lt;/li&gt;
&lt;li&gt;Create a &lt;code&gt;README.md&lt;/code&gt; file and add your fancy code there&lt;/li&gt;
&lt;li&gt;Commit (and push)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7P53Zbrx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ivanovyordan.com/assets/images/posts/github-profile-readme/new-repo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7P53Zbrx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.ivanovyordan.com/assets/images/posts/github-profile-readme/new-repo.png" alt="Creating a new repository" width="800" height="436"&gt;&lt;/a&gt; &lt;em&gt;Creating a new repository&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What if you already have a repository with the same name? I’d recommend renaming the existing project, or if possible, changing the content of the README file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;My profile README is relatively simple. You can see how it looks like by checking my &lt;a href="https://github.com/ivanovyordan/"&gt;GitHub&lt;/a&gt; profile.&lt;/p&gt;

&lt;p&gt;Of course, you may have better ideas like placing animated portraits, skill endorsements or even the tracks that you are listening in Spotify. You can find all this and even more in a &lt;a href="https://github.com/abhisheknaiidu/awesome-github-profile-readme"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I showed you mine, now it’s your turn to show me yours.&lt;/p&gt;

</description>
      <category>quicktip</category>
      <category>github</category>
    </item>
    <item>
      <title>Migrating from Redshift to Snowflake</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Sun, 07 Jun 2020 00:00:00 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/migrating-from-redshift-to-snowflake-3bkc</link>
      <guid>https://dev.to/ivanovyordan/migrating-from-redshift-to-snowflake-3bkc</guid>
      <description>&lt;p&gt;I joined Receipt Bank as a software developer about three years ago. My last onboarding task gave me a good overview on the data flow and I was offered to join the data engineering team shortly after I finished my onboarding. I haven't had prior experience in this area, but I was keen to learn more, so I happily accepted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Redshift
&lt;/h2&gt;

&lt;p&gt;Like many other companies, we use every AWS service we can, so it shouldn't surprise you we used &lt;a href="https://aws.amazon.com/redshift/"&gt;Redshift&lt;/a&gt; as a warehousing solution. Redshift is actually awesome. It's an easy and cheap way to start when you need a data warehouse, not to mention it's based on the good old PostgreSQL.&lt;/p&gt;

&lt;p&gt;There are two types of Redshift &lt;a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html"&gt;cluster nodes&lt;/a&gt; — compute-optimized with small SSDs, and storage optimized with large HDDs. We started with 10 &lt;code&gt;dc2.large&lt;/code&gt; (dense compute) machines which served us well for a while.&lt;/p&gt;

&lt;p&gt;The project was adopted rather well and our data volumes were increasing fairly quickly. We had to add new nodes every few months and two years later we hit the limit of 32 compute machines. Unfortunately, we can't mix compute and storage nodes and our only option was to switch to the larger disks. Of course, we'd seen that coming and started preparing upfront. We secured some time by migrating to a cluster with a few &lt;code&gt;ds2.xlarge&lt;/code&gt; workers and caching the most used queries with &lt;a href="https://www.getdbt.com/"&gt;dbt&lt;/a&gt; transformations. We had the memory and CPU to run our reports at a reasonable speed, and the space to switch to &lt;a href="https://www.snowflake.com/"&gt;Snowflake&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Snowflake
&lt;/h2&gt;

&lt;p&gt;You can often hear people talk about it as a warehouse build for the cloud, but what does that mean? Snowflake works on (at least) the three major providers AWS, GCP and Azure and it's up to you to choose the provider and availability zone for your setup. Just keep in mind Snowflake is a managed service, so you don't have access to the underlying resources and the choice could affect the traffic costs for your cloud provider.&lt;/p&gt;

&lt;p&gt;Snowflake is not an AI-Blockchain-NoSQL-Graph database. In fact, on the first look it looks like a traditional PostgreSQL, but don't let the familiar syntax and intuitive UI lie to you. Snowflake is a completely separate warehouse built from the ground up. Snowflake has separated their computing from the storage. It's like having two separate computers which you can access through the local network. If you need more storage for your multimedia, you upgrade one, and if you need more power for your games, you upgrade the other.&lt;/p&gt;

&lt;p&gt;I won't talk too much about Snowflake, as there are tons of resources out there, but I'd say it's pretty damn good!&lt;/p&gt;

&lt;h2&gt;
  
  
  Migration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ETL
&lt;/h3&gt;

&lt;p&gt;Our first step was to migrate our ETL, and as most of our data infrastructure, it was highly coupled to AWS. It cost us some time for planning and quite some time for execution, but once we ran it, it worked like a charm. Here's what we've done.&lt;/p&gt;

&lt;h3&gt;
  
  
  Defined critical metrics
&lt;/h3&gt;

&lt;p&gt;We started by defining the most important criteria for success. We created a &lt;a href="https://looker.com/"&gt;Looker&lt;/a&gt; dashboard with looks for the average query runtime and the percentage of &lt;strong&gt;fast&lt;/strong&gt; queries and list of slow queries. The results in this dashboard was one of the top criteria we'd use for our buy/no-buy decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  Created a Snowflake adapter for the ETL
&lt;/h3&gt;

&lt;p&gt;Our &lt;a href="https://spark.apache.org/"&gt;PySpark&lt;/a&gt; ETL was working for years and we were planning to continue supporting Redshift for a few months after the official migration. The plan was to run the ETL both for Redshift and Snowflake.&lt;/p&gt;

&lt;p&gt;We started by creating a Snowflake adapter with the same &lt;em&gt;public API&lt;/em&gt; we had for Redshift and wrapped all of this with a &lt;a href="https://en.wikipedia.org/wiki/Strategy_pattern"&gt;Strategy&lt;/a&gt; class.&lt;/p&gt;

&lt;p&gt;Leaving pipelines like that would create various problems for us. We wanted to feed Redshift and Snowflake independently, so if the load fails for one warehouse it still could pass for the other. Of course, we didn't want to run the extractions and transformations twice and pay twice for the same task.&lt;/p&gt;

&lt;p&gt;We end up splitting every pipeline into three separate jobs. One job running just the ET and producing CSV files in &lt;a href="https://aws.amazon.com/s3/"&gt;S3&lt;/a&gt;, one loading CSVs into Redshift and one loading the same data into Snowflake.&lt;/p&gt;

&lt;p&gt;Decoupling the pipelines took us some time but made maintenance much easier. Not to mention shutting down Redshift pipelines in a later stage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write migration scripts
&lt;/h3&gt;

&lt;p&gt;This, in my opinion, was one of the most challenging technical aspects of the project. We created a couple of scripts for that purpose. The idea was to make something that could &lt;em&gt;crawl&lt;/em&gt; the database, and allow us to add new data in Redshift while working on the migration without hardcoding schemas, tables and views.&lt;/p&gt;

&lt;p&gt;With the first script, we were able to copy the structure of the Redshift database into Snowflake. It basically listed all schemas with all tables and views in them and generated &lt;code&gt;CREATE&lt;/code&gt; queries. The last job of this script was to set proper for permissions for every asset.&lt;/p&gt;

&lt;p&gt;With the second script, we could copy the data from one warehouse to the other. It was as simple as dumping all the data in CSV files in S3 and then copy this data into Snowflake.&lt;/p&gt;

&lt;p&gt;It doesn't look like a hard task, but a lot is going on here. First of all, we need to make sure we don't miss any table, view or whatever we want to recreate into Snowflake. We also should keep in mind, that Redshift and Snowflake have slightly different syntax and the DDL doesn't match. That means we can't just get the one provided by Redshift and we have to generate it for ourselves.&lt;/p&gt;

&lt;p&gt;Unloading and copying data normally is a trivial task. The complication in our case came from the way we use our warehouses. We have people working in (almost) all timezones who need almost live data and every hour without this data makes them blind. This means we had to find a good balance between quick parallel dumps and enough power to run &lt;code&gt;SELECT&lt;/code&gt; queries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run the migration
&lt;/h3&gt;

&lt;p&gt;So we prepared and tested everything. It was the time to run the migration.&lt;/p&gt;

&lt;p&gt;One day (or rather one night) we stopped the ETL including our internal Spark pipelines as well the syncs from &lt;a href="https://segment.com/"&gt;Segment&lt;/a&gt; and &lt;a href="https://fivetran.com/"&gt;Fivetran&lt;/a&gt;. Then, we started our migration scripts and a few hours later when everything finished (surprisingly without any errors) we started the ETL with Snowflake support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Epilogue
&lt;/h2&gt;

&lt;p&gt;So, almost one year after the migration, I'd say it was a fairly successful project. We did well and secured virtually unlimited storage and computing power. We moved our transformations entirely to dbt and increased the data volumes tens of times since then.&lt;/p&gt;

&lt;p&gt;It's important to say we pay much more for Snowflake than what we have been paying for Redshift, but&lt;br&gt;
it works well for our use-case.&lt;/p&gt;

&lt;p&gt;What are your thoughts?&lt;/p&gt;

</description>
      <category>data</category>
      <category>snowflake</category>
    </item>
    <item>
      <title>SVN to Git write-up</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Thu, 03 Jan 2019 13:29:35 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/svn-to-git-write-up-1e12</link>
      <guid>https://dev.to/ivanovyordan/svn-to-git-write-up-1e12</guid>
      <description>&lt;h3&gt;
  
  
  The backstory
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2Gdq7QaC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1531030874896-fdef6826f2f7%3Fixlib%3Drb-0.3.5%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ%26s%3D21c1a038fbb00c20e7bbe6c67016385c" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2Gdq7QaC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1531030874896-fdef6826f2f7%3Fixlib%3Drb-0.3.5%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D1080%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ%26s%3D21c1a038fbb00c20e7bbe6c67016385c" alt="SVN to Git write-up"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I left my previous job about two years ago. As a small team in a single room, we didn't have significant problems with the communication. Surprisingly the choice of tooling and the way we were using it caused us our biggest problems.&lt;/p&gt;

&lt;h3&gt;
  
  
  The process
&lt;/h3&gt;

&lt;p&gt;As a product company, most of the time we were working on a single monolithic project with multiple smaller applications divided in SVN repositories. There's nothing unusual for a dozen years old product. But here's how we were using SVN.&lt;/p&gt;

&lt;p&gt;There was no branching, real staging environment or automated deployment. If we wanted to deploy a piece of code, we had to commit it to master. Then thanks to some cron job magic it was deployed to the &lt;em&gt;staging&lt;/em&gt; server. When we wanted to ship a feature, we had to ask the &lt;em&gt;CTO&lt;/em&gt; to run &lt;code&gt;svn up&lt;/code&gt; on the single production server.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problems
&lt;/h3&gt;

&lt;p&gt;Let me give you an example of a situation we had almost every day.&lt;/p&gt;

&lt;p&gt;If George wants to test something on &lt;em&gt;integration&lt;/em&gt;, he must commit his code to the &lt;em&gt;master&lt;/em&gt; branch. A few minutes later Mary is done with her feature which is already in &lt;em&gt;master&lt;/em&gt;. Peter logs in to the server and updates the &lt;em&gt;master&lt;/em&gt; branch on the server. Guess what happens at that moment? Peter just deployed George's buggy and unpolished code.&lt;/p&gt;

&lt;p&gt;What was our workaround? We had to ask out loud in the room:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is there something in the repository that should not be deployed?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And if the answer was &lt;code&gt;Yes&lt;/code&gt; we had to upload the specific feature files, revert the changes or even wait for each other to finish with our work.&lt;/p&gt;

&lt;h3&gt;
  
  
  The solution
&lt;/h3&gt;

&lt;p&gt;We knew that we had a major problem with our workflow. The obvious solution was to fix our workflow and keep the good old SVN. Surprisingly we did not do that. My proposition was to migrate to Git.&lt;/p&gt;

&lt;p&gt;I was a fan of &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; for open source projects. I've also used &lt;a href="https://bitbucket.org/"&gt;BitBucket&lt;/a&gt; for a couple of closed source ones. Using these tools helped me collaborate much better with my peers and automate my processes. Unfortunately, both platforms were incompatible with the requirements of my boss. He demanded a self-hosted solution because he was afraid that the service providers could steal our code 😃.&lt;/p&gt;

&lt;p&gt;We installed &lt;a href="https://about.gitlab.com/"&gt;GitLab&lt;/a&gt; on one of our servers shortly after I started complaining about the process. The process was manual and tedious but the documentation was good and we did it without any significant problems.&lt;/p&gt;

&lt;p&gt;GitLab was looking great for us but we didn't start using it. There was always something more important at the moment. It took me literally two years of &lt;em&gt;negotiations&lt;/em&gt; to start working on the migrations from SVN to Git.&lt;/p&gt;

&lt;p&gt;One day I organized a Q&amp;amp;A session between the CTO, CEO and me. We started with &lt;em&gt;a short presentation&lt;/em&gt; of some Git features and how the migration would improve our process. There were a lot of questions from their side. The CEO was concerned about the time it would take us to migrate. The CTO, on the other hand, didn't know if we can preserve the history from SVN. In my opinion, the CTO was used to the process and tooling and was afraid of the change.&lt;/p&gt;

&lt;p&gt;I showed &lt;a href="https://git-scm.com/docs/git-svn"&gt;git-svn&lt;/a&gt; to the management and gave them a rough estimation of 3 weeks for the migration. Shortly after that, we started working on the real migration.&lt;/p&gt;

&lt;h3&gt;
  
  
  The migration
&lt;/h3&gt;

&lt;p&gt;Our first step was to set up a new GitLab instance. There was an &lt;a href="https://docs.gitlab.com/omnibus/"&gt;Omnibus&lt;/a&gt; package that made installation and setup so much easier. We created a new virtual machine and installed the package. The documentation was even better.&lt;/p&gt;

&lt;p&gt;The migration of the &lt;em&gt;test&lt;/em&gt; project went good, but I was frustrated when I started exploring all of our projects. As I already said it seemed no one tried to learn how to work with SVN &lt;em&gt;the right way&lt;/em&gt;. Only a few of the applications were using the standard SVN structure. Many of the projects were sharing a single repository and were separated only by their directories.&lt;/p&gt;

&lt;p&gt;There were two directories in the repository of the main application. The one we checked out was the &lt;em&gt;current&lt;/em&gt; version of the project (&lt;em&gt;version&lt;/em&gt; here means &lt;em&gt;rewrite&lt;/em&gt;). The other directory was containing &lt;em&gt;one of the previous versions&lt;/em&gt;. We also had a couple of other repositories for different old versions of the projects. I even found a repository that was unknown to everyone. All these versions had their own history despite they were representing different stages of the evolution of the same project.&lt;/p&gt;

&lt;h3&gt;
  
  
  The automation
&lt;/h3&gt;

&lt;p&gt;Off course we didn't migrate about a hundred repositories by hand. I described the structures of repositories and branches I wanted to achieve. Every project and branch had multiple fields like repository/branch name, SVN path, GitLab visibility and so on.&lt;/p&gt;

&lt;p&gt;The rest was pretty easy. The main script executed a couple of shell commands and GitLab API calls. Every SVN repository was cloned and converted to a Git repository with all the history (commits, messages, and authors), ignored files and directories branches and everything we needed and the repository was pushed to a project created using the API.&lt;/p&gt;

&lt;h3&gt;
  
  
  The new workflow
&lt;/h3&gt;

&lt;p&gt;As expected learning the new tool was not easy and took us about a month to get used to it and the workflow, but it worth it. The process itself was nothing special. We were using GitLab for tracking issues, discussing issues and features, tracking milestones progress and everything else. Besides the better visibility of our progress we got two huge benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code reviews. They helped us improve our hard and soft skills so much.&lt;/li&gt;
&lt;li&gt;Feature branches. We were able to test every feature without the risk of deploying it to production.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The lessons
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Know your tooling&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
It may be your editor, your version control system or your hammer. No matter what's your tool of choice, learn how to use it beyond the basics. If people who were responsible for our SVN repositories read just a bit about SVN functionalities we could have branches and code reviews for years and the migration could be even easier if ever happened. After all, tooling is what makes us productive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not be afraid of change&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Change might be scary sometimes. It's natural for people to be afraid of the unknown, but it shouldn't prevent progress. We should look into our problems objectively, write them down, search for solutions and estimate the effort. Humans are supposed to be intelligent spices after all.&lt;/p&gt;

&lt;p&gt;What's your opinion?&lt;/p&gt;

</description>
      <category>git</category>
      <category>writeup</category>
    </item>
    <item>
      <title>Hacktoberfest 2018</title>
      <dc:creator>Yordan Ivanov</dc:creator>
      <pubDate>Fri, 12 Oct 2018 12:58:02 +0000</pubDate>
      <link>https://dev.to/ivanovyordan/hacktoberfest-2018-4n2</link>
      <guid>https://dev.to/ivanovyordan/hacktoberfest-2018-4n2</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q-YP4UfK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/Hacktoberfest_2018_poster1_1600x850.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q-YP4UfK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/Hacktoberfest_2018_poster1_1600x850.png" alt="Hacktoberfest 2018"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you don't already know that, &lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; is a celebration of open-source organized by &lt;a href="https://www.digitalocean.com/"&gt;DigitalOcean&lt;/a&gt;, &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; and &lt;a href="https://www.twilio.com/"&gt;Twilio&lt;/a&gt; this year. The rules are simple, the first 50 000 who open five pull requests to open-source projects in GitHub will get a cool free T-shirt from DigitalOcean and friends.&lt;/p&gt;

&lt;p&gt;In the spirit of supporting open-source, we (the guys from &lt;a href="http://tuxcon.mobi/"&gt;Tuxcon&lt;/a&gt;) organized a local meetup last Sunday. It's the time to thank &lt;a href="https://www.siteground.com/"&gt;Siteground&lt;/a&gt; for their help and support and for giving us their space in Plovdiv, Bulgaria.&lt;/p&gt;

&lt;p&gt;We started with a &lt;a href="https://www.slideshare.net/ivanovyordan/hacktoberfest-2018-119209298/"&gt;presentation&lt;/a&gt;.  We explained what Hacktoberfest is and what the rules are. There was some introduction to open source, what it is, how it works and how important it is for us.&lt;/p&gt;

&lt;p&gt;After the talks, we started with the real fun part. As expected, most of the attendees have never used Git or GitHub. We created a broken &lt;a href="https://github.com/ivanovyordan/fizzbuzz"&gt;fizzbuzz&lt;/a&gt; project to work with. We did everything from cloning and branching to forking and creating pull requests. We fixed some merge conflicts and merged a couple of features. We even talked about Vim and other editors and had some fun about issues with Windows.&lt;/p&gt;

&lt;p&gt;It was a fun event for me, and I really hope it was educational and entertaining for everyone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gwGzG0gi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43266537_905700509639064_1080438936439881728_n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gwGzG0gi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43266537_905700509639064_1080438936439881728_n.jpg" alt="Hacktoberfest 2018"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5YsDABgF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43308170_905700809639034_2144412364131270656_n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5YsDABgF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43308170_905700809639034_2144412364131270656_n.jpg" alt="Hacktoberfest 2018"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5kDrPwvn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43354229_905700832972365_458953767094583296_n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5kDrPwvn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43354229_905700832972365_458953767094583296_n.jpg" alt="Hacktoberfest 2018"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ORDMRNGi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43367843_905700779639037_7290394019283075072_n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ORDMRNGi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43367843_905700779639037_7290394019283075072_n.jpg" alt="Hacktoberfest 2018"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N5xuYPMN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43374031_905700879639027_7813529346697592832_n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N5xuYPMN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43374031_905700879639027_7813529346697592832_n.jpg" alt="Hacktoberfest 2018"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yy6yPGQU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43411575_905700692972379_6321741502326243328_n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yy6yPGQU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43411575_905700692972379_6321741502326243328_n.jpg" alt="Hacktoberfest 2018"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f6idJsdf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43414379_905700542972394_5625976943770861568_n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f6idJsdf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.ivanovyordan.com/content/images/2018/10/43414379_905700542972394_5625976943770861568_n.jpg" alt="Hacktoberfest 2018"&gt;&lt;/a&gt;&lt;/p&gt;
Hacktoberfest Plovdiv 2018 workshop



</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>event</category>
    </item>
  </channel>
</rss>
