<?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: Swarup Kumar Mahapatra</title>
    <description>The latest articles on DEV Community by Swarup Kumar Mahapatra (@swarupkm).</description>
    <link>https://dev.to/swarupkm</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%2F97611%2Facca3bd7-f22b-4981-8a1e-6019d087104e.jpeg</url>
      <title>DEV Community: Swarup Kumar Mahapatra</title>
      <link>https://dev.to/swarupkm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/swarupkm"/>
    <language>en</language>
    <item>
      <title>When to refactor</title>
      <dc:creator>Swarup Kumar Mahapatra</dc:creator>
      <pubDate>Mon, 15 Jun 2020 09:51:48 +0000</pubDate>
      <link>https://dev.to/swarupkm/when-to-refactor-3jpg</link>
      <guid>https://dev.to/swarupkm/when-to-refactor-3jpg</guid>
      <description>&lt;p&gt;We always believe we have put our best efforts while writing code. However following questions come to mind&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When should one start refactoring, when should one stop refactoring?&lt;/li&gt;
&lt;li&gt;Doesn’t &lt;code&gt;bias&lt;/code&gt; kick in while trying to start refactoring your own code?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>refactoring</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Understanding Encapsulation</title>
      <dc:creator>Swarup Kumar Mahapatra</dc:creator>
      <pubDate>Tue, 14 Jan 2020 08:03:35 +0000</pubDate>
      <link>https://dev.to/swarupkm/understanding-encapsulation-5fgj</link>
      <guid>https://dev.to/swarupkm/understanding-encapsulation-5fgj</guid>
      <description>&lt;p&gt;I have been reading Domain Driven Design for a while.&lt;br&gt;&lt;br&gt;
I realized, creating Value Objects and building Entities by composing Value Objects is the best way to explain Encapsulation.&lt;br&gt;&lt;br&gt;
Getters and Setters do not explain encapsulation at all.&lt;br&gt;
Agree?&lt;/p&gt;

</description>
      <category>ddd</category>
      <category>oop</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Will I still be called a developer?</title>
      <dc:creator>Swarup Kumar Mahapatra</dc:creator>
      <pubDate>Mon, 16 Dec 2019 14:30:03 +0000</pubDate>
      <link>https://dev.to/swarupkm/will-i-still-be-called-a-developer-1kc2</link>
      <guid>https://dev.to/swarupkm/will-i-still-be-called-a-developer-1kc2</guid>
      <description>&lt;p&gt;There are many people who write code. Some (many) of them are from non computer science background. Some are self-taught.&lt;/p&gt;

&lt;p&gt;Some of them may understand Data Structures and Algorithms, but cannot write the implementation. They would have successfully delivered projects by using modern libraries/frame-works.&lt;/p&gt;

&lt;p&gt;By doing so , they would have got good grasp over "System Design". Yet they would fail to implement a "merge-sort".&lt;/p&gt;

&lt;p&gt;Will they still be called a developer? Are they not as good as developers from FANG companies ? Are they left behind?&lt;/p&gt;

&lt;p&gt;F - Facebook , A - Amazon , N - Netflix, G - Google&lt;/p&gt;

&lt;p&gt;Looking forward for opinions.&lt;/p&gt;

&lt;p&gt;Also I am part of the "They" . &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>help</category>
    </item>
    <item>
      <title>Back to Basics</title>
      <dc:creator>Swarup Kumar Mahapatra</dc:creator>
      <pubDate>Mon, 25 Nov 2019 18:49:08 +0000</pubDate>
      <link>https://dev.to/swarupkm/back-to-basics-2hdd</link>
      <guid>https://dev.to/swarupkm/back-to-basics-2hdd</guid>
      <description>&lt;p&gt;I have been in software industry for some time. However there are times, where I feel like going through basic concepts again.&lt;/p&gt;

&lt;p&gt;Example: &lt;br&gt;
Basic sorting, search algos&lt;br&gt;
Stacks/Queues/Trees &lt;br&gt;
4 pillars of OOPS &lt;br&gt;
Refactoring &lt;br&gt;
REST&lt;/p&gt;

