<?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: Ania</title>
    <description>The latest articles on DEV Community by Ania (@techie_ania).</description>
    <link>https://dev.to/techie_ania</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%2F322720%2Fc8b2eb5a-1483-4582-99c4-379e2a2f9158.jpg</url>
      <title>DEV Community: Ania</title>
      <link>https://dev.to/techie_ania</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techie_ania"/>
    <language>en</language>
    <item>
      <title>QA to dev</title>
      <dc:creator>Ania</dc:creator>
      <pubDate>Wed, 09 Mar 2022 22:22:59 +0000</pubDate>
      <link>https://dev.to/techie_ania/qa-to-dev-2ag</link>
      <guid>https://dev.to/techie_ania/qa-to-dev-2ag</guid>
      <description>&lt;p&gt;It's been a while since I wrote something here.. lots has changed.&lt;/p&gt;

&lt;p&gt;I used to be a QA.&lt;/p&gt;

&lt;p&gt;I'm a dev now.&lt;/p&gt;

&lt;p&gt;Transition is still going on, in my head and skills. In IT there is no such thing as successful stagnation. You have to keep on going, or you'll be left behind. That can be scary, but brings exciting opportunities. You can reinvent yourself, learn, grow, shift roles, move between jobs.&lt;/p&gt;

&lt;p&gt;Talking to people that would like to make a career switch I often hear that it is all so overwhelming. All the myths of the genius dev, sitting at the computer on his own, away from people... that's not how most devs are, and it's not how you have to be to land a job in IT. &lt;/p&gt;

&lt;p&gt;Being a QA is to be observant, understanding, inquisitive, always looking for loopholes.&lt;/p&gt;

&lt;p&gt;Being a DEV is to keep a lot of moving parts in your head, looking for best+fastest solutions, working hard and being helpful.&lt;/p&gt;

&lt;p&gt;Actually, you can switch the definitions around and they will still be true. Working in different technical roles in IT requires similar skills, with more emphasis on a particular technical part or a specific angle of looking at a given challenge.&lt;/p&gt;

