<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Lorenzo Solano Martinez on Medium]]></title>
        <description><![CDATA[Stories by Lorenzo Solano Martinez on Medium]]></description>
        <link>https://medium.com/@lorenzo.sm?source=rss-53056e92ac48------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*3W_ITJCkriJ5wiodErLi3g.png</url>
            <title>Stories by Lorenzo Solano Martinez on Medium</title>
            <link>https://medium.com/@lorenzo.sm?source=rss-53056e92ac48------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 17:02:46 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@lorenzo.sm/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[“Tirar Código”]]></title>
            <link>https://medium.com/@lorenzo.sm/tirar-c%C3%B3digo-4fa006cfae1c?source=rss-53056e92ac48------2</link>
            <guid isPermaLink="false">https://medium.com/p/4fa006cfae1c</guid>
            <dc:creator><![CDATA[Lorenzo Solano Martinez]]></dc:creator>
            <pubDate>Fri, 25 May 2018 10:40:06 GMT</pubDate>
            <atom:updated>2018-05-25T10:40:06.088Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/822/1*nIb_pG7GC2UKjz3jzUe-9g.png" /></figure><p>Entre los años 1999 y 2000 me inicie en el mundo del desarrollo de software. Desde esos años vengo escuchando la frase “tirar código”. La misma hace referencia al acto de escribir código fuente o “programar”. No tengo claro de dónde viene la frase, ya que en el idioma Ingles (lingua franca de la Ingeniería de Software), se utilizan las frases <strong><em>“to code”</em></strong>, <strong><em>“to write code”</em></strong>, las cuales podrían traducirse como “codificar” (programar) y “escribir código”.</p><p>“Tirar código” es una frase común entre profesionales de distintas edades, se la he escuchado a personas nacidas en los 60 y llegando hasta el 2000. Un día, reflexionando sobre temas de calidad del software y mejores prácticas, me llego a la mente la frase y de pronto sonó inapropiada. En la República Dominicana cuando algo o alguien es “tirado” (adjetivo) tiene una connotación negativa: descuidado. “Pedro trabaja todo tirado”, o su versión más coloquial “Pedro trabaja to’ tira’o”, significa “Pedro es poco profesional o descuidado, no pone atención en los detalles”.</p><p>Anoche mientras le hacia la observación, repetida en muchos círculos, a un grupo de estudiantes universitarios de que cambien la frase “tirar código” por “escribir código”; me puse a pensar sobre cuales podrían ser los orígenes de la frase. Realmente me da mucha curiosidad el saber</p><p><strong><em>¿Cómo pasamos de “to code / to write code” a “tirar código”?</em></strong></p><p>Si alguien tiene, o cree tener, la respuesta o una idea favor escribir en los comentarios.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4fa006cfae1c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Software: How do you know when it is Green, Ripe, or Rotten?]]></title>
            <link>https://medium.com/@lorenzo.sm/software-how-do-you-know-when-it-is-green-ripe-or-rotten-42994cc9dcd1?source=rss-53056e92ac48------2</link>
            <guid isPermaLink="false">https://medium.com/p/42994cc9dcd1</guid>
            <category><![CDATA[how-to]]></category>
            <category><![CDATA[buy-software]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Lorenzo Solano Martinez]]></dc:creator>
            <pubDate>Sun, 29 Oct 2017 16:17:13 GMT</pubDate>
            <atom:updated>2017-10-29T16:17:13.534Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kqbeYvfN-EgQY-FJ6eQrtw.jpeg" /><figcaption>Farmers Market Fruit Stand, public domain image @ <a href="http://www.publicdomainpictures.net/view-image.php?image=149772&amp;picture=farmers-market-fruit-stand">http://www.publicdomainpictures.net/view-image.php?image=149772&amp;picture=farmers-market-fruit-stand</a></figcaption></figure><h3>How to buy fruits?</h3><p>When I was a child, I spent a lot of time with my grandmother. She was raised in a remote agriculture community of my country. So she was very experienced with agriculture products. I love fruit juices and she love to consent all her grandchildren. One of the earlier lessons that I learned was how to pick a good, ready to eat, fruit. There were “easy” ones, like mangoes. Even a child can tell when a mango is not ready to eat yet, ripe, or overripe. But I also face more difficult challenges like melons and passion fruits.</p><p>Those two have a similar little trick, as my grandmother teach me. You have to evaluate the outer layer, or skin, and look for overripe signs. If the outer layer was looks ripe, but firm, then you have to evaluate the inside of the fruit, without open it. Here comes the trick: you must shake the fruit near one of your ears and try to “listen” for the seeds to bounce and hit the inner cavity. If you feel or hear the seeds bouncing then there are good chances that the fruit was ready to eat.</p><p>You must have similar stories with culture and region specifics variations. There are other kind of “passed-on” skills like how to buy the best used car with a limited budget.</p><p>Now you could be a ground-up woman or man. You may be a c-level executive, a manager or any organizational role facing the decision of buy software products and / or services. And here comes the question: <strong><em>Do you know how to buy a software that is just “ready to eat”?</em></strong></p><h3>How to buy software?</h3><p>Unfortunately, our elders did not taught us how to buy a good piece of software: a “healthy” one. Now we are facing that problem, and each day it becomes bigger and bigger. The average executive does not know how to evaluate the quality attributes of a software product. The more versed ones only know how to ask for aesthetics (visual), usability (easy to use, responsiveness, etc.), and functional quality. So they know how to assess if a software is “easy to use”, “looks pretty” (as of the industry and user-base standards), and if presents the functional characteristics they need (modules, features, etc.).</p><p>But there are other quality characteristics of a software products less obvious to the end user. To keep this discussion out of the technical (software engineering) jargon, just imagine (as with the fruits), that software products have an “inside” meat, that needs to be assessed as well. This quality characteristics of the “inside” parts of the software are called <strong><em>Structural Quality Characteristics</em></strong>.</p><p>So, if you are not versed on how to evaluate the “insides” (structural quality) of a software product, do not worry. There are quantitative evaluations and even standards that can throw light into this matter. The last question will be: How to connect all this with my reality?</p><h3>What to do?</h3><p>Let’s say that you are a COO (Chief Operations Officers), or a CFO (Chief Financial Officers); and you are involved in a big project requiring the purchase of a very expensive software product. If you are not in a very specialized industry, there will be lots, or at least two, options. So you need to select the “mature” (not the green, or rotten) one. And remember that “mature” means “good in the outside and in the inside”. Here you need to ask for the experts.</p><p><strong><em>Your due diligence should be</em></strong> to demand that your IT staff, external organization, or an individual consultant bring together an assessment process that translate all this stuff into a simple, quantitative, decision matrix.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=42994cc9dcd1" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Business Value vs Effort]]></title>
            <link>https://medium.com/@lorenzo.sm/business-value-vs-effort-47573070d6c?source=rss-53056e92ac48------2</link>
            <guid isPermaLink="false">https://medium.com/p/47573070d6c</guid>
            <category><![CDATA[business-value]]></category>
            <category><![CDATA[agile]]></category>
            <category><![CDATA[software-estimation]]></category>
            <category><![CDATA[agile-scrum-methodology]]></category>
            <category><![CDATA[effort]]></category>
            <dc:creator><![CDATA[Lorenzo Solano Martinez]]></dc:creator>
            <pubDate>Thu, 01 Jun 2017 11:57:26 GMT</pubDate>
            <atom:updated>2017-06-01T13:32:45.647Z</atom:updated>
            <content:encoded><![CDATA[<p><em>( originally published on Tales of Agile Adoption blog </em><a href="https://goo.gl/0TNxzA"><em>https://goo.gl/0TNxzA</em></a><em> )</em></p><p>After a quick poll ( <a href="https://plus.google.com/+LorenzoSolano/posts/U6ZSU5t22vA">https://plus.google.com/+LorenzoSolano/posts/U6ZSU5t22vA</a> ), asking about the relation between Story Points and Business Value, I want talk about this misconception.</p><h3>Quick Definitions (context: Agile, Scrum, Software Development)</h3><h4>[Delivered] Business Value</h4><p>Increase on certain aspect of an organization, due to a change on some software product. That aspect could be a revenue stream, risk mitigation, etc.</p><p>In simple words, the delivered business value after an iteration / sprint is the increase on the business’s capacity to generate more money or to avoid certain losses (financial, reputational, etc.)</p><h4>Story Points</h4><p>The perceived amount of effort, for a development team, required to build certain feature into a software system.</p><p>The main concepts here are: perceived, and a [specific] development team. What this means is that the effort is subjective measurement, and that the “subject” on software team in the entire universe. You cannot compare on team to another in terms of how much Story Points (effort) they assign to a given feature to be built.</p><h3>Story Points and Business Value are Unrelated</h3><h4>Scenario</h4><p>Image two software development teams given the task estimate how much effort (not hours / time, not money), they as a team, will require to build the Feature X. Both teams have the exact same context (imaginary of course): they belong to the same organization, respond to the same stakeholders, work with the same technology stack, and with the same tools.</p><p>Where they differ is in their seniority (experience) level. So, we have a Beginner’s Team and a Senior’s Team. If you ask the beginners about the effort required to build Feature X, they will respond with an estimate much larger than the seniors.</p><p>For the point of view of the business owner, the value added to the organization by the Feature X (after construction), is the same. They just want the new functionality, no matter how hard or easy is for the builders to do it.</p><p>In a, less abstract, example; think of the amount of business value added by the Feature X, as a litter of fresh water in the desert. Imagine your family lives one mile away from the water well,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EVl_oRG2B_3SE1lsfW6uSQ.jpeg" /><figcaption><strong>( water well: “business value” holder )</strong><br>Bayuda Desert Well by Clemens Schmillen CC. <a href="https://commons.wikimedia.org/wiki/File:BayudaDesertWell.jpg">https://commons.wikimedia.org/wiki/File:BayudaDesertWell.jpg</a></figcaption></figure><p>and that you need to get that litter of water to cook the day’s meals. That’s your business value, you just need the water no matter how you get it.</p><p>Now comes the effort: if you must go by foot and bring the water to your house the effort required will be high.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PnZUCzRijrVfRHTepeA4Pg.jpeg" /><figcaption><strong>( effort required by the “Beginner’s Team” )</strong><br>Desert walk <a href="https://www.flickr.com/photos/maartmeester/5130198174">https://www.flickr.com/photos/maartmeester/5130198174</a> by Maarten van Maanen @ Flickr.com</figcaption></figure><p>But if you use a camel to go and get the water, the task becomes a little easy.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wdDetFiOb83qOVckfTDCGA.jpeg" /><figcaption><strong>( effort required by theExpert’s Team )</strong><br>Camel at desert <a href="https://pixabay.com/en/camel-desert-sand-mongolia-692648/">https://pixabay.com/en/camel-desert-sand-mongolia-692648/</a> by hbieser @ pixabay.com</figcaption></figure><h4>Conclusions</h4><p>From this, inadequate, comparison I want to point out some key takeaways:</p><ul><li>Do not compare teams per their average velocity (Story Points per Sprint)</li><li>Do not assume that one team is delivering more business value because they have a higher “velocity” that another</li><li>A team’s velocity is for their usage only</li><li>You can compare past to actual velocity, analyze trends, and respond to abrupt changes on velocity (up or down) as an indicator that something is happening: new members, rotation, infrastructure / technology stack changes, etc. Obviously, the comparison will be between measurements of the SAME TEAM, past and present.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=47573070d6c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Code Quality: Human variables in the equation]]></title>
            <link>https://medium.com/bettercode/code-quality-human-variables-in-the-equation-616e9d2e8980?source=rss-53056e92ac48------2</link>
            <guid isPermaLink="false">https://medium.com/p/616e9d2e8980</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[code-quality]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[better-code]]></category>
            <category><![CDATA[better-code-hub]]></category>
            <dc:creator><![CDATA[Lorenzo Solano Martinez]]></dc:creator>
            <pubDate>Thu, 11 Aug 2016 01:03:11 GMT</pubDate>
            <atom:updated>2016-08-18T09:11:00.828Z</atom:updated>
            <content:encoded><![CDATA[<h4>Herding Cats</h4><p>“Good” programmers are like cats. They are experts in a subject matter with a narrow vision. When cats are hunting (programming) they abstract so much of the task that they risk getting involved in dangerous situations. They climb too high or forget about natural environmental dangers. Maybe that’s why big cats almost always hunt in groups, with specific roles. At the end of the day (domestic) cats will hunt but with a high risk of get killed or seriously injured.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*VvgWU1QHJ1243JfoV5kKNw.jpeg" /><figcaption>By Jennifer Barnard (originally posted to Flickr as Prey) [CC BY 2.0 (<a href="http://creativecommons.org/licenses/by/2.0">http://creativecommons.org/licenses/by/2.0</a>)], via Wikimedia Commons</figcaption></figure><p>Most programmers act like cats, and their “prey” is to implement some functionality, usually with a very hard time constraint along with functional and performance expectations. That “prey” is marked (pointed to) by its manager. In that path they get into dangerous positions, and just like cats, they leave a messy code-base reducing the internal (structural) quality of the product.</p><h3>Who’s responsible?</h3><h4>The Software Engineer</h4><p>Some junior, or naïve, software developer can think that the only measure of quality is the functional one. Or they are young enough to never have to maintain a dirty (impossible to maintain) code base. But, as cats, they will only see the prey pointed by their manager or client. It can be a matter of the level of professionalism but if they are not required to write good, maintainable, code, then almost always they won’t.</p><p>On the other hand, we have the “crazy scientists” culture saying: “The best developers are mad scientist”. They are disorganized, un-ruled, bad team members, and fast builders.</p><h4>The Client</h4><p>Early in my career, I used to think that clients were guilty for not caring about the product (code) quality. They always want faster and cheaper development without thinking about the implications.</p><p>Let’s face it, clients will be clients. They only mind their own business. They want our software products to support their processes. And because an industrial mindset, they think that software maintenance is as simple as changing a defective machinery.</p><p><em>Bottom line:</em> stop blaming your client for the lack of quality, look in another direction.</p><h4>The Manager / CEO / CIO</h4><p>You have to understand your business. If you are building software and you don’t think that the code (internal) quality is important for your business, better start selling vacuums. If you focus your company and teams only around functional quality and super-fast development you are digging your own grave. In the near future the maintenance cost will drain all your revenues, will demoralize your teams and make your clients angry. If you are lucky enough, your employees and clients will leave you, without any legal implications.</p><p>Your clients don’t know anything about software. They’re only interested on the functional quality, and very few of them in performance and security issues. It is your job to create software that meet both the client’s imperative (functional quality), and your business needs (structural quality). You have to mark the target so your cats will get the right prey.</p><h4>A tool to train your cats: <a href="https://bettercodehub.com/">Better Code Hub</a> (https://bettercodehub.com)</h4><p>The Better Code Hub is a tool to check your code for structural quality issues. It helps you by checking a public GitHub project against a set of ten simple rules:</p><blockquote>1. Write Short Units of Code<br>2. Write Simple Units of Code<br>3. Write Code Once<br>4. Keep Unit Interfaces Small<br>5. Separate Concerns in Modules<br>6. Couple Architecture Components Loosely<br>7. Keep Architecture Components Balanced<br>8. Keep Your Codebase Small<br>9. Automate Tests<br>10. Write Clean Code</blockquote><p>For small projects it run the analysis in less than a minute. After that, you can check the results and improvement suggestions if you violate some of the principles.</p><h4><strong>Usage</strong></h4><p>The landing page shows you a grid with all your projects and last analysis summary. Each grid item has ten icons representing the principles above. If they are green you have no problem, if any is not green you can click and see more details about violations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IAQSyl5o2al9uhu2Gol97A.png" /><figcaption><strong>Better Code Hub</strong> landing page</figcaption></figure><p>To start you have to do only a few simple steps:<br><strong>1. Select the project you want to check and click “Analyze”</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nL1sqsi1tnbGVNDUiKzI2g.png" /><figcaption><strong>BCH:</strong> Selecting project to analyze</figcaption></figure><p><strong>2. Wait for the analysis to complete</strong><br><strong>3. When done, the page will redirect you to the details page</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WuL37h9F_MFR-1Y2ZXI3JA.png" /><figcaption><strong>BCH: </strong>Details (summary)</figcaption></figure><p>First (prev. image), it will show a summary indicating if some principles have violations. If you click on one, you’ll see the details.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*eaYSp9juqE8UO2Pjbgtsuw.png" /><figcaption><strong>BCH:</strong> Details on principle violations</figcaption></figure><h4>Seeing past results</h4><p>For already analyzed projects when you want to see again the details of the last analysis just click the “View Results” icon.</p><h4>Closing thoughts</h4><p>Managers and developers should seek to improve the structural quality of the product. Clients, especially those outside the software industry, do not care about internal quality. Is our task to seek efficient formulas to run our business in such a way that we can deliver both functional and structural quality ensuring a good profit on the long term. With tools like the Better Code Hub we are a little closer to that goal.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=616e9d2e8980" width="1" height="1" alt=""><hr><p><a href="https://medium.com/bettercode/code-quality-human-variables-in-the-equation-616e9d2e8980">Code Quality: Human variables in the equation</a> was originally published in <a href="https://medium.com/bettercode">Write BetterCode</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>