<?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: Victor Nascimento</title>
    <description>The latest articles on DEV Community by Victor Nascimento (@vjoao).</description>
    <link>https://dev.to/vjoao</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%2F174582%2F124a0b75-c4ff-4af3-b785-3e0b991bb2a5.jpeg</url>
      <title>DEV Community: Victor Nascimento</title>
      <link>https://dev.to/vjoao</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vjoao"/>
    <language>en</language>
    <item>
      <title>Greenfield projects are cursed</title>
      <dc:creator>Victor Nascimento</dc:creator>
      <pubDate>Tue, 22 Jun 2021 05:45:52 +0000</pubDate>
      <link>https://dev.to/vjoao/greenfield-projects-are-cursed-3k0p</link>
      <guid>https://dev.to/vjoao/greenfield-projects-are-cursed-3k0p</guid>
      <description>&lt;p&gt;Greenfield projects are considered the holy grail when talking about working somewhere. Of course, who would not want to contribute from the get go in shaping the project technologies of choice, architecture and starting bug-free (no code, no bugs, right?)?&lt;/p&gt;

&lt;p&gt;In my many years as a software engineer my experience aligns with most people, as I worked in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;small projects&lt;/li&gt;
&lt;li&gt;big projects&lt;/li&gt;
&lt;li&gt;maintenance mode&lt;/li&gt;
&lt;li&gt;greenfield&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking back, it is interesting to see how different types of projects are the compound investment of multiple people's ideas, (dis)agreements, (mis)communications. By compound investment one might think projects eventually give you good outputs and increasing benefits, but more often than not, instead of compound investment, a project is a result of accumulated and propagated errors. Disagreement and miscommunication - also bad ideas - are the main cause of project downfall. You likely know a project people dreaded to work on because "it is legacy code and the people that made it already left", right?&lt;/p&gt;

&lt;p&gt;Greenfield projects usually start with very good intentions. People get together to discuss what shall be the seed, the set of technologies, techniques and patterns being used to make sure the project won't derail from its intended purpose. But requirements change, and if you are in a fast-paced industry, they change a lot and quickly. And the project everyone was excited to work on starts to show signs of the same accumulated errors that insist to propagate through every iteration.&lt;/p&gt;

&lt;p&gt;There is an interesting quote from Nicolas Carlo that says "Legacy Code is the code you need to change and you struggle to understand". And why does that happen? I have a hypothesis:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;when you start a Greenfield you often have no idea of how the project, requirements and people involved will behave in the future. And when you reach the future and look back - now that you are more mature - you realize bad decisions have been made but changing them are too expensive.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;How many times have you seen some piece of code and thought "how could this be written this way"? But what you (potentially) fail to realize is that when a piece of code was written, the context around the past decisions was different and likely more immature. Just like with money, good decisions compound over time and bad decisions propagate over time. And just like money, tech debt is hard to pay back, especially in fast-paced environments. &lt;/p&gt;

&lt;p&gt;In conclusion, I tend to think Greenfield projects are great to work with, but it is likely that people and processes mistakes will carry over throughout the lifetime of the project. This is what makes them cursed from the start. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>The 3 kinds of developers</title>
      <dc:creator>Victor Nascimento</dc:creator>
      <pubDate>Sat, 07 Sep 2019 06:51:45 +0000</pubDate>
      <link>https://dev.to/vjoao/the-3-kinds-of-developers-1fnh</link>
      <guid>https://dev.to/vjoao/the-3-kinds-of-developers-1fnh</guid>
      <description>&lt;p&gt;Based on my software development experience over the years I have been able to identify mainly 3 types of developers, independently of seniority level.&lt;/p&gt;

&lt;h3&gt;
  
  
  The lazy
&lt;/h3&gt;

&lt;p&gt;All developers are somewhat lazy on their craft, but some belong to "The lazy" class. They do their job, sometimes they do their job well, but you can really identify them by how averse to change they are. Usually not looking for new things to do, following the "if it works, why change it?" mentality that can last for years. Probably the most common developer to find. &lt;/p&gt;

&lt;h3&gt;
  
  
  The curious
&lt;/h3&gt;

&lt;p&gt;They are diametrically opposite of "The lazy". They try to read and implement bleeding edge solutions to problems just for the sake of curiosity. They bring a positive view to the workplace by exploring new stuff every day and talking about it with their team. Usually they deliver quality work, always trying to improve themselves in the process having a great impact on the team and product. You probably met one or two - or belong to this class yourself - but this type is quite rare to encounter.&lt;/p&gt;

&lt;h3&gt;
  
  
  The liability
&lt;/h3&gt;

&lt;p&gt;They are a result of a bad hire. It makes the team think "how am I supposed to work with this developer?". Slowing down the team, asking for the most basic advice on well known / well documented things. Producing bad quality code with rookie mistakes even though they have been hired as seniors. They are usually non-communicative, misunderstanding and keep making wrong assumptions, a pain to work with. The worst part is they might not even realize they belong to this class until is too late and the damage is done already.&lt;/p&gt;

&lt;h3&gt;
  
  
  Afterthoughts
&lt;/h3&gt;

&lt;p&gt;A developer can transition between the 3 kinds throughout its career. In the end it's a matter of being the least amount of time as a liability to quickly become a valuable asset (the lazy) and maybe a stellar investment (the curious). &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
