<?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: Cathrine</title>
    <description>The latest articles on DEV Community by Cathrine (@alesten).</description>
    <link>https://dev.to/alesten</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%2F1174009%2F5e103421-1dbf-4b4a-8618-f8cbd5244464.jpeg</url>
      <title>DEV Community: Cathrine</title>
      <link>https://dev.to/alesten</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alesten"/>
    <language>en</language>
    <item>
      <title>I hate making dashboards #2</title>
      <dc:creator>Cathrine</dc:creator>
      <pubDate>Mon, 09 Oct 2023 23:01:23 +0000</pubDate>
      <link>https://dev.to/alesten/i-hate-making-dashboards-2-53ok</link>
      <guid>https://dev.to/alesten/i-hate-making-dashboards-2-53ok</guid>
      <description>&lt;p&gt;Another reason why I hate building dashboards — it's an invisible job. Careerwise a dashboard is a black hole. It consumes loads of you time and gives nothing back, just grows to be an even bigger problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 2: How hard it can be
&lt;/h2&gt;

&lt;p&gt;You know that feeling, when you decide to support your findings with a chart and get from a manager "Oh, that's a nice chart, we should have it in our dashboard". Instant regret.&lt;/p&gt;

&lt;p&gt;Am I being a diva? I mean, how hard it can be, you basically have the whole thing done, all you need is just to press a magical button "execute daily".&lt;/p&gt;

&lt;p&gt;Not quite. And there are three reasons why it's not that simple.&lt;/p&gt;

&lt;h3&gt;
  
  
  1/
&lt;/h3&gt;

&lt;p&gt;Unlike most of developers, analysts write a lot of disposable single-use code. It is not meant to be rerun unsupervised, moreover quite often it's not even possible to rerun it in one piece. We take shortcuts, we filter out data using very case-specific signs, we even copypaste when no one's around. And it's not us being bad coders, it's the specifics of this type of job.&lt;/p&gt;

&lt;p&gt;To make that frivolous code run day by day, with seamless connection through dates, with general indicators for dividing and filtering data (that stay somewhat sustainable through project development) — that's a whole another task.&lt;/p&gt;

&lt;h3&gt;
  
  
  2/
&lt;/h3&gt;

&lt;p&gt;Data delivery is not that reliable. Let's face it: data for product analytics is not vital for service being up and running, so it gets fucked up relatively often. Delays, downtimes, glitches, and "Ooopsy, we forgot to add that logging you asked for in a new release" is a daily struggle.&lt;/p&gt;

&lt;p&gt;So, each chart needs a life-support system: workarounds for all kinds of glitches and delays, automated recalculations backwards and informative alerts for failures.&lt;/p&gt;

&lt;h3&gt;
  
  
  3/
&lt;/h3&gt;

&lt;p&gt;If you have an interactive dashboard, every new chart needs to be prepared the same way. Sometimes it's a few extra lines of code attaching the same hierarchy for a charted feature. Sometimes it's a logical puzzle of trying to squeeze new data into the old frame. And a cherry on top: every new chart slows down rendering time for the whole dashboard. Sometimes — to the level of the dashboard becoming unusable.&lt;/p&gt;

&lt;p&gt;So, adjusting dashboard to include new charts is not just squeezing in a new widget. It takes time and taste, it requires communicating with users of that dashboard, it implies rebuilding it and even making major dashboard redesigns when needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to deal
&lt;/h2&gt;

&lt;p&gt;The problem is not the workload itself. The problem is a significant underestimation of the resource it takes to run a dashboard.&lt;/p&gt;

&lt;p&gt;So &lt;strong&gt;the first thing&lt;/strong&gt; I highly recommend here is learning how to communicate clearly. As simple as it seems, people don't do it that often. You can say something like "I can add that chart to a dashboard. It would take me 2 days to make it ready for an unsupervised runs, and one more day to configure all the adjacent parts. Also I assume it would take another hour per month for maintenance"&lt;/p&gt;

&lt;p&gt;And that it's your manager's call to decide, if that chart is worth it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second thing&lt;/strong&gt; is reducing the amount of this invisible job, by building your code bound and self-sustainable. My must-have tricks are check-and-sleep cycles for all the data sources and recalculation backwards for all missing datapoints. Also I always use common precalculated and groomed data instead of raw one. It allows to solve every new emerging problem once and for all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Talk to me
&lt;/h2&gt;

&lt;p&gt;Do dashboards eat up your time? What are your pro tips on how to avoid it? Let's discuss it and next time we'll talk about the most irritating issue that comes along with dashboards.&lt;/p&gt;

