<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>TDD - Tag - Nuno Sousa&#39;s Corner</title>
        <link>https://www.nunomtsousa.com/tags/tdd/</link>
        <description>TDD - Tag - Nuno Sousa&#39;s Corner</description>
        <generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>nuno.mt.sousa@gmail.com (Nuno Sousa)</managingEditor>
            <webMaster>nuno.mt.sousa@gmail.com (Nuno Sousa)</webMaster><lastBuildDate>Wed, 16 Oct 2024 09:08:17 &#43;0000</lastBuildDate><atom:link href="https://www.nunomtsousa.com/tags/tdd/" rel="self" type="application/rss+xml" /><item>
    <title>Block Puzzle — Color, Scores and Sound!</title>
    <link>https://www.nunomtsousa.com/posts/2024-10-16-blockpuzzlecolorscoresandsound/</link>
    <pubDate>Wed, 16 Oct 2024 09:08:17 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-10-16-blockpuzzlecolorscoresandsound/</guid>
    <description><![CDATA[<p>Welcome to the last installment of building a Block Puzzle! In our last <a href="https://www.nunomtsousa.com/posts/2024-10-06-blockpuzzlewecanplayit/" rel="">article</a>, we made the game playable, but it was a little monochromatic. Today, we will be changing that. We will add color, scores and sound. Finally, you’ll be able to play the game yourself!</p>
<h2 id="adding-some-color">Adding some color</h2>
<p>Adding some color to the game is quite easy. Since our game pieces use sprites that are made of string, we can simply <a href="https://github.com/nmtsousa/blocks/commit/7ac52721cea34afcf13e08ea5ef89dad7b954e72" target="_blank" rel="noopener noreffer ">make a mapping between a letter and a specific color</a>. With that mapping, each piece can have its own color, and our game bursts with color.</p>]]></description>
</item>
<item>
    <title>Block Puzzle — We can play it!</title>
    <link>https://www.nunomtsousa.com/posts/2024-10-06-blockpuzzlewecanplayit/</link>
    <pubDate>Sun, 06 Oct 2024 09:02:50 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-10-06-blockpuzzlewecanplayit/</guid>
    <description><![CDATA[<p>Welcome to another installment on building a Block Puzzle. We are continuing the series of articles that describe the process taken to develop a Tetris-like game.</p>
<p>In the <a href="https://www.nunomtsousa.com/posts/2024-09-25-blockpuzzlealmostplayable/" rel="">previous</a> article, we made the game almost playable. It was almost playable because we could interact with it, but the logic to remove completed lines was not there. In this article, we are going to add several types of pieces to the game and the logic that detects full lines and removes them.</p>]]></description>
</item>
<item>
    <title>Block Puzzle — Almost Playable</title>
    <link>https://www.nunomtsousa.com/posts/2024-09-25-blockpuzzlealmostplayable/</link>
    <pubDate>Wed, 25 Sep 2024 18:57:44 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-09-25-blockpuzzlealmostplayable/</guid>
    <description><![CDATA[<p>Welcome to another article on building a block puzzle. This is a series of articles that describe the process taken to develop a game similar to Tetris (you can find all parts of this series at the end of the article).</p>
<p>In the <a href="https://www.nunomtsousa.com/posts/2024-09-08-blockpuzzlebasegamelogic/" rel="">previous article</a>, we developed the base model for our game. In this article, we will be creating the UI for the game. The UI will use the model previously developed to make a playable game. It will not be the complete game, but having something you can use and play with enables faster feedback. We need feedback to know if the model is easy to use (it should be, because we wrote it using Test Driven Development), but we also need feedback on what&rsquo;s the next functionality that we should develop. I prefer to do development in small steps and collect feedback as I go, even when I am doing it alone.</p>]]></description>
</item>
<item>
    <title>Block Puzzle — Base Game Logic</title>
    <link>https://www.nunomtsousa.com/posts/2024-09-08-blockpuzzlebasegamelogic/</link>
    <pubDate>Sun, 08 Sep 2024 18:51:46 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-09-08-blockpuzzlebasegamelogic/</guid>
    <description><![CDATA[<p>In the <a href="https://www.nunomtsousa.com/posts/2024-09-03-blockpuzzlestartingprject/" rel="">previous article</a> on the Block Puzzle game, I showed how I intended to separate the game logic from its UI. The goal behind this separation is to make it easier to develop and test the game logic without having to do it manually via the UI. In this article, I will show how I am doing the unit tests without writing any UI or even having any dependency on UI code. Although the work was done in small steps, in this article I will explain the reasoning behind them in the hope that I can explain my reasoning behind doing it the way I did it.</p>]]></description>
