<?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: Cesar Pérez</title>
    <description>The latest articles on DEV Community by Cesar Pérez (@cesaraugp).</description>
    <link>https://dev.to/cesaraugp</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%2F592498%2F4feb9581-850f-4504-a853-2516425080a8.jpeg</url>
      <title>DEV Community: Cesar Pérez</title>
      <link>https://dev.to/cesaraugp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cesaraugp"/>
    <language>en</language>
    <item>
      <title>How to improve serverless deployment times with just 4 lines of code.</title>
      <dc:creator>Cesar Pérez</dc:creator>
      <pubDate>Mon, 22 Aug 2022 16:35:07 +0000</pubDate>
      <link>https://dev.to/cesaraugp/how-to-improve-serverless-deployment-times-with-just-4-lines-of-code-4cej</link>
      <guid>https://dev.to/cesaraugp/how-to-improve-serverless-deployment-times-with-just-4-lines-of-code-4cej</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a story and guide on how i reduced the pipeline execution times from a monorepo-bitbucket based serverless project from 20min45sec down to 3min24sec.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction and brief description of the deployment configuration.
&lt;/h3&gt;

&lt;p&gt;While I was working on the company's backend monorepo the other day, I noticed how slow the pipelines had become after moving to serverless v3.&lt;/p&gt;

&lt;p&gt;We now have a deployment model that uses bitbucket pipelines for development, staging and multi-tenant production environments; incorporating technologies such as Serverless, Nx, NestJS and AWS.&lt;/p&gt;

&lt;p&gt;In the past, the deployment of cloudformation stacks was done separately; as we used the multi-repository model and each service could independently run its deployment to AWS; being able to run pipelines in separate repositories at the same time.&lt;/p&gt;

&lt;p&gt;Once we moved to the monorepo model, in order to enforce code reusability and reduce the amount of boilerplate code spread across microservices; it started to increase the deployment time of the microservices, using bitbucket pipelines.&lt;/p&gt;

&lt;p&gt;Our configuration for the pipelines consisted of a deployment model based on the changes of the folders involved in the commits; it was the approach that the SRE team worked on to avoid running unnecessary cloudformation stack redeployments; this configuration looks like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;bitbucket-pipelines.yml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;image: sundevs/node-serverless:0.2.3
definitions:
 steps:
 # CRM ENGAGEMENT #
 - step: &amp;amp;deploy-to-dev-crm-engagement
 name: Deploy crm service to development
 caches:
 - node
 deployment: test-crm
 condition:
 changesets:
 includePaths:
 # only files directly under apps/crm-engagement/ directory
 - "apps/crm-engagement/**" 
 script:
 …
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The only conditions under which a deployment of several services at once can occur are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;That you have made changes to more than one microservice at a time on the same branch.&lt;/li&gt;
&lt;li&gt;You have made changes to a library; this will cause those services that are using that library to be redeployed.&lt;/li&gt;
&lt;li&gt;You choose to redeploy several or all of the microservices through a manual action pipeline.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The problem at a high level
&lt;/h3&gt;

&lt;p&gt;A few days ago, in order to raise the bar on the quality of our team's code base; I took the task to start documenting the microservices under the same branch; obviously this change has implications on the deployment of affected microservices in that branch. When documenting the whole project and opening PR; according to the pipeline configuration we have; the 3 services were going to be redeployed and the pipelines looked like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2x8xd9k6m21qcz71n16t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2x8xd9k6m21qcz71n16t.png" alt="Bitbucket 3 microservices deployment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Where we can see an abysmal deployment time (20min45sec), especially for the last microservice; which has several lambdas to pack (about 8).&lt;br&gt;
For this reason I decided to reduce those deployment times; and here I tell you how:&lt;/p&gt;

&lt;h3&gt;
  
  
  Analyzing the pipeline
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hvfvtq9nw40rxpb4wcx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hvfvtq9nw40rxpb4wcx.png" alt="Pipeline step commands"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Among the script command lines, we can see that the command &lt;code&gt;serverless deploy - stage ${STAGE_NAME} - verbose - force&lt;/code&gt; was the one that consumed most of the pipeline execution time; with about 10min! &lt;/p&gt;

&lt;h4&gt;
  
  
  Improving dependency resolution with serverless-jetpack.
&lt;/h4&gt;

