<?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>Forem: Filipe Monteiro</title>
    <description>The latest articles on Forem by Filipe Monteiro (@filipemonteiroth).</description>
    <link>https://forem.com/filipemonteiroth</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%2F276803%2F927a9339-019b-4e45-a158-84d90473cbd4.jpeg</url>
      <title>Forem: Filipe Monteiro</title>
      <link>https://forem.com/filipemonteiroth</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/filipemonteiroth"/>
    <language>en</language>
    <item>
      <title>How switching to VIM DIDN’T help me to be more productive</title>
      <dc:creator>Filipe Monteiro</dc:creator>
      <pubDate>Tue, 08 Dec 2020 16:35:30 +0000</pubDate>
      <link>https://forem.com/filipemonteiroth/how-switching-to-vim-didn-t-help-me-to-be-more-productive-23bc</link>
      <guid>https://forem.com/filipemonteiroth/how-switching-to-vim-didn-t-help-me-to-be-more-productive-23bc</guid>
      <description>&lt;p&gt;TL;DR: If you came here for the title, I’d like to apologize, I like VIM and although I don't think it helps me to be more productive, it's fun to code using VIM.&lt;/p&gt;

&lt;p&gt;2013 was the first time I heard about VIM, while editing apache configuration files in a linux server. I used to use &lt;em&gt;Nano&lt;/em&gt; for the job, and couple friends tried to convince me that &lt;em&gt;VIM&lt;/em&gt; was the way to go. &lt;/p&gt;

&lt;p&gt;Nano was more than enough for me: Open, Edit and Save files, that’s all I needed. Why would I use a program that I didn't even know how to close it? No way!&lt;/p&gt;

&lt;p&gt;Over the years, I got more curious about VIM, many developers could affirm that they were more productive, just by using &lt;em&gt;VIM&lt;/em&gt;. That's mind blowing, isn't it?&lt;/p&gt;

&lt;p&gt;Then I thought: &lt;em&gt;Why not give it a try?&lt;/em&gt; After a couple days trying and reading about all different commands I had to learn, I was completely sure: It couldn’t make me more productive! The reason: Learning more commands to code didn’t make sense at all. Mouse + a few command/ctrl + arrow commands were absolutely more than enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  When did VIM make sense?
&lt;/h2&gt;

&lt;p&gt;In April 2019, I decided to give it another try. This time, I was committed to make it right and get into it for real to see if there really was a benefit on VIM. I’ve bought and online course on Udemy, &lt;em&gt;Vim masterclass&lt;/em&gt;, and took all classes patiently, as I was learning a new programming language.&lt;/p&gt;

&lt;p&gt;I got impressed with all the things VIM could provide.&lt;/p&gt;

&lt;p&gt;All the motions, modes, registers seemed simply awesome. The fact that I could scan a file without editing it was amazing.&lt;/p&gt;

&lt;p&gt;Deleting a word or a couple words with only 3 key strokes was neat. &lt;em&gt;If you’re curious, open a file on vim, and press: &lt;em&gt;d2w&lt;/em&gt;. (delete two words).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After the course, I moved slowly, started by setting up the vim plugin into my VScode, relying in all the easiness that VSCode provides and yet I could practice vim commands. &lt;/p&gt;

&lt;p&gt;I use the vim plugin for a while and struggled a lot on the first months. Mixing wrong commands, forgetting about caps lock turned on and I was coding slower than I would with normal setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fully Switching to VIM
&lt;/h2&gt;

&lt;p&gt;The full switch to VIM happened in 2020 (the year this blog post is written).&lt;/p&gt;

&lt;p&gt;The reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Although is great to have VIM commands in VSCode, the best plugin isn't that perfect yet, and there were a couple commands that were super slow, and just moving around in a file was painful.&lt;/li&gt;
&lt;li&gt;I was so upset with my VSCode eating up 4gb of RAM with only one project open.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I started to plan for a full switch. &lt;/p&gt;

