<?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>Lab</title>
	<atom:link href="https://renanmf.com/category/lab/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Software development, machine learning</description>
	<lastBuildDate>Wed, 12 Jan 2022 16:28:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://renanmf.com/wp-content/uploads/2020/03/cropped-android-chrome-512x512-2-32x32.png</url>
	<title>Lab</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Beware of excess of &#8220;best practices&#8221;</title>
		<link>https://renanmf.com/beware-of-excess-of-best-practices/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Wed, 12 Jan 2022 16:27:13 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3991</guid>

					<description><![CDATA[<p>Unlike other disciplines that are more rigid and regulated like Civil Engineering, Software Engineering doesn&#8217;t have a set of rules to follow by law enforcement. You won&#8217;t go to jail if you don&#8217;t do TDD (Test-Driven Design), or even write tests for your code. Your system can work just fine if you don&#8217;t follow any [&#8230;]</p>
<p>The content <a href="https://renanmf.com/beware-of-excess-of-best-practices/">Beware of excess of &#8220;best practices&#8221;</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Unlike other disciplines that are more rigid and regulated like Civil Engineering, Software Engineering doesn&#8217;t have a set of rules to follow by law enforcement.</p>
<p>You won&#8217;t go to jail if you don&#8217;t do TDD (Test-Driven Design), or even write tests for your code.</p>
<p>Your system can work just fine if you don&#8217;t follow any agile method.</p>
<p>You could deploy your next app in a bare-metal Linux machine instead of setting up Kubernetes on a cloud provider to autoscale your pods, and no one will complain about performance and such.</p>
<p>We have all read Clean Code, Clean Architecture, and some other &quot;bibles&quot; of the software development world which tell us what are the &quot;best practices&quot;.</p>
<p>We have all spent hours learning about Scrum or some similar methodology to manage a software project as opposed to old-fashioned cascade-like project management because that&#8217;s what works &quot;best&quot;.</p>
<p>We do tons of meetings, in Scrum alone we have: sprint planning, daily scrum, sprint review, and sprint retrospective.</p>
<p>There are days when I wonder if I attend meetings for a living instead of developing software.</p>
<p>So, what is all this rant about?</p>
<p>It is about not following blindly the so-called &quot;best practices&quot;.</p>
<p>I do X because Google does, I use Y because Facebook uses it.</p>
<p>This is a silly reason to do or use anything.</p>
<p>If you are not working with lots of people, in a huge project, with thousands of simultaneous users, following all the &quot;best practices&quot; can be a drawback instead of an advantage.</p>
<p>If you are working alone, in a small app with a handful of users, it is ok to commit directly into the main branch in your GitHub repo.</p>
<p>If your project is not database intensive, or only has to deal with very little data, you can use an embedded H2 database stored directly in your file system and it will work more than fine.</p>
<p>There are projects and teams where it makes sense to follow every single piece of advanced architecture and people management processes there are, but that&#8217;s totally not the case for your startup of three people.</p>
<p>It is easy to be misled by reading about the latest tech and thinking &quot;everybody is using this&quot;, when in fact they are not.</p>
<p><a href="https://renanmf.com/fomo-fear-of-missing-out-as-a-developer/">FOMO (Fear Of Missing Out) as a Developer</a> is real and you should be aware of this.</p>
<p>Choose the right tech for the right context in a rational way.</p>
<p>Choose the right project methodology for the right context in a rational way.</p>
<p>You don&#8217;t have to ditch Scrum in its entirety, you can adapt it and do only 2 of the meetings described instead of all of them.</p>
<p>You can spawn a cheap Linux VM and deploy your app by hand instead of spending hours setting up CI/CD for something you can do manually in 2 minutes.</p>
<p>If your app screen is a simple feature with one text field and a button (like Google&#8217;s home page), React/Angular/Vue is an overkill.</p>
<p>Learn all of those things, read the books, but use your best judgment to adapt the &quot;best practices&quot; to take advantage of what makes sense to your project and team, and not just because someone else said you should use it.</p>
<p>The content <a href="https://renanmf.com/beware-of-excess-of-best-practices/">Beware of excess of &#8220;best practices&#8221;</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The hard part is to continue</title>
		<link>https://renanmf.com/the-hard-part-is-to-continue/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Wed, 15 Dec 2021 22:25:03 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3702</guid>

					<description><![CDATA[<p>Starting out is easy, the hard part is to continue. Anything for a while is easy: Work out for a while Study for a while Diet for a while Work right for a while Take good care of the family for a while Save for a while Programming for a while For a while, everything [&#8230;]</p>
<p>The content <a href="https://renanmf.com/the-hard-part-is-to-continue/">The hard part is to continue</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Starting out is easy, the hard part is to continue.</p>
<p>Anything for a while is easy:</p>
<ul>
<li>Work out for a while</li>
<li>Study for a while</li>
<li>Diet for a while</li>
<li>Work right for a while</li>
<li>Take good care of the family for a while</li>
<li>Save for a while</li>
<li><strong>Programming for a while</strong></li>
</ul>
<p>For a while, everything is a piece of cake.</p>
<p>But what will get you there is not being brilliant for a while.</p>
<p>What takes you there is being consistent for a LONG time.</p>
<p>James Clear has an interesting take on this.</p>
<p>On the image below you can see how a tiny gain makes such a huge difference when compounded for long enough.</p>
<p>And also the opposite, how a tiny loss will throw you to 0 in the long run.</p>
<p><img decoding="async" src="https://renanmf.com/wp-content/uploads/2021/12/1_percent_better-e1639600795270.jpg" alt="" /></p>
<p>Liz Fosslien also illustrates this very well.</p>
<p>How seemingly small steps lead to big changes over time:</p>
<p><img decoding="async" src="https://renanmf.com/wp-content/uploads/2021/12/liz_small_steps-e1639600874413.jpeg" alt="" /></p>
<p>And finally, an illustration by Jack Butcher.</p>
<p>Where you can see how you put in a lot of work for some time and see no results and thinks &quot;This is pointless&quot;, and then, all of a sudden, you get some traction (this is especially true on the internet):</p>
<p><img decoding="async" src="https://renanmf.com/wp-content/uploads/2021/12/this_is_pointless-e1639600918965.png" alt="" /></p>
<p>Most people will never see curves like this in their own lives because they give up too soon.</p>
<p>The urge to give up quickly comes from the several examples of other people on the internet having results much faster, so one thinks that, if they are not getting results fast, they are just doing it wrong.</p>
<p>This is totally not the case.</p>
<p>These people are outliers, they just seem common because their word spreads fast on the web and makes you think that&#8217;s the norm when it&#8217;s not.</p>
<p>Everyone talks about their successes, few talk about their failures, simple human nature.</p>
<p>Everyone has their own rhythm, and the rule of thumb here is that you have to give a lot before asking for anything.</p>
<p>It&#8217;s very easy to get started when we&#8217;re excited.</p>
<p>Then it becomes a routine and the excitement is gone.</p>
<p>Only those with the discipline to go through the excitement abyss will reap the rewards of their effort.</p>
<p><a href="https://renanmf.com/learning-programming-is-non-linear/">Learning Programming is Non-Linear</a>, so you might feel stuck here and there, but this shouldn&#8217;t discourage you from learning and persevering.</p>
<p>By showing up every day you are already ahead of the majority of people.</p>
<p>You have to survive long enough in any game to start being noticed.</p>
<p>And a big chunk of any success is being present.</p>
<p>So don&#8217;t give up too quickly.</p>
<p>The hard part is to continue.</p>
<p>The content <a href="https://renanmf.com/the-hard-part-is-to-continue/">The hard part is to continue</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Learning Programming is Non-Linear</title>
		<link>https://renanmf.com/learning-programming-is-non-linear/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Tue, 16 Nov 2021 19:15:36 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3872</guid>

					<description><![CDATA[<p>Learning is by no means a linear process, even in hard sciences like Math. It is very common to see people asking in groups, Reddit, and other forum-like places &#34;What path should I take to become a Software Developer&#34;. Unfortunately, learning programming is not linear. You will find many lists and articles giving you a [&#8230;]</p>
<p>The content <a href="https://renanmf.com/learning-programming-is-non-linear/">Learning Programming is Non-Linear</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Learning is by no means a linear process, even in hard sciences like Math.</p>
<p>It is very common to see people asking in groups, Reddit, and other forum-like places &quot;What path should I take to become a Software Developer&quot;.</p>
<p>Unfortunately, learning programming is not linear.</p>
<p>You will find many lists and articles giving you a path like: learn HTML, CSS, JavaScript&#8230;</p>
<p>They are not wrong in the sense that you should learn JavaScript before React, but they don&#8217;t warn you that you should not worry about mastering the previous topic before jumping to the next.</p>
<p>Those topics are all interconnected, which means they will &quot;click&quot; in your head only after you have some knowledge of each topic.</p>
<p>Learn some JavaScript and then some React.</p>
<p>If you decide to &quot;master&quot; Python before trying Django, good luck, you will never get to Django.</p>
<p>Python is a massive language, you can learn the basics very quickly, but mastering it is another matter.</p>
<p>That is what I had in mind when I wrote <a href="https://renanmf.com/python-guide-beginners/">The Python Guide for Beginners</a>.</p>
<p>You can learn the core of the language as fast as possible, and then move on to dive into Web Development, Data Science, or general use of Python as a programming language to automate your everyday tasks.</p>
<p>If you choose, say, Machine Learning, you will need to understand some details of the language specifically for some tasks, but you will have enough knowledge of the basics to google yourself out of any situation.</p>
<p>The &quot;click&quot; also happens as you expand your arsenal of tools.</p>
<p><a href="https://renanmf.com/learn-more-than-one-programming-language/">Learn More Than One Programming Language</a> and some concepts that you learned in language X will make much more sense after you learn language Y.</p>
<p>I&#8217;m challenging myself at the moment to dive more into web3, which is a new realm of software development and solutions revolving around blockchain and the crypto space.</p>
<p>Adaptation is <a href="https://renanmf.com/the-top-skill-for-a-software-developer/">The Top Skill for a Software Developer</a> and you have to keep improving yourself as new opportunities arise.</p>
<p>This means I won&#8217;t waste hundreds of hours to learn Solidity or understand every single concept about Smart Contracts.</p>
<p><a href="https://renanmf.com/the-only-way-to-learn-programming/">The Only Way To Learn Programming</a> is to take action with what you know.</p>
<p>So I will learn some things, apply them to a project and then I will be able to adapt myself to any situation that comes to me.</p>
<p>If you wait until you are 100% prepared, you will be already too late to take the best opportunities.</p>
<p>The content <a href="https://renanmf.com/learning-programming-is-non-linear/">Learning Programming is Non-Linear</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Top Skill for a Software Developer</title>
		<link>https://renanmf.com/the-top-skill-for-a-software-developer/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Wed, 22 Sep 2021 04:00:12 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3820</guid>

					<description><![CDATA[<p>The #1 skill for a Software Developer is Adaptability or Learn to Learn (fast). If your career is long enough, after the frustration of seeing your favorite framework become &#34;uncool&#34; a few times, you will start to not care anymore. Life is an ever-changing event, just like tech stacks. Learn to adapt on the fly, [&#8230;]</p>
<p>The content <a href="https://renanmf.com/the-top-skill-for-a-software-developer/">The Top Skill for a Software Developer</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The #1 skill for a Software Developer is Adaptability or Learn to Learn (fast).</p>
<p>If your career is long enough, after the frustration of seeing your favorite framework become &quot;uncool&quot; a few times, you will start to not care anymore.</p>
<p>Life is an ever-changing event, just like tech stacks.</p>
<p>Learn to adapt on the fly, don’t expect to be 100% prepared, you never will be.</p>
<h2>Tech Fatigue</h2>
<p>Many people complain about tech fatigue.</p>
<p>The feeling that you have to spend all of your time learning to keep up with the pace.</p>
<p>They think every hype will catch on when most will actually just fade away.</p>
<p>People say Java will die since I started programming more than 10 years ago, the market for Java is still going strong and it remains a top language in the software development market.</p>
<p>As of today, the languages I work the most with are Python, Java, JavaScript, SQL, and Shell Script.</p>
<p>In terms of frontend frameworks, I work only with Angular.</p>
<p>Not because I dislike React and Vue, or any of the others.</p>
<p>I took my time to learn React back in 2017, but was never hired to work on it simply because there was a lot of demand for the techs I already knew, including Angular.</p>
<p>I would have to relearn React again to use it effectively, which is fine if that&#8217;s the case.</p>
<p>At the time I was getting lots of gigs to work with Java on the backend and it is usually paired with Angular.</p>
<p>So I just use with what the client demands.</p>
<p>If I receive an offer to work with React, I will gladly take it, learn on the go and this will not be the first time this happens and surely not the last.</p>
<p>When people ask &quot;What do you choose to learn in the vast sea of tech?&quot;.</p>
<p>I answer: &quot;The one the client demands and pays for&quot;.</p>
<p>I picked Angular back in 2016 due to a client request.</p>
<p>I&#8217;m a professional and my work is to deliver what the client needs/wants.</p>
<p>Following the trends and act accordingly is one thing, wasting your life learning something you will never use is another thing.</p>
<h2>Always Learning vs Adaptation</h2>
<p>When people think about &quot;Always Learning&quot;, they think about taking time to study every day or every week.</p>
<p>To keep &quot;Always Learning&quot; is in fact a matter of adaptation.</p>
<p>It doesn’t matter how much you study, you will never know everything you need to know.</p>
<p>Backend, Frontend, Infrastructure, Machine Learning, etc.</p>
<p>Any of these areas are big enough for you to spend the rest of your life digging and getting better at.</p>
<p>Adaptation is the true differentiator of a professional Software Developer.</p>
<p>How fast can you learn the skills needed for a situation you were not previously prepared for?</p>
<p>Having your basics in place is what gives you the power to fluctuate among different tools.</p>
<p>The process of learning top-down is nice, but learning bottom-up takes you further.</p>
<p>Get to know JavaScript, and React or Angular or Vue will be a matter of simple choice in a given situation, not a dreadful moment.</p>
<p>You don’t need to be an expert to deliver a lot.</p>
<p><strong>Remember to <a href="https://renanmf.com/newsletter/">subscribe to my newsletter</a>.</strong></p>
<p>The content <a href="https://renanmf.com/the-top-skill-for-a-software-developer/">The Top Skill for a Software Developer</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The side project myth is getting out of control</title>
		<link>https://renanmf.com/the-side-project-myth-is-getting-out-of-control/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Wed, 25 Aug 2021 12:52:21 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3743</guid>

					<description><![CDATA[<p>I was reading this thread on Hackernews about Recruiters want people who do side projects, yet contracts forbid them?. The discussion is very interesting and boils down to &#34;Does it even make sense to spend time on side projects or open source for employment purposes?&#34;. This response caught my eye and is something that I [&#8230;]</p>
<p>The content <a href="https://renanmf.com/the-side-project-myth-is-getting-out-of-control/">The side project myth is getting out of control</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I was reading this thread on Hackernews about <a href="https://news.ycombinator.com/item?id=27843198">Recruiters want people who do side projects, yet contracts forbid them?</a>.</p>
<p>The discussion is very interesting and boils down to &quot;Does it even make sense to spend time on side projects or open source for employment purposes?&quot;.</p>
<p>This response caught my eye and is something that I can agree on to some level since I have done some hiring myself even though this never was my main occupation:</p>
<p><img decoding="async" src="https://renanmf.com/wp-content/uploads/2021/07/side_project_out_of_control.jpeg" alt="" /></p>
<p>If you enjoy the craft of software development itself, sure, work some extra time and have fun if that is what makes you happy.</p>
<p>But forcefully taking this kind of unpaid work as a means of getting a job makes no sense.</p>
<p>The reason why we hear this kind of myth a lot is because this is mostly propagated by random Startups that just raised tons of money and have zero clues on how to do hiring decently.</p>
<p>So the common sense would be to just &quot;check your repos on GitHub&quot; or give you a crazy home assignment that will take a week to finish.</p>
<p>I do think home assignments make sense to a certain degree if they take no more than a couple of hours, maybe 4 hours tops, but this would be ok only if the job is really worth it, not those generic jobs in generic companies.</p>
<p>For those assignments that take days, they must be paid.</p>
<p>I have worked in big companies and all of my work as a developer is inside organizations like this, nothing super fancy to show publicly, and most of the time I can&#8217;t even share due to confidentiality issues.</p>
<p>Even startups make you sign things like NDA to protect their intellectual property, but they expect you to have a public portfolio.</p>
<p>When are you going to do that?</p>
<p>After a full day of work, for free?</p>
<p>People need to take care of their family, needs, hobbies, mental health, life goals, etc when they&#8217;re offline.</p>
<p>Again, if you like it, fine, code some more when you get home after a day&#8217;s worth of coding at your full-time job.</p>
<p>But this should not be something you should worry about if you don&#8217;t feel like it.</p>
<p>The closest I have personally of a public portfolio is my <a href="https://renanmf.com">blog</a>, where I write on a schedule that makes sense to me.</p>
<p>And even then, this is different since the effort to create content is different from the effort of coding professionally.</p>
<p>My blog has been enough to help grant me some gigs, but if you ask me for fully coded systems to show, I won&#8217;t have any since they belong to someone that hired me.</p>
<p>I do have some toy projects that I develop when I&#8217;m learning something, but no hiring manager is gonna give me kudos for those simple apps, at least not for senior positions which are the ones I look at.</p>
<p>If you ask me, instead of creating side projects just for the sake of it, at least use this time and opportunity cost to try and create something useful.</p>
<p>Try to build an actual app, for actual users, a real business.</p>
<p>If it flops, you have a great learning experience in your belt to share with an employer.</p>
<p>Not just coding-related, but also involving time management, marketing, feature prioritization, interesting technical problems that make sense, and not just because they are &quot;cool tech&quot;.</p>
<p>And, if your project works, you are going to have a huge chance to make some income and never have to go find a job ever again.</p>
<p>I talk about it some more on <a href="https://renanmf.com/side-projects-and-small-bets-as-a-developer/">Side Projects and Small Bets as a Developer</a> and <a href="https://renanmf.com/a-portfolio-of-small-bets/">A Portfolio of Small Bets</a>.</p>
<p>The content <a href="https://renanmf.com/the-side-project-myth-is-getting-out-of-control/">The side project myth is getting out of control</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Do you want to be a Developer?</title>
		<link>https://renanmf.com/do-you-want-to-be-a-developer/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Tue, 10 Aug 2021 17:53:06 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3765</guid>

					<description><![CDATA[<p>Maybe you are trying to enter the tech field with the thought of &#34;Hey, I want to work in tech, I want to be a Developer&#34;. Tech is all the hype these days and the first career option that pops up when you google it is Software Developer. But do you really want to be [&#8230;]</p>
<p>The content <a href="https://renanmf.com/do-you-want-to-be-a-developer/">Do you want to be a Developer?</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Maybe you are trying to enter the tech field with the thought of &quot;Hey, I want to work in tech, I want to be a Developer&quot;.</p>
<p>Tech is all the hype these days and the first career option that pops up when you google it is Software Developer.</p>
<p>But do you really want to be a developer?</p>
<p>There is more than one way to work in tech and the role of Software Developer is just one of them.</p>
<p>I will present to you some of the most common possibilities for a career in tech.</p>
<p>Of course, I won&#8217;t cover them all and all of the possible variations, but this should give you an idea of how broad a career in tech can be and that you have options.</p>
<h2>Backend, Frontend or FullStack</h2>
<p>The Software Developer role itself has different subdivisions with specific tasks and responsibilities.</p>
<p>Frontend Developers worry about the presentation layer of the application.</p>
<p>They think about visual components and work with HTML, CSS, and JavaScript as their core techs.</p>
<p>For more complex apps, frameworks or libs like Angular, React or Vue are common.</p>
<p>Backend Developers on the other hand have to deal with the business layer of the application and worry about things like scaling the app for multiple users, databases, and work with a range of different programming languages from implementations and integrations.</p>
<p>FullStack Developers are a mix of Frontend and Backend Developers who usually specialize in a particular stack.</p>
<h2>Database Administrator (DBA)</h2>
<p>Even though Backend Developers deal with databases, their job is more related to working with databases as users or consumers of the database.</p>
<p>While Database  Administrators work on more specific tasks like backup routines, optimization of the database system itself, help developers in the optimation of queries, and the most important task is to keep the data safe and sound.</p>
<p>DBAs usually work with more than one kind of database, like PostgreSQL and Oracle, but they tend to specialize in one of them.</p>
<p>That means that is not hard to see DBAs with specific titles lik &quot;SQL Server DBA&quot; or &quot;Oracle DBA&quot;.</p>
<h2>SysAdmin</h2>
<p>For simple infrastructure settings, the developer alone can go long way before having problems.</p>
<p>But as soon as things start to get really complex, a good SysAdmin is required.</p>
<p>Someone who manages the servers, the deploys, helps the development team with CI/CD pipelines.</p>
<p>SysAdmins these days work in very diverse environments, from traditional VM-based infrastructures, passing by self-managed Kubernetes clusters for the deployment of Docker images, until full cloud-based solutions.</p>
<p>The combination of Kubernetes and Docker as a specialization is interesting in the sense of freedom from platform-specific knowledge at the cost of doing a lot of configurations and management by hand.</p>
<p>When dealing with the cloud, even if they do have experience with different providers, they will at some point specialize in AWS, Azure, GCP, or any other popular cloud provider, due to the increasing complexity of cloud systems and solutions.</p>
<h2>Data and Machine Learning Roles</h2>
<p>You might also want to work with Artificial Intelligence and its many different paths.</p>
<p>You can work as a Data Scientist, understanding the data, creating models for predictions, and diving into statistics and math.</p>
<p>A Machine Learning Engineer works on the deployment of the models, how to serve them better in production, and other infrastructure issues.</p>
<p>You can also work with Business Intelligence solutions such as PowerBI and Tableau as a Data Analyst.</p>
<p>Having a deep knowledge of a specific field is a huge plus for a Data Analyst.</p>
<h2>User Experience (UX) Designer</h2>
<p>If you are a people person, working as a UX designer is a job you can excel at.</p>
<p>UX designers focus on the interaction that users have with products, like websites, apps, and physical objects. </p>
<p>They make those everyday interactions useful, enjoyable, and accessible.</p>
<h2>Project Manager or Product Manager</h2>
<p>Last but not least, if you are not or do not want to be in a very technical role, you can go the management route.</p>
<p>A project Manager or Product Manager can be a perfect fit for you and they have very distinct lines of work, despite the names being similar.</p>
<p>Project Managers deal with things such as risk and issue management, planning and resource scheduling, and scope management.</p>
<p>Product Managers on the other hand work by creating roadmaps for a given product, defining and prioritizing features, and talking to users to understand their problems and gather requirements.</p>
<p>In this article, I talked about <a href="https://renanmf.com/how-i-became-a-certified-project-management-professional-pmp-by-the-pmi-in-2-months/">How I became a certified Project Management Professional (PMP) by PMI in 2 months</a>.</p>
<h2>Check the alternatives</h2>
<p>There are tons of alternatives to work in the tech space.</p>
<p>I have presented you with some very good options that might fit you, but this list is far from exhaustive.</p>
<p>If working directly with code doesn&#8217;t make much sense to you, don&#8217;t get stuck, maybe you should just try something else and the alternatives are so many that you will find your perfect fit.</p>
<p>Of course, to excel at any of those jobs you will have to work and study a lot, just as much as you would to become a professional Software Developer, so if things don&#8217;t click at the beginning, keep going and don&#8217;t just give it up.</p>
<p>The content <a href="https://renanmf.com/do-you-want-to-be-a-developer/">Do you want to be a Developer?</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Edge Cases are the hardest parts of a Developer&#8217;s job</title>
		<link>https://renanmf.com/edge-cases-hardest-parts-developers-job/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Wed, 14 Jul 2021 12:47:11 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3724</guid>

					<description><![CDATA[<p>If you are a developer with not much experience you might feel like a lot of the parts of your job are really hard. The framework doesn&#8217;t behave as it should. The database is locking. The language you are using has a weird way to deal with some situations that should be simpler or easier. [&#8230;]</p>
<p>The content <a href="https://renanmf.com/edge-cases-hardest-parts-developers-job/">Edge Cases are the hardest parts of a Developer&#8217;s job</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>If you are a developer with not much experience you might feel like a lot of the parts of your job are really hard.</p>
<p>The framework doesn&#8217;t behave as it should.</p>
<p>The database is locking.</p>
<p>The language you are using has a weird way to deal with some situations that should be simpler or easier.</p>
<p>Maybe you are fighting to center that div on your screen.</p>
<p>All of those problems are legitimate and can drive you crazy.</p>
<p>But once you get past these issues and become a master of your tools and how they behave in each and every situation then, and only then, you will feel the <strong>hardest</strong> part of a developer&#8217;s job: Edge Cases.</p>
<h2>What I mean by edge cases?</h2>
<p>An edge case is a situation that you (and maybe not even your end-user) never thought would happen.</p>
<p>You create a page where everything fits perfectly, you test it on mobile, on your computer, and on your super-sized TV, great!</p>
<p>And then you deploy your app in production to find out how a user is having rendering issues when using Safari on an iPad and, curiously, on the same iPad, it works perfectly on Firefox, go figure.</p>
<p><strong>Edge Cases are the hardest parts of a Developer&#8217;s job.</strong></p>
<p>The previous example is quite technical, but you got the idea.</p>
<p>The same rationale applies to any layer of your app.</p>
<p>If you implement business logic in your backend, you have to think about all of the possible combinations that might happen and test each and every one of them for your system to work bug-free.</p>
<p>Most problems in software arise from edge cases.</p>
<h2>How to identify and avoid problems with Edge Cases?</h2>
<p>Communication.</p>
<p>When writing business logic, the first thing to do to catch edge cases is to talk with your users, customers, clients, or any person who understands the problem in depth.</p>
<p>Ask as much as possible, understand the situation and think about the possible edge cases.</p>
<p>Remember there is a distance between regular manual work and automating this work with a system.</p>
<p>There are edge cases your users might not even notice because they are so obvious to them, but not to you or anyone else.</p>
<p>As said by Bill Gates:</p>
<blockquote>
<p>The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency. The second is that automation applied to an inefficient operation will magnify the inefficiency.</p>
</blockquote>
<p>Most operations are inefficient, so be careful before automating anything.</p>
<p>The second thing to avoid falling into an Edge Case trap is simple attention to detail.</p>
<p>Attention to detail avoids problems related to the technical part while Communication avoids problems related to business logic.</p>
<p>Attention to detail is for when you don&#8217;t test your application with all kinds of screen sizes, or all browsers, or when all the planets align in a leap year and your app crashes (who knows).</p>
<p>So, if you ask me, how do you evolve from a junior developer to a mid-level developer?</p>
<p>My answer is: learn how to communicate clearly and learn to develop attention to detail.</p>
<p>After learning general technical skills, these skills are the ones required to jump to another level in your career.</p>
<p>The content <a href="https://renanmf.com/edge-cases-hardest-parts-developers-job/">Edge Cases are the hardest parts of a Developer&#8217;s job</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A Portfolio of Small Bets</title>
		<link>https://renanmf.com/a-portfolio-of-small-bets/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Thu, 01 Jul 2021 11:25:43 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3694</guid>

					<description><![CDATA[<p>Last week I posted an article about Side Projects and Small Bets as a Developer. In this article, I want to expand on this concept of Small Bets and how you can have a Portfolio of Small Bets by giving you my own experience as an example. First Small Bet My first Small Bet is [&#8230;]</p>
<p>The content <a href="https://renanmf.com/a-portfolio-of-small-bets/">A Portfolio of Small Bets</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Last week I posted an article about <a href="https://renanmf.com/side-projects-and-small-bets-as-a-developer/">Side Projects and Small Bets as a Developer</a>.</p>
<p>In this article, I want to expand on this concept of Small Bets and how you can have a Portfolio of Small Bets by giving you my own experience as an example.</p>
<h2>First Small Bet</h2>
<p><strong>My first Small Bet</strong> is my regular day job.</p>
<p>Might not make much sense to you, but a day job gives you a solid basis for your other activities since it provides a constant stream of income.</p>
<p>A regular job can come in various ways, my advice here is to have a job that doesn&#8217;t suck the life out of you in order for you to have some energy left to try other bets.</p>
<p>Remember, small bets work nicely precisely because you can have many of them in parallel, if you have a single bet taking up all of your resources, it is not worth it, you need some resources left to take chances.</p>
<h2>Second Small Bet</h2>
<p><strong>My second Small Bet</strong> is my blog.</p>
<p>I write articles about programming, machine learning, and career in tech.</p>
<p>This article for instance is about career.</p>
<p>I also have a newsletter with over 5,000 subscribers at the moment of writing this article.</p>
<h2>Third Small Bet</h2>
<p><strong>My third Small Bet</strong> are my <a href="https://renanmf.com/products/">books and courses</a>.</p>
<p>They are products I sell and are another stream of income.</p>
<p>At the moment I have only written books, but I have plans to create video courses.</p>
<h2>Fourth Small Bet</h2>
<p><strong>My fourth Small Bet</strong> is freelancing.</p>
<p>These are basically extra projects I work on here and there when I have the time and energy.</p>
<p>Freelancing has many benefits like choosing the projects you want to work on, try new skills you will never have any opportunity to make use of in your regular job, and develop non-technical skills like project management and negotiation.</p>
<p>As a newbie or as an experienced developer, freelancing is definitely something you should try as a professional.</p>
<h2>Fifth Small Bet</h2>
<p><strong>My fifth Small Bet</strong> is investing.</p>
<p>I am far from being rich.</p>
<p>But I make enough money with all of my income streams to have some extra each month to invest.</p>
<p>By investments, you can think of anything: stock market, crypto, real state, angel investing.</p>
<p>What to invest in is a more personal matter and you have to think for yourself about what makes sense to you as an investor.</p>
<p>The only advice here is to save enough money and invest to make the money work for you instead of the other way around.</p>
<p>It takes time and work, but so does anything worth it in life.</p>
<h2>Sixth Small Bet</h2>
<p><strong>My sixth Small Bet</strong> <em>will</em> be a SaaS or something like it.</p>
<p>I have a few failed ideas already and they taught me a lot.</p>
<p>But I expect to build a <em>profitable</em> SaaS sometime in the near future.</p>
<p>Notice I said <em>profitable</em>.</p>
<p>I am not aiming for a multi-million dollar company or anything like that.</p>
<p>Just something that solves a real need, for real customers, who are willing to pay real money.</p>
<p>Following my idea of small bets, I&#8217;d rather have a nice SaaS making a few thousand dollars per month with no employees and minimal support to customers instead of a crazy complex service with dozens of people.</p>
<h2>Small Wins</h2>
<p>The whole idea is to have multiple small wins with varied returns until they add up to something relevant.</p>
<p>All of this while keeping optionality (both personally and professionally), and a healthy body and mind, since it doesn&#8217;t matter if you make a lot of money if you can&#8217;t enjoy it.</p>
<p>The content <a href="https://renanmf.com/a-portfolio-of-small-bets/">A Portfolio of Small Bets</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Side Projects and Small Bets as a Developer</title>
		<link>https://renanmf.com/side-projects-and-small-bets-as-a-developer/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Thu, 24 Jun 2021 11:56:33 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3655</guid>

					<description><![CDATA[<p>Last week I posted an article about Why become a Software Developer. If the market is that good and the expectations are even better for Software Developers, should you worry about having your own side projects? Much is said about having a side project. Some work on side projects with the expectation of building a [&#8230;]</p>
<p>The content <a href="https://renanmf.com/side-projects-and-small-bets-as-a-developer/">Side Projects and Small Bets as a Developer</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Last week I posted an article about <a href="https://renanmf.com/why-become-a-software-developer/">Why become a Software Developer</a>.</p>
<p>If the market is that good and the expectations are even better for Software Developers, should you worry about having your own side projects?</p>
<p>Much is said about having a side project.</p>
<p>Some work on side projects with the expectation of building a viable business capable of generating enough income to replace their salaries from their regular job.</p>
<p>Others work on open source projects, for practically no money, at least until the project becomes notorious and widely used.</p>
<p>But you work the whole day, have a family and hobbies, should you have a side project if you don&#8217;t feel like it?</p>
<p>Nope, not worth it.</p>
<p>As I said in <a href="https://renanmf.com/why-become-a-software-developer/">Why become a Software Developer</a>, you will most likely be better off by honing your skills, working for a decent company and getting a better salary every couple of years, and investing some extra money while letting it compound and do its work.</p>
<p>Most people who despise regular jobs just have awful jobs or don&#8217;t make nearly as much money as a developer does, even a beginner dev.</p>
<p>So don&#8217;t start a side project if you don&#8217;t feel like it, make good money and enjoy life.</p>
<p>BUT, what if you feel like having that light bulb over your head?</p>
<p>That&#8217;s great!</p>
<p>There are many ways to chase your ideas and keep your sanity.</p>
<p>Don&#8217;t just quit your day job out of the blue and start something new especially if you don&#8217;t have any entrepreneurial experience.</p>
<p>Coding is a great ability to have, but you also need to know some marketing and sales and you don&#8217;t learn these overnight.</p>
<h2>Small Bets</h2>
<p>The better approach is to keep your job and make <strong>small bets</strong>.</p>
<p>Anything in life has risk attached to it, for business, going all-in rarely works, regardless of what media shows.</p>
<p>Each new venture adds experience, and you, as a human being, a software developer, have limited resources, especially money and time.</p>
<p>So don&#8217;t waste all of your resources at once.</p>
<p>Take chances, give yourself the chance to make mistakes, and learn from them.</p>
<p>If you have a resource of 10, instead of betting 10 at once, try to make bets of 2 or 1.</p>
<p>This way, even if you fail, as you will, most likely, in your first ventures, you will still have lots of more bets and those bets will have a higher chance of success after the learning experiences accumulated from the previous ventures.</p>
<p>You also don&#8217;t need to take these bets in a linear fashion, if you distribute your resources wisely, you can run 2 or 3 bets in parallel with different returns and all of them adding up to something more significant.</p>
<p>There are many ways to <a href="https://renanmf.com/make-money-as-a-developer/">Make Money as a Developer</a> and you can choose the ones that will maximize returns based on your own experience.</p>
<p>Write books, create courses, freelance, develop a SaaS (Software-As-A-Service), all of these can make a portfolio of small bets, with a variation of returns and you can eventually filter out some of them and leave only the ones that make more sense to you, either financially or personally (maybe both).</p>
<p>The content <a href="https://renanmf.com/side-projects-and-small-bets-as-a-developer/">Side Projects and Small Bets as a Developer</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why become a Software Developer</title>
		<link>https://renanmf.com/why-become-a-software-developer/</link>
		
		<dc:creator><![CDATA[Renan Moura]]></dc:creator>
		<pubDate>Thu, 17 Jun 2021 17:06:04 +0000</pubDate>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[lab]]></category>
		<guid isPermaLink="false">https://renanmf.com/?p=3648</guid>

					<description><![CDATA[<p>The software development market is only getting better for a few years now and the projection is for this market to grow even more in the upcoming years both in size and value. If you are an experienced developer, recruiters come to you often to offer jobs and positions in both new and established companies. [&#8230;]</p>
<p>The content <a href="https://renanmf.com/why-become-a-software-developer/">Why become a Software Developer</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The software development market is only getting better for a few years now and the projection is for this market to grow even more in the upcoming years both in size and value.</p>
<p>If you are an experienced developer, recruiters come to you often to offer jobs and positions in both new and established companies.</p>
<p>The average salaries for developers are above the salaries of most jobs, and we have yet to consider that you don&#8217;t even need a degree to be a developer in many companies, <a href="https://www.usatoday.com/story/money/2020/11/18/highest-paying-jobs-with-six-figure-salaries/43147005/">as you can see in this article from the USA today</a>.</p>
<p>US Bureau of labor statistics projects employment of software developers, quality assurance analysts, and testers is projected to grow 22 percent from 2019 to 2029, much faster than the average for all occupations. These workers will be needed to respond to an increased demand for computer software, <a href="https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm">as seen here</a>.</p>
<p>In 2021, <a href="https://money.usnews.com/careers/best-jobs/rankings/the-100-best-jobs">according to US News</a> &quot;software developer&quot; is ranked the 2nd best job in America and it was ranked the 1st in 2020.</p>
<p>I am not so old, but if you ask me, there has never been a better time in history to be a Software Developer than now.</p>
<p>In many parts of the world, a college education is either free or very affordable, unlike in the US where you have to pay a lot for a degree.</p>
<p>So, for Americans, being able to make decent money without spending tens of thousands of dollars is an even bigger advantage.</p>
<p>If we think in terms of opportunity cost, you can learn enough coding in a year to get an entry-level job or start freelancing.</p>
<p>Compare this to other professions that don&#8217;t allow you to do any kind of professional work without finishing the equivalent of a 4-year degree or more.</p>
<p>Of course, as more people get into this field, there will be a tendency of salaries to get lower, especially for beginners.</p>
<p>But I can say for sure that seniors and experts in more niche areas will always get paid well.</p>
<p>So if you start right now your career as a developer, in less than 10 years you will have enough expertise to be a senior in something and secure a good position.</p>
<p>As with any career, you have to face it as a marathon.</p>
<p>There is much to learn, and there is always more to learn.</p>
<p>While many will complain about how much they have to do just to keep up with the new trends, the optimistic will see opportunities for new ventures.</p>
<p>Not only that, but the need to keep improving all the time also works as a natural selection.</p>
<p>Many can start, many can take the path for some time, but not everyone will have the energy to keep going for too long, and there is where you can excel.</p>
<p>And, to conclude, if you ever have a good idea to start your own business, coding is like a superpower to start.</p>
<p>Of course, you will also need other skills like marketing, copywriting, and sales.</p>
<p>But if you excel at one thing, in this case, I&#8217;m advocating for coding, and you are average in marketing, copywriting and sales, you can go pretty far business-wise.</p>
<p>The content <a href="https://renanmf.com/why-become-a-software-developer/">Why become a Software Developer</a> is from <a href="https://renanmf.com">Renan Moura - Software Engineering</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
