<?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: Areti Panou</title>
    <description>The latest articles on DEV Community by Areti Panou (@droopy12).</description>
    <link>https://dev.to/droopy12</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%2F228665%2F5e6a529b-10ca-4df7-a57c-1960705dcd60.jpeg</url>
      <title>DEV Community: Areti Panou</title>
      <link>https://dev.to/droopy12</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/droopy12"/>
    <language>en</language>
    <item>
      <title>Does Quality fit in CALMS?</title>
      <dc:creator>Areti Panou</dc:creator>
      <pubDate>Thu, 08 Jul 2021 20:41:22 +0000</pubDate>
      <link>https://dev.to/droopy12/does-quality-fit-in-calms-45pj</link>
      <guid>https://dev.to/droopy12/does-quality-fit-in-calms-45pj</guid>
      <description>&lt;p&gt;&lt;em&gt;This was originally published on my blog, &lt;a href="https://unremarkabletester.com/"&gt;https://unremarkabletester.com/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Recently, I was asked to give a 15 minute introduction on Quality Strategy in DevOps for our upcoming &lt;a href="https://open.sap.com/courses/devops1"&gt;"Efficient DevOps with SAP"&lt;/a&gt; course and I happily accepted. And then, to my horror of horrors, I realised that I needed to figure out what a Quality Strategy is and what makes it unique in a DevOps world.&lt;/p&gt;

&lt;p&gt;Instead of trying to come up with a definition, I started considering what are some quality specific aspects within the &lt;a href="https://itrevolution.com/devops-culture-part-1/"&gt;CALMS&lt;/a&gt; framework that would help a DevOps transformation.&lt;/p&gt;

&lt;p&gt;So, here are a few ideas on the Culture, Automation, Lean, Measurement and Sharing aspects to consider that might improve the overall quality of a system, from idea to end user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Culture
&lt;/h2&gt;

&lt;p&gt;When it comes to the online narrative of Quality in DevOps environments I see two major changes in mindset. The first one is that when we talk about quality we shouldn't narrow the discussion to functional testing activities. There are more things that affect the quality of our product, such as for example a well-thought-out user experience. Once we get beyond the Quality = Testing mentality, it is easy to see the second required change. And that is that quality is everyone's responsibility. Releasing a quality product is not a final check but a continuous state of mind for every task we work on. More often than not, this is easier said than done of course.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation
&lt;/h2&gt;

&lt;p&gt;Automation is the part that gets the most attention in any DevOps transformation. When it comes to quality, automating various functional checks increases confidence in the system’s expected behaviour. The time that automation saves us can be used to explore unexpected behaviours within it and look into ways to anticipate them better in the future. But the automation we build also needs to be of good quality. Having flaky tests that nobody trusts is something that anyone who has been bitten by it painfully knows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lean
&lt;/h2&gt;

&lt;p&gt;Including Lean aspects to improve the quality of our product might appear obvious. For example, a reliable, time efficient, compliant Deployment Pipeline where everyone is responsible for having it in a good state to reduce handovers and "red tape" seems like a pretty good idea. But even if your team has mastered DevOps maestro levels, if your neighbouring teams still struggle with releasing their changes in good quality then the quality of the whole product suffers. The discussions need to focus on continuously improving the quality of the entire system and not just that of the individual parts if we want to remove bottlenecks and constraints.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measurements
&lt;/h2&gt;

&lt;p&gt;A common quality metric is the number of issues opened by the customers. But what about users that can't find the proper way to report a bug? What about those that instead of complaining just stop using a product? What if instead, we measured our users' satisfaction and the net promoter score they give to better understand the quality of our product? We can make a hypothesis of how we can improve, implement it and try asking again. And implementation doesn't necessarily mean building new features. Sometimes it is removing unnecessary functionality, sometimes it is renaming the buttons to something more meaningful. A small bug might be forgiven and not be considered a threat to the quality of a product but the inability to do the work you want on a constant basis might be a bigger problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share
&lt;/h2&gt;

&lt;p&gt;Sharing knowledge seems to be an intuitively good practice, but implementing is not as straightforward as one might think. And that is because it implies investing time both for the side providing information as well as the one consuming it. For example, we can say that we share testing tasks. For that to become a factor of improving quality, testers need to take the time to show their team how to do it efficiently and the team needs to take the time to learn how to do it properly. Sharing is good to spark the flame for something new but to keep it burning the oxygen of time investment is needed.&lt;/p&gt;