&lt;p&gt;There is place for all different types of people, different backgrounds and forte. You are welcome to join, there is space.&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>testing</category>
      <category>programming</category>
    </item>
    <item>
      <title>Do(n't) test your own code!</title>
      <dc:creator>Ania</dc:creator>
      <pubDate>Wed, 01 Apr 2020 14:37:17 +0000</pubDate>
      <link>https://dev.to/techie_ania/do-n-t-test-your-own-code-28ap</link>
      <guid>https://dev.to/techie_ania/do-n-t-test-your-own-code-28ap</guid>
      <description>&lt;p&gt;So... you know you should write unit tests (generally). You know, you should make sure your stuff works before you push, needing often some functional testing as well (I hope, although I should know better than to count on everyone doing this...).&lt;/p&gt;

&lt;p&gt;But...&lt;/p&gt;

&lt;p&gt;Why would you? You KNOW it's working, right? You &lt;em&gt;tested it&lt;/em&gt;, right?&lt;br&gt;
Wrong. You &lt;em&gt;checked&lt;/em&gt; a few cases. "Isn't that the same?" Nope... well, kind of, but nope.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the difference
&lt;/h3&gt;

&lt;p&gt;When you run your function with an argument you know should pass, that is a happy path check. To me, it becomes a test, when you &lt;em&gt;intentionally&lt;/em&gt; picked that value, when you know why &lt;em&gt;this&lt;/em&gt; and not &lt;em&gt;that&lt;/em&gt; value is worth checking. In a test like this (we can talk about other test approaches in another post) you should first write down what EXPECTED RESULT for it is.&lt;/p&gt;

&lt;h3&gt;
  
  
  To test or not to test
&lt;/h3&gt;

&lt;p&gt;Test, obvi, but... don't just check some cases, think about what values, what steps and what effects you are checking for. Make the testing intentional. After a short while, you will see that it takes as much time than just choosing random values, but it makes a difference that you find issues before anyone else can see you introduced them... because you will eliminate them before they get a chance to notice!&lt;/p&gt;

&lt;h3&gt;
  
  
  How to test your code
&lt;/h3&gt;

&lt;p&gt;Just write down a list of tests (or go TDD on it) that you'll run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;tested_function&amp;gt; - &amp;lt;precondition&amp;gt; - &amp;lt;tested_value&amp;gt; - &amp;lt;expected_result&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;precondition&amp;gt;&lt;/code&gt; also called "initial conditions" or "setup". All the things you need in place to be even able to start testing.&lt;br&gt;
&lt;code&gt;&amp;lt;tested_value&amp;gt;&lt;/code&gt; usually the one thing you are testing in a given test case.&lt;br&gt;
&lt;code&gt;&amp;lt;expected_result&amp;gt;&lt;/code&gt; is a return value or a side effect of the function(ality) when run with the &lt;code&gt;&amp;lt;test-value&amp;gt;&lt;/code&gt; passed to it.&lt;/p&gt;

&lt;p&gt;Choose test values based on your knowledge of the intended range of values for the function. There are two basic techniques to define values for testing and they work together pretty well: &lt;strong&gt;Boundary Values Analysis&lt;/strong&gt; and &lt;strong&gt;Equivalence Partitioning&lt;/strong&gt;. Worth reading about them, they might seem very simple (the theory actually is) but their usage goes beyond number ranges.&lt;/p&gt;

&lt;p&gt;Knowing those two basic techniques will go a long way towards improving your testing abilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Now, why NOT to test
&lt;/h3&gt;

&lt;p&gt;Or rather "&lt;em&gt;why my testing is not enough&lt;/em&gt;"? Well, in a great majority of cases, unfortunately, people are too focused on making their code work in an intended way, so they become narrow-sighted and don't even realize what possible issues they should be watching out for. That's where TDD, BDD, etc. get useful because when you define the expected result/behavior BEFOREHAND, you don't have the narrow sightedness yet and can analyze all sorts of possible scenarios. Negatives? You can't predict many changes and details that come up while already working on your code, but that's ok :)&lt;/p&gt;

&lt;h3&gt;
  
  
  Word about QAs and testers
&lt;/h3&gt;


&lt;p&gt;Even if you become a great tester yourself, making sure you have a nice set of tests on different levels (see &lt;a href="https://www.google.com/search?q=test+pyramid&amp;amp;oq=test+pyramid"&gt;Test Pyramid&lt;/a&gt;) and your code is so clean, Uncle Bob would be proud, you will still need someone else's eyes on it. It doesn't have to be a professional tester or QA (although great if it is), but at least someone else than you, someone who is not afraid to say:&lt;br&gt;&lt;br&gt;
"&lt;em&gt;You think I can't find any bugs? Hold my beer&lt;/em&gt;".&lt;br&gt;&lt;br&gt;
&lt;/p&gt;


</description>
      <category>testing</category>
      <category>tdd</category>
      <category>codequality</category>
      <category>bugs</category>
    </item>
    <item>
      <title>Shortly about.. criticism, code reviews, comments</title>
      <dc:creator>Ania</dc:creator>
      <pubDate>Tue, 04 Feb 2020 13:46:53 +0000</pubDate>
      <link>https://dev.to/techie_ania/shortly-about-criticism-code-reviews-comments-ad8</link>
      <guid>https://dev.to/techie_ania/shortly-about-criticism-code-reviews-comments-ad8</guid>
      <description>&lt;p&gt;You wrote some code, you're about to push.. wait a sec, please.&lt;/p&gt;

&lt;h3&gt;Working together&lt;/h3&gt;

&lt;p&gt;Most of the time developers work in teams. There is a lot of collaboration, hopefully, appreciation of the effort and, also hopefully, criticism. Yes, criticism. It should NOT be about making comments on someone's ability to do their job. It should NOT be directed at a person at all. It's about the shared code, making sure everyone understands how to work with it, how to make modifications when needed. It's about the trust that the code will do its job and not fail easily.&lt;/p&gt;

&lt;h3&gt;Hello, my name is...&lt;/h3&gt;

&lt;p&gt;When you name your variables, files, write commit messages, name tests, state your point in a meeting, writing a bug report... think about this: you are working in a team and the goal is for what you create to work in a bigger context.&lt;/p&gt;

&lt;p&gt;Once you write your code, take a break, then read through it without going through how exactly it works.. think about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Would it make sense for other people in your team?
You know your colleagues, think of what kind of changes they usually ask for, what are their usual comments and aim for cleaning up the code in such a way that it will not require updates you know they will request.&lt;/li&gt;
&lt;li&gt;Are the variables, functions, class names, etc. clear and accurate? Are you naming things by what they are/do?&lt;/li&gt;
&lt;li&gt;Are you following conventions the team agreed to?&lt;/li&gt;
&lt;li&gt;Think of what you would be commenting on when reading through another person's code.&lt;/li&gt;
&lt;li&gt;Be critical of your own work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Let's all be nice&lt;/h3&gt;

&lt;p&gt;As for commenting on other people's work, stay away from a passive-aggressive tone, which creeps in at times. Read your comments before submitting them. Be clear, be concise, be polite. Write about the changes in code you propose and explain why, shortly. Be open to discussion about your comments.&lt;/p&gt;

&lt;h3&gt;It's not about you&lt;/h3&gt;

&lt;p&gt;One thing I want to make clear. None of the criticism coming from others or yourself(!) is to make you feel bad, it is about getting the code in a state where it will work well for the client, the end-users, and make your colleagues happy and efficient when working with it. They WILL appreciate it and you for it.&lt;/p&gt;

&lt;p&gt;Even if you feel a particular comment is directed at you, think if it should. Then ignore the personal part of it, think if there is something actionable and useful about it. Use that part. Only then you can decide to ask politely for the person to comment on the code, not you. But that's a topic for another time...&lt;/p&gt;



Author's note:&lt;br&gt;&lt;br&gt;
Let's practice positive critic here :)&lt;br&gt;&lt;br&gt;
I gave myself about 30 minutes to write it and then another few minutes to correct it, so that I don't keep procrastinating on my first post!&lt;br&gt;&lt;br&gt;


</description>
      <category>communication</category>
      <category>team</category>
      <category>collaboration</category>
      <category>codereview</category>
    </item>
  </channel>
</rss>
