<?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: Andreja Dulović</title>
    <description>The latest articles on DEV Community by Andreja Dulović (@andrejadulovic).</description>
    <link>https://dev.to/andrejadulovic</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%2F443774%2F23de6f7b-2ee3-4e0d-969f-6966f4f8e2bd.jpg</url>
      <title>DEV Community: Andreja Dulović</title>
      <link>https://dev.to/andrejadulovic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andrejadulovic"/>
    <language>en</language>
    <item>
      <title>The Fundamentals of Planning: A Graph About Scoping And Prioritization</title>
      <dc:creator>Andreja Dulović</dc:creator>
      <pubDate>Tue, 25 Aug 2020 13:48:17 +0000</pubDate>
      <link>https://dev.to/coolblue/the-fundamentals-of-planning-a-graph-about-scoping-and-prioritization-4a6e</link>
      <guid>https://dev.to/coolblue/the-fundamentals-of-planning-a-graph-about-scoping-and-prioritization-4a6e</guid>
      <description>&lt;p&gt;Here it is:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7ruuyntms89bcs0dmfnj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F7ruuyntms89bcs0dmfnj.png" alt="Usefulness vs Effort graph"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a form of the famous Pareto rule: &lt;em&gt;roughly 80% of the effects (“Usefulness”) come from 20% of the causes (“Efforts”).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But this article is not about the Pareto principle; it is about the development of software systems and technology. Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why most people will verbally agree on what is essential but still fail to think (and act) accordingly&lt;/li&gt;
&lt;li&gt;What to do about it&lt;/li&gt;
&lt;li&gt;Exceptions — when is perfectionism necessary&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why do we waste time and effort on less important things?
&lt;/h2&gt;

&lt;p&gt;It can be difficult to accept that we are going to build something imperfect.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“We want to make the best product! Improvements are easy to spot, so why don’t include them!? Let’s build a future-proof system, optimize and automate everything! Let’s add more things to cover more use cases!”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Thinking like this often ends up in failure, disappointment and late releases.&lt;/p&gt;

&lt;p&gt;I am trying to figure out why do we think like this. It is easy to propose a gazillion methodologies to “solve” this issue (Scrum works to address it, but it fails if not implemented correctly). Solution always depends on the context. I would instead like to understand why we lose the focus on essential things.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Education
&lt;/h3&gt;

&lt;p&gt;Maybe because in school, we got our grades (acknowledgement and sense of achievement) based on how close to perfection we did on the exams? The famous saying “you get what you measure” applies here — good students chase perfect &lt;strong&gt;grades&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I recommend the book “&lt;a href="https://en.wikipedia.org/wiki/Surely_You%27re_Joking,_Mr._Feynman!" rel="noopener noreferrer"&gt;Surely You’re Joking, Mr. Feynman!&lt;/a&gt;”. If you don’t have the time to read it (which would be a pity), &lt;a href="https://edisciplinas.usp.br/pluginfile.php/131741/mod_resource/content/2/Excerpt%20from%20Surely%20Youre%20Joking%2C%20Mr.%20Feynman.pdf" rel="noopener noreferrer"&gt;here is a short excerpt&lt;/a&gt; that shows how people focus on less important things in education.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Organizations have scoring systems that indicate who can do bad/good/best work. Because there are no grades, we are looking for things under our control which we can make “perfect”, hoping that they will show our value and contribution. We disregard the usefulness (impact on revenue, for example).&lt;/p&gt;

&lt;p&gt;Fear of being perceived as an underachiever makes us chase perfection even though it may not be &lt;strong&gt;relevant&lt;/strong&gt;. We fix our efforts on something that we believe we can successfully do, instead of something beneficial we &lt;strong&gt;should&lt;/strong&gt; do. We can waste a lot of time like this.&lt;/p&gt;

&lt;p&gt;Besides, we don’t always know what is essential for the business at the moment, so we miss the target.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Who had set the bar and based on what?
&lt;/h3&gt;

&lt;p&gt;Another reason for chasing perfection (sub-optimal value) may be measuring our work against the most famous in our domain. Someone set the bar in your community, and many are copying them.&lt;/p&gt;

&lt;p&gt;Everyone knows and admires Ferrari. They make cars on the right part of the graph, close to perfection. You can downplay and ridicule (almost) any car by comparing it to a Ferrari.&lt;/p&gt;

&lt;p&gt;Fiat Panda looks stupid compared to it. Look.&lt;/p&gt;

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

&lt;p&gt;But nobody talks about the fact that &lt;strong&gt;FIAT bought Ferrari&lt;/strong&gt; (90% ownership in 1988) and that their &lt;strong&gt;revenue is ~30 times bigger&lt;/strong&gt;. FIAT produces mostly ordinary, dull cars that fulfill 99.9% of all the daily needs for transport — and it’s a giant company. It’s an excellent example of how the graph works. FIAT excels on the &lt;strong&gt;left part&lt;/strong&gt; of the graph, and they make much more money than Ferrari.&lt;/p&gt;

&lt;p&gt;It is similar in software engineering. Each era has a set of modern technologies. They become favoured by people telling success stories, and these days, via aggressive marketing. Decades ago it was COBOL, for example. Today it’s the Kubernetes, serverless, event sourcing, etc.&lt;/p&gt;

&lt;p&gt;Following trends without an exact plan on how will it bring benefit to your business doesn’t sound right.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do about this?
&lt;/h2&gt;

&lt;p&gt;Promote a different definition of perfection.&lt;/p&gt;

&lt;p&gt;Achieving perfection in technology is impossible because requirements continuously change. Everything we ever develop will one day be deleted and will reach the end of the life cycle.&lt;/p&gt;

&lt;p&gt;I think we need to redefine “perfection” like this:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Perfection is an optimal ratio of usefulness and effort to release the product (increment)&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Optimal means: &lt;strong&gt;a measure of contribution to the business&lt;/strong&gt; vs time and &lt;strong&gt;resources&lt;/strong&gt; needed to deliver it. &lt;em&gt;(Still sounds complicated, can we simplify? Any ideas?)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There are methods to measure the value/contribution, but let’s not go there. The best technique depends on the context, teams and business, and this article is already long.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal&lt;/strong&gt; is that your teams reach a level of maturity when they don’t need a process or a person who decides what is optimal. The teams can autonomously make better decisions if they go for a different kind of perfection.&lt;/p&gt;

&lt;p&gt;It is so much easier if managers support “the graph”.&lt;/p&gt;

&lt;p&gt;One simple thing that anyone can do is, for example, ask: “How will this benefit our revenue in the next month or two?”. And then leave it. Don’t push. The goal is to kick-start the mindset, water it until it becomes the standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exceptions
&lt;/h2&gt;

&lt;p&gt;There are situations where anything less than perfection equals disaster. Some examples include flight control, brain surgery, the up-time of the stock exchange systems. These are the high-risk areas where releasing imperfect products makes no sense.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>planning</category>
      <category>management</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why Is Retrospective Difficult And How to Learn From the Past</title>
      <dc:creator>Andreja Dulović</dc:creator>
      <pubDate>Wed, 12 Aug 2020 08:41:51 +0000</pubDate>
      <link>https://dev.to/coolblue/why-is-retrospective-difficult-and-how-to-learn-from-the-past-4fe5</link>
      <guid>https://dev.to/coolblue/why-is-retrospective-difficult-and-how-to-learn-from-the-past-4fe5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Memory never recaptures reality. Memory reconstructs. All reconstructions change the original”&lt;/em&gt; — Frank Herbert&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Engineering requires regular diagnostics, retrospectives, postmortems, root cause analysis, etc. We want to reflect on the past and learn something from it.&lt;/p&gt;

&lt;p&gt;But often this doesn’t work. Some teams identify causes and still struggle with the same issues over and over again. Some people “never learn”. It seems like we don’t always learn even from the best descriptions and analysis of past events.&lt;/p&gt;

&lt;p&gt;Many times I have seen fantastic root cause analysis, and as soon as the next day, the people reverted to the usual, almost instinctive behaviour. Everything was identified, but nothing changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is this so?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uOk29U_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/s5q5kstxi7zbwdgiq6bg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uOk29U_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/s5q5kstxi7zbwdgiq6bg.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We don’t like ambiguity, so we make stories with “logical” conclusions. It gives a sense of safety. I love the term the author used: “delusional clarity”.&lt;/p&gt;

&lt;p&gt;When doing a retro, there is no way to know for sure if we took everything that happened into account (unknown unknowns). We may even have a preference where we wish a root cause to be (a specific person, team or a system) — and tailor our story to fit that. A mix of facts and assumptions is tough to “debug”.&lt;/p&gt;

&lt;p&gt;Sure, some people are a bit more objective than the others, but let’s be honest; objectivity sometimes doesn’t mix well with talk about what went wrong and why (depending on the team).&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do about this and how to learn from mistakes?
&lt;/h2&gt;

&lt;p&gt;Describing a chain of events is good to kick start a discussion. And that is all it’s suitable for.&lt;/p&gt;

&lt;p&gt;The most valuable learning is to find out what was (and what was not) in our minds during the time of the error.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ask this:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Why did it look reasonable for us to do this the way we did?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why the important things were not important to us before the error and at the time of error?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next-level retros
&lt;/h2&gt;

&lt;p&gt;Do a retro when everything went well. Ask questions like &lt;em&gt;“What could have happened that would have made us fail? What can we optimize even more? What should change in the future so that our solution will require a change? How will we detect a need for change?”&lt;/em&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>agile</category>
      <category>engineering</category>
      <category>planning</category>
    </item>
  </channel>
</rss>