&lt;p&gt;So what is a Quality Strategy and how does it fit in DevOps environments? For me, in the end, CALMS is a Quality Strategy. It is a framework for improving the value for the end users of a product while optimising the process of creating it. This might not be a perfect definition or by any means a definitive one. But it is one that I can work with in the future.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>culture</category>
      <category>testing</category>
    </item>
    <item>
      <title>Are there any programming languages that the commands are not in English?</title>
      <dc:creator>Areti Panou</dc:creator>
      <pubDate>Sun, 19 Apr 2020 21:04:15 +0000</pubDate>
      <link>https://dev.to/droopy12/are-there-any-programming-languages-that-the-commands-are-not-in-english-302l</link>
      <guid>https://dev.to/droopy12/are-there-any-programming-languages-that-the-commands-are-not-in-english-302l</guid>
      <description>&lt;p&gt;I am trying to put together a small presentation on how language affects software development. So I was wondering if there are any programming languages out there that have commands in any other language but English. Any input is more than welcome! &lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Some Ideas for Reducing "Release Decision" Time</title>
      <dc:creator>Areti Panou</dc:creator>
      <pubDate>Sun, 02 Feb 2020 13:28:59 +0000</pubDate>
      <link>https://dev.to/droopy12/some-ideas-for-reducing-release-decision-time-23ca</link>
      <guid>https://dev.to/droopy12/some-ideas-for-reducing-release-decision-time-23ca</guid>
      <description>&lt;p&gt;&lt;em&gt;This was originally published on my blog, &lt;a href="https://unremarkabletester.com/"&gt;https://unremarkabletester.com/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;"Can we release this feature?" is usually a question answered by humans, not machines. From what I have seen around, even teams that practice continuous deployment seem to take a step back to consider whether they are ready to expose new functionality to their users. My impression is that "release decision" time might vary from a couple of hours to days or longer. Surely, a stable, meaningful deployment pipeline and a team's certain autonomy level are prerequisites to take a decision. But I was wondering, what other activities might influence such a decision and how we could reduce their time span?&lt;/p&gt;

&lt;p&gt;Here is a list of the things I came up with.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acceptance testing
&lt;/h3&gt;

&lt;p&gt;Usually done by the product owner, it's a review whether the software produced meets the business expectations. &lt;a href="https://www.agilealliance.org/glossary/bdd/"&gt;Behaviour Driven Development (BDD)&lt;/a&gt; can reduce the time acceptance testing takes as it puts in place automated checks to cover that task. But even if you don't automate your specifications, just having a conversation as a team to get a clear understanding of the business' needs, produces software that requires less time to be verified before release.&lt;/p&gt;

&lt;h3&gt;
  
  
  Compliance validation
&lt;/h3&gt;

&lt;p&gt;If you are working in a regulated industry, proof of compliance might be something that takes up a big chunk of your time before releasing. For checks that can be automated, a good idea is to include them in your deployment pipeline and automatically collect the produced artefacts, like reports of issues found. For things that cannot be fully automated, such as Accessibility aspects, raising awareness on the topic and educating the development team on good practices can improve the software quality without extended checks at the end.&lt;/p&gt;

&lt;h3&gt;
  
  
  Go-to-market activities
&lt;/h3&gt;

&lt;p&gt;A new, prominent feature might affect marketing and user assistance aspects of your product. Pricing might change, new sales pitches might need to be created and some new documentation should help users in case they need it. To avoid surprises that cost time before release, it is a good idea to include technical writers and people from marketing or sales in the development process. They don't need to be in every meeting, but having an idea of how a feature is shaping up during development and working in parallel on their end to bring it to the customers, could reduce release decision time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exploratory testing
&lt;/h3&gt;

&lt;p&gt;I have noticed many teams performing &lt;a href="http://testobsessed.com/2006/04/rigorous-exploratory-testing/"&gt;exploratory testing&lt;/a&gt; sessions, as a final check-point before releasing to their customers. Having a last look for risks that might threaten the quality of our work is a very human thing to do. On the other hand, waiting until the last moment to do such an evaluation might be too time consuming. By applying exploratory testing mindset throughout your development process, from specification of requirements, to API design and external services dependencies, you address potential risks earlier. So, when the release decision time comes, you already feel a certain level of confidence about the quality of your product.&lt;/p&gt;