&lt;p&gt;Does anyone feel the same? How often do you go through such topics again? ✋&lt;br&gt;
Most importantly, why you do it?&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>How were you introduced to DDD ? And how much time did it take to grasp the concepts?</title>
      <dc:creator>Swarup Kumar Mahapatra</dc:creator>
      <pubDate>Sat, 21 Sep 2019 18:19:47 +0000</pubDate>
      <link>https://dev.to/swarupkm/how-were-you-introduced-to-ddd-and-how-much-time-did-it-take-to-grasp-the-concepts-g7a</link>
      <guid>https://dev.to/swarupkm/how-were-you-introduced-to-ddd-and-how-much-time-did-it-take-to-grasp-the-concepts-g7a</guid>
      <description>&lt;p&gt;There is &lt;code&gt;Algorithms&lt;/code&gt;, which takes lot of time to grasp.&lt;br&gt;
Then there is Domain Driven Design, where one might think they got the point, but with very next example you feel lost. Too subjective. No Thumb Rules.&lt;/p&gt;

&lt;p&gt;So how has been your journey with DDD so far?&lt;br&gt;
When did you first encounter it and how did you learn it?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ddd</category>
    </item>
    <item>
      <title>Test Driven ... Everything</title>
      <dc:creator>Swarup Kumar Mahapatra</dc:creator>
      <pubDate>Sat, 01 Dec 2018 13:56:40 +0000</pubDate>
      <link>https://dev.to/swarupkm/test-driven--everything-2e79</link>
      <guid>https://dev.to/swarupkm/test-driven--everything-2e79</guid>
      <description>&lt;p&gt;TDD , or test driven development , is one of the better ways to develop software. It leads to better design.&lt;/p&gt;

&lt;p&gt;TDR , or test driven reading , is one of the better ways to understand programming concepts. (specially Design Pattern topics)&lt;/p&gt;

&lt;p&gt;The more blogs and tutorials I read, the more I realise that every article starts with the design code and then the execution ( main() ) code .&lt;/p&gt;

&lt;p&gt;I then thought, if I read the main/execution code first and then try to go back and see the design code , then everything starts making sense.&lt;/p&gt;

&lt;p&gt;Tests / main() code also leads to a better understanding of programming concepts&lt;/p&gt;