&lt;p&gt;Analyzing that particular step of the pipeline; I could notice that what took the longest time was the dependency resolution and exclusion.&lt;br&gt;
For this reason, the first experiment to reduce deployment times I did with this microservice; I installed the serverless plugin Serverless Jetpack, the details of this plugin and how it can improve the dependency resolution of your serverless project can be found &lt;a href="https://www.npmjs.com/package/serverless-jetpack#how-jetpacks-faster-dependency-filtering-works" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Immediately I could see improvements in deployment time:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0176lu8uiunfwg3bi3de.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0176lu8uiunfwg3bi3de.png" alt="Deployment time improvement by 3.32 min"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reducing the overall deployment time by 3.32 min! For a total of 17m13sec.&lt;br&gt;
While the implication of this change for the code base is minimal:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyf9i79rwfgd3xki3el2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyf9i79rwfgd3xki3el2q.png" alt="Improvement after installing serverless-jetpack"&gt;&lt;/a&gt; &lt;strong&gt;+1 line of code&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reducing the packaging time by removing the individual packaging.
&lt;/h3&gt;

&lt;p&gt;The packaging of the lambda functions was also one of the steps in the execution of the serverless deployment command that took a long time; investigating I found out that we were using the wrong packaging model. It was configured for individual packaging, when it was really indispensable for our microservices to package the functions separately. You can read more about it and see if this change applies to your serverless project &lt;a href="https://www.serverless.com/framework/docs/providers/aws/guide/packaging" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqlh5h0abvx4krer0y50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqlh5h0abvx4krer0y50.png" alt="Deployment time improvement by 6min, 8 seconds!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reducing the total deployment time by 6 Minutes, 8 Seconds! For a total of 11m5sec.&lt;/p&gt;

&lt;p&gt;While the implication of this change for the code base is minimal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8kmwamuc5b5xfobi1vj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8kmwamuc5b5xfobi1vj.png" alt="Improvement after changing serverless packaging"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;+1 line of code&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changing the cloudformation deployment method.
&lt;/h3&gt;

&lt;p&gt;Reading the serverless documentation, I came across &lt;a href="https://www.serverless.com/framework/docs/providers/aws/guide/deploying/#deployment-method" rel="noopener noreferrer"&gt;this article&lt;/a&gt; about deployments, which states the following:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Since Serverless Framework v3, deployments are done using CloudFormation change sets. It is possible to use CloudFormation direct deployments instead.&lt;br&gt;
Direct deployments are faster and have no downsides (unless you specifically use the generated change sets). They will become the default in Serverless Framework 4.&lt;br&gt;
You are encouraged to enable direct deployments via the deploymentMethod option:&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: aws
deploymentMethod: direct
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;p&gt;So I decided to give it a try and make the change in the serverless configuration files of the microservices:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fde1m3vi9rldse7iva6ey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fde1m3vi9rldse7iva6ey.png" alt="Deployment time improvement by 1min, 53 seconds!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reducing the total deployment time by 1 Minute, 53 Seconds! For a total of 9m12sec.&lt;/p&gt;

&lt;p&gt;While the implication of this change for the code base is minimal:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5m7d3x7n7yfwwzgzxux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5m7d3x7n7yfwwzgzxux.png" alt="Improvement after changing serverless cloudformation deployment method"&gt;&lt;/a&gt; &lt;strong&gt;+1 line of code&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Changing the execution model of bitbucket pipelines steps.
&lt;/h3&gt;

&lt;p&gt;Not everything is rosy, but after a failed attempt trying to use the serverless-esbuild plugin (as you can see in the commit name). I managed to reach the 3 min! mark; making use of a bitbucket pipelines feature called &lt;a href="https://support.atlassian.com/bitbucket-cloud/docs/set-up-or-run-parallel-steps/" rel="noopener noreferrer"&gt;Paralell Steps&lt;/a&gt;, which allows to execute several steps of the pipeline at the same time.&lt;/p&gt;

&lt;p&gt;The result looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxulk8pr3jxol5a30jevy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxulk8pr3jxol5a30jevy.png" alt="Deployment time improvement by 5min, 48 seconds!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reducing the total deployment time by 5 Minutes, 48 Seconds! For a total of 3m24sec.&lt;/p&gt;