&lt;p&gt;I am sure that there are more "manual" activities we perform before we release our product and even more ways to reduce their duration. So the question that remains is, can we come up with an automated process to trim the release decision time to zero? And most importantly, do we really want to remove the decision from humans altogether?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover photo by Noah Silliman on Unsplash&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>testing</category>
      <category>management</category>
    </item>
    <item>
      <title>Cheat-sheet for Laws, Principles &amp; the such</title>
      <dc:creator>Areti Panou</dc:creator>
      <pubDate>Thu, 14 Nov 2019 11:15:10 +0000</pubDate>
      <link>https://dev.to/droopy12/cheat-sheet-for-laws-principles-the-such-31mg</link>
      <guid>https://dev.to/droopy12/cheat-sheet-for-laws-principles-the-such-31mg</guid>
      <description>&lt;p&gt;&lt;em&gt;This was originally published on my blog, &lt;a href="https://unremarkabletester.com/"&gt;https://unremarkabletester.com/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Have you ever been in a conversation where somebody ends an argument with something like "But as we all know this will never work because of Conway's Law"? And even worse, have you found yourself thoughtfully nodding even though you are not 100% sure what Conway's Law exactly says?&lt;/p&gt;

&lt;p&gt;I for one admit to have been in such a situation so I thought of noting down some of the laws, principles, theories or what have you, I often hear referenced in software development discussions. I included only the definitions and leave it up to the readers to look deeper into each one of them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Conway%27s_law"&gt;Conway's Law&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Organizations which design systems... are constrained to produce designs which are copies of the communication structures of these organizations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Occam%27s_razor"&gt;Occam's Razor Principle&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Entities should not be multiplied without necessity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Often paraphrased as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The simplest solution is most likely the right one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Halting_problem"&gt;Halting Problem&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The problem of determining, from a description of an arbitrary computer program and an input, whether the program will finish running, or continue to run forever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Brooks%27s_law"&gt;Brook's Law&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Adding human resources to a late software project makes it later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.leanproduction.com/theory-of-constraints.html"&gt;Theory of Constraints&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A methodology for identifying the most important limiting factor (i.e. constraint) that stands in the way of achieving a goal and then systematically improving that constraint until it is no longer the limiting factor. In manufacturing, the constraint is often referred to as a bottleneck.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Pareto_principle"&gt;Pareto Principle&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For many events, roughly 80% of the effects come from 20% of the causes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Conjunction_fallacy"&gt;Conjunction Fallacy aka Linda Problem&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Assuming that specific conditions are more probable than a single general one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This list is far from being complete, so any suggestions to enrich it are more than welcome.&lt;/p&gt;

&lt;p&gt;Just quoting some of this wisdom won't get us very far. But maybe by taking another look to the truths we use, we can apply them better in the future.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover photo by Negative Space&lt;/em&gt;&lt;/p&gt;

</description>
      <category>computerscience</category>
    </item>
    <item>
      <title>A Collection of Suggestions I Strenuously Resisted</title>
      <dc:creator>Areti Panou</dc:creator>
      <pubDate>Mon, 16 Sep 2019 11:06:05 +0000</pubDate>
      <link>https://dev.to/droopy12/a-collection-of-suggestions-i-strenuously-resisted-5842</link>
      <guid>https://dev.to/droopy12/a-collection-of-suggestions-i-strenuously-resisted-5842</guid>
      <description>&lt;p&gt;&lt;em&gt;This was originally published on my blog, &lt;a href="https://unremarkabletester.com/"&gt;https://unremarkabletester.com/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;As soon as I started working as a tester, I knew that this was what I wanted to do for the rest of my professional life. Being completely inexperienced in software development, my idea of testing was that its purpose was to find bugs. Oh and I loved finding bugs. Starting from gaps in the requirements, to functional bugs, to inaccuracies in the documentation, to missing identifiers of texts that needed to be translated, I was there, creating my bug tickets. Life was good.&lt;/p&gt;

&lt;p&gt;But alas, my manager and senior developers thought that I could contribute more to the quality of the product by doing additional activities, beyond just finding my beloved bugs. Here is a collection of suggestions that I received, which I initially, emphatically,  denied.&lt;/p&gt;

&lt;h2&gt;
  
  
  Provide test ideas to developers before they start coding
&lt;/h2&gt;

&lt;p&gt;The architect of the project noticed that I could spot gaps in the user stories as soon as they came in the backlog. He suggested that I add my testing ideas in the story, so the developers could take care of the pitfalls before they even started coding. I was outraged! If I laid out all of my ideas, how would I find bugs? If they wrote good software, how would I ever be happy with no bug to be found? I even had the audacity of contradicting him. He smiled politely and let me sleep on it, until I came to my senses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share my knowledge with the rest of the team
&lt;/h2&gt;

&lt;p&gt;Not only were the developers interested in having my test ideas beforehand, even worse, they wanted to know how I came to think about them. They wanted to learn how to do exploratory testing efficiently and I was supposed to be the one telling them all of the testing craft's secrets. I was not thrilled with the idea, nevertheless I paired with them for a couple of timed sessions and we found many issues together. We also discussed how a bug ticket should look like, so that it is easy for everyone to understand its importance and resolve it in a timely fashion. Eventually they became quite good at it, leaving me with even less bugs to find. At least, I had a hidden sense of pride for my "students".&lt;/p&gt;

&lt;h2&gt;
  
  
  Merge bugs and enhancements into a single list
&lt;/h2&gt;

&lt;p&gt;Another outrage. My well thought of corner-case bugs in the same bucket as things like "change colour of button from #4286f4 to #2977f4". I half-heartedly accepted and agreed to have a look at these enhancements, reported by all sorts of people, from developers to sales colleagues. What I found out was that most of them were valid points that would significantly increase the good adoption of our product, sometimes with minimum effort. That gave me another perspective of how to approach testing, going beyond finding problems and looking into ways to actually improve our service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Talk to people from sales
&lt;/h2&gt;

&lt;p&gt;Another waste of my precious time. I knew what they would tell me. More features released faster, even if they were functionally incomplete, because this was what the customers wanted. In a nutshell, I thought that my job was to ensure that the customers got software that worked and not if what they got had any value to them (I wish I had come across Alberto Savoia's &lt;a href="https://www.youtube.com/watch?v=X1jWe5rOu3g"&gt;"Test is dead"&lt;/a&gt; presentation much earlier than I did). After the first discussions, I reluctantly started seeing the error of my ways. Even if I couldn't make any decisions on how features were prioritized, it sure made a difference to my testing approach, understanding what things the customers found important. What their resilience to failure was and how long they allowed for a fix. What their business was like and how our product could serve it. I swallowed my pride and admitted defeat yet again.&lt;/p&gt;

&lt;p&gt;In all of the above cases, I embarrassed myself by either loudly refusing or grumpily accepting to even consider anything that was out of my testing comfort zone. Luckily, with approaches for creating quality software like &lt;a href="https://www.ministryoftesting.com/dojo/lessons/modern-testing-principles"&gt;Modern Testing&lt;/a&gt; becoming popular, most of the ideas I resisted are becoming mainstream. Will there be more things in the future that I will resist? Sure! Have I learned anything from my mistakes? I did. Developing software, and testing as part of it, is a creative process fulfilling the people that practice it. But if you don't share your craft with the rest of your team and don't listen to the people that consume your work, you will inevitably be left behind by both.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover image photo by &lt;a href="https://unsplash.com/@jontyson"&gt;Jon Tyson&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>qualityassurance</category>
      <category>testing</category>
    </item>
    <item>
      <title>Learning a new programming language</title>
      <dc:creator>Areti Panou</dc:creator>
      <pubDate>Mon, 16 Sep 2019 10:43:03 +0000</pubDate>
      <link>https://dev.to/droopy12/learning-a-new-programming-language-164c</link>
      <guid>https://dev.to/droopy12/learning-a-new-programming-language-164c</guid>
      <description>&lt;p&gt;Code newbie question: How do you choose the language you want to learn to program in? Is there a course or resource that tells you what sort of problems are solved by each language?&lt;/p&gt;

</description>
      <category>help</category>
    </item>
  </channel>
</rss>
