<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Software Worker]]></title><description><![CDATA[Software Worker]]></description><link>https://blog.softwareworker.com</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Apr 2026 09:38:57 GMT</lastBuildDate><atom:link href="https://blog.softwareworker.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Capacity Planning: Managing Public Holidays for Distributed Teams]]></title><description><![CDATA[The first team I managed was collocated, which made tracking public holidays easy. I’d simply refer to a single source of truth, usually an official government page, and everything was straightforward.
Things became more complex when I started managi...]]></description><link>https://blog.softwareworker.com/capacity-planning-managing-public-holidays-for-distributed-teams</link><guid isPermaLink="true">https://blog.softwareworker.com/capacity-planning-managing-public-holidays-for-distributed-teams</guid><category><![CDATA[CapacityPlanning]]></category><category><![CDATA[Capacity]]></category><category><![CDATA[Team Management]]></category><category><![CDATA[engineering-management]]></category><category><![CDATA[Google Calendar]]></category><dc:creator><![CDATA[Leandro Monaco]]></dc:creator><pubDate>Fri, 14 Mar 2025 04:20:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/tT2DSShVDTI/upload/b505a231bcfe14f2bf48b386bb20af3b.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The first team I managed was collocated, which made tracking public holidays easy. I’d simply refer to a single source of truth, usually an official government page, and everything was straightforward.</p>
<p>Things became more complex when I started managing teams across multiple countries and even different states within Australia. Suddenly, I found myself pulling public holiday data from various sources, piecing it together into a Confluence page, and constantly updating holidays that depended on lunar calendars or other shifting factors.</p>
<p>Some holidays don’t fall on the same date every year, making planning less predictable. For instance, Easter Sunday can land anywhere between late March and late April, depending on the lunar cycle. Eid’s dates are similarly determined by moon sightings. Then there are holidays like Australia Day, which have fixed dates but when it falls on a weekend it’s observed on a working day. Keeping track of all these combinations for multiple countries was a nightmare.</p>
<p>What should have been a simple task quickly turned into a maintenance headache. Important? Yes. But also, incredibly repetitive and tedious.</p>
<p>After some research, I found that Google Calendar provides public holiday calendars that can be added directly. That helped, but it didn't solve the challenge of accurately forecasting capacity for future sprints. So, I created an API client to pull the data that I can then cross-reference with the engineers’ location to identify when they’d be unavailable.</p>
<p>Here’s a code snippet on how I achieved it.</p>
<pre><code class="lang-csharp"><span class="hljs-comment">//dotnet add package DevExLead.Integrations --version 0.2.1-g3f62bbd878</span>
<span class="hljs-comment">//using DevExLead.Integrations.GoogleCalendar;</span>
<span class="hljs-keyword">var</span> googleCalendarConnector = <span class="hljs-keyword">new</span> GoogleCalendarConnector(<span class="hljs-string">"{{Google API Key}}"</span>, <span class="hljs-literal">false</span>);
<span class="hljs-keyword">var</span> googleCalendarPublicHolidays = <span class="hljs-keyword">await</span> googleCalendarConnector.GetPublicHolidaysAsync(<span class="hljs-string">"{{CountryId}}"</span>);
</code></pre>
<p>Check out the full list of Google Calendar IDs <a target="_blank" href="https://gist.github.com/leandromonaco/7fe3c3b94725221e2ccb8c04df058b53">here</a>.</p>
<p>Have you faced a similar challenge? How did you handle it?</p>
<p>I’d like to hear your thoughts.</p>
<p>Until next time, keep learning!</p>
]]></content:encoded></item><item><title><![CDATA[Make Unplanned Work Visible in JIRA]]></title><description><![CDATA[It is Monday morning and your team has just wrapped up Sprint Planning. Everyone is fired up and ready to crush the sprint goal.
Fast forward to the next day and things take an unexpected turn. Your teammate’s laptop is out of commission because his ...]]></description><link>https://blog.softwareworker.com/make-unplanned-work-visible-in-jira</link><guid isPermaLink="true">https://blog.softwareworker.com/make-unplanned-work-visible-in-jira</guid><category><![CDATA[Productivity]]></category><category><![CDATA[devex]]></category><category><![CDATA[developer experience]]></category><category><![CDATA[JIRA]]></category><category><![CDATA[cli]]></category><dc:creator><![CDATA[Leandro Monaco]]></dc:creator><pubDate>Fri, 21 Feb 2025 01:29:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/Ax8IA8GAjVg/upload/1f74212769cf971d922d9a2c599f3af2.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It is Monday morning and your team has just wrapped up Sprint Planning. Everyone is fired up and ready to crush the sprint goal.</p>
<p>Fast forward to the next day and things take an unexpected turn. Your teammate’s laptop is out of commission because his cat decided to use it as a litter box. Now they are stuck reinstalling everything from scratch. Rest in peace, productivity.</p>
<p>Then a critical bug pops up. It should be a quick fix, but surprise, there is no local test data to reproduce the issue. What was supposed to be a fast resolution turns into an all-day setup nightmare.</p>
<p>Just when you think things are back on track, a high-priority production incident appears out of nowhere. Suddenly you are pulled away from your planned work, scrambling to address it.</p>
<p>Sound familiar? These kinds of disruptions can pile up quickly. Emergencies and invisible work do more than drain productivity. They slow down momentum and make it harder to deliver on your commitments. Without visibility into these interruptions, sprint predictability goes out the window.</p>
<p>That is why transparency matters. It is not just about keeping stakeholders informed. It helps you spot patterns, identify where the team’s time is getting lost, and find ways to prevent similar disruptions in future sprints.</p>
<p>But let us be honest. Logging unexpected work into JIRA is no one’s favorite task. It forces engineers to break their focus, open JIRA, navigate through forms, and fill out all the required fields. It is tedious, which is why it often gets skipped.</p>
<p>So I tried a different approach. I built a <a target="_blank" href="https://github.com/devexlead/devexlead-cli/blob/main/docs/jira.md">CLI assistant</a> that lets me create tickets directly from the terminal without ever opening a browser. It has saved me time and made staying on top of tasks much easier.</p>
<p>I would love for you to <a target="_blank" href="https://github.com/devexlead/devexlead-cli/blob/main/docs/jira.md">check it out</a> and share your thoughts. Feedback is always welcome.</p>
<p>Until next time, keep learning!</p>
]]></content:encoded></item><item><title><![CDATA[Supercharge your CLI Experience with PowerShell]]></title><description><![CDATA[There's something undeniably empowering about mastering the command-line interface. Why waste time navigating endless menus when a single, well-crafted command can accomplish the same task in seconds? The CLI isn’t just about speed, it’s about standa...]]></description><link>https://blog.softwareworker.com/supercharge-your-cli-experience-with-powershell</link><guid isPermaLink="true">https://blog.softwareworker.com/supercharge-your-cli-experience-with-powershell</guid><category><![CDATA[Productivity]]></category><category><![CDATA[cli]]></category><category><![CDATA[Powershell]]></category><category><![CDATA[developer experience]]></category><category><![CDATA[devex]]></category><dc:creator><![CDATA[Leandro Monaco]]></dc:creator><pubDate>Fri, 31 Jan 2025 02:17:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/ndokCrfQWrI/upload/d43deb83b4136f86f1c676cb87d1a54c.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There's something undeniably empowering about mastering the command-line interface. Why waste time navigating endless menus when a single, well-crafted command can accomplish the same task in seconds? The CLI isn’t just about speed, it’s about standardization. It allows us to automate workflows, streamline repetitive tasks, and integrate seamlessly into CI/CD pipelines, making development not just faster but more predictable and efficient.</p>
<p>Yet, for all its power, the CLI has its challenges. The sheer number of commands, flags, and syntax variations can be overwhelming. That mental overhead can slow us down, pulling us out of our flow just to track down the right option. Muscle memory helps, but even the most experienced developers occasionally find themselves searching for that elusive command they used last week.</p>
<p>This is where <a target="_blank" href="https://learn.microsoft.com/en-us/powershell/module/psreadline/"><strong>PSReadLine</strong></a> becomes a game-changer. It transforms the way we interact with the CLI, making command recall and editing effortless. No more retyping or digging through history, predictive IntelliSense surfaces relevant commands as we type, reducing friction and keeping us focused on the task at hand. With tools like this, the CLI isn't just a tool; it becomes an extension of how we think and work, turning every session into a smoother, more intuitive experience.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1738282818959/68439a15-148c-4748-aa8e-58185056baa8.gif" alt class="image--center mx-auto" /></p>
<p>You can enable it by following these commands:</p>
<pre><code class="lang-powershell"><span class="hljs-built_in">Install-Module</span> PSReadLine <span class="hljs-literal">-Force</span>; 

<span class="hljs-comment"># To ensure persistence across sessions, add this line to your PowerShell profile.</span>
<span class="hljs-built_in">Set-PSReadLineOption</span> <span class="hljs-literal">-PredictionViewStyle</span> ListView <span class="hljs-literal">-PredictionSource</span> <span class="hljs-built_in">History</span> <span class="hljs-literal">-HistoryNoDuplicates</span> <span class="hljs-literal">-MaximumHistoryCount</span> <span class="hljs-number">10000</span>
</code></pre>
<p>Until next time, keep learning!</p>
]]></content:encoded></item><item><title><![CDATA[Consistent Note-Taking: A Developer's Secret Tool]]></title><description><![CDATA[Early in my career, I used to brush off the idea of note-taking, thinking it was too simple to matter. But once I started doing it, I realized just how much it can help. Over the years, I’ve come to rely on it more than I ever expected.
Think of your...]]></description><link>https://blog.softwareworker.com/consistent-note-taking-a-developers-secret-tool</link><guid isPermaLink="true">https://blog.softwareworker.com/consistent-note-taking-a-developers-secret-tool</guid><category><![CDATA[career advice]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[teamwork]]></category><category><![CDATA[professional development]]></category><category><![CDATA[note-taking]]></category><dc:creator><![CDATA[Leandro Monaco]]></dc:creator><pubDate>Fri, 24 Jan 2025 06:01:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/RLw-UC03Gwc/upload/a042b07fa9af9a2ab5368786f8dcad84.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Early in my career, I used to brush off the idea of note-taking, thinking it was too simple to matter. But once I started doing it, I realized just how much it can help. Over the years, I’ve come to rely on it more than I ever expected.</p>
<p>Think of your memory like RAM; it’s great for handling things in real time, but it’s not built for long-term storage. Notes act like your hard drive, capturing all those key details so you can offload what’s in your head and avoid the dreaded overflow.</p>
<p>We juggle so many moving parts each day that trusting our mental “RAM” alone is basically asking to lose track of something important. By writing things down, you create a permanent record for your future self, so you’re not left scratching your head later about why you chose a particular approach. Everything is right there, waiting to remind you how it all went down.</p>
<p>Notes also make life way easier in all sorts of ways:</p>
<ul>
<li><p>Help you track achievements, so you’re ready when performance reviews roll around.</p>
</li>
<li><p>Give you talking points for your one-on-one meetings with your manager.</p>
</li>
<li><p>Remind you of challenges you want to bring up in your next team retrospective.</p>
</li>
<li><p>Let you keep track of brainstorms or half-formed ideas that could grow into something bigger.</p>
</li>
<li><p>Allow you to document processes you only tackle occasionally, sparing you from relearning them every time.</p>
</li>
</ul>
<p>Another huge perk is how much this habit helps your team. By sharing your notes, others can solve problems on their own without hijacking your time at the worst possible moment, like when you’re knee-deep in a bigger production emergency. It’s also the first step toward automating repetitive tasks, freeing up everyone’s bandwidth for more impactful work.</p>
<p>Pick whatever tool works for you and start now. I personally use Obsidian (check out my <a target="_blank" href="https://github.com/leandromonaco/digital-knowledge-garden">GitHub repo</a>) because it lets me connect notes on different topics for my professional growth, and it’s been a total game-changer. It may feel like a small shift, but give it some time, and you’ll notice a jump in your productivity, a boost in your confidence, and a more collaborative, self-sufficient team. It’s a tiny adjustment you definitely won’t regret.</p>
<p>Until next time, keep learning!</p>
]]></content:encoded></item><item><title><![CDATA[Onboarding: Automate Your Windows Setup]]></title><description><![CDATA[Congrats on day one! You’ve just unboxed your shiny new laptop and the excitement is real. If you’re truly fortunate, your company might have already installed all the software you need. But let’s be honest, how often does that actually happen?
No wo...]]></description><link>https://blog.softwareworker.com/onboarding-automate-your-windows-setup</link><guid isPermaLink="true">https://blog.softwareworker.com/onboarding-automate-your-windows-setup</guid><category><![CDATA[onboarding]]></category><category><![CDATA[Windows]]></category><category><![CDATA[developers]]></category><dc:creator><![CDATA[Leandro Monaco]]></dc:creator><pubDate>Fri, 17 Jan 2025 05:17:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/Lszky6odA6I/upload/b23d93036be7910f299d265a73a48535.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Congrats on day one!</strong> You’ve just unboxed your shiny new laptop and the excitement is real. If you’re truly fortunate, your company might have already installed all the software you need. But let’s be honest, how often does that actually happen?</p>
<p><em>No worries if you’re already set up. Save this article for later, it’ll be a lifesaver next time you unbox a new device or decide to factory reset your current one.</em></p>
<p>So now you’re staring at a blank slate. In the best scenario, someone has graciously prepared an onboarding doc with all the download links and version numbers. In the worst scenario, you’re on your own (no doc, no links), just you wandering around the office (or Slack) bugging your new colleagues for help. Hey, at least it’s a solid excuse to meet people!</p>
<p>Once you do track down all those installers, it’s time for the big moment: double-click that setup.exe, hit “Next” a bunch of times, then “Finish”, then restart. Repeat as necessary. Welcome to the setup marathon, my friend!</p>
<p>But here’s a shortcut: <a target="_blank" href="https://learn.microsoft.com/en-us/windows/package-manager/configuration/">winget configuration</a>. This handy command automates the entire setup process with just one go. Thanks to Windows Package Manager and PowerShell DSC, you can run everything hands-free, grab a coffee and let your machine do its thing.</p>
<p>It’s also reliable and repeatable because everything is pre-defined in a handy YAML file. You won’t have to worry about rummaging around for the correct versions of tools and software. Once you’ve got that config set up, onboarding to a new project (or helping the next newbie) becomes a breeze.</p>
<p>Curious about how to implement it?</p>
<p>Check out my <a target="_blank" href="https://github.com/softwareworkercom/winget">GitHub repo</a> for an example.</p>
<p>Your new colleagues will be forever grateful you spared them the headache of manual installs.</p>
<p>Until next time, keep learning!</p>
]]></content:encoded></item></channel></rss>