<?xml version="1.0" encoding="UTF-8"?>
<rss version='2.0' xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kalle Happonen</title>
    <description>Geek. Product Owner @CSCfi</description>
    <link>https://kultsinuppeli.silvrback.com/feed</link>
    <atom:link href="https://kultsinuppeli.silvrback.com/feed" rel="self" type="application/rss+xml"/>
    <category domain="kultsinuppeli.silvrback.com">Content Management/Blog</category>
    <language>en-us</language>
      <pubDate>Wed, 20 Aug 2025 11:37:26 +0300</pubDate>
    <managingEditor>kalle.happonen@9bitwizard.eu (Kalle Happonen)</managingEditor>
      <item>
        <guid>http://9bitwizard.eu/admin-view-of-nis2#60883</guid>
          <pubDate>Wed, 20 Aug 2025 11:37:26 +0300</pubDate>
        <link>http://9bitwizard.eu/admin-view-of-nis2</link>
        <title>Admin view of NIS2</title>
        <description>What do I think I have to consider</description>
        <content:encoded><![CDATA[<p>The normal disclaimer, don&#39;t take this as legal advice, there are people much more versed in NIS2 intricacies than me. However a lot of the questions the NIS2 brings will fall on admins of services to answer, so this is just some context for us on the receiving end.</p>

<h1 id="nis2">NIS2?</h1>

<p>NIS2 is a newish European directive to ensure decent levels of IT security across the board. It touches tons of organizations providing IT services in EU. It&#39;s a decently large change, to my knowledge there hasn&#39;t been this level of legal requirements on IT security this widely before. </p>

<blockquote>
<p>When writing this, I read of the original NIS, which has flown below my radar, but the new one seems to be more important.</p>
</blockquote>

<p>I won&#39;t go deeply into the <a href="https://digital-strategy.ec.europa.eu/en/policies/nis2-directive">text of NIS2</a>, just enough to to answer the main questions.</p>

<h1 id="does-it-apply-to-me">Does it Apply to Me?</h1>

<p>Usually when we admins hear about something like this, we cross our fingers and hope, maybe this actually does not apply to me. I tried, but it&#39;s hard to avoid this if you do IT in EU.</p>

<p>If you&#39;re a medium sized (50+ people or 10+ M€ turnover/balance sheet) organization or larger, it applies. </p>

<p>Small ones, you thought you were safe?</p>

<p>Regardless of size, it also applies to all critical services, like the water, waste, rail, post and all those things. (<a href="https://eur-lex.europa.eu/eli/dir/2022/2557/oj/eng">defined here</a>)</p>

<p>Are we done? Nope!</p>

<p>It also applies if</p>

<ul>
<li>you&#39;re the only provider in your country for something important for society, or regionally for some sector</li>
<li>problems with your services can have significant impact on public safety or health, or it has systemic risks  like cross border impact</li>
<li>You&#39;re public admin or government</li>
</ul>

<p>And then the fun Cloud and ICT part of the critical services (<a href="https://eur-lex.europa.eu/eli/dir/2022/2555/oj/eng">definitions here in Annex 1</a>). So regardless of the size of the organization it affects</p>

<ul>
<li> Internet Exchange Point providers</li>
<li>DNS service providers</li>
<li> TLD name registries</li>
<li>Cloud computing service providers (yes this is wide, IaaS, PaaS, SaaS, NaaS, computing, networking, storage, services, software, private, hybrid,community,public, etc. etc.)</li>
<li>Data centre service providers</li>
<li>Content delivery network providers</li>
<li>Trust service providers (authentication and digital signature services and such)</li>
<li>Providers of public/publicly available electronic communications networks</li>
<li>Managed service providers (basically if you provide services where you manage ICT for somebody)</li>
</ul>

<p>So if you do IT in EU, and I read the documents correctly, it&#39;s hard for this <em>not</em> to apply to you. You can be classed as an &quot;essential&quot; or &quot;important&quot; entity, but from my reading of this it mostly affects oversight, not so much what is required of you. There are some concessions for small actors that the actions should be proportional to your size, but I&#39;m not convinced it helps too much, based on examples.</p>

<h1 id="sigh-fine-so-what-do-i-have-to-do-again">Sigh, fine, so what do I have to do again?</h1>

<p>Ok, the rules of what you need to do is <a href="https://eur-lex.europa.eu/eli/reg_impl/2024/2690/oj/eng">here in Annex 1</a>. The most enthusiastic of you may read through this, but even I just skimmed it.</p>

<p>The good news of those who are under ISO 27001, it sounds like most of the requirements are taken indirectly from there, or similar standards.</p>

<p>If you don&#39;t have an information security management system yet, NIS2 basically requires it.  This means that it&#39;s not just up to your service to implement NIS2, but up to your organization. E.g. it&#39;s hard for a service admin to set up &quot;Human resource security&quot; or &quot;Environmental and physical security&quot;. Now, if you&#39;re not under ISO 27001 or if you don&#39;t have similar things in place, I think the most difficult thing you&#39;ll face as an admin, is convincing the upper management that this is not just a &quot;IT thing you can put in the backlog&quot;, but affects the organization IT management as a whole.</p>

<h1 id="whew-we-are-certified-under-iso-27001-did-i-as-an-admin-dodge-a-bullet">Whew, we are certified under ISO 27001, did I as an admin dodge a bullet?</h1>

<p>:)</p>

<p>In addition, when you have your information security management in order, here&#39;s the new part. </p>

<p>The most important thing for admins is to understand you have to report &quot;Significant incidents&quot; to your national bodies. A bit like GDPR but for IT security.</p>

<blockquote>
<p>I really need to report incidents to national authorities? </p>
</blockquote>

<p>Yup! If they&#39;re significant, and here too, luckily we have <a href="https://eur-lex.europa.eu/eli/reg_impl/2024/2690/oj/eng">quite clear instructions starting at Article 3</a>.</p>

<p>So, the generic rules are, it&#39;s significant if</p>

<ul>
<li>It can cause more than 500k€ damages (or 5% of turnover)</li>
<li>It leaks trade secrets</li>
<li>It results in death or harm</li>
<li>There has been malicious access that can cause significant disruption</li>
<li>It&#39;s recurring and the incidents together fill the other criteria</li>
</ul>

<p>That&#39;s not too bad? Right?</p>

<p>But then, depending on what you do, there are more criteria. I&#39;ll just go through the cloud provider one, but there are specific criteria for TLDs, social network sites, trust providers, DNS providers, etc. etc.</p>

<p>So for the cloud services:</p>

<ul>
<li>The service is completely unavailable for 30 mins or more</li>
<li>The service has limited availability for over 5% or 1 million users - whichever lower - for an hour or more. If you&#39;re reading this blog post, and you&#39;re in the 1m category, I think you might need better internal support for NIS2.</li>
<li> Integrity, confidentiality or authenticity is compromised because of malicious action, or it&#39;s compromised for 5%/1m users</li>
</ul>

<p>Scheduled maintenance is excluded.</p>

<p>If I look back, there would be a few downtimes in the last years we would have had to report, but it&#39;s not crazy, and it can be incorporated in incident management quite easily.</p>

<h1 id="reporting">Reporting</h1>

<p>So what do we need to report? It&#39;s basically <a href="https://eur-lex.europa.eu/eli/dir/2022/2555/oj/eng">in three phases</a> under Article 23</p>

<ul>
<li>As early as possible, within 24h of becoming aware of the significant incident an early warning and if it&#39;s expected that this was because of malicious action, or has cross border impact.</li>
<li>Within 72h an initial assessment including severity and impact.</li>
<li>Within 1 month (or for long running incidents, 1 month after it&#39;s solved) a final report with a description, severity, impact, root cause, and mitigations.</li>
</ul>

<p>This is probably nothing you don&#39;t gather internally anyway, so the overhead is not too great.</p>

<h1 id="conclusion">Conclusion</h1>

<p>As an admin, as our information security management system is certified under ISO 27001, I&#39;m not that worried. The main change is that I should know when we need to do a report, and to know what goes in it.</p>

<p>It&#39;ll be interesting to see how this affects smaller companies that do some IT, and don&#39;t have a information security management system in place. While they are of course reasons to have them, they are even necessary at some scale, starting to maintain one is not a trivial effort.</p>

<p>Also, I don&#39;t read EU legislation daily, so please feel free to correct me on misinterpretations, and I&#39;ll update the post.</p>
]]></content:encoded>
      </item>
      <item>
        <guid>http://9bitwizard.eu/agile-services-part-6-the-long-term#55412</guid>
          <pubDate>Tue, 28 Nov 2023 14:25:19 +0200</pubDate>
        <link>http://9bitwizard.eu/agile-services-part-6-the-long-term</link>
        <title>Agile Services - Part 6: The Long Term</title>
        <description></description>
        <content:encoded><![CDATA[<p>This is the sixth post in the series about how to apply Agile methods to run services based on existing software, and I think this will be the conclusion of the series.</p>

<p>The first post describing the problem at some length is  <a href="https://www.9bitwizard.eu/agile-services-part-1">here</a>, but the TL;DR; is</p>

<blockquote>
<p>I don&#39;t think there are great resources on how to apply agile methods to run and develop services based on existing (open source) software. We have struggled with it, and I try to write down practices that work for us, mostly taken from Scrum and SRE. </p>
</blockquote>

<p>The <a href="https://www.9bitwizard.eu/agile-services-part-2-horizons">second post</a> discussed how the service lifecycle looks and when, what kind, and how much work we need to apply to the service.</p>

<p>The <a href="https://www.9bitwizard.eu/agile-services-part-3-the-work">third post tried</a> to classify that work that goes into the day-to-day administration of a production service.</p>

<p>The <a href="https://www.9bitwizard.eu/agile-services-part-4-the-agile-team">fourth post</a> discussed teams vs. individual admins and some important aspects of a team.</p>

<p>The <a href="https://www.9bitwizard.eu/agile-services-part-5-team-processes">fifth post</a> discussed the team processes, and was basically the original post I wanted to write.</p>

<p>In this final post, I will look at something challenging, looking at the 2-5 year view of a service.</p>

<p>Normal disclaimer: these are my own opinions based on my own experiences.</p>

<h1 id="predicting-the-future">Predicting the Future</h1>

<p>There is an old quote that I like (attributed to tons of different people)</p>

<blockquote>
<p>It’s difficult to make predictions, especially about the future.</p>
</blockquote>

<p>I think our field is hit hard by this. It takes a lot of experience to estimate the long term impact of  our actions. Decisions we make (or don&#39;t make) today can have huge unintended costs or consequences several years into the future.</p>

<p>So we should make good - or at least less bad - decisions. Not all decisions have a long-term impact, and we should identify which ones do.</p>

<p>The importance of long-term planning of course differs per service. Is our service something that is used in the long term? Do we already have an end date for the service? How much integration effort have others put into our service? What is the cost of migrating away?</p>

<p>I&#39;ll go through a few examples using diagrams. There are two main things to focus on. The first picture show where our team effort goes.The important part is how much dev bandwidth the team has. This basically affects the service value with a longish delay. The lower picture shows the service value over time. </p>

<p>But to the topic. Let&#39;s take a trivial example.</p>

<h2 id="good-well-planned-constantly-developing-service">Good, well planned, constantly developing service</h2>

<p>I guess we all wish we had this one. I&#39;m mainly adding this to have a reference picture of what I think is pretty much optimal.</p>

<p><img alt="Silvrback blog image " src="https://silvrback.s3.amazonaws.com/uploads/503f386e-f1aa-4afc-b6d0-d2688524ff59/normal_final.png" /></p>

<p>Here we see that we have a good mix of operational and development work in the team. We seem to do enough internal development work to keep the ops work in check, while constantly increasing the value of the service.</p>

<p>Please note! Even if you feel like you don&#39;t need to increase the service value, it doesn&#39;t meant that your development effort goes to zero. You still have to do internal development to keep up with the changing world, or you start to erode the service value.</p>

<h2 id="looming-engineering-bankruptcy">Looming  Engineering Bankruptcy</h2>

<p>Or: Failing due to success.</p>

<p>So let&#39;s take a case which I&#39;ve seen a few times, and it&#39;s hard to identify early on. Let&#39;s say we have a service that gets popular, and is growing strongly. Growth should not cause linear increase in ops work, as we can mitigate this with internal development. But ops work still grows.</p>

<p><img alt="Silvrback blog image " src="https://silvrback.s3.amazonaws.com/uploads/a6eabb1d-f07c-4c2e-b66c-72f2ff695998/growth_final.png" /></p>

<p>We have faced problems by not reacting gradual ops growth ourselves.</p>

<p>How does this affect our work? When time goes on, let&#39;s say a year or two, our development efforts gets an ever smaller share of time. Because this is gradual, and the lack of dev work takes a while to affect the service.</p>

<p>This seems to be a hard problem to tackle. I think the main reason is that the problem only visible within the team for the longest time. After a while our stakeholders start noticing that development requests are slow. Lastly, it affects the service.</p>

<p>When the problems become visible, we may already be in quite a bad state. We can&#39;t spend time on development, which would ease our ops burden, and maybe the ops amount is even hard to automate away. We have probably collected a lot of technical debt that needs to be paid off. In the worst case, we&#39;re heading towards engineering bankruptcy.</p>

<p>If we&#39;re already in this situation, it will take time and resources to climb out, and how we do it really depends on the circumstances. Adding people helps - with a delay (see next graph). Delegating ops work away to other teams can help immediately.</p>

<p>I haven&#39;t personally seen a situation where declaring bankruptcy, and shutting down the service and starting from scratch has ever been a preferred option, but I&#39;m sure you can get there too. I have the feeling that&#39;s usually  a very very expensive way to solve the problem.</p>

<h2 id="handling-admin-churn-and-training-new-people">Handling Admin Churn and Training New People</h2>

<p>Competent admins leaving the team often has a big impact on the performance of the team. In the best case we can mitigate the impact, but it can&#39;t be avoided.</p>

<p><img alt="Silvrback blog image " src="https://silvrback.s3.amazonaws.com/uploads/37de9dc6-a9fe-4ea7-be55-6f4e75d89dae/leaving_final.png" /></p>

<p>First of all, you lose a productive team member. As you can&#39;t make your ops work go away, you have to reduce the dev work. This makes a team slower, but, it may not be too bad - yet.</p>

<p>Then you hire a new person. Of course we all want to try to hire the unicorn, who magically has the same knowledge of the internal system as the person who left, but that&#39;s not possible. So we should train them (*). This takes even more effort from the team. That effort comes from dev work - as it&#39;s the only place to take it from. Now your dev work is crawling ahead, while you&#39;re training the new person. The new person&#39;s productivity is probably very low in the beginning. How fast it grows depends on the training and complexity of the service.</p>

<blockquote>
<p>(*) We can of course decide to focus on dev work and <em>not</em> train the new person. They can learn on their own. This may have slight short term gains, but in the longer term, it hurts the team in many ways from productivity to team cohesion. And team cohesion can be a large factor for people leaving in the first place.</p>
</blockquote>

<p>The less drastic example of this situation is growing the team. If nobody left, you won&#39;t lose total team productivity when you hire new people, but again, you have to move focus from dev to training. This also explains the age old adage, where throwing more people at a project that is late will make it slower to finish.</p>

<h2 id="dev-decisions-affecting-ops-and-taking-tech-debt">Dev Decisions Affecting Ops and Taking Tech Debt ...</h2>

<p>This is quite a simple graph - and one of the more important ones to justify team autonomy.</p>

<p><img alt="Silvrback blog image " src="https://silvrback.s3.amazonaws.com/uploads/83db0ccb-dd67-488a-b790-819f47f2133a/tech_debt_final.png" /></p>

<p>You know the drill. We&#39;re working on something, but stakeholders/customers/managers need it done yesterday for good/bad/non-existent/silly reasons. This is when we take shortcuts and take on tech debt. Probably people are tired or stressed and say something like...</p>

<blockquote>
<p>Let&#39;s just ignore processes this time, if we get this out, everybody will stop shouting at us.</p>
</blockquote>

<p>(Spoiler: no they won&#39;t, there is always the next thing).</p>

<p>There are reasons to take on tech debt, but then we need to pay it off, or it&#39;ll affect our dev capacity in the future. If we don&#39;t pay it off, we&#39;ll land our self in a mess, similar to the engineering bankruptcy one, but instead of going there because our service is popular and growing, we go there because we choose to.</p>

<p>Taking on tech debt also requires clear communication, as like in the other case, the problems are rarely visible outside the team early on, and it may require the team to slow down their business development to work more on paying the tech debt back.</p>

<h2 id="and-what-to-do-about-the-tech-debt">... and What to Do About the Tech Debt</h2>

<p>After the previous graph, this one is almost self-explanatory. If we&#39;ve taken on tech debt, at some point we should pay it off. Yes, it&#39;ll slow down the <a href="https://www.9bitwizard.eu/agile-services-part-3-the-work">business development</a> in the short term, but it will pay itself back quite quickly.</p>

<p><img alt="Silvrback blog image " src="https://silvrback.s3.amazonaws.com/uploads/6d696fe8-1340-4356-94c7-df7acb0971f6/internal_dev_final.png" /></p>

<p>Even outside known tech debt, we should keep an eye out if there are good ways to reduce long term ops work with some <a href="https://www.9bitwizard.eu/agile-services-part-3-the-work">internal development</a>. This often has an excellent pay off.</p>

<p>We do need to keep in mind realistic estimates of the effort/pay off ratio of our internal development. It&#39;s really annoying to go down into an ever deepening rabbit hole for weeks or months, to finally fix something that did not bring that much improvement.</p>

<h2 id="hardware-decisions-and-other-possible-time-bombs">Hardware Decisions and Other Possible Time Bombs</h2>

<p>This is where we really can mess up our service in the long term, and de-saturate the color of our admins&#39; hair.</p>

<p>There are a lot of possible decisions that can affect operations. For those of us who who still play with hardware, hardware decisions are one of them. As opposed to the other graphs, the impact of these decisions is not always gradual. It may come pretty much at once.</p>

<p><img alt="Silvrback blog image " src="https://silvrback.s3.amazonaws.com/uploads/c518fef3-7e98-4d4b-838c-c4a5f705ec59/bad_hw_decision_final.png" /></p>

<p>Of course, if we know our service is pushed into <a href="https://www.9bitwizard.eu/agile-services-part-2-horizons">Horizon 0</a>  by then, it may not matter, but if we don&#39;t have plans for shutting our service down, it matters.</p>

<p>I have a general rule of thumb for any new hardware, or any new tight integrations to the service.</p>

<blockquote>
<p>We must have a feasible exit plan - or a plan for several hardware generations - before we make the decision.</p>
</blockquote>

<p>Let&#39;s say we buy an appliance of some kind - e.g. storage for our service. It immediately improves the value of the service and the customers are happy. We (and maybe the customers) start tightly integrating to this - it&#39;s not useful if not used.</p>

<p>Now a lot of our integrations rely on this hardware, and we realize it&#39;s End of Life in a year. If we shut it down, we significantly cripple our service. We don&#39;t have a plan how to get rid of it. We don&#39;t know how to move the integrations/load away from the appliance. Maybe we need to redo a lot of the integrations from scratch. Maybe we need to handle every case manually.</p>

<p>I have had this happen to me. It&#39;s really not fun, and it makes me curse the idiot (me) who went with these solutions in the first place.</p>

<p>So we should plan well in advance. The lifecycle of a hardware generation passes faster than we can imagine, and the uptake may slowly grow across a few years. This  means we only get a few really valuable years from the hardware.</p>

<p>This effect is of course not only limited to hardware, but also other integrations we may need to get rid of. Hardware is just a very useful example, as it has a built-in expiration date.</p>

<h1 id="wrapping-things-up">Wrapping Things Up</h1>

<p>Some of these graphs are both simplified and exaggerated at the same time, and the timeline is not perfect for all of them.</p>

<p>In real life, we probably have a constant mix of many of these situations going on at once. However, I hope the examples serve to convey the main point of the post. The decisions we do have a large impact on our workload and by proxy on our service. This doesn&#39;t mean we never need to make uncomfortable decisions, but when we do, we should have a good view on the impact of those decisions. If we can prepare for the possible consequences in advance, everybody involved - from the team, to the stakeholders and the customers - will be happier. </p>

<h1 id="really-wrapping-things-up">Really Wrapping Things Up</h1>

<p>This was the last blog post in this series! I really hope it has helped somebody! Writing this whole thing down has also clarified my own views on the topic, and I&#39;ve gone back and forth on many points trying to see if I can actually justify them. While I&#39;ve gotten a lot of suggestions for improvements, and had discussions about the finer points, in general I think I&#39;m quite happy about how it turned out.</p>

<p>But - as always - I am just one person with one point of view. So if you want to share your own experiences, I would be more glad to hear them! It&#39;s always better to try to learn from others&#39; experiences than doing everything by ourselves.</p>
]]></content:encoded>
      </item>
      <item>
        <guid>http://9bitwizard.eu/agile-services-part-5-team-processes#54441</guid>
          <pubDate>Mon, 15 May 2023 16:00:56 +0300</pubDate>
        <link>http://9bitwizard.eu/agile-services-part-5-team-processes</link>
        <title>Agile Services - Part 5: Team Processes</title>
        <description></description>
        <content:encoded><![CDATA[<p>This is the fifth(!) post in the series about how to apply Agile methods to run services based on existing software.</p>

<p>The first post describing the problem at some length is <a href="https://www.9bitwizard.eu/agile-services-part-1">here</a>, but the TL;DR; is</p>

<blockquote>
<p>I don&#39;t think there are great resources on how to apply agile methods to run and develop services based on existing (open source) software. We have struggled with it, and I try to write down practices that work for us, mostly taken from Scrum and SRE. </p>
</blockquote>

<p>The <a href="https://www.9bitwizard.eu/agile-services-part-2-horizons">second post</a> discussed how the service lifecycle looks and when, what kind, and how much work we need to apply to the service.</p>

<p>The <a href="https://www.9bitwizard.eu/agile-services-part-3-the-work">third post</a> tried to classify that work that goes into the day-to-day administration of a production service.</p>

<p>The <a href="https://www.9bitwizard.eu/agile-services-part-4-the-agile-team">fourth post</a> discussed teams vs. individual admins and some important aspects of a team.</p>

<p>Now, to the team processes. This post is what I originally wanted to write, but I wanted to give some background to this post, so I&#39;m not just ranting to myself in a deep rabbit hole.</p>

<p>Some practices we have found useful,but they are not described in other frameworks. They may still be useful for others too, so I&#39;ll mark them with <em>our practice</em> in this blog. </p>

<p>Normal disclaimer: these are my own opinions based on my own experiences.</p>

<h1 id="the-setup">The Setup</h1>

<p>So, after all those blogs, we now have gotten to a starting point where we have</p>

<ul>
<li>A team of full-time members</li>
<li>with clear responsibilities for one (to simplify this blog) production service</li>
<li>and constraints what they must adhere to</li>
<li>but otherwise freedom to organize their work as efficiently as they can</li>
<li>where their tasks include operations and development of the service</li>
<li>and the team has a product owner, and a scrum master</li>
</ul>

<p>If we can agree on these points, I think we have already come quite far.</p>

<h2 id="extra-roles">Extra roles</h2>

<p>Let&#39;s start by defining two extra roles. Both the roles are rotating ones, and held one week at a time. One of them is pretty standard.</p>

<h3 id="sheriff">Sheriff</h3>

<p>In other places, this is often called &quot;Operator on Duty&quot; or similar. We call it Sheriff, because it&#39;s cooler, and we can wear a hat if we want. The Sheriff role is a rotating role, and each team member has it for one week at a time.</p>

<p>If we look at <a href="https://www.9bitwizard.eu/agile-services-part-3-the-work">part three</a> of these blogs, the purpose of the sheriff is to be the first line of defense against all the interruptions for the team. The Sheriff takes care of answering tickets, acting on alerts, and evaluating CVEs. This is basically the &quot;unplanned&quot; part of the work.</p>

<p>If there is too much work, the Sheriff  does not need to handle everything by themselves, and e.g. in case of incidents, they are not allowed to handle them alone. The Sheriff can always call on the rest of the team for help, if there is too much work.</p>

<p>If it&#39;s a quiet week, maybe the Sheriff can work on some other tasks, but they are explicitly not expected to. Their responsibility is sheriffing.</p>

<h3 id="reviewer-our-practice">Reviewer - <em>our practice</em></h3>

<p>For a long time we had problems how to make sure we put enough importance on task reviews.  I assume you have also been in a situation where the &quot;Review&quot; column of your Kanban board is filling up. Even if the whole team agreed that task reviews are important, they seemed to be of secondary importance in practice. Good reviews take time, and familiarization with the task. </p>

<p>The thing that has worked best for us so far is to make sure it&#39;s somebody&#39;s responsibility. We have the reviewer role. That person&#39;s main responsibility is to review tasks. Again, they may have time to do other things (but, surprisingly, sometimes reviewing takes up most of that person), but they are not expected to. The reviewer role is also rotating, and held for one week at a time.</p>

<p>Having a assigned reviewer really keeps the work flowing, and help with a build-up of WIP.</p>

<h1 id="sprints">Sprints</h1>

<p><img alt="Silvrback blog image " src="https://silvrback.s3.amazonaws.com/uploads/5975809b-d60d-4ce2-8292-e272f6c4f853/Sprint.png" /></p>

<p>Scrum is quite strict on the processes you should run, and how you run them. I think it&#39;s good, as it&#39;s clear starting point on how to organize work. But let&#39;s tear them apart and make them work for us.</p>

<p>Scrum works a lot around a sprint, and what gets done in a sprint. I think the sprint is a good pacing of work, but let&#39;s throw out most of the hard requirements of a sprint.</p>

<h2 id="sprint-length">Sprint length</h2>

<p>There are some times very strict opinions how long sprints should be. Like either two or three weeks! Nothing else!</p>

<p>In our line of work, a lot of  work is done on completely different time spans. I honestly don&#39;t care how long the sprints are. Currently we have a for example four week sprints in one team, and three week sprints in another. In general, I think we should keep sprints long enough so the sprint meeting cycle doesn&#39;t break up the work too much, and short enough so you don&#39;t end up with a too long of a backlog of things to discuss.</p>

<h2 id="retrospective">Retrospective</h2>

<p>There is one meeting I&#39;m saying you are not allowed to remove. It&#39;s the retrospective. The retrospective is the best invention in the history of job organization, especially if it&#39;s efficiently used.</p>

<p>We usually have quite long and involved retrospectives. For some teams, it could be too heavy, but tweak it to fit your needs. We go through how everybody is doing, is there anything that is making people annoyed, or something we&#39;re especially happy about.</p>

<p>During the sprint, we can also put topics for discussion on a wiki page and we go through them during the retrospective. These items are a rarely technical, it&#39;s more team and process introspection. Then we discuss these items. We are basically allowed change anything (meetings, schedules, practices, etc.) within our constraints, except removing the retrospective itself.  For maybe 50% of the items people raise we find some improvements we can do.</p>

<p>Real examples we&#39;ve discussed.</p>

<blockquote>
<p>We have too many false negatives in our monitoring.</p>
</blockquote>

<p>We&#39;re now flagging in our retro notes any checks that are alerting too much. Then in the retro we decide what to do with them.</p>

<blockquote>
<p>We currently have a risk that in some corner cases when running devel code, it may affect a production server if we have switched server between environments.</p>
</blockquote>

<p>Add a task to add safety checks for this case.</p>

<blockquote>
<p>Can everybody put their picture in gitlab, so it&#39;s easier to see by glance who&#39;s working on a merge request</p>
</blockquote>

<p>Yes</p>

<blockquote>
<p>Shall we set up a central Ansible control node for the only way to run Ansible against our systems</p>
</blockquote>

<p>May be a good idea, but we skipped it after making an estimate on the effort/reward  ratio.</p>

<p>So the discussion points can be pretty much anything. The topics can also touch other parts of the organization, and they may be very valid, if harder to change.</p>

<p>The changes we do monthly may not be huge. But the changes really add up with time. Even better, as the service matures, and the team dynamic changes, we&#39;re almost automatically adjusting our work methods to adapt to the new situation.</p>

<h2 id="review-as-in-meeting">Review (as in meeting)</h2>

<p>Allegedly you should invite stakeholders to review meetings to present and discuss progress etc. etc. When we&#39;re running a service, this isn&#39;t really applicable on a sprint level. As you&#39;ll soon see, or work is on a different timeline, and for most of our work, it isn&#39;t easy to have opinions on it if you&#39;re external to the team.</p>

<p>In our review, we go through all completed tasks within the team. We also look at any customer tickets that our admins have flagged, as they want to share some information in the ticket. We have this meeting mostly so everybody has a good view on the state of the service.</p>

<p>Honestly, I won&#39;t blame you if you skip the review completely, if it doesn&#39;t bring you much benefit.</p>

<h2 id="planning">Planning</h2>

<p>We have tried by-the-books Scrum planning with planning poker and everything. We were planning the tasks for a three week sprint at that point, and assume how many points we can complete. I almost shudder at those memories. In retrospect, there are several reasons that this is a poor idea.</p>

<p>First and foremost, if you look at the <a href="https://www.9bitwizard.eu/agile-services-part-3-the-work">the work we do</a>, we have a decent amount of unplanned work. The time this work takes up varies a lot. When planning a sprint we don&#39;t even have a decent idea about how much time we have for planned work. However, this is interestingly enough the smaller problem with planning a sprint.</p>

<p>When we run a production service, a lot of our changes touch many places around the organization. Let&#39;s say we order some hardware for our service, and it arrives. We need collaboration with many groups to get it racked and installed, verified, tested, etc. It sounds quite optimistic to plan around communication overheads and other teams&#39; schedules, and still expecting to have everything ready in  a three week sprint. A lot of our work - especially development work -  in a production service is like this is not done on 3 week schedules. Some changes may be done in that time, others may be planned and developed over 6 months.</p>

<p>So locking sprint targets with a set of tasks that we ensure bring value by the end of the sprint, and expecting to reliably finish those tasks is unrealistic. Panicking over burn down charts or seeing if we&#39;re hitting our arbitrary &quot;goals&quot;doesn&#39;t help anybody.</p>

<p>What do we plan then? We generally look 6 months into the future, to see what it looks like, and we discuss prioritization of large items (we can call them Epics). We don&#39;t go to detailed planning of tasks in this meeting, as it&#39;s already a heavy day of meetings. We don&#39;t do sprint goals, we don&#39;t select tasks for the sprint, or anything like that.</p>

<p>But we do plan a bit. Later.</p>

<h2 id="daily">Daily</h2>

<p>Our daily is - well I guess most of you have been to a daily. We try to sync up, and see if we have conflicts or if somebody is stuck. I find them quite useful if they are kept short and to the point.</p>

<p>However, when <a href="https://www.scrum-institute.org/Scrum_Roles_The_Scrum_Team.php">Roles for Scrum Teams</a>  discusses the team responsibilities, they say that &quot;They have to perform the short Daily Sprint Meeting.&quot; Pfft. Why? If dailies don&#39;t work for you, do them 2 times a week. Or not at all. It really depends on your work and your team.</p>

<h2 id="monday-daily-our-practice">Monday daily - <em>our practice</em></h2>

<p>Now this is something we have done to help our team. Every Monday we have a longer daily. In addition to normal topics, we go through</p>

<ul>
<li>All ops tasks we have open on our kanban board. Just to make we don&#39;t have forgotten or stuck tasks.</li>
<li>All internal and external pull request/merge requests, to see that they don&#39;t fall through the cracks.</li>
<li>The organizational change calendar to see if there are changes that affect us.</li>
<li>Scheduled meetings/events that affect the team this week.</li>
<li>We assign a new sheriff and reviewer.</li>
</ul>

<p>These takes an extra 30 min once a week, but the meeting has been useful for us.</p>

<h2 id="friday-review-planning-our-practice">Friday review/planning - <em>our practice</em></h2>

<p>This is something relatively new for us. We had a problem in reviewing tasks. Our larger development tasks generally have a lot of dependencies, and impact our production. Having one person working on the task and and then pushing the task to review, made the reviewer&#39;s life really difficult as they had very little context to that task.</p>

<p>Every Friday we take a deeper look at the development tasks. The person in working on the task presents it, their findings, design choices and their suggestions. As a team we discuss these, and if needed adjust the direction of the task. When we do this weekly with the team, it prevents people going down long rabbit holes with possibly wrong assumptions. It also makes reviewing the tasks much easier, as everybody has decent context on it.</p>

<p>We probably do more planning in this meeting than in our sprint planning meeting. This reduces the feedback loop time, and lets us gather knowledge to base our decisions on. This meeting has worked out really well for us.</p>

<h2 id="stakeholders-where-do-they-come-in-our-practice">Stakeholders? Where do they come in? - <em>our practice</em></h2>

<p>In our sprint cycle, we don&#39;t include stakeholders at all. But stakeholders are still kind of important, aren&#39;t they?</p>

<p>There are two main interactions with stakeholders. First, the Product Owner should actively discuss with stakeholders to sync the status of the service and the expectations from stakeholders. This includes being able to react and prioritize any sudden and unexpected requests.</p>

<p>But we also do have larger stakeholder meetings. Currently we do it approximately three times a year. This feels like a good cycle for us to communicate relevant developments of the service. Lately we have joined up with other services, so the stakeholder meeting is about a set of similar services syncing the developments and expectations with their stakeholders. This has been quite successful, and we&#39;re iterating on our approach all the time.</p>

<h2 id="recap">Recap</h2>

<p>To sum up, we de-emphasize some meetings like review and planning, and add more meetings, like Monday scrum and Friday review. These meetings were discussed and added to our week by discussing how to solve issues in our retrospective meetings. So the team members actually requested more meetings! On the other hand, we&#39;re quite strict with our meetings. No laptops/phones during meetings (except remotes, but then only for the meeting), meetings start on time, and don&#39;t drag out unnecessarily.</p>

<p>Currently this meeting structure seems to work decently well for us, but it will undoubtedly change at some point when the work evolves.</p>

<h1 id="prioritizing-dev-ops-work">Prioritizing Dev/Ops work</h1>

<p>As per normal practice, a team should have a backlog. This is normal. How do we handle ops/dev priorities in the backlog?</p>

<p><img alt="Silvrback blog image " src="https://silvrback.s3.amazonaws.com/uploads/6229ce25-5b4e-41c9-a227-e5050ed2e02d/kanban.png" /></p>

<p>We have three different swimlanes (Jira term?) for our backlog. First we have faults. These are all-hands-on-deck incidents. These always take the priority and are the most important tasks. However, these don&#39;t get scheduled or prioritized, they get created when we have and incident.</p>

<p>Next we have ops tasks. When an admin needs to take a new task, ops tasks are always higher priority than dev tasks. So if we have an ops task in selected for development, the admin takes that. What makes a task an ops task? I think the <a href="https://www.9bitwizard.eu/agile-services-part-3-the-work">third blog post post</a> has a decent description of the characteristics of the tasks. Basically they need to handle a degraded or soon-to-be degraded state of the system.</p>

<p>We have become quite strict with creating and prioritizing ops tasks. As ops tasks were prioritized higher than other tasks, and we were quite liberal with creating ops tasks, we tended to get &quot;important&quot; development tasks in our ops swimlane. Now only the PO may move ops tasks from the backlog to selected for development, which has helped the issue.</p>

<p>Next we have a swimlane with development tasks. These are prioritized by the  PO based on our planning meeting and stakeholder communications.</p>

<p>As a lot of our development tasks are larger, we basically prioritize what scrum would call epics. These may take a while to implement and consist of many individual sub-tasks. The main this is that we prioritize them as an epic and not as tasks. Usually we don&#39;t get any team or customer value from completing a single task, unless the whole epic is done.</p>

<p>Currently we have too much ops work, so prioritizing development isn&#39;t too hard, as there is a clear order of what we need to get done. With a bit more available development effort I&#39;d like to try something like <a href="https://scaledagileframework.com/wsjf/">Weighted Shortest Job First</a> in a bit more rigorous way than just off the cuff.</p>

<p>What if we can never do any development because we have too many ops tasks? I attended an SRE course, and that had an good term for this, Engineering Bankruptcy. If you&#39;re in this state, you probably need drastic changes. A rule of thumb for a good balance would be 50/50 ops/dev tasks, while actually managing to handle all the ops tasks.</p>

<h2 id="wip-and-work-visibility">WIP and work visibility</h2>

<p>The next big thing when working  on tasks is handling the work in progress.</p>

<blockquote>
<p>The more things you do at once, the longer it takes to do them.</p>
</blockquote>

<p>Managing WIP is in the core of many agile methodologies. For a good reason. A task is not useful before it&#39;s done. We try to put much effort into managing WIP and making sure we do our best to limit things in flight. This takes constant work, but it&#39;s worth it. </p>

<p>If you want to manage WIP, you also need to make sure that as much work as possible is visible. This means that there is a ticket about it. If a lot of shadow work is going on, it&#39;s hard to control WIP, as we don&#39;t know our WIP. Our goal is that  all our work has a ticket assigned to it. Either it&#39;s a Jira ticket, or a customer ticket (these we handle outside Jira). My guess is that we currently catch 80% of the work, depending on how you count.</p>

<p>How can we manage our WIP? Let&#39;s say we have an admin who just put their only task into &quot;review&quot; (more on this soon), and now wonders what they should do. The first reaction is to take the next task in selected for development. This would increase our WIP. What can we do instead?</p>

<ul>
<li>If we have efficient reviews, the task is reviewed quickly and the admin can continue finishing the task, or fixing problems with it.</li>
<li>Does the team have other WIP tasks, that are assigned to another admin who doesn&#39;t have time to finish them? Can the ownership of the tasks change?</li>
<li>Does any other team member need help or a second pair of eyes for their ongoing task?</li>
<li>Was there that mail/customer ticket/chat you could take care of now?</li>
</ul>

<p>Now, if all none of the above yield any more work, we are in quite a good state. Then we can take a new ops or dev task into progress.</p>

<p>However, we never drag in new epics like this, starting a new epic is a conscious decision by the team. This is generally not a problem, as new epics should not be in selected for development.</p>

<h2 id="the-infamous-wfo">The Infamous WFO</h2>

<p>I&#39;m sure most of you have a Waiting for Others column. It exists for tasks we can&#39;t forward ourselves, but we have to wait for some other parties to do something.</p>

<p>This is a necessary evil, and we can only try to make the best out of it. The WFO column basically always increases WIP, which isn&#39;t great.</p>

<p>The largest problem comes from WFO tasks hanging indefinitely in the column.Here our Monday dailies help, as we always go through these tasks and see if they can be kicked forward.</p>

<h2 id="task-reviews">Task Reviews</h2>

<p>To make the separation clear,this section talks about individual task reviews, not the review meeting.</p>

<p>Task Reviews is one of the things I we always must have (i.e. don&#39;t remove them in the retro meeting). We do extensive task reviews, and most tasks are put into the review column multiple times during their lifetime.</p>

<p>For us a task is reviewed e.g. when</p>

<ul>
<li>There is code to be reviewed and merged</li>
<li>A second pair of eyes is needed for e.g. a proposed process for production change</li>
<li>A review of some data which gets added to a system (e.g. hardware inventory) to validate the data quality</li>
<li>The task implementer feels like the Definition of Done is met, and wants a final review to resolve the task</li>
</ul>

<p>Having active reviews is an excellent way of building in quality. The most expensive thing is to half-ass a task and having to revisit the same problem multiple times after we have pushed it to production.</p>

<p>I think a telling point is that a majority of our tasks do not pass the first review, even though our admins know their task is going to be reviewed. If all these tasks went to production without review, we would build in a massive amount of technical debt into the service.</p>

<h1 id="final-summary">Final summary</h1>

<p>So I&#39;ve tried to describe a bit our process now, and how we work. This is not how we worked a year ago, and it won&#39;t be the way we work in a year. But most of the processes will remain the same.</p>

<p>If this was a long post, and you just scrolled to the end to see if there is anything interesting, at least read this.</p>

<ul>
<li>Have retrospectives. Don&#39;t be afraid to do changes to your process. Don&#39;t do things just because Scrum tells you to. But be honest and critical with your changes.</li>
<li>Limit your WIP. It&#39;s hard but work on it.</li>
<li>Review a lot and often.</li>
</ul>

<p>I think I still have a few blog posts on this wider topic, so I expect there to be  a <a href="https://www.9bitwizard.eu/agile-services-part-6-the-long-term">part 6</a>, at some point.</p>
]]></content:encoded>
      </item>
  </channel>
</rss>