&lt;p&gt;Thoughts ??? &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>tdd</category>
      <category>designpatterns</category>
    </item>
    <item>
      <title>Need help in understanding 'Why use REST'</title>
      <dc:creator>Swarup Kumar Mahapatra</dc:creator>
      <pubDate>Fri, 16 Nov 2018 18:44:56 +0000</pubDate>
      <link>https://dev.to/swarupkm/need-help-in-understanding-why-use-rest-3h7n</link>
      <guid>https://dev.to/swarupkm/need-help-in-understanding-why-use-rest-3h7n</guid>
      <description>&lt;p&gt;I have been using RESTful services for quite a while (#what and #how of REST). I am looking for examples where the example might look like REST but it doesn't follow the core REST principles. Help me out please!.&lt;/p&gt;

&lt;p&gt;[UPDATE] - The following video &lt;a href="https://youtu.be/pspy1H6A3FM?t=1018"&gt;https://youtu.be/pspy1H6A3FM?t=1018&lt;/a&gt; has been an eye opener, however its worth while to have a discussion.&lt;/p&gt;

</description>
      <category>rest</category>
      <category>api</category>
      <category>discuss</category>
      <category>design</category>
    </item>
    <item>
      <title>Test Automation - whose job is it anyway?</title>
      <dc:creator>Swarup Kumar Mahapatra</dc:creator>
      <pubDate>Thu, 08 Nov 2018 14:30:28 +0000</pubDate>
      <link>https://dev.to/swarupkm/test-automation---whose-job-is-it-anyway-3bna</link>
      <guid>https://dev.to/swarupkm/test-automation---whose-job-is-it-anyway-3bna</guid>
      <description>&lt;p&gt;I have spend 2 years in manual testing , 2 years in web automation testing and 1 year in software development across various tech stacks in various companies.&lt;/p&gt;

&lt;p&gt;Nobody denies the fact that testing is the key ingredient for quality software development. I would go one level up and say these words&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;“Well Planned Testing is the only ingredient required for building best software products”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What is testing?
&lt;/h1&gt;

&lt;p&gt;Given a certain input, When an action is performed, Then the outcome should match as expected. Plain and simple to explain.&lt;/p&gt;

&lt;p&gt;Testing takes place at various levels of software development project. The more detailed the tests and each level , the better the software. At some levels the tests can be like &lt;em&gt;“Verify that a string becomes camelCased upon calling a method named uppercase . And the tests can be like Verify a mail is received by recipient after sending a mail to a valid emailId”&lt;/em&gt; .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://martinfowler.com/bliki/TestPyramid.html" rel="noopener noreferrer"&gt;Test Pyramid&lt;/a&gt; is a well known concept of how to plan testing of a complex software project. A key part of the pyramid is AUTOMATION. And people to do automate the tests at every level , however the tests priority and tests ownership is the least at the peak of pyramid. &lt;em&gt;And when regression sets in, questions are raised on this layer of tests by management&lt;/em&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Here is my RANT on why automation of the peak layer fails.
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automation scenarios are listed out by QAs (good thing) , but implementations are done as PET PROJECTS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pet Projects are written by using an arbitrary technology and since not all QAs are technical , not all of them get involved.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The automation tests does the intended job and it provides a great sense of regression security , but the code lacks production code standards since it is pet project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The writer wouldn’t have spend time on learning clean code and neither the fellow colleagues get involved in learning it (specially manual testers) . Even if some other QAs get involved, the quality never increases because they don’t spend full time on it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One fine day the writer leaves the company, and the tests would fail in the CI and no one takes ownership of it. More features are added the tests break, but nobody maintains.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Meanwhile a new QA who knows a bit or programming joins in. A regression happens in the software and the blame goes to the QAs for not maintaining automation tests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This new QA rises up and scans the existing automation test. He may or may not know the tech stack, but maintaining seems hard to him. Then he starts his own PET PROJECT and re-writes the test-cases.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Things that “PEOPLE THINK” could have prevented the re-write.
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating a dedicated automation testing group. This won’t work out because in the agile world , teams tend to be small and QAs tend to be less as well. Even if a manager creates a dedicated automation team , the members rarely pay attention to the functionally of the product. This happens because their success is determined by the number of cases translated rather than having a deep understanding of the product and no brainstorming in creating the correct suite of automation cases. This leads to mindless automation and huge suite of test cases . Violates the Test Pyramid&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Developers only writing automation suite. The same problems of the above point exists. Along with that the developers feel like “this code” is a second class citizen job (just because it doesn’t go to production) , and nobody wants to pay attention to it since devs fear that their career would change.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test automation gets treated as a second class career, sadly.&lt;/p&gt;

&lt;p&gt;Back to the title of the article, whose job is it anyway?&lt;/p&gt;

&lt;p&gt;First, test automation SHOULD NOT be treated as a pet project . Even if someone starts as a pet project, they should not go beyond 2 scenarios. The pet project should be presented infront of management and senior developers and need to be presented as a case that the project needs to be treated in the same way as a production code , and any engineer should be able to support it as and when required. An OATH taking ceremony needs to be done.&lt;/p&gt;

&lt;p&gt;Next, assuming the team comes to a consensus regarding the tech stack to be followed, taking a leaf from pair programming, a QA too should pair with a developer. The developer role can be rotated on periodic (sprint basis).&lt;/p&gt;

&lt;h1&gt;
  
  
  Following are the advantages of pair programming.
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Pair Programming makes sure that knowledge exchange happens. QA will be the driver, Dev would the navigator.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The developer makes sure that code quality remains high&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The rotation of developer makes sure that even if a QA resigns, the tests at least can be maintained until the next QA steps in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The automation tests slowly becomes the savoir of the masses for devs . They will make sure that these tests are run against their commits.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The QA on the other hand improves his own coding skills.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally the QA , who does the manual testing, also brainstorms in making the right choice of test cases and follow the test pyramid.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well that was my idea , I would like to know what others think about it.&lt;/p&gt;

&lt;p&gt;May be question still remains.&lt;/p&gt;

&lt;p&gt;Test Automation — whose job is it anyway?&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>softwaretesting</category>
      <category>projectmanagement</category>
      <category>discussions</category>
    </item>
  </channel>
</rss>
