<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programming Language &#8211; wisdom IT CONSULTING</title>
	<atom:link href="https://dev.wisdomignite.pt/itv2/category/programming-language/feed/" rel="self" type="application/rss+xml" />
	<link>https://dev.wisdomignite.pt/itv2</link>
	<description>Soluções de Informática para Empresas</description>
	<lastBuildDate>Thu, 26 May 2022 15:12:26 +0000</lastBuildDate>
	<language>pt-PT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.9</generator>

<image>
	<url>https://dev.wisdomignite.pt/itv2/wp-content/uploads/2019/06/cropped-favicon-wit-32x32.png</url>
	<title>Programming Language &#8211; wisdom IT CONSULTING</title>
	<link>https://dev.wisdomignite.pt/itv2</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Scrum Is Dead. All Hail Kanban, the New King</title>
		<link>https://dev.wisdomignite.pt/itv2/2020/09/15/scrum-is-dead-all-hail-kanban-the-new-king/</link>
					<comments>https://dev.wisdomignite.pt/itv2/2020/09/15/scrum-is-dead-all-hail-kanban-the-new-king/#respond</comments>
		
		<dc:creator><![CDATA[Emanuel Marques]]></dc:creator>
		<pubDate>Tue, 15 Sep 2020 11:38:17 +0000</pubDate>
				<category><![CDATA[Programming Language]]></category>
		<guid isPermaLink="false">https://dev.wisdomignite.pt/itv2/?p=26715</guid>

					<description><![CDATA[I’ve been using Scrum since the beginning of my career. This was the framework that I was taught in college as the best to manage software development. When I started working, I loved it all: daily meetings, planning, retrospectives, sprints, etc. After all, I was applying what I learned. After a few years, I started [...]]]></description>
										<content:encoded><![CDATA[
<p>I’ve been using Scrum since the beginning of my career. This was the framework that I was taught in college as the best to manage software development. When I started working, I loved it all: daily meetings, planning, retrospectives, sprints, etc. After all, I was applying what I learned.</p>



<p>After a few years, I started noticing one thing: In the last days of a sprint, everyone was rushing to deliver everything they had done in the previous two weeks to avoid carry-overs, frequently taking unnecessary risks.</p>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/servicos-e-solucoes/" target="_blank" rel="noreferrer noopener"><img decoding="async" width="875" height="583" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Scrum-Is-Dead-All-Hail-Kanban-the-New-King_1.jpg" alt="Scrum Is Dead. All Hail Kanban, the New King" class="wp-image-26721"/></a></figure>



<p>Why? Couldn’t some tasks wait for next week? Was the delivery of every task before the weekend that critical? No, it wasn’t. We did it because “Carry-overs are bad.”</p>



<h2 class="wp-block-heading" id="1406">Scrum Is Not Agile Enough</h2>



<p>I came to the conclusion that Scrum placed too much emphasis on process — or at least people paid to much attention to it:</p>



<ul><li>Delivering a story on the last day of a sprint was OK. But the next Monday, it was a carry-over.</li><li>If you needed to do unexpected work (bugs, problems in production, etc.), it would affect your time and consequently make you fail the commitment you made in the planning meeting.</li><li>The most used metric to evaluate success is commitment vs. done, which compares the stories that you committed at the beginning of the sprint and what stories you accomplished (I won’t even bother to mention what problems this can bring).</li></ul>



<p>Scrum was not guiding us anymore. It was limiting us.</p>



<p>With all the points mentioned above, the team started to feel frustrated, and it affected the quality of the work produced.&nbsp;People cared more about delivering in time than delivering with the desired level of quality.</p>



<p>At this point, we started to research other possible agile frameworks that would be a better fit for our work method.</p>



<p>We found Kanban.</p>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/servicos-e-solucoes/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="875" height="492" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Scrum-Is-Dead-All-Hail-Kanban-the-New-King_2.jpg" alt="Scrum Is Dead. All Hail Kanban, the New King" class="wp-image-26722"/></a></figure>



<h2 class="wp-block-heading" id="2d52">What Is Kanban?</h2>



<p>Kanban is a work management framework that was first introduced by the Toyota Production System back in the ’40s. At this time, Toyota used a visual board with three columns: Requested, In Progress, Done. This framework allowed Toyota to allocate resources better when there was a bottleneck in some areas in the production line.</p>



<p>Kanban was then adapted to the technology industry when people saw the benefits it could bring to the speed of delivery.</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading" id="ac34">Scrum vs. Kanban</h3>



<p>In recent years, Scrum and Kanban have been fighting for the position of the leading agile framework. Despite&nbsp;<a href="https://www.xpand-it.com/2018/10/11/top-5-agile-methodologies/" target="_blank" rel="noreferrer noopener">Scrum being the current #1 agile framework</a>, Kanban is becoming more adopted over the years. But how do these two frameworks compare?</p>



<p>Having Scrum as a base:</p>



<ul><li>Kanban has no timeboxed iterations (sprints).</li><li>Kanban does not require story estimation.</li><li>Kanbandoes not have the concept of commitment. Items enter the flow as they need to be done.</li><li>Kanbanprovides several metrics that measure the time that a story takes on the board.</li><li>Kanban does not require a Scrum Master (obviously).</li></ul>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/servicos-e-solucoes/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="875" height="840" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Scrum-Is-Dead-All-Hail-Kanban-the-New-King_3.jpg" alt="Scrum Is Dead. All Hail Kanban, the New King" class="wp-image-26717"/></a></figure>



<p>Kanban offers more&nbsp;flexibility&nbsp;to the team. Stories flow more freely than they would in Scrum. But with great freedom comes great responsibility. Despite not having a commitment every two weeks, other metrics must be used to evaluate the team’s performance, such as cycle time and throughput.</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading" id="c8a1">It’s All About Metrics</h2>



<p>You can’t measure your success (or lack thereof) without having metrics that allow you to assess your progress.</p>



<h3 class="wp-block-heading" id="012a">The Scrum metrics</h3>



<p>Scrum uses these metrics and graphs:</p>



<ul><li>Velocity: the number of story points delivered each sprint</li><li>Commitment vs. Done: the percentage of stories that were committed and delivered</li><li>Burndown chart: a graph that shows the evolution of the stories of a given sprint</li></ul>



<p>These metrics hardly help you to improve your workflow.</p>



<p>Velocitydoesn’t measure the speed of delivery. It counts the number of story points that were delivered. If a story ends up taking longer than estimated, this metric would no longer mean anything.</p>



<p>Commitment vs. Done should never be a metric. It compares what was delivered vs. what was committed. Needless to say, this can bring people to close and reopen tasks for them to be “Done.”</p>



<p>The burndown chart is something that I personally never paid too much attention to — mainly because it often looked like this:</p>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/servicos-e-solucoes/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="875" height="384" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Scrum-Is-Dead-All-Hail-Kanban-the-New-King_4.jpg" alt="Scrum Is Dead. All Hail Kanban, the New King" class="wp-image-26718"/></a></figure>



<p>Why does this happen? You begin with an empty board and start, let’s say, three stories in parallel. These stories are likely moving forward all at the same time, which means that you’ll see these massive drops in the burndown chart. Furthermore, if you have one tester who is supposed to test all the stories, you will have a bottleneck.</p>



<h3 class="wp-block-heading" id="a4fb">The Kanban metrics</h3>



<p>From my perspective, metrics are the strongest points of Kanban. It has a pool of different metrics that allow you to better understand what is going on with your team, such as:</p>



<ul><li>Throughput: the number of stories that are delivered within a given timespan</li><li>Cycle time: The number of days it takes to deliver a story after it is started. This uses confidence intervals. The most common to look at is 85% confidence.</li><li>Cumulative flow diagram: Allows you to have a visual look at how the stories flow in your board. It should look like a&nbsp;<em>combed whale.</em></li></ul>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/servicos-e-solucoes/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="875" height="438" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Scrum-Is-Dead-All-Hail-Kanban-the-New-King_5.jpg" alt="Scrum Is Dead. All Hail Kanban, the New King" class="wp-image-26719"/></a></figure>



<p> There is a plug-in for Jira that provides all these&nbsp;metrics&nbsp;out of the box. It is called&nbsp;<a rel="noreferrer noopener" href="https://marketplace.atlassian.com/apps/1216661/actionableagile-for-jira-agile-metrics?hosting=cloud&amp;tab=overview" target="_blank">ActionableAgile for Jira — Agile Metrics</a>. You can explore your team’s metrics using the same software you use to manage your work.</p>



<h4 class="wp-block-heading" id="3532">We Adapted It to Our Team</h4>



<p>Pure Kanban does not require you to do several activities that are necessary for Scrum. However, it gives you the flexibility to do them if you foresee value in adding them to your workflow.</p>



<p>Retrospective meetings are one of the most important meetings for a team. It’s where you can look to what you’ve accomplished, what didn’t go so well, and how you can improve. It’s a safe place where you can expose your problems and congratulate those who have done an excellent job.</p>



<p>Despite not being something required in Kanban (in Scrum, it is done at the end of each sprint), we saw value in it and kept it. In fact, we started to do them weekly instead of every two weeks, allowing us to have a quicker response when some problem arises. We also use these meetings to have a look over the team’s metrics and check for problems and bottlenecks.</p>



<p>Another optional activity that we chose to keep was the story estimation during the refinements. In Scrum, estimates are used to have a better understanding of what fits in a sprint. Since Kanban has no sprints, you would guess that this had no use.</p>



<p>Wrong!</p>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/servicos-e-solucoes/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="683" height="1024" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Scrum-Is-Dead-All-Hail-Kanban-the-New-King_6-683x1024.jpg" alt="Scrum Is Dead. All Hail Kanban, the New King" class="wp-image-26720"/></a></figure>



<p>Estimating a story helps to make sure that everyone has the same idea of what is to be done in a story. If someone votes 8 and other people vote 3, it’s clear that the story needs further discussion. Someone could be accounting for a problem that others are not aware of or the other way around, where someone includes extra work that is not to be considered in that story.</p>



<p>To estimate stimulates discussion.</p>



<p>When this happens, it’s clear that not everyone has a clear understanding of what needs to be done.</p>



<p>Another frequent scenario is when the whole team votes for high value (typically, everything above 8). A high value means uncertainty. There is either too much to do or the task has a high level of complexity that makes people uncomfortable. The best practice, in this case, is to split the story into smaller stories with more explicit objectives.</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading" id="e6b9">Final Thoughts</h2>



<p>Scrum will always have a place in our hearts as the first widespread agile methodology. But as companies are turning to continuous deployment, having a timeboxed sprint no longer makes sense.</p>



<p>There will always be some specific projects where Scrum is the way to go. As companies become more agile over time, though, Kanban will rise to replace Scrum as the most used agile framework.</p>



<p><strong>Original article published at medium.com. <a href="https://medium.com/better-programming/scrum-is-dead-all-hail-kanban-the-new-king-2cd6249feef8" target="_blank" rel="noreferrer noopener" aria-label="Read full article here (opens in a new tab)">Read full article here</a></strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.wisdomignite.pt/itv2/2020/09/15/scrum-is-dead-all-hail-kanban-the-new-king/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Are You a Hype-Driven Developer?</title>
		<link>https://dev.wisdomignite.pt/itv2/2020/09/04/are-you-a-hype-driven-developer/</link>
					<comments>https://dev.wisdomignite.pt/itv2/2020/09/04/are-you-a-hype-driven-developer/#respond</comments>
		
		<dc:creator><![CDATA[Sara Sampaio]]></dc:creator>
		<pubDate>Fri, 04 Sep 2020 10:13:34 +0000</pubDate>
				<category><![CDATA[Programming Language]]></category>
		<guid isPermaLink="false">https://dev.wisdomignite.pt/itv2/?p=26702</guid>

					<description><![CDATA[If you’re a developer, you’re probably a creature of creation — a person who loves solving problems and does it with a smile on your face. It’s what drives your soul into the climax of dopamine discharges. The software development world is an always-changing environment. Every year, thousands of new frameworks, technologies, and patterns enter [...]]]></description>
										<content:encoded><![CDATA[
<p>If you’re a developer, you’re probably a creature of creation — a person who loves solving problems and does it with a smile on your face. It’s what drives your soul into the climax of dopamine discharges.</p>



<p>The software development world is an always-changing environment. Every year, thousands of new frameworks, technologies, and patterns enter the market. These new options lead people to ask whether they&#8217;re using the right ones.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="875" height="559" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Are-You-a-Hype-Driven-Developer_1.jpg" alt="Are You a Hype-Driven Developer?" class="wp-image-26706"/></figure>



<p></p>



<blockquote class="wp-block-quote"><p><em>“Am I making a mistake by using an old framework when xpto is out now and claims to make my life a lot easier?”</em></p></blockquote>



<p>By their nature, a developer is a person who <strong><a href="https://dev.wisdomignite.pt/itv2/loja/" target="_blank" rel="noreferrer noopener" aria-label="loves technology (opens in a new tab)">loves technology</a></strong>. Even more so, when the technology is a new one that not many people have tried. Our thirst for knowledge and trying new things is insatiable. There’s a huge adrenaline rush flowing in our veins when we’re creating something new.</p>



<p>Excitement over your profession can be incredible — when correctly managed.</p>



<h2 class="has-text-align-center wp-block-heading">How Can Enthusiasm Over New Things Be Something to Worry About?</h2>



<p>It feels like a paradox. Why worry when our programmers are motivated, positive, and thrilled about something new?</p>



<p>Because excitement over a new solution, approach, technology, or pattern, can lead to people overlooking older solutions and claiming, “XPTO.js is the way to go. We should migrate the whole platform to this new framework now!”</p>



<p>The first time it happens, you may think: “OK, we’ll be spending a few months on the migration, but ultimately we’ll end up with a better, more up-to-date product.” After six months of doing nothing but migration, you finally return to focus on business-related features.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="684" height="1024" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Are-You-a-Hype-Driven-Developer_2-684x1024.jpg" alt="Are You a Hype-Driven Developer?" class="wp-image-26707"/></figure>



<p>One year later, a wild, unique, revolutionary, over-the-edge new database engine appears. Developers are whispering that this is the future and that we’ll be outdated if we don’t change from&nbsp;<em>QSL&nbsp;</em>to&nbsp;<em>Sacandra</em>.</p>



<p>But this time, migrating all the data brings more risks with it. You decide to take the risk. But instead of six months, your team takes <em>more than a year</em> to complete the migration. There were several differences of paradigm between the technologies. There was almost no information about it on the internet and no knowledge about it <strong><a href="https://dev.wisdomignite.pt/itv2/loja/" target="_blank" rel="noreferrer noopener" aria-label="within your team (opens in a new tab)">within your team</a></strong>. Consequently, your customer support got worse, since the engineering team was focused on migrating to a new technology, rather than serving the customers who keep the business alive.</p>



<h2 class="has-text-align-center wp-block-heading">This is Called Hype-Driven Development</h2>



<p><a rel="noreferrer noopener" href="https://medium.com/u/1ad34b4ecc2e?source=post_page-----368586c27051----------------------" target="_blank">Marek Kirejczyk</a>&nbsp;was one of the first (if not the actual first) people to introduce this topic. Hype-driven development (HDD) is developing software and making decisions based on what’s hot at the moment, rather than actual needs.</p>



<p>In his&nbsp;<a href="https://blog.daftcode.pl/hype-driven-development-3469fc2e9b22" target="_blank" rel="noreferrer noopener">article</a>, he mentions the various types of HDD, such as the&nbsp;<strong>conference driven developer,</strong>&nbsp;the&nbsp;<strong>stack overflow driven developer</strong>, or my personal favorite, the&nbsp;<strong>loudest guy driven decisions</strong>.</p>



<p>There are several examples of hype-driven development out there. Some include, but are not restricted to, NoSQL, Micro-service architectures, and JavaScript frameworks. In these three cases, we verified a lot of excitement around them. Entire conferences and forums went wild evangelizing these solutions. This led to people implementing them, often for the wrong reasons — because they looked cool, not because they actually needed them.</p>



<h3 class="has-text-align-center wp-block-heading">Make Conscious Decisions!</h3>



<p>Every framework/solution/pattern/technology was designed to solve a specific problem. Period. This doesn’t make them&nbsp;<em>better&nbsp;</em>than the others — they simply&nbsp;<em>solve a given problem better</em>.</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="820" height="1024" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/Are-You-a-Hype-Driven-Developer_3-820x1024.jpg" alt="Are You a Hype-Driven Developer?" class="wp-image-26708"/></figure>



<p>As a professional, you should always ask yourself what the best solution to your problem is. The answer cmay be the most recent, hot micro-service, or it may be the old, side-kicked, unloved monolith. It just depends on the problem you need to solve.</p>



<p><strong><em>There are no silver bullets.</em></strong></p>



<p>You will never <strong><a href="https://wisdomignite.pt/are-you-a-hype-driven-developer/" target="_blank" rel="noreferrer noopener" aria-label="find a solution (opens in a new tab)">find a solution</a></strong> that solves all of your problems. It simply does not exist. Every solution will have strong and weak points. When you advise someone to use a particular solution, make sure you match the problem to the most appropriate solution.</p>



<h3 class="has-text-align-center wp-block-heading">How to Detect a Hype-Driven Developer</h3>



<p>Bear in mind that often, hype-driven developers are not necessarily hype-driven all the time. is not an HDD all the time. Usually, it happens on topics of interest to the individual.</p>



<p>There are a few questions you can ask yourself to help you recognize when you’re making a decision based on hype:</p>



<ul><li>Are you aware of the trade-offs that the new solution brings?</li><li>Do you know the specific problem that it was designed to solve?</li><li>Does the solution have proven efficiency in solving a problem similar to yours?</li><li>Do you know the actual benefits the new solution will bring and how much time it will take to get a return on the investment of migrating?</li></ul>



<p>If you answer noto these questions, you’re probably making an emotional decision rather than a rational one. In this case, I advise you to meet with your team, expose the pros and cons of the migration, and check whether it pays off.</p>



<h4 class="has-text-align-center wp-block-heading"><strong>Final Notes</strong></h4>



<p>As a developer, you’re the <strong><a href="https://wisdomignite.pt/are-you-a-hype-driven-developer/" target="_blank" rel="noreferrer noopener" aria-label="source of truth (opens in a new tab)">source of truth</a></strong> when it comes to technical decisions. This power comes with the great responsibility of advising your management correctly.</p>



<p>Stay up-to-date with everything that’s released every year and make sure you understand the pros and cons of each. Be a&nbsp;<em>connoisseur</em>&nbsp;when it comes to technology — that’s the way to be a great engineer, not recommending something just because you heard about it at a conference.</p>



<h5 class="wp-block-heading"><strong>First posted at: medium.com</strong>. Original article&nbsp;<strong><a rel="noreferrer noopener" href="https://medium.com/better-programming/are-you-a-hype-driven-developer-368586c27051" target="_blank">here</a></strong></h5>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.wisdomignite.pt/itv2/2020/09/04/are-you-a-hype-driven-developer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>8 Misconceptions About Programmers That Will Change Your Opinion About Them</title>
		<link>https://dev.wisdomignite.pt/itv2/2020/08/28/8-misconceptions-about-programmers-that-will-change-your-opinion-about-them/</link>
					<comments>https://dev.wisdomignite.pt/itv2/2020/08/28/8-misconceptions-about-programmers-that-will-change-your-opinion-about-them/#respond</comments>
		
		<dc:creator><![CDATA[Emanuel Marques]]></dc:creator>
		<pubDate>Fri, 28 Aug 2020 16:24:59 +0000</pubDate>
				<category><![CDATA[Programming Language]]></category>
		<guid isPermaLink="false">https://dev.wisdomignite.pt/itv2/?p=26691</guid>

					<description><![CDATA[Programmers are often seen as non-human creatures that can do magic with their computers. Portraited in Hollywood movies as both the heroes and the villains, these people proceed with their life without being understood by other fellow humans. In a world that is depending more on technology each day that comes by, the need for [...]]]></description>
										<content:encoded><![CDATA[
<p>Programmers are often seen as non-human creatures that can do magic with <strong><a href="https://dev.wisdomignite.pt/itv2/loja/" target="_blank" rel="noreferrer noopener" aria-label="their computers (opens in a new tab)">their computers</a></strong>. Portraited in Hollywood movies as both the heroes and the villains, these people proceed with their life without being understood by other <strong><a href="https://dev.wisdomignite.pt/itv2/why-technology-wont-take-our-jobs-away/" target="_blank" rel="noreferrer noopener" aria-label="fellow humans (opens in a new tab)">fellow humans</a></strong>.</p>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/loja/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="700" height="466" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/8-Misconceptions-About-Programmers-That-Will-Change-Your-Opinion-About-Them_1.jpg" alt="8 Misconceptions About Programmers That Will Change Your Opinion About Them" class="wp-image-26697" /></a></figure>



<p>In a world that is depending more on technology each day that comes by, the need for IT professionals (let it be software engineers, infrastructure engineers, data scientists, etc.) is turning into an HR nightmare. Finding people that are also looking for a job is almost impossible, and it’s tough to compete with the salaries of the <strong><a href="https://dev.wisdomignite.pt/itv2/loja/" target="_blank" rel="noreferrer noopener" aria-label="big companies. (opens in a new tab)">big companies.</a></strong></p>



<p>However, these profiles are being built in universities like never before. The goal is to fight the need that exists in the market.</p>



<p>But somehow, society still has many misconceptions about what these people can do. I know I’ve heard many of these.</p>



<p>Here are the top misconceptions I have heard about the job I do.<br></p>



<h2 class="wp-block-heading" id="26ff">1. Programmers Can Hack My Webcam</h2>



<p>This is always fun to hear. And it appears to be motivated by Hollywood.</p>



<p>A programmer is someone that writes computer code and builds software applications. He is not (necessarily) a security expert that knows all the flaws and how to exploit them. And even if he was, that doesn’t mean that he would do that for the sake of looking cool. Most of them only try to exploit systems in a controlled environment while looking for failures that may need to be fixed.</p>



<p>Though a programmer could learn how to do this, most of them have better things to do than trying to hack your webcam.</p>



<p>You’re not that cool.</p>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/loja/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="700" height="350" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/8-Misconceptions-About-Programmers-That-Will-Change-Your-Opinion-About-Them_2.jpg" alt="8 Misconceptions About Programmers That Will Change Your Opinion About Them" class="wp-image-26694" /></a></figure>



<h2 class="wp-block-heading" id="d21b">2. Programmers Don’t Have a Life</h2>



<p>Remember Milton from Office Space? Do you think most programmers are introverts, no-lifers, hard-talkers as he is? Think again.</p>



<p>Most developers I’ve had the honor to know are the most hardcore rockers, binge-drinkers, and fun people I’ve ever known. Sure, there is every now and then someone that meets the “stereotype” correctly, but that is not even 1%.</p>



<p>Programmers usually like to meet to grab a few drinks after work on Friday to socialize and relax after a week of hard work.</p>



<h2 class="wp-block-heading" id="616c">3. Programmers Can Fix Your PC/Printer</h2>



<p>No, mom. I didn’t learn that in college.</p>



<p>Many people still think that someone that takes a degree in computer science should know everything that concerns computers, from hardware to software, peripherals, the best computer specs in the market, what cell phone they should buy.</p>



<p>No. Just stop.</p>



<p>You won’t ask an architect to fix your broken wall, are you? Then why ask a programmer to fix your broken PC? He won’t know anything that is not publicly accessible via Google.</p>



<p>Don’t be lazy. It’s not the programmer’s job to do your research for you.</p>



<h2 class="wp-block-heading" id="ac43">4. Programmers Are Very Intelligent People</h2>



<p>When people don’t understand something, they tend to believe that people who do are superior to them. “They must have a greater intellect in order to be able to understand this difficult matter” — they think.</p>



<p>Not the case.</p>



<p>I’m not going to lie. You have very bright minds in software engineering that can create beautiful logic and put it into code. But most are perfectly reasonable people that happen to like to create new things. Fortunately, they also chose the right area. I believe this happens in every profession. You have both outstanding professionals that turn their job into art, but most are regular people, doing their job.</p>



<p>Programmers are not superior beings with big brains. Probably anyone could do this job if they wanted to.</p>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/loja/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="500" height="749" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/8-Misconceptions-About-Programmers-That-Will-Change-Your-Opinion-About-Them_3.jpg" alt="8 Misconceptions About Programmers That Will Change Your Opinion About Them" class="wp-image-26695" /></a></figure>



<h2 class="wp-block-heading" id="5a89">5. Programming Is a Man’s Job</h2>



<p>I’ve heard this by many women friends of mine. Often, when they were talking about how hard it was to get a job in whatever the degree they had, and I suggested a career switch to software engineering.</p>



<p>This way of think is merely ridiculous.</p>



<p>In an age where everyone is fighting for equal rights, equal opportunities, and equal salaries, having someone discarding a career path because it was a “men’s job” is no longer acceptable.</p>



<p>Are there mostly men in going to these college degrees? Yes. Many men love this job.</p>



<p>Does that mean that women should discard that job? Absolutely not. The same way that a man shouldn’t feel intimidated to go to a nurse or education school (where the demographics are more female).</p>



<p>There is no reason for women to discard this career. If they do, it’s because they don’t want to become programmers — plain simple.</p>



<h2 class="wp-block-heading" id="d6d2">6. Programmers Are Great at Math</h2>



<p>The one moment where I really needed advanced math skills was at college, to finish all four math courses. Besides that, for about four years that I’ve been working as a Software Engineer, I never needed to use any advanced math to do my job.</p>



<p>This depends on what you are doing at the moment. If you work with VR or videogame development, you will need advanced math skills. But most of the jobs out there are not for these profiles. Usually are more enterprise applications that need maintenance and new features.</p>



<p>Long story short: if you’re bad at math and want to become a programmer, you will have a bad time during college (if you go to college), but it won’t affect you that much on your professional career.</p>



<h2 class="wp-block-heading" id="67ec">7. Programmers Spend All of Their Time Coding and Looking at Black Screens</h2>



<p>What if I told you that I have days where I don’t write a single line of code? You would probably ask: “What do you do, then?”</p>



<p>The job of a software engineer is much more than just writing code.</p>



<p>Before starting to write code, the team needs to plan, estimate, and analyze what is to be done. Plus, we have several meetings where the team gathers to decide how to solve a specific problem. On top of that, we also do code reviews and alignment meetings with other teams.</p>



<p>If you asked me what portion of my time I used to write code, I’d say about 40–50%. The rest of the time I’m doing other activities that require my attention to either allow me to do my job or unblock other people.</p>



<h2 class="wp-block-heading" id="a722">8. Programmers Know All the Code Syntax Out of Memory</h2>



<p>The process of coding is closer to a way of thinking than writing. The big challenge is to think like a machine and write the actions for the machine to execute.</p>



<p>No programmer writes as fast as you see in movies neither know all the syntax out of memory. We don’t need to. Google is here for a reason.</p>



<p>After some time using the same commands over and over again, many of them will get stuck in your head. But you don’t need to force yourself to memorize them.</p>



<p>With dozens of programming languages out there, it’s impossible to know the syntax of them all. But if you have the right way of thinking, you will just need to translate your thoughts to the language that you need. Plus, the syntax of most languages is very identical between each other.</p>



<hr class="wp-block-separator" />



<h3 class="wp-block-heading" id="8333">Final Thought</h3>



<p>Programming will become something that everyone knows a little bit about. In the same way that you have history lessons at school, you will also have programming lessons. Over time, that will turn into a better understanding of this activity, and fewer misconceptions will be made as a consequence.</p>



<p>It will also help with the lack of professionals that are needed in the market, by exposing kids to this profession, that many don’t get to know until college.</p>



<p><strong>8 Misconceptions About Programmers That Will Change Your Opinion About Them</strong> =&gt; Read the <strong><a href="https://levelup.gitconnected.com/8-misconceptions-about-programmers-that-will-change-your-opinion-about-them-67fbad1fd7b5" target="_blank" rel="noreferrer noopener" aria-label="original article here  (opens in a new tab)">original article here </a></strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.wisdomignite.pt/itv2/2020/08/28/8-misconceptions-about-programmers-that-will-change-your-opinion-about-them/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>You Will Never Get Rid of Legacy Code</title>
		<link>https://dev.wisdomignite.pt/itv2/2020/08/26/you-will-never-get-rid-of-legacy-code/</link>
					<comments>https://dev.wisdomignite.pt/itv2/2020/08/26/you-will-never-get-rid-of-legacy-code/#respond</comments>
		
		<dc:creator><![CDATA[Emanuel Marques]]></dc:creator>
		<pubDate>Wed, 26 Aug 2020 11:06:31 +0000</pubDate>
				<category><![CDATA[Programming Language]]></category>
		<category><![CDATA[legacy code analysis]]></category>
		<category><![CDATA[legacy code definition]]></category>
		<category><![CDATA[legacy code hell]]></category>
		<category><![CDATA[legacy code maintenance]]></category>
		<category><![CDATA[legacy code meaning]]></category>
		<guid isPermaLink="false">https://dev.wisdomignite.pt/itv2/?p=26641</guid>

					<description><![CDATA[Most of us have been there. Your company wants to re-do some of its components using the latest technology/architecture/patterns/rules/you name it. They say: “We need to kill legacy.” But what is this, really? According to&#160;Wikipedia, legacy code is: “Code inserted into modern software for the purpose of maintaining an older or previously supported feature.” In [...]]]></description>
										<content:encoded><![CDATA[
<p>Most of us have been there. Your company wants to re-do some of its components using the <strong><a href="https://dev.wisdomignite.pt/itv2/software-de-gestao-faturacao/" target="_blank" rel="noreferrer noopener" aria-label="latest technology (opens in a new tab)">latest technology</a></strong>/architecture/patterns/rules/you name it. They say: “We need to kill legacy.”</p>



<figure class="wp-block-image size-large"><img decoding="async" loading="lazy" width="1024" height="682" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/You-Will-Never-Get-Rid-of-Legacy-Code_1-1024x682.jpg" alt="You Will Never Get Rid of Legacy Code" class="wp-image-26646"/></figure>



<h2 class="wp-block-heading">But what is this, really?</h2>



<p>According to&nbsp;<a href="https://en.wikipedia.org/wiki/Legacy_code" target="_blank" rel="noreferrer noopener">Wikipedia</a>, legacy code is:</p>



<blockquote class="wp-block-quote"><p>“C<em>ode inserted into modern software for the purpose of maintaining an older or previously supported feature</em>.”</p></blockquote>



<p>In other words, code developed in different circumstances, to support an old feature that is part of your product.</p>



<p>In reality, the most common cause for this to happen is when reality changes. Software is developed, taking into account several requirements for each feature. These requirements are essentially from two types: functional and non-functional. The first type tightly connects to the business you are in. It reflects what your product is supposed to do, describing business rules and restrictions. The second type links to restrictions that are related to the environment of your business. It refers to problems such as availability, <strong><a href="https://dev.wisdomignite.pt/itv2/seguranca-videovigilancia-e-alarmes/" target="_blank" rel="noreferrer noopener" aria-label="security (opens in a new tab)">security</a></strong>, performance, and reliability.</p>



<p>When looking at these two types of requirements, it’s easy to see which one is more subject to change. As your business changes, your product also must change. Usually, this leads to changes in code that you initially didn’t think of, and causes it to have a more flawed design than you wished.</p>



<blockquote class="wp-block-quote"><p><em>Legacy code creation is directly proportional to the number of change requests that you get</em></p></blockquote>



<p>This relation brings a question: “If that’s true, how do you kill legacy when you’re in a highly volatile business?”</p>



<h4 class="wp-block-heading">Quick answer:&nbsp;<strong>you don’t.</strong>&nbsp;<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></h4>



<p>In this case, it is common for the business to change more often than you develop your product, which leads to having new features that are born legacy.</p>



<blockquote class="wp-block-quote"><p>If your product serves a highly volatile business, you don’t kill legacy. You manage it</p></blockquote>



<h2 class="wp-block-heading" id="526b">Managing legacy</h2>



<p>A legacy-free product is a product that serves no purpose. We all need to remember that software only exists to support specific business needs and that those needs will change. Frequently. That’s why the only software that can be legacy-free is the one that serves no business.</p>



<p>As much as you try, you will always have your fair share of legacy code. And that’s a good thing! It means that it is useful enough for someone to need a change.</p>



<h3 class="wp-block-heading" id="5b71">Isolate your legacy code</h3>



<p>Legacy code is typically code that was already tested in the most challenging environment of all: <strong><a href="https://dev.wisdomignite.pt/itv2/equipamentos-e-consumiveis/" target="_blank" rel="noreferrer noopener" aria-label="production (opens in a new tab)">production</a></strong>. It usually means that those features are stable and solve the problem, as described in the first requirements.</p>



<p>Avoid keeping maintenance on that code. If new requirements arrive, only then consider the migration to a new service.</p>



<h3 class="wp-block-heading" id="8f38">Understand the value of those features</h3>



<p>And I mean money-wise. Not personal or emotional value. If it is a significant part of your income, it may be worth the time to rethink how it should be implemented. But it’s common for the legacy features to have more costs than benefits. These costs increase even more when you take into account the maintenance costs. In this case, the best you can do is to set a date for that given feature to be deprecated. After that date, delete the code that is no longer used. Otherwise, it will cause entropy. And if you need it, you still have it in version control.</p>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/servicos-e-solucoes/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="625" height="417" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/You-Will-Never-Get-Rid-of-Legacy-Code_2.jpg" alt="You Will Never Get Rid of Legacy Code" class="wp-image-26647"/></a></figure>



<h2 class="wp-block-heading" id="89ef">Legacy Code vs. Technical Debt</h2>



<p> These two concepts are often mistakenly used. It is common to hear someone saying: “I hate to work in the application X because it is legacy.” This accusation is hardly true. A legacy product doesn’t necessarily have a poorly written code. One thing is an application that supports an old feature, designed for another reality. Another is an application that has lousy code, hard to read, and with dependencies all over the place. </p>



<h3 class="wp-block-heading" id="605c">But why are those concepts so often connected?</h3>



<p>Since 2008 we’ve seen a boom of startups rising from nowhere. Everyone went wild, implementing their ideas, and trying to put them to the market. “The early bird gets the worm” is an old proverb.</p>



<p>Most companies were competing with time itself and needed to put their product live as soon as possible.</p>



<blockquote class="wp-block-quote"><p><em>Rush is the enemy of perfection</em></p></blockquote>



<figure class="wp-block-image size-large"><a href="https://dev.wisdomignite.pt/itv2/servicos-e-solucoes/" target="_blank" rel="noreferrer noopener"><img decoding="async" loading="lazy" width="625" height="416" src="https://dev.wisdomignite.pt/itv2/wp-content/uploads/2022/05/You-Will-Never-Get-Rid-of-Legacy-Code_4.jpg" alt="You Will Never Get Rid of Legacy Code" class="wp-image-26648"/></a></figure>



<p>The business needs require any startup to have their products shipped before there was any time to think or evaluate possible alternatives to the fastest solution. It led to most MVPs to be shipped without much attention to code quality, especially when it comes to readability and scalability. There were other priorities in the game. That’s why most legacy products (which are common to be the company’s MVPs) are full of technical debt.</p>



<blockquote class="wp-block-quote"><p><em>But slowness is enemy of objective</em></p></blockquote>



<p>However, this is needed for a company to survive. As I mentioned before, any software is just a tool that supports a business. We should never forget that. If these startups didn’t place their products in the market as fast as they did, they would probably not be here anymore.</p>



<h2 class="wp-block-heading">Respect your legacy!</h2>
]]></content:encoded>
					
					<wfw:commentRss>https://dev.wisdomignite.pt/itv2/2020/08/26/you-will-never-get-rid-of-legacy-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