&lt;p&gt;After some back&amp;amp;forth from VSCode to VIM, I’ve found a tutorial from Ben Awad (&lt;a href="https://www.youtube.com/watch?v=gnupOrSEikQ"&gt;https://www.youtube.com/watch?v=gnupOrSEikQ&lt;/a&gt;), helping to set up vim as a full IDE for typescript/react projects. I got his dotfiles, added some tweaks and went heads down on that.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;More struggle!&lt;/em&gt; I’ll have my criticisms to VIM listed below, but here is one: One of the most powerful things on VIM is extensibility, plugins are first-class. But that’s what makes it so complicated to use as your main coding tool.&lt;/p&gt;

&lt;p&gt;After a long set up process, do and undos, VIM (Neovim) is my official code editor. It’s working great in a large typescript codebase and I’m completely used to it. &lt;em&gt;Node &amp;amp; Chrome are my only outstanding RAM eaters&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Am I more productive now?
&lt;/h2&gt;

&lt;p&gt;All of that to say: do I feel more productive after switching to vim? Short answer is: No. &lt;/p&gt;

&lt;p&gt;Do I believe developers can be more productive just by using VIM? Maybe?! &lt;/p&gt;

&lt;p&gt;I’ve seen super productive developers using VIM, and I met super productive developers using IDEs. &lt;/p&gt;

&lt;p&gt;Keep in mind, Productivity is not tied to the IDE you use, neither your seniority. &lt;/p&gt;

&lt;p&gt;Things like: Clear tasks requirements; Great communication skills; Solid knowledge of the core concepts of the language and framework you use take your productivity bar way higher than just using VIM.&lt;/p&gt;

&lt;p&gt;But I have to say, coding using &lt;em&gt;VIM&lt;/em&gt; is fun! Not using your mouse to scroll up and down or place the cursor is magical.&lt;/p&gt;

&lt;p&gt;If you've got until this point, let me tell you what are my favorite and things I wish were better in VIM. &lt;/p&gt;

&lt;h3&gt;
  
  
  Favorite ones:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;VIM is lightweight! If VSCode or IDEs drive you nuts by eating up your RAM, give VIM a try.&lt;/li&gt;
&lt;li&gt;Installing and using plugins is super easy, check out vimplug.&lt;/li&gt;
&lt;li&gt;Creating shortcut for commands is straightforward and clean&lt;/li&gt;
&lt;li&gt;Macros are simply amazing. Record commands and replaying them is sweet.&lt;/li&gt;
&lt;li&gt;Navigate on your file tree with your keyboard and the same motion commands is amazing.&lt;/li&gt;
&lt;li&gt;Closing and reopening vim is fast. You can do that almost instantly.&lt;/li&gt;
&lt;li&gt;Switching to a new computer is as easy as installing VIM and place your dotfiles in the right place.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Things I wish were better in VIM:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;As I pointed out above, being super extensible is also a drawback. Basic things are not out of the box, for example: you need a plugin to navigate on your file tree in a decent way. VSCode and other IDEs have that for free. But in VIM, you’ve got to set it up yourself.&lt;/li&gt;
&lt;li&gt;The learning curve is high.&lt;/li&gt;
&lt;li&gt;It's a pain to do a simple Find &amp;amp; Replace in all files. Although there are a lot of great plugins, if I need to perform that task confidently, I open my project in VSCode and use it.&lt;/li&gt;
&lt;li&gt;As many things in VIM, autocomplete isn’t out of the box. You’ve got to set up LSP for the language you want to work on.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Give VIM a try, it may help you or not to be more productive, but I assure you the coding can be way more fun using it!&lt;/p&gt;

&lt;p&gt;And if you're planning to fully switch to VIM, I highly recommend you to use tmux or any one similar. &lt;/p&gt;

</description>
      <category>vim</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Add a planning step to your dev workflow and be more efficient!</title>
      <dc:creator>Filipe Monteiro</dc:creator>
      <pubDate>Tue, 28 Jan 2020 15:00:55 +0000</pubDate>
      <link>https://forem.com/filipemonteiroth/how-adding-a-plan-step-before-dev-kickoff-can-make-you-more-efficient-1nil</link>
      <guid>https://forem.com/filipemonteiroth/how-adding-a-plan-step-before-dev-kickoff-can-make-you-more-efficient-1nil</guid>
      <description>&lt;p&gt;That's a short post, but here is the TL;DR: Before jumping into code/project, plan it before hand, take a look at what might need to be changed, what might need a refactor and take notes about it. Follow your plan and you'll be way more efficient. &lt;/p&gt;

&lt;p&gt;If you don't want to read the reasons about why you should have a plan, just jump to How to create a good dev plan.&lt;/p&gt;

&lt;p&gt;We, developers, love coding. Nothing can be more boring than a working day without a single line of code and it's very common that this love make us a bit anxious for coding and when we see a shiny new project/task/ticket, we're like dogs wagging our tails looking forward to get started.&lt;/p&gt;

&lt;p&gt;There's nothing wrong with that, we're developers and love coding, but have you figured that by doing that we're often more inefficient? I'll tell you why.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why we're more inefficient when we start coding right away (without a dev plan)?
&lt;/h3&gt;

&lt;p&gt;You've probably faced that before: you get a new ticket to work on, right away you jump into coding and start working on that and after a couple lines of code, you see that the lines you've added are not in the correct file (maybe because of architecture decisions or just the wrong file). Then, you delete your changes and find the correct file, apply the changes, but wait, your lizard brain tells you that there's something wrong, you need a refactor before adding that code.&lt;/p&gt;

&lt;p&gt;So, you start doing that refactoring and that takes all your day, by the end of the day, you figure the refactor wasn't needed and you get back to your first strategy (or try a new one) and that cycle repeats until you get your project done!&lt;/p&gt;

&lt;p&gt;Can you see how inefficient that dev approach is?&lt;/p&gt;

&lt;p&gt;We're way more inefficient when we start coding right away, because our ideas of what needs to be done aren't in the right place yet, they're not connected to each other, also unless you're starting a brand new project, your new code usually will need to communicate and fit to other parts of the codebase, if you start coding without a plan, how do you know which parts of the codebase that may affect? &lt;/p&gt;

&lt;p&gt;So, what could we do to help ourselves to be more efficient? Add a plan step before you start coding!&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits of having a dev plan
&lt;/h3&gt;

&lt;p&gt;Before flying an aircraft, pilots are requested to create a flight plan, they never (shouldn't) fly without a plan, there are a lot to consider before taking off, landing and flying: Aircraft weight, winds, best route, altitudes, weather, speed etc. By doing a flight plan, pilots are able to find the most efficient way to go from A to B safely and efficiently.&lt;/p&gt;

&lt;p&gt;And if you're not sold yet, here are some benefits/reasons for having a dev plan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Having a dev plan before dev kickoff helps you to understand what you're supposed to do, before you actually do; where you will apply your changes; and what should be the desired result (code wise).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Having a plan before you actually start coding, helps you to communicate to your teammates what they should expect when pairing or reviewing your code. By doing that you've shorten the feedback loop (yeah, the feedback loop is everywhere, either if you're pairing or someone is reviewing your code).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Having a plan helps you to be way more happy when coding, you know exactly what have to do!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to create a good dev plan
&lt;/h3&gt;

&lt;p&gt;Hopefully, you should be sold that you need a dev plan, right? so how can you create good one? Here are a few things to consider when creating your plan:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Make sure you understand all the requirements, if you have questions, ask them before coding, never try to find the answers while coding, you will end up writing code that will be changed or even deleted, be efficient! I recommend that the first section of your dev plan should be a summarized description of the project requirements, that also helps you to have them more clear in your mind and it's also a good rubber duck.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to the codebase and look for what needs to be changed to get your project done. Will you change how a component works? Write that in your plan. Will you need to refactor a whole section to prepare the code? Write that in the plan. Will you this only need new code and nothing will be changed? Write that in the plan.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After you know what to do, and how you will do it. Plan the best route to get that done! Does the refactor needs to be done before all other parts, list it! Organizing what and how you will do it in steps will make you way more efficient.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sometimes the project we're working on has a limited time scope, so saving a refactor to another time is helpful, right? Even if you're not doing that refactor/change along with your project, you should still write that in your plan.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run your plan by your teammates and ask for their ideas and approval. Your teammates might be aware of what is going to be changed, how and why. Having another set of eyes in your plan might help you to decide and change the route to get that done, and the best part, before you've written a lot of code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sometimes is really hard to create a plan, you need to test something new, the code is a bit messy. In those cases, create a plan for a prototype or investigate, let people and you know that you're going to do that before jumping into the real code. After you know what to do, update your plan with your new strategy.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  When you don't need a dev plan?
&lt;/h3&gt;

&lt;p&gt;Not always you need a dev plan, sometimes a bug is really easy to fix, or a feature is easy to get done. In those cases, go for it and CODE it. But if something that was supposed to be easy, is not going as you expected, stop it, and write a plan! (or maybe you should've done it before 😬)&lt;/p&gt;

&lt;p&gt;Always remember: Coding without a dev plan, is like flying an aircraft without a flight plan, you can get there, but this can be way more expensive than you expected.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
      <category>agile</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
