<?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: Abraham Romero</title>
    <description>The latest articles on DEV Community by Abraham Romero (@kalm004).</description>
    <link>https://dev.to/kalm004</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%2F166783%2F99f38046-aef7-4e8e-9ca7-b9da827c6b3a.jpeg</url>
      <title>DEV Community: Abraham Romero</title>
      <link>https://dev.to/kalm004</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kalm004"/>
    <language>en</language>
    <item>
      <title>Navigating the Double-Edged Sword of AI as a Software Developer</title>
      <dc:creator>Abraham Romero</dc:creator>
      <pubDate>Sun, 13 Oct 2024 22:44:23 +0000</pubDate>
      <link>https://dev.to/theagilemonkeys/navigating-the-double-edged-sword-of-ai-as-a-software-developer-4h35</link>
      <guid>https://dev.to/theagilemonkeys/navigating-the-double-edged-sword-of-ai-as-a-software-developer-4h35</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Years ago, saving time in software development meant creating macros to avoid code repetition.. We needed to read books to understand how to program in a given language or for a specific machine.&lt;/p&gt;

&lt;p&gt;We then turned to the internet for information, with YouTube videos, Udemy courses, and StackOverflow replacing traditional books.&lt;/p&gt;

&lt;p&gt;Over time, we began using better IDEs like IntelliJ, which offers autocompletion and refactoring features that save us time.&lt;/p&gt;

&lt;p&gt;Now, we have made a leap that is multiple magnitudes larger than ever before in terms of increasing development velocity. With the rise of LLMs, we now have a wide variety of tools that we, as developers, can use in our daily jobs. But, as Uncle Ben said, with great power comes great responsibility. Let's explore these tools together, let me tell you what I do, and what I think is coming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Great Power...
&lt;/h3&gt;

&lt;p&gt;You should already know all these names: ChatGPT, Gemini, Claude, GitHub Copilot, etc. You can find LLMs specialized for doing nearly everything you want to do nowadays.&lt;/p&gt;

&lt;p&gt;The clearest advantage of these tools is increased velocity, such as rapid prototyping (AI can automate repetitive tasks, allowing developers to focus on higher-level design and problem-solving), faster debugging (AI tools can quickly identify bugs and suggest fixes, significantly reducing time spent in the debugging phase), or unit test development will be immediately noticeable.&lt;/p&gt;

&lt;p&gt;But that's not all; you'll have access to a broader range of technologies. Using AI will reduce the learning curve by providing instant insights and resources on unfamiliar technologies. This allows you to quickly tackle projects outside your expertise with AI support.&lt;/p&gt;

&lt;p&gt;LLMs like GPT-4 specialize in text generation, allowing you to write better messages, improve your emails, or generate documentation for your projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Great Responsibilities
&lt;/h3&gt;

&lt;p&gt;As we just saw, using AI can help you do your job better. But it doesn't come for free; there are some risks.&lt;/p&gt;

&lt;p&gt;You can't blindly trust AI. Over-reliance on AI can lead to complacency and reduced critical thinking. Additionally, AI-generated code may not always adhere to best practices or organizational standards, requiring vigilant oversight.&lt;/p&gt;

&lt;p&gt;Relying on AI can stunt learning and hinder problem-solving skills, making it harder for developers to tackle challenges independently. Furthermore, if developers lean on AI tools instead of mastering foundational concepts, they may miss out on essential skills.&lt;/p&gt;

&lt;p&gt;Security risks are another significant concern. AI-generated code may inadvertently introduce vulnerabilities, especially if not properly reviewed or tested. Cybercriminals can exploit these tools to automate attacks or create sophisticated phishing schemes.&lt;/p&gt;

&lt;h3&gt;
  
  
  How I Use AI in My Daily Job
&lt;/h3&gt;

&lt;p&gt;In my daily workflow, I utilize several AI tools like ChatGPT, GitHub Copilot, or Perplexity AI. However, I approach their outputs with healthy skepticism. While AI can provide valuable suggestions and speed up certain processes, I always verify the results to ensure they align with best practices and meet my project’s specific requirements.&lt;/p&gt;

&lt;p&gt;For example, I never copy and paste code from ChatGPT; I always try to understand the response and apply it to my code, test it, and check if it truly works. On the other hand, with GitHub Copilot, I accept many code suggestions, and that code is inserted directly into my code, but I always review it and modify it if needed.&lt;/p&gt;

&lt;p&gt;This critical mindset allows me to leverage AI effectively without compromising the quality of my work. I also make it a point to stay engaged with the underlying concepts, ensuring that I continue to enhance my skills and understanding of the technologies I’m using.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Coming and How to Maximize the Advantages
&lt;/h3&gt;

&lt;p&gt;Use AI tools, learn how to use them, keep learning, and focus on the personal aspects of your job, such as capturing requirements and team collaboration.&lt;/p&gt;

&lt;p&gt;The future of AI in software development is bright, with advancements expected to make these tools even more powerful and intuitive. To maximize the advantages of AI, you should actively use these tools while also dedicating time to learn how to integrate them into your workflows effectively. Continuous learning is key; you should stay informed about the latest AI developments and explore new tools that can aid your tasks.&lt;/p&gt;

&lt;p&gt;Importantly, it’s crucial to focus on the human aspects of software development that AI cannot replace. This includes capturing requirements accurately, engaging in effective team collaboration, and fostering open communication among team members. By maintaining a balance between leveraging AI and enhancing interpersonal skills, you can ensure you are not only effective in your technical role but also a valuable contributor to your team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;The integration of AI into software development presents a compelling mix of opportunities and challenges. While it can enhance productivity and expand skill sets, you must remain vigilant and engaged in your learning. Finding the right balance between using AI and mastering core software development practices is essential for long-term success.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opinion</category>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>It's all about energy</title>
      <dc:creator>Abraham Romero</dc:creator>
      <pubDate>Wed, 30 Mar 2022 16:54:12 +0000</pubDate>
      <link>https://dev.to/theagilemonkeys/its-all-about-energy-1lg5</link>
      <guid>https://dev.to/theagilemonkeys/its-all-about-energy-1lg5</guid>
      <description>&lt;p&gt;In my professional experience until now, I've always used time as a measure for everything. I needed to work at least 8 hours everyday, I needed to log the hours I worked on a specific task, I needed to give estimates in days or hours, etc. This has never felt natural to me, it led to some uncomfortable situations like forcing myself to be in front of my computer for 8 hours, even if I was not being productive.&lt;/p&gt;

&lt;p&gt;Everything changed when I joined The Agile Monkeys and they started talking about working based on energy levels. But...&lt;/p&gt;

&lt;h1&gt;
  
  
  What does it mean to work based on your energy levels?
&lt;/h1&gt;

&lt;p&gt;I like to think about our energy levels as the &lt;a href="https://www.giantbomb.com/stamina-bar/3015-3569/"&gt;stamina bar in video games&lt;/a&gt;. Let's call it our Energy Bar. You need to be aware of the level of your energy bar at all times, and it will work differently for each person. Some people wake up full of energy and other people charge their energy after a few hours. Start paying attention to your energy levels and you will learn how they work for you.&lt;/p&gt;

&lt;p&gt;Find that moment of the day when you have more energy and use it for the most complex tasks or the ones that require more energy. You will be able to do other less complex tasks when your energy levels are low.&lt;/p&gt;

&lt;h1&gt;
  
  
  Energy is a limited resource, don't waste it!
&lt;/h1&gt;

&lt;p&gt;We wanted to work based on our energy levels, and now we have identified when our energy levels are high or low and how we can work based on them… There is just one little problem in that plan, energy is a limited resource and our work is not the only thing that consumes it.&lt;/p&gt;

&lt;p&gt;Taking your kid to school, commuting, traffic jams, not sleeping well, arguing with your significant other, etc. will drain your energy. Due to some of these situations, or many others found in this &lt;a href="https://coupleandfamilyinstitute.com/wp-content/uploads/2018/01/Life-Change-Index.pdf"&gt;Life Change Index&lt;/a&gt;, some days you will run out of energy when your Energy Bar would usually be full. That's life, and you can't do anything about it, if your energy alarm is beeping it's time to...&lt;/p&gt;

&lt;h1&gt;
  
  
  Recharge your Energy Bar
&lt;/h1&gt;

&lt;p&gt;In most situations, this Energy Bar will recharge automatically, when you rest or sleep, but like mobile phone batteries, after some time you will notice that the bar is not fully recharged just by resting.&lt;br&gt;
There are some things that work well for me to help me fill up my Energy Bar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spend some quality time with my family&lt;/li&gt;
&lt;li&gt;Doing sport&lt;/li&gt;
&lt;li&gt;Get some fresh air&lt;/li&gt;
&lt;li&gt;Socialize with friends&lt;/li&gt;
&lt;li&gt;Play video games&lt;/li&gt;
&lt;li&gt;Solve a Rubik's cube (the trigger for creating this article)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part to remember here is that not all of them work in the same way for everybody. It depends on the person and the situation. Some of them will give me energy while others will drain it. You need to find out what activities work for you and try to integrate them into your routine, to be sure you have your energy levels controlled.&lt;/p&gt;

&lt;h1&gt;
  
  
  Knowing when to stop
&lt;/h1&gt;

&lt;p&gt;You may experience a lack of energy for a long period of time and no technique to recharge it is working for you. This is known as burnout and you need to stop. Just take some time out, find what you need and eventually return full of energy.&lt;/p&gt;