&lt;p&gt;While the implication of this change for the code base is minimal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxmi5abndkbb6155rm1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxmi5abndkbb6155rm1v.png" alt="Bitbucket parallel steps"&gt;&lt;/a&gt; &lt;strong&gt;+1 line of code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;While I recommend it to improve pipeline execution times for this deployment model, I caution that its use may have implications on your workspace billing; bitbucket gives us a very subtle warning about this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flnu9jmb3fca2c9ej46t6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flnu9jmb3fca2c9ej46t6.png" alt="Bitbucket advanced features, billing per build minutes with parallel steps"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Summarizing the changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install serverless-jetpack to improve dependency resolution.&lt;/li&gt;
&lt;li&gt;Change the packaging model of the lambda functions, removing the individual packaging.&lt;/li&gt;
&lt;li&gt;Change cloudformation deployment method.&lt;/li&gt;
&lt;li&gt;Change the execution model of bitbucket pipelines steps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We went from deployment times of up to 20min to as little as 3min, only changing 4 lines of code per service.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>monorepo</category>
      <category>performance</category>
      <category>javascript</category>
    </item>
    <item>
      <title>What i've learned after 8 months as a remote Web Developer (Part II) 🇻🇪</title>
      <dc:creator>Cesar Pérez</dc:creator>
      <pubDate>Thu, 22 Jul 2021 10:38:08 +0000</pubDate>
      <link>https://dev.to/cesaraugp/what-i-ve-learned-after-8-months-as-a-remote-web-developer-part-ii-28fc</link>
      <guid>https://dev.to/cesaraugp/what-i-ve-learned-after-8-months-as-a-remote-web-developer-part-ii-28fc</guid>
      <description>&lt;p&gt;Well, it wasn't actually a job. It was a trainee position at a local company, i was expected to meet certain requiremets as per say:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* 4h availability
* Web development basic knowledge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;In order to continue the application process, i had to complete some forms, the problem was... They sent those to me 20 DAYS AGO!. When i got into this "unplugged" thinh i wasn't expecting to be called accepted from a company due to my lack of experience.&lt;/p&gt;

&lt;p&gt;Having nothing to lose, i completed the forms, contacted the employer, and got lucky!. The entry position was still available and the team were really glad to had more people into the trainee program.&lt;/p&gt;

&lt;p&gt;A few days later i got my first meeting with the team and the rest of the trainees, there i had the opportunity to talk to the CEO and the developer in charge, they were actually really approachable (?), it was a small company willing to grow form developers. The job tasks were mainly related to the maintantence and development of websites from clients that were developed in Wordpress.&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
 &lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  First weeks as a trainee 👨🏼‍💻
&lt;/h3&gt;

&lt;p&gt;As a trainee, my first assignments were mainly related to the development simple code snippets that extended the functionality of those sites through hooks with php,  some javascript, html and css and when there wasn't any hard task, i'll had to write some tech-related articles in order to contribute to the SEO of the company website. &lt;/p&gt;

&lt;p&gt;After two weeks, the CEO noticed my enthusiasm and will to learn, so the 9th of November he came with a salary proposal and i got my first Job as a Junior Web Developer!.&lt;/p&gt;

&lt;p&gt;I gotta admit that the next months were kinda rough, i hadn't used wordpress before and never programmed in PHP, so i had to learn in practice: reading docs, blogs, forums, and deep diving into the code of some wordpress plugins were some of my daily tasks as a junior. &lt;/p&gt;

&lt;p&gt;Eventually i started to feel comfortable with most of those assignments and got confident with my problem-solving skills. Then, after 3 months i was promoted to Web Developer!&lt;br&gt;
 &lt;br&gt;
 &lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  Projects 🖥
&lt;/h3&gt;

&lt;p&gt;One of the main responsabilities that came with thte promotion was being in charge of talent acquisition and (capacitacion?),   i had the opportunity to be both interviewer and teacher of web developer entring trainees!. Besides of this, as a Web developer from the company, i worked in some projects like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cautive Portal and backend for a Hotspot Wifi.&lt;/li&gt;
&lt;li&gt;E-commerce's.&lt;/li&gt;
&lt;li&gt;Wordpress Plugin Development.&lt;/li&gt;
&lt;li&gt;Development of python trading Bot.&lt;/li&gt;
&lt;li&gt;Development of a python productivity monitoring tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After a few months I managed to create a small development group in the company, with them I had the opportunity to learn how to work as a team, management, leadership, code documentation and folder structure best practices and repository branching models in order to keep the projects organized.&lt;/p&gt;

&lt;p&gt;But things weren't looking all that promising, the salary was ok, considering that the company was established here in Venezuela and i was earning quite good. What i didn't actually liked was the lack of a clear company vision, i felt the need of being in a more well-stablished company where i had the opportunity to keep growing as a developer, doing more advanced projects and learning along the way, so in may of 2021 i started to apply to other companies outside of the country and after 2 weeks i got another offer! &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>motivation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What i've learned after 8 months as a remote Web Developer (Part I) 🇻🇪</title>
      <dc:creator>Cesar Pérez</dc:creator>
      <pubDate>Fri, 09 Jul 2021 02:21:48 +0000</pubDate>
      <link>https://dev.to/cesaraugp/what-i-ve-learned-after-8-months-as-a-remote-web-developer-part-i-4nc7</link>
      <guid>https://dev.to/cesaraugp/what-i-ve-learned-after-8-months-as-a-remote-web-developer-part-i-4nc7</guid>
      <description>&lt;p&gt;Well, before i start telling you my story, i've gotta say it is one of a kind… Let me introduce myself first. I'm Cesar Pérez, and i'm a 20 years old Venezuelan Web Developer, Electronic Engineering Student and self named HotCakes 🥞Master.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Agus, the traversy 🎮
