<?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: The Lone Architect</title>
    <description>The latest articles on DEV Community by The Lone Architect (@thelonearchitect).</description>
    <link>https://dev.to/thelonearchitect</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%2F759418%2Fdfede9a7-bc93-4944-8415-b629f3a15bc1.png</url>
      <title>DEV Community: The Lone Architect</title>
      <link>https://dev.to/thelonearchitect</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thelonearchitect"/>
    <language>en</language>
    <item>
      <title>Automated Testing — A Primer for Software Engineers</title>
      <dc:creator>The Lone Architect</dc:creator>
      <pubDate>Mon, 28 Nov 2022 06:19:14 +0000</pubDate>
      <link>https://dev.to/thelonearchitect/automated-testing-a-primer-for-software-engineers-2924</link>
      <guid>https://dev.to/thelonearchitect/automated-testing-a-primer-for-software-engineers-2924</guid>
      <description>&lt;p&gt;Are you testing the apps you’re creating ? No matter how you think about it, there’s always someone doing so (unless no one uses your app, which is sad). And sooner or later, someone will notice a dysfunction. Some will ring the bell but most will just leave and never come back.&lt;/p&gt;

&lt;p&gt;What’s the conclusion ? The earlier you catch defects, the easier it is to solve and the cheaper it is for the company to run the business.&lt;/p&gt;

&lt;p&gt;And there’s different stages at which these defects can be caught, from worst to best :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Never : some just don’t happen, at least until now. And you can’t even measure the gravity of the bug before it happens.&lt;/li&gt;
&lt;li&gt;Once in the hands of end-users : and you’d be lucky if they have you noticed about it&lt;/li&gt;
&lt;li&gt;In the QA phase : if you have a dedicated team (which isn’t always the case), they may test your app against their own manual test suite, but that’s typically weeks after the code that provoked it was written.&lt;/li&gt;
&lt;li&gt;In the Build Pipeline : you may catch it by the end of the day or a few days after the code was committed and tested against various high-capacity tests&lt;/li&gt;
&lt;li&gt;Before the commit : typically minutes or hours after the code was written, so it’s still hot and is still easy to solve.&lt;/li&gt;
&lt;li&gt;During the code : that’s literally minute one. That’s the cheapest moment to solve the bug.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a few lines, we covered quite a few topics, all related :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manual Testing&lt;/li&gt;
&lt;li&gt;Automated Testing&lt;/li&gt;
&lt;li&gt;Test-Driven Development&lt;/li&gt;
&lt;li&gt;Continuous Delivery&lt;/li&gt;
&lt;li&gt;Unit Tests&lt;/li&gt;
&lt;li&gt;Integration Tests&lt;/li&gt;
&lt;li&gt;Acceptance Tests&lt;/li&gt;
&lt;li&gt;End-to-End Tests&lt;/li&gt;
&lt;li&gt;Smoke Tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If all of that sounds cloudy to you, then you’re at the right place. We’ll take a good peek and sum up at all things related to tests.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://blog.thelonearchitect.com/automated-testing-a-primer-for-software-engineers-343550f8f876" rel="noopener noreferrer"&gt;Read the rest of the article on blog.thelonearchitect.com&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>svelte</category>
      <category>react</category>
      <category>discuss</category>
    </item>
    <item>
      <title>A gentle introduction to Domain Driven Design</title>
      <dc:creator>The Lone Architect</dc:creator>
      <pubDate>Wed, 23 Nov 2022 02:07:54 +0000</pubDate>
      <link>https://dev.to/thelonearchitect/a-gentle-introduction-to-domain-driven-design-589e</link>
      <guid>https://dev.to/thelonearchitect/a-gentle-introduction-to-domain-driven-design-589e</guid>
      <description>&lt;p&gt;Starting into DDD is hard, even though it’s heavily praised by their practitioners. The topic is widely covered in the now infamous “Domain Driven Design” by Eric Evans (Blue Book) and “Implementing Domain Driven Design” by Vaughn Vernon (Red Book).&lt;/p&gt;

&lt;p&gt;Both of them are terribly verbose and thick, which is no surprise coming from &lt;a href="https://blog.jcore.com/2021/04/battling-javas-verbosity/"&gt;Java engineers&lt;/a&gt;. The material is dense and there’s a lot of noise around the main ideas, which makes the barrier to entry even bigger for newcomers. Many times, I’ve felt like i’m too stupid to understand what StackOverflow made obvious after few researches.&lt;/p&gt;

&lt;p&gt;Although the verbatim is complex, the ideas behind are rather simple and easy to grasp. When it “ticks”, it just becomes common sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  It’s all about the business
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W99XB_Kx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ip0g343tv0s687729h8d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W99XB_Kx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ip0g343tv0s687729h8d.jpg" alt="Image description" width="500" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s the main gist : &lt;strong&gt;domain model should be kept separate from the dangers of the outside world, and interfaces are the bridges connecting the dots&lt;/strong&gt;. That’s also the basis for Hexagonal Architecture, Clean Architecture, Onion Architecture, and all the other trademarked terms that more or less boil down to the same principles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They are all domain centric.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But Domain Driven Design takes it a step further and gives the tool to structure and develop the domain itself, while the others architectures are just a mean to encapsulate the domain. In other words, you can do Hexagonal without DDD, but you can’t really do DDD without layers around.&lt;/p&gt;

&lt;p&gt;I believe both the blue &amp;amp; red books are opaque about it. You’ll be tempted to believe you either go DDD or you don’t, there’s no in-between. Which is the reason I’ve been discouraged from trying DDD altogether.&lt;/p&gt;

&lt;p&gt;But Vlad Khononov took another approach. In his book “Learning Domain-Driven Design” (affiliated link), he starts with the very basic and foundational principles of DDD, which are Subdomains, Bounded Contexts and Aggregates. He then establish a scale of usability. Depending on the task at hand, you might not need to do DDD. For once, a book that introduces DDD and isn’t all-in.&lt;/p&gt;

&lt;p&gt;One shouldn’t use a complex tool for a trivial problem.&lt;/p&gt;

&lt;p&gt;I loved this approach and found it more genuine and useful than the other two books. Let’s see how it unfolds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;I am by no mean a DDD guru or expert, but rather a learner who condensed his knowledge inside this article. I hope to provide the kind of introduction I wish I had when I started this adventure. DDD is a complicated topic, so always double check your assumptions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@Ancyr/a-gentle-introduction-to-domain-driven-design-dc7cc169b1d"&gt;👉 Read the rest of the Article on Medium&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