</item>
<item>
    <title>Block Puzzle — Starting the Project</title>
    <link>https://www.nunomtsousa.com/posts/2024-09-03-blockpuzzlestartingprject/</link>
    <pubDate>Tue, 03 Sep 2024 18:48:42 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-09-03-blockpuzzlestartingprject/</guid>
    <description><![CDATA[<p>The first game idea that came to me was inspired by an <a href="https://www.youtube.com/watch?v=4sCSJW3hamE" target="_blank" rel="noopener noreffer ">YouTube</a> video I saw of <a href="https://www.youtube.com/@createdbykoko" target="_blank" rel="noopener noreffer ">Mitch Koko</a> programming a game in Flutter from scratch. The game was a Tetris, programmed in bulk without a lot of care for structure and tests. But that goes against most of the lessons I have collected over the years. I like structure and tests. I believe they allow me to go faster, but before that a small detour.</p>]]></description>
</item>
<item>
    <title>Practice Makes Perfect</title>
    <link>https://www.nunomtsousa.com/posts/2024-06-09-practicemakesperfect/</link>
    <pubDate>Thu, 09 May 2024 18:45:25 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-06-09-practicemakesperfect/</guid>
    <description><![CDATA[<p><strong>We have all heard the saying, Practice Makes Perfect. But does it apply to programming? To write tests? To software design? I believe so and I hope this articles makes you think about doing some Katas, some experiments, writing some side projects, and, if you’re brave, publishing them!</strong></p>
<p>Have you ever seen the <em>great ones</em> do some katas? See how the master works through the code and changes it so effortlessly? It seems like magic, doesn’t it? But they are just humans like us. Whether you follow <a href="https://martinfowler.com/articles/2024-refactoring-code-samples.html" target="_blank" rel="noopener noreffer ">Martin Fowler,</a> <a href="http://www.butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata" target="_blank" rel="noopener noreffer ">Robert &ldquo;Uncle Bob&rdquo; Martin</a> or <a href="https://codingdojo.org/kata/RomanNumerals/" target="_blank" rel="noopener noreffer ">Kent Beck</a>, you’ve probably seen some of their katas. If fact, you can find videos of them trying new techniques like we do, like seeing Kent Beck doing some <a href="https://www.youtube.com/watch?v=Aof0F9DvTFg" target="_blank" rel="noopener noreffer ">TCR (test &amp;&amp; commit || revert)</a>. It is through deliberate practice and being humble that they, and also we, can become better at what we do. We never know everything. There is always something we can learn and something we can improve. If we stop practicing and we assume we know it all, that is a good recipe to let our Ego destroy our careers and our lives.</p>]]></description>
</item>
<item>
    <title>TDD and Dependency Injection</title>
    <link>https://www.nunomtsousa.com/posts/2024-03-23-tdddependencyinjection/</link>
    <pubDate>Sat, 23 Mar 2024 18:29:45 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-03-23-tdddependencyinjection/</guid>
    <description><![CDATA[<h1 id="how-two-simple-techniques-can-make-a-big-difference-in-your-codinglife">How Two simple techniques can make a big difference in your coding life</h1>
<h2 id="tldr">TLDR;</h2>
<p>Test Driven Development (TDD) and Dependency Injection, or the Dependency Inversion Principle, go hand in hand. They seem to complement themselves. Getting proficient in their use is not hard: you just have to see an example and apply it. These techniques will make your code more modular and easier to test. On top of that, your dependencies will be visible, design smells will be clearer and your test pyramid will be an actual pyramid. In this article, we will see a simple example you can build upon in your daily work.</p>]]></description>
</item>
<item>
    <title>Defending The Case for Test Driven Development</title>
    <link>https://www.nunomtsousa.com/posts/2024-02-14-defendingtdd/</link>
    <pubDate>Sat, 24 Feb 2024 18:26:22 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-02-14-defendingtdd/</guid>
    <description><![CDATA[<p>Have you ever heard of Test Driven Development? You probably have. You have also probably seen people advocate for it and against it. I believe it has come the time for us to own it as a technique that enables us to make better software. Just remember not to go too dogmatic on it, to introduce some key performance indicators (a.k.a. code coverage), and to turn it into a bottleneck and an impediment to your progress. After all, we have to use the right tool and technique for each job, so don’t go on the radical side.</p>]]></description>
</item>
</channel>
</rss>