&lt;/h3&gt;

&lt;p&gt;My journey as a developer started on April of 2020, a couple of weeks after the pandemic started i finished my ongoing semester as an Electronic Engineer and got into a Game Jam competition that was being organized by the students of one of the university clubs. I teamed up with a couple of friends to make a game in two weeks, all of us without any previous experience but willing to win, driven by the pure of excitement and experience, and a couple of bucks of reward. My teammates were in charge of the history concept development, character/level design and animations, while i was responsible for programming everything, from character movement, enemy behaviors, bosses machine states to health system, camera, an all of that stuff.&lt;br&gt;
But I didn't knew the language neither how to use the game engine, so i had to learn C#, test the game and get used to Unity game Engine ASAP!. I decided to follow a huge reproduction list from Youtube that covered everything and after long everyday programming journeys and with the help an support of my team we managed to finish up the game just a couple of hours before the deadline. I'll never forget that last day; my eyes burned so much that i had to wear sunglasses in order to keep programming the game. We named it Agus, the traversy. And no, it wasn't my idea.&lt;/p&gt;

&lt;p&gt;Did we won?, no, definitely no. We were so tired and excited because we finished that we were too lazy to test the game one last time, one pixel bugged kept the judge from finish up the game. So we got disqualified i guess.&lt;br&gt;
Was i happy?, YES. Until then i hadn't been so excited and disciplined about something a long time ago, that's what got me hooked into programming, a buggy game. But, i decided that game development wasn't my thing, setting up the scenes, the sprites, animations and all that stuff were dependent of someone making the assets for me because i didn't have that skill.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mobile App 📱
&lt;/h3&gt;

&lt;p&gt;After that journey i came with what i thought was the next 1 million dollar idea. A delivery app… What a non trivial and original idea, isn't it?. Got teamed up with two friends from the university and one of my cousin and we spent the next couple of months making this idea into a reality,i was in charge of the mobile app development, it was programmed on Scratch programming language on top of Kodular, a platform for making Android Apps, the web app was made on React by a friend of mine who had more experience on web development.&lt;br&gt;
Six months later we realized that it wasn't that much of good idea and there were already a lot of well established delivery app's companies in the country with more people and resources involved, so i decided to take a break and rethink about my life.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The routine 💻
&lt;/h3&gt;

&lt;p&gt;At that time i started to feel curiosity for web development, it was both the most viable and the only programming option for me at the moment because i neither had the system resources to build native mobile apps or the patience to get into complicated syntax and environment setups, plus, i knew a little about html, css and javascript from some courses i took a couple of years ago.&lt;br&gt;
And there i was again, hooked into programming for more than 8 hours a day. I used a lot of free resources to learn: Youtube videos, Udemy courses, free bootcamps ( &lt;em&gt;cough&lt;/em&gt; thanks freecodecamp &lt;em&gt;cough&lt;/em&gt;), removed any distraction and got into this routine for approximately 2 months:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;6AM: Watch 1 or 2 Youtube tutorials about javascript and take notes.&lt;/li&gt;
&lt;li&gt;7AM: Breakfast.&lt;/li&gt;
&lt;li&gt;8AM: Freecodecamp exercises.&lt;/li&gt;
&lt;li&gt;9AM: Watch 1 or 2 youtube tutorials about javascript.&lt;/li&gt;
&lt;li&gt;10:30AM: Practicing what i've learned.&lt;/li&gt;
&lt;li&gt;11:30AM: Break, helping with Lunch and making chores at home&lt;/li&gt;
&lt;li&gt;1PM-3:30PM: Watching videos/courses about technologies i was interested like SASS or Refreshing my knowledge about HTML and CSS.&lt;/li&gt;
&lt;li&gt;3:30PM-5:00PM: Make a cake, exercise, or whatever i felt like doing.&lt;/li&gt;
&lt;li&gt;7:00PM: Dinner.&lt;/li&gt;
&lt;li&gt;8:00PM : Watching short videos about web development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've gotta say that it wasn't the most efficient one but it surprisingly worked, because in 30th of September of 2020 i got my first job offer!…&lt;/p&gt;

&lt;p&gt;Suscribe for part II!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>motivation</category>
      <category>webdev</category>
      <category>firstpost</category>
    </item>
  </channel>
</rss>