&lt;h1&gt;
  
  
  Asking for help is fine
&lt;/h1&gt;

&lt;p&gt;Don’t feel frustrated or guilty if you don’t have energy for multiple days in a row. Ask for help. Someone will be able to help you, or you can get help from a professional who specializes in burnout (everyday it’s becoming more common to find therapists offering their services for this kind of situation, since it’s happening more often due to certain practices like &lt;a href="https://www.makeuseof.com/crunch-culture-video-games/#:~:text=Crunch%20culture%20in%20the%20video,it%20can%20be%20before%20launch."&gt;crunch in the video games industry&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Remember, everything in your life will be controlled by your energy levels. What you do or how you feel will be different depending on them. If you make the effort to take control of your energy management, I'm sure it will pay off in multiple aspects of your life, not just as a developer.&lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@pavement_special?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Riccardo Annandale&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/energy-people?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>management</category>
      <category>energy</category>
      <category>developer</category>
    </item>
    <item>
      <title>How using shortcuts has increased my productivity</title>
      <dc:creator>Abraham Romero</dc:creator>
      <pubDate>Wed, 11 Mar 2020 13:48:17 +0000</pubDate>
      <link>https://dev.to/theagilemonkeys/how-using-shortcuts-has-increased-my-productivity-n96</link>
      <guid>https://dev.to/theagilemonkeys/how-using-shortcuts-has-increased-my-productivity-n96</guid>
      <description>&lt;p&gt;The majority of my professional life, and my digital life in general, the mouse has been my best friend. I used to feel the pointer as an extension of my hand. For sure, I was using some shortcuts here and there, but 90% percent of my actions were done with the mouse.&lt;/p&gt;

&lt;p&gt;That changed a year and a half ago when I joined &lt;a href="https://www.theagilemonkeys.com/"&gt;The Agile Monkeys&lt;/a&gt; and some of my colleagues recommended me some shortcuts and some tools to improve my productivity, and that was just the spark of this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why
&lt;/h2&gt;

&lt;p&gt;If you are like I was, the first question is, why should I stop using the mouse? it feels natural to you and you are sure you are not wasting your time doing it. The answer is, you are not doing it wrong, but you could be more productive.&lt;/p&gt;

&lt;p&gt;As developers, our brain is always busy and we are always thinking about multiple things. I realized that I missed my thoughts more than once when doing actions using the mouse. If you are using your keyboard for writing, using your mouse instead of using your keyboard to perform an action involves a physical change, and therefore, a change of focus in your brain.&lt;/p&gt;

&lt;p&gt;The key point here is, when you change your focus you are more prone to a change of context.&lt;/p&gt;

&lt;p&gt;When discussing productivity, the same topics always come out: programming language, IDEs or operative system. The fact is that the change of context has a bigger impact on your productivity than any other thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  How
&lt;/h2&gt;

&lt;p&gt;We have talked about why, now we need to talk about how. The key point here is to distinguish the shortcuts that force a change of focus and avoid them.&lt;/p&gt;

&lt;p&gt;Here I'll talk about the tools I use, there are more in the market and I would love to read in the comments what you are using. Some of the tools I list here are paid tools. Also, I'm just talking about tools for Mac OS X that is my current environment but you can find similar tools and do the same things we explain here on Windows or Linux.&lt;/p&gt;

&lt;h3&gt;
  
  
  BetterTouchTools
&lt;/h3&gt;

&lt;p&gt;This tool is great and you can configure it do to amazing things, among other things, you can create shortcuts for your most-used applications. The shortcut to change between apps is one of the more known, Cmd + Tab, but this shortcut has an important drawback, you will change your focus, you want to change from Slack to your IDE and you will find other apps in the middle and it is very easy to become a change of context.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;My shortcuts 1:&lt;/strong&gt; Open most-used apps
&lt;/h4&gt;

&lt;p&gt;Having shortcuts to switch between the apps I use every day have changed the way I work, I have shortcuts for Chrome, Visual Studio Code, Slack, Pycharm, IntelliJ, Fork, and some other apps, that means that I can change between them without changing my focus, just pressing a keys combination on my keyboard. &lt;strong&gt;In this case, I use the shortcuts Ctrl + Cmd + Alt + (first character of the name of the app).&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Magnet
&lt;/h3&gt;

&lt;p&gt;Magnet is a very simple app that helps you organize your windows on your screen.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;My shortcuts 2:&lt;/strong&gt; Move windows
&lt;/h4&gt;

&lt;p&gt;The shortcuts I used the most when moving windows are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl + Alt + Left Arrow&lt;/strong&gt; =&amp;gt; Set the current window in the half left side of the screen&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl + Alt + Right Arrow&lt;/strong&gt; =&amp;gt; Set the current window in the half right side of the screen&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl + Alt + Enter&lt;/strong&gt; =&amp;gt; Maximize the current window (not entering full screen mode)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl + Alt + E&lt;/strong&gt; =&amp;gt; Set the current windows at a size 2/3 of the screen starting from the left border&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl + Alt + T&lt;/strong&gt; =&amp;gt; Set the current windows at a size 2/3 of the screen starting from the right border&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  IntelliJ
&lt;/h3&gt;

&lt;p&gt;IntelliJ and Jetbrain products are my main IDEs. Working with IntelliJ is great, but when you learn some of the available shortcuts, it's amazing. You should master your IDE and be able to do almost everything you need with a shortcut, it doesn't matter what IDE you use.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;My shortcuts 3:&lt;/strong&gt; Inside the IntelliJ
&lt;/h4&gt;

&lt;p&gt;IntelliJ has an amusing amount of shortcuts, here I'll list the ones I use more frequently and, therefore, the ones that helps me avoiding changing my focus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Alt + Up arrow&lt;/strong&gt; =&amp;gt; Syntax aware selection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ctrl + Space&lt;/strong&gt; =&amp;gt; Code completion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shift + Cmd + o&lt;/strong&gt; =&amp;gt;  Search files (avoids using the tabs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Double shift&lt;/strong&gt; =&amp;gt; Search everywhere, it includes search for command you don't know the shortcut for&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cmd + B&lt;/strong&gt; =&amp;gt; Go to declaration&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Chrome &lt;a href="https://chrome.google.com/webstore/detail/quick-tabs/jnjfeinjfmenlddahdjdmgpbokiacbbb/related?hl=en"&gt;Quick Tabs extension&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;When working with your browser, the Ctrl + Tab shortcut to select the next tab is not efficient, when you have 6+ tabs (something quite common nowadays) you can't be productive by changing to the next or the previous tab. I recommend Quick Tabs extension for Chrome to select a tab by name.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;My shortcuts 4:&lt;/strong&gt; Select a Chrome tab
&lt;/h4&gt;

&lt;p&gt;When working with Chrome, there are two ways to select a tab, by tab number (provided out-of-the-box by Chrome) and by tab name (with the Quick Tab extension):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cmd + [1..8]&lt;/strong&gt; =&amp;gt; Select a tab by number&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cmd + e&lt;/strong&gt; =&amp;gt; Select a tab by name&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I'm sure I use more shortcuts but the ones I mentioned above are the ones that have made a more impact on my productivity. I would like to know what shortcuts have changed your way of working or if you think that shortcuts are not the answer to increase your productivity.&lt;/p&gt;

</description>
      <category>shortcuts</category>
      <category>osx</category>
      <category>intellij</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Using VS Code for notes taking</title>
      <dc:creator>Abraham Romero</dc:creator>
      <pubDate>Thu, 05 Mar 2020 12:27:58 +0000</pubDate>
      <link>https://dev.to/theagilemonkeys/using-vs-code-for-notes-taking-3eof</link>
      <guid>https://dev.to/theagilemonkeys/using-vs-code-for-notes-taking-3eof</guid>
      <description>&lt;p&gt;Everybody writes notes. I found that my way of doing it was not efficient enough for some reason. I wanted to have them distributed in different folders (logical divisions) and have them synchronized to the cloud in an easy way plus being able to use a decent editor so I decided to give it a try with the one I had already installed: Visual Studio Code.&lt;/p&gt;

&lt;p&gt;First of all, I installed the following extensions for VS Code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=canadaduane.notes"&gt;Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=emeraldwalk.RunOnSave"&gt;RunOnSave&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notes extension provides some cool options to ease the notes writing (TODO items and code fragments are key for me)&lt;/p&gt;

&lt;p&gt;To accomplish my goal of synchronization to the cloud, I decided to use GitHub as the storage for my notes.&lt;/p&gt;

&lt;p&gt;I created a folder for my notes and started a git repository there:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    git init
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then I created a GitHub repo and added it as a remote to the repository:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    git remote add origin git@git.....
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I created a script to automate the synchronization with GitHub, I stored it under the notes folder in the path ".auto/commit.sh":&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    git add -A
    git commit -m 'auto commit'
    git push origin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;As the last step, I configured RunOnSave extension by creating a configuration file in the notes folder under the path ".vscode/settings.json" with this content:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    "emeraldwalk.runonsave": {
        "commands": [
             {
                "match": ".notes",
                "isAsync": true,
                "cmd": "./.auto/commit.sh"
             }
        ]
    }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;With the project configured in this way, once a "*.notes" file is saved, it gets automatically committed to the GitHub repository.&lt;/p&gt;

&lt;p&gt;With this approach, I found a way to freely organize my notes in the folders I want and synchronize them in a frictionless way.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>notes</category>
      <category>github</category>
    </item>
  </channel>
</rss>