</description>
      <category>data</category>
      <category>dataculture</category>
      <category>analytics</category>
      <category>career</category>
    </item>
    <item>
      <title>I hate making dashboards #1</title>
      <dc:creator>Cathrine</dc:creator>
      <pubDate>Wed, 04 Oct 2023 08:34:59 +0000</pubDate>
      <link>https://dev.to/alesten/i-hate-making-dashboards-1-2o8n</link>
      <guid>https://dev.to/alesten/i-hate-making-dashboards-1-2o8n</guid>
      <description>&lt;p&gt;Don't get me wrong. I appreciate visual materials, I think that automatisation of repetitive tasks is a must and I strongly recommend you to cover your production servers with all kinds of monitors.&lt;/p&gt;

&lt;p&gt;But making dashboards for top management was my most hateful job as a product analyst. And I can tell you exactly what's wrong with it, and how you can navigate through it, if you absolutely have to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 1: It's not what it looks like
&lt;/h2&gt;

&lt;p&gt;Let's say that we want to see how many users we get every day. What can be easier, right? It's just all unique users' ids from daily log. Or is it?&lt;/p&gt;

&lt;p&gt;Well, not quite. What about those people who don't allow cookies' usage and they don't have an id? What about those people who have some security add-ons installed in their browser, who have multiple different ids throughout a day? What about bots? Search engine robots? People with browser, that downloads all the tabs in background at every restart?&lt;/p&gt;

&lt;p&gt;So, you make workarounds for that issues, you filter out UserAgents for search engines, you filter out too frequent requests for bots, etc. The resulting chart doesn't show the number of users, it shows the next best thing — estimation for that number.&lt;/p&gt;

&lt;p&gt;The thing about data is that it never stays the same (unlike your shipped code). Maybe there is a release of new GDPR guidelines, maybe an intern dropped a line of code which was assigning an id to a user. One way or another, the day would come when the data changes and your chart immediately gets messed up.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to deal with it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Stick to the most unambiguous values that you can find. It's fine to make chart of the "number of successful billing transactions" or "number of clicks on an ad banner".&lt;/li&gt;
&lt;li&gt;Keep all calculations for the charts as simple as possible. Remember that every additional level of logic that you add to your code, would double the trouble in a long run&lt;/li&gt;
&lt;li&gt;You don't have to stick to the data available at the moment. Talk to the dev team, come up with extra events to log, which will help you to avoid unnecessary complexity in your algorithm.&lt;/li&gt;
&lt;li&gt;When there's no way to avoid having the gap between log events and high-level data to show on a chart, make it very clear, that it's not some magical "true value". That it's an estimation, and it will inevitably get messed up. Not because you didn't see it coming, but because the management asked for too abstract of a value, that doesn't have an unambiguous representation in logs. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What's problem #2? We'll talk about it next time.&lt;/p&gt;

</description>
      <category>data</category>
      <category>dataculture</category>
      <category>analytics</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Dealing with Data</title>
      <dc:creator>Cathrine</dc:creator>
      <pubDate>Sat, 30 Sep 2023 20:24:21 +0000</pubDate>
      <link>https://dev.to/alesten/dealing-with-data-43i9</link>
      <guid>https://dev.to/alesten/dealing-with-data-43i9</guid>
      <description>&lt;p&gt;Hello, everybody!&lt;/p&gt;

&lt;p&gt;My name is Catherine and I'm a very opinionated data specialist.&lt;/p&gt;

&lt;p&gt;In my 15 years of work experience I've seen data that comes in all shapes and flavours: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;search engine databases, &lt;/li&gt;
&lt;li&gt;web logs, &lt;/li&gt;
&lt;li&gt;app logs, &lt;/li&gt;
&lt;li&gt;geo tracking, &lt;/li&gt;
&lt;li&gt;cars' engine sensors, &lt;/li&gt;
&lt;li&gt;images, &lt;/li&gt;
&lt;li&gt;geological models,&lt;/li&gt;
&lt;li&gt;food nutrition values,&lt;/li&gt;
&lt;li&gt;custom oil-barrel sensors made by a research institute deep in Siberia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is even more important, I worked in teams that come in different shapes and flavours — from tech-giant company with 10K+ employees to 2-people startup. Problems that I saw as a standalone issue in my first project, I can see now as a global pattern that many teams are facing and replicating. And I'm dying to talk about them.&lt;/p&gt;

&lt;p&gt;So, here to come: personal observations, practical tips&amp;amp;tricks, career-building edifications and debatable concerns. Welcome onboard, and I hope you would join into the conversation.&lt;/p&gt;

</description>
      <category>data</category>
      <category>dataculture</category>
    </item>
  </channel>
</rss>
