<?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: DevWithZach</title>
    <description>The latest articles on DEV Community by DevWithZach (@devwithzach).</description>
    <link>https://dev.to/devwithzach</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3774232%2F0c05a142-09a6-4123-acd7-518fbf95504b.png</url>
      <title>DEV Community: DevWithZach</title>
      <link>https://dev.to/devwithzach</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devwithzach"/>
    <language>en</language>
    <item>
      <title>Adelaide Startups &amp; Manila Engineers: A 2026 Cost Analysis</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 28 Sep 2026 08:00:22 +0000</pubDate>
      <link>https://dev.to/devwithzach/adelaide-startups-manila-engineers-a-2026-cost-analysis-3892</link>
      <guid>https://dev.to/devwithzach/adelaide-startups-manila-engineers-a-2026-cost-analysis-3892</guid>
      <description>&lt;h1&gt;
  
  
  Adelaide Startups &amp;amp; Manila Engineers: A 2026 Cost Analysis
&lt;/h1&gt;

&lt;p&gt;I remember staring at a spreadsheet in 2020, trying to justify a $150k annual salary for a senior frontend engineer in San Francisco. Then, a few months later, I was negotiating a rate for a phenomenal full-stack developer in Manila, and the number was $45k. That’s not a typo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;The global talent pool is real, and the cost arbitrage is still significant. For Adelaide startups, especially those looking to scale rapidly without burning through seed funding in months, understanding the nuances of hiring in Manila isn't just an option, it's a strategic imperative for survival and growth. The economic pressures haven't disappeared; they've just shifted, and smart founders are capitalizing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Time Zones Are a Feature, Not a Bug (If You Plan For It)
&lt;/h3&gt;

&lt;p&gt;When we were rebuilding the V2 of Tokkatok, a social platform, we had a core team in the US and a significant portion of our backend and QA engineers in the Philippines. My initial thought was, "This is going to be a communication nightmare." I was wrong. We scheduled our daily stand-ups for 10 AM US Pacific Time, which was 11 PM Manila Time. This meant our US team got their updates at the start of their day, and our Manila team was finishing theirs.&lt;/p&gt;

&lt;p&gt;The real win came from asynchronous communication. We lived in Slack and Jira. Any critical blockers were flagged with urgency, and if immediate response was needed, we had engineers on call in both time zones. For non-urgent questions or updates, the 12-15 hour difference meant people could work on solutions without constant interruption. A developer in Manila could spend their entire day crafting a complex database query or fixing a tricky bug, then push their code, and by the time the US team woke up, it was there, reviewed, and ready for integration. This wasn't just cost-saving; it boosted productivity by allowing for deep work.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Quality is About Process, Not Geography
&lt;/h3&gt;

&lt;p&gt;I've heard the whispers: "You get what you pay for." And yes, if you hire the cheapest option without due diligence, you might. But the engineers I've worked with in Manila for projects like EngagePOS (a point-of-sale system) and LaundryIT (a laundry management SaaS) consistently demonstrated a level of skill and dedication that rivaled any US-based team I've managed. The key wasn't the location; it was the &lt;em&gt;process&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;We implemented rigorous code reviews using GitHub, automated testing with Jest and Cypress, and a CI/CD pipeline powered by GitHub Actions. For LaundryIT, we had a bug bounty program that paid out up to $500 per critical bug found by external testers. The internal QA team in Manila, working with our US-based product managers, was meticulous. A common misconception is that you'll spend more time managing offshore teams. My experience is the opposite: if you invest in solid processes upfront, you spend &lt;em&gt;less&lt;/em&gt; time firefighting. We had a critical performance issue in the EngageHRIS backend that was identified and fixed by a junior developer in Manila within 24 hours of it being reported, simply because our monitoring and alerting (Datadog) were set up to catch it immediately, and the codebase was well-structured due to our review process.&lt;/p&gt;

&lt;p&gt;Here's a snippet of a typical GitHub Actions workflow we used for automated testing and deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CI/CD Pipeline&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;main&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build_and_test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v3&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Set up Node.js&lt;/span&gt;
      &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-node@v3&lt;/span&gt;
      &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;node-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;18'&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install dependencies&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm install&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run tests&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. The "Hidden" Costs of Hiring Offshore Are Manageable
&lt;/h3&gt;

&lt;p&gt;Beyond salary, there are other expenses. For Raketlance, our freelance marketplace, we needed to handle international payments. Services like Wise (formerly TransferWise) and Payoneer made this incredibly straightforward and cost-effective. For our Philippine teams, we typically paid a premium for reliable internet and provided allowances for co-working spaces if they preferred that over working from home.&lt;/p&gt;

&lt;p&gt;The biggest "hidden" cost I've encountered is cultural understanding and communication nuances. This isn't about engineers being difficult; it's about different communication styles. I learned to be extremely explicit in my requirements. Instead of saying, "Make the button look good," I'd say, "Ensure the primary CTA button is #007bff, has a hover state of #0056b3, and a border-radius of 4px." We also invested in English language training for some of our junior hires, which was a small cost ($500 per person annually) that paid dividends in clearer communication. The total cost for payment processing, internet stipends, and occasional training was, on average, less than 5% of the total compensation package. Compared to the 20-30% overhead for benefits, office space, and recruitment fees for US-based hires, it was a no-brainer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;I would skip the temptation to hire a "team lead" in the Philippines to manage the offshore engineers. Instead, I'd embed senior engineers from my core team (wherever they are) directly into the offshore pods. This fosters a stronger sense of ownership and ensures that technical direction is consistent. My experience with Tokkatok showed that when senior US-based engineers were directly mentoring and collaborating with their Manila counterparts on a daily basis, the quality of work and the speed of delivery increased significantly, and it dissolved any "us vs. them" mentality.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Start with a single, high-impact role.&lt;/strong&gt; Don't try to build an entire team overnight. Hire one excellent senior engineer for a critical function. Test the waters.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Invest in your onboarding process.&lt;/strong&gt; Create detailed documentation, clear expectations, and a structured onboarding plan that covers both technical and cultural aspects.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Prioritize asynchronous communication tools and habits.&lt;/strong&gt; Make Slack, Jira, and thorough documentation your best friends. Train your team on how to use them effectively.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at devwithzach.com — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Perth Mining Tech: Building Custom Software with Offshore Teams</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 21 Sep 2026 08:13:35 +0000</pubDate>
      <link>https://dev.to/devwithzach/perth-mining-tech-building-custom-software-with-offshore-teams-5843</link>
      <guid>https://dev.to/devwithzach/perth-mining-tech-building-custom-software-with-offshore-teams-5843</guid>
      <description>&lt;p&gt;# Rebuilding Perth's Mining Tech Landscape: Lessons Learned from Offshore Development&lt;/p&gt;

&lt;p&gt;In 2026, Perth's mining industry is at a crossroads. Traditional methods are faltering, and the need for custom software solutions that can streamline operations and improve efficiency has never been greater. I've spent the last decade honing my skills as a fractional CTO, leading development teams across the globe, including the successful creation of EngagePOS, LaundryIT, and Raketlance. Today, I want to share three crucial lessons I learned while building custom software with offshore teams in Perth's mining sector.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;The global mining industry is facing unprecedented pressure to reduce costs, improve safety, and increase productivity. In Perth, the situation is particularly acute due to the city's reliance on traditional methods and aging infrastructure. Custom software solutions can help address these challenges by automating routine tasks, improving data analysis, and enhancing collaboration between teams. The stakes are high—the companies that embrace this shift will thrive, while those that cling to outdated practices will struggle to compete.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Communication is key: Establish a clear and efficient communication strategy
&lt;/h3&gt;

&lt;p&gt;In my experience, the single most important factor in successful offshore development is communication. Miscommunications can lead to delays, errors, and frustration for both teams. To ensure effective communication, we established daily stand-ups, regular video calls, and a shared project management tool that allowed us to track progress and address issues promptly.&lt;/p&gt;

&lt;p&gt;Here's a simple example: When building LaundryIT, we used Slack as our primary communication tool. By organizing channels by project and topic, we ensured that all relevant information was easily accessible to everyone involved in the project (see &lt;a href="https://api.slack.com/docs/overview" rel="noopener noreferrer"&gt;Slack documentation&lt;/a&gt; for more details).&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Embrace automation: Save time and reduce errors with automated testing and CI/CD pipelines
&lt;/h3&gt;

&lt;p&gt;Automating repetitive tasks is essential for efficient development, especially when working with offshore teams. We implemented continuous integration (CI) and continuous delivery (CD) pipelines using tools like Jenkins and GitHub Actions to automate the build, test, and deployment process for our projects.&lt;/p&gt;

&lt;p&gt;Here's an example of a simple Jenkinsfile that automates the building and testing of a project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;pipeline {&lt;/span&gt;
    &lt;span class="s"&gt;agent any&lt;/span&gt;
    &lt;span class="s"&gt;stages {&lt;/span&gt;
        &lt;span class="s"&gt;stage('Build') {&lt;/span&gt;
            &lt;span class="s"&gt;steps {&lt;/span&gt;
                &lt;span class="s"&gt;sh 'npm install'&lt;/span&gt;
                &lt;span class="s"&gt;sh './build.sh'&lt;/span&gt;
            &lt;span class="s"&gt;}&lt;/span&gt;
        &lt;span class="s"&gt;}&lt;/span&gt;
        &lt;span class="s"&gt;stage('Test') {&lt;/span&gt;
            &lt;span class="s"&gt;steps {&lt;/span&gt;
                &lt;span class="s"&gt;sh './test.sh'&lt;/span&gt;
            &lt;span class="s"&gt;}&lt;/span&gt;
        &lt;span class="s"&gt;}&lt;/span&gt;
    &lt;span class="s"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By automating our testing and deployment processes, we were able to catch errors earlier in the development cycle and ensure that new features were delivered quickly and reliably.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Prioritize security: Protect your data and intellectual property with robust security measures
&lt;/h3&gt;

&lt;p&gt;Security is a critical concern when working with offshore teams, as sensitive company data and intellectual property may be at risk. To mitigate these risks, we implemented a comprehensive security strategy that included regular security audits, encryption of all data in transit and at rest, and strict access controls for our repositories.&lt;/p&gt;

&lt;p&gt;For example, we used AWS Key Management Service (KMS) to encrypt sensitive data stored in S3 buckets. Here's a sample code snippet that demonstrates how to encrypt and decrypt data using KMS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;encrypt_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kms_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;plaintext&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;kms&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;kms&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;KeyId&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;kms_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Plaintext&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;plaintext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;CiphertextBlob&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;base64&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;decrypt_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kms_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ciphertext&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;kms&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;kms&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;kms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decrypt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CiphertextBlob&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;ciphertext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Plaintext&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By prioritizing security, we were able to protect our data and intellectual property while maintaining the trust of our clients.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;One piece of conventional wisdom that I believe is overrated in offshore development is the notion that you must have a large team to be effective. In fact, I've found that smaller, more focused teams are often more efficient and produce higher-quality work. By carefully selecting team members based on their skills and experience, we were able to build high-performing teams of as few as five people. This not only saved us money but also enabled us to move quickly and adapt to changing requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;p&gt;If you're looking to embrace offshore development for your Perth mining tech projects, here are three actionable steps you can take this week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Establish a clear communication strategy, including daily stand-ups, regular video calls, and a shared project management tool.&lt;/li&gt;
&lt;li&gt;Implement automated testing and CI/CD pipelines to streamline your development process and reduce errors.&lt;/li&gt;
&lt;li&gt;Prioritize security by conducting regular audits, encrypting data, and implementing strict access controls for your repositories.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By following these steps, you'll be well on your way to building high-quality custom software solutions that can help your mining company stay competitive in the ever-evolving landscape of 2026.&lt;/p&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at &lt;a href="http://devwithzach.com" rel="noopener noreferrer"&gt;devwithzach.com&lt;/a&gt;—drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Brisbane Tech Scene + Filipino Developers: Same Time Zone, Half the Cost</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 14 Sep 2026 08:06:27 +0000</pubDate>
      <link>https://dev.to/devwithzach/brisbane-tech-scene-filipino-developers-same-time-zone-half-the-cost-2pid</link>
      <guid>https://dev.to/devwithzach/brisbane-tech-scene-filipino-developers-same-time-zone-half-the-cost-2pid</guid>
      <description>&lt;p&gt;# The Unexpected Advantage of Brisbane's Tech Scene and Filipino Developers&lt;/p&gt;

&lt;p&gt;In the heart of Australia, where the sun never sets, lies an overlooked gem in the global tech landscape. This is Brisbane, a city that offers the same time zone as Sydney but costs half as much for skilled talent. Let me share three lessons I've learned from shipping software with Filipino developers based in this thriving yet underestimated tech hub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it Matters in 2026
&lt;/h2&gt;

&lt;p&gt;In today's rapidly evolving digital world, companies are constantly seeking cost-effective solutions without compromising on quality. As the demand for technology services grows, so does the competition to attract top talent. Brisbane, with its thriving tech scene and access to a highly skilled Filipino workforce, provides an ideal solution for businesses looking to balance budgets and deliver high-quality software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Things I Learned Shipping This
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Collaborative Coding: The Power of Remote Pair Programming
&lt;/h3&gt;

&lt;p&gt;Pair programming is a powerful technique that can significantly reduce errors and improve code quality. In my experience, this was especially true when working with Filipino developers based in Brisbane. Here's an example using Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_common_elements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;list2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# Example usage:
&lt;/span&gt;&lt;span class="n"&gt;common_elements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;find_common_elements&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;common_elements&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Output: [2, 3]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By working together in real-time, developers can catch mistakes earlier and ensure that code is well-documented and maintainable.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Cultural Understanding: Bridging the Gap with a Shared Time Zone
&lt;/h3&gt;

&lt;p&gt;Working across different time zones can be challenging, but sharing the same time zone as your team simplifies communication and collaboration. This was crucial when leading projects for clients based in the US, Canada, and Australia while being based in the Philippines. With Brisbane's time zone (UTC+10), it became easier to coordinate meetings, resolve issues promptly, and ensure a smooth development process.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Cost Savings: Reducing Development Expenses without Sacrificing Quality
&lt;/h3&gt;

&lt;p&gt;By tapping into the Filipino developer talent pool in Brisbane, businesses can benefit from significant cost savings while maintaining high-quality output. According to data from Payscale, the average annual salary for a software engineer in the Philippines is around $7,000 compared to over $62,000 in Australia and more than $130,000 in the US. These savings can be reinvested into the business to drive innovation and growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Would Skip if I Started Today
&lt;/h2&gt;

&lt;p&gt;Contrary to popular belief, outsourcing software development doesn't always require lengthy contract negotiations or extensive due diligence. In my experience, focusing too much on formalities can lead to delays and missed opportunities. Instead, I would recommend building strong relationships with trusted partners and focusing on clear communication and project management to ensure successful outcomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Looks Like for Your Team
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Research and identify reliable development partners based in Brisbane with a strong presence of Filipino developers.&lt;/li&gt;
&lt;li&gt;Establish clear communication channels, including regular meetings and progress updates.&lt;/li&gt;
&lt;li&gt;Invest time in understanding your team's cultural background to build trust and strengthen collaboration.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at &lt;a href="http://devwithzach.com" rel="noopener noreferrer"&gt;devwithzach.com&lt;/a&gt; — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Melbourne SaaS Founders: The PH Engineering Playbook</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 07 Sep 2026 08:00:26 +0000</pubDate>
      <link>https://dev.to/devwithzach/melbourne-saas-founders-the-ph-engineering-playbook-1j8h</link>
      <guid>https://dev.to/devwithzach/melbourne-saas-founders-the-ph-engineering-playbook-1j8h</guid>
      <description>&lt;h1&gt;
  
  
  Melbourne SaaS Founders: The PH Engineering Playbook
&lt;/h1&gt;

&lt;p&gt;I once spent a week debugging a critical payment gateway integration for a US-based client. It was 3 AM, I was running on lukewarm coffee and sheer stubbornness, and the problem wasn't a bug in &lt;em&gt;my&lt;/em&gt; code, but a bizarre edge case in a third-party API that only triggered on Tuesdays. That’s the reality of shipping software, and it’s a reality I’ve lived across continents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;Melbourne’s SaaS scene is buzzing, but scaling engineering teams efficiently is a perennial challenge. The Philippines offers a deep, talented pool of developers who can significantly de-risk your growth, provided you understand how to work with them. This isn't about cheap labor; it's about smart, cost-effective access to skilled professionals who can help you ship faster and better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Building trust takes more than a Slack channel
&lt;/h3&gt;

&lt;p&gt;When I first started working with teams in the Philippines, I made the mistake of treating them like any other remote team. I’d send over specs, expect daily stand-ups, and assume everyone was on the same page. It wasn't until I was building EngagePOS, a complex point-of-sale system, that I realized how wrong I was. We had a brilliant Filipino dev, let’s call him Rico, who was consistently delivering great code but seemed hesitant to flag issues or suggest alternatives.&lt;/p&gt;

&lt;p&gt;It turned out that in many Filipino work cultures, there's a strong emphasis on not questioning authority or appearing incompetent. My direct, "tell-it-like-it-is" style, common in US tech, was coming across as aggressive or dismissive. We were burning money on missed deadlines because Rico was afraid to say, "Zach, I don't think this approach will work because of X, Y, Z."&lt;/p&gt;

&lt;p&gt;The fix? I started scheduling 1-on-1 video calls, not just for code reviews, but for casual chats. I asked about their families, their weekends, their favorite Filipino dishes. I learned to frame feedback as collaborative problem-solving. Instead of saying, "This isn't right," I’d say, "Help me understand how we can make this better. What are your thoughts on this challenge?"&lt;/p&gt;

&lt;p&gt;One evening, while working on Raketlance, a freelance marketplace, we hit a snag with user authentication that involved a complex JWT implementation. Rico, who was leading the backend, initially just implemented it as requested. During our 1-on-1, I asked him what he thought of the security implications. He paused, then hesitantly brought up a potential vulnerability he’d spotted but hadn’t felt comfortable mentioning in a group setting. We then spent another hour discussing it, and he ended up proposing a more secure, albeit slightly different, implementation that saved us from a potential security headache down the line.&lt;/p&gt;

&lt;p&gt;This shift in communication, focusing on building rapport and creating a safe space for ideas, was crucial. It wasn't just about being nice; it was about unlocking the team's full potential.&lt;/p&gt;

&lt;h3&gt;
  
  
  Asynchronous communication is your friend, but know when to sync
&lt;/h3&gt;

&lt;p&gt;When I was rebuilding Tokkatok's V2, a social discovery app, we had a distributed team spanning Manila, Cebu, and myself in the US. The time difference was significant – often 12-15 hours. Trying to force synchronous meetings for everything was a nightmare. Developers were joining calls at 2 AM their time, and I was staying up late. It was unsustainable and inefficient.&lt;/p&gt;

&lt;p&gt;We pivoted hard into asynchronous communication. We used tools like Notion for detailed documentation, Loom for screen recordings explaining complex features or bugs, and GitHub Issues for tracking tasks with clear acceptance criteria. Every code change had a detailed pull request description.&lt;/p&gt;

&lt;p&gt;Here’s a snippet of how we documented a new feature for the Tokkatok V2 messaging system in Notion:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Feature: Real-time Typing Indicators&lt;/span&gt;

&lt;span class="gs"&gt;**Goal:**&lt;/span&gt; Improve user experience by showing when another user is actively typing.

&lt;span class="gs"&gt;**User Story:**&lt;/span&gt; As a user, I want to see when the person I'm messaging is typing so I know they are engaged in the conversation.

&lt;span class="gs"&gt;**Technical Implementation:**&lt;/span&gt;
&lt;span class="p"&gt;*&lt;/span&gt;   Backend: Redis Pub/Sub for broadcasting typing events.
&lt;span class="p"&gt;*&lt;/span&gt;   Frontend: WebSocket connection to receive typing events.
&lt;span class="p"&gt;*&lt;/span&gt;   API Endpoint: &lt;span class="sb"&gt;`POST /api/v2/chat/{chat_id}/typing`&lt;/span&gt; (body: &lt;span class="sb"&gt;`{ "is_typing": true/false }`&lt;/span&gt;)
&lt;span class="p"&gt;*&lt;/span&gt;   Debounce logic on client-side to prevent excessive event firing (e.g., 500ms).
&lt;span class="p"&gt;*&lt;/span&gt;   Timeout for clearing typing indicator (e.g., 5 seconds after last event).

&lt;span class="gs"&gt;**Acceptance Criteria:**&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt;  When User A starts typing in a chat with User B, User B sees a "User A is typing..." indicator.
&lt;span class="p"&gt;2.&lt;/span&gt;  The indicator disappears 5 seconds after User A stops typing.
&lt;span class="p"&gt;3.&lt;/span&gt;  The indicator is not shown if User A's connection is lost.
&lt;span class="p"&gt;4.&lt;/span&gt;  No more than 2 typing events per second are sent from the client.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allowed developers to pick up tasks, understand requirements, and provide updates on their own schedules. It also meant that when we &lt;em&gt;did&lt;/em&gt; have a sync call, it was for high-value problem-solving or strategic discussions, not status updates. I remember a particularly tricky bug related to message ordering that spanned across two services. Instead of calling an emergency meeting, the relevant developers documented their findings in GitHub issues, shared Loom videos of the behavior, and collaboratively worked through it asynchronously over 24 hours. By the time I logged in, they had a clear proposal and a patch ready.&lt;/p&gt;

&lt;p&gt;However, I learned that &lt;em&gt;too much&lt;/em&gt; async can lead to isolation. For critical decisions or complex architectural discussions, a well-timed video call was invaluable. For instance, when we were deciding on the database migration strategy for LaundryIT, a laundry service management app, we had a few critical options. We spent an hour on a video call, sketching out diagrams on a virtual whiteboard, and came to a consensus much faster than a lengthy email chain would have allowed. The key is to be deliberate about &lt;em&gt;when&lt;/em&gt; you sync.&lt;/p&gt;

&lt;h3&gt;
  
  
  Invest in your infrastructure, not just your people
&lt;/h3&gt;

&lt;p&gt;My first few projects were lean. I was focused on getting features out the door, and sometimes, the infrastructure took a backseat. This bit me hard when working on EngageHRIS, a human resources information system. We were using a basic Heroku setup, and as the user base grew, performance started to degrade. Deployments became slow, and we experienced occasional outages.&lt;/p&gt;

&lt;p&gt;The cost of this neglect was significant. We lost potential enterprise clients because our system couldn't handle their load. The engineering team spent countless hours firefighting instead of building new features. The total cost of downtime and lost revenue was easily in the tens of thousands of dollars annually.&lt;/p&gt;

&lt;p&gt;When I started Simuclear, my current role, I made infrastructure a top priority from day one. We use AWS with Terraform for infrastructure as code. We have a robust CI/CD pipeline using GitHub Actions. We implemented New Relic for monitoring and alerting. This upfront investment, which might seem like a luxury to a bootstrapped startup, pays dividends.&lt;/p&gt;

&lt;p&gt;For example, when we launched a major update for EngagePOS, we were able to deploy it to production with zero downtime and confident rollback capabilities. The monitoring tools alerted us to a minor performance anomaly within minutes of the deployment, and we were able to hotfix it before any users were impacted. The cost of our AWS bill and the tools like Terraform and New Relic is a fraction of what we would have spent on lost productivity and customer churn due to poor infrastructure. Investing in solid tooling and automation upfront means your Filipino engineering team can focus on building value, not wrestling with flaky deployments or slow servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;I’d skip the temptation to micromanage. It’s easy, especially when you’re paying for dedicated resources, to want to be involved in every single task. But that’s not how you build high-performing teams, regardless of location. Instead of assigning tasks and then checking in every hour, I’d focus on defining clear outcomes, setting measurable goals, and empowering the team to figure out the &lt;em&gt;how&lt;/em&gt;. Trust them to do their jobs. Your role shifts from taskmaster to facilitator and strategic guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;p&gt;Here are three actionable steps you can take this week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Schedule a 1-on-1 with a key remote engineer.&lt;/strong&gt; Don't talk about code. Ask them about their day, their challenges outside of work, and what they enjoy most about their role. Build that personal connection.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Document one complex process or feature in your knowledge base.&lt;/strong&gt; Use Loom to record a quick walkthrough. Make it a template for how you want information shared asynchronously.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Review your CI/CD pipeline and monitoring setup.&lt;/strong&gt; Are deployments fast and reliable? Do you have alerts set up for critical metrics? If not, identify one small improvement you can make this week.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at devwithzach.com — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why Sydney CTOs Are Outsourcing Mobile Builds to Manila</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 31 Aug 2026 08:00:31 +0000</pubDate>
      <link>https://dev.to/devwithzach/why-sydney-ctos-are-outsourcing-mobile-builds-to-manila-2mhj</link>
      <guid>https://dev.to/devwithzach/why-sydney-ctos-are-outsourcing-mobile-builds-to-manila-2mhj</guid>
      <description>&lt;h1&gt;
  
  
  Why Sydney CTOs Are Outsourcing Mobile Builds to Manila
&lt;/h1&gt;

&lt;p&gt;I was on a call with a Sydney-based founder, let's call him Mark. He was sweating over a $150k mobile app build that was six months behind schedule and already bleeding cash. He’d hired a local agency, and they were good, technically. But the communication was a nightmare, the costs were astronomical, and the progress was glacial. He asked me, "Zach, is there &lt;em&gt;anywhere&lt;/em&gt; else I can get this done without breaking the bank and losing my sanity?" That’s when I told him about Manila.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;The global talent pool for skilled developers is tighter than ever, and the cost of hiring senior engineers in places like Sydney is frankly unsustainable for most startups. Founders are realizing that the "local is best" mantra for software development often means "local is most expensive and slowest." They need to look further afield, and Manila offers a compelling, proven alternative for high-quality mobile development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping mobile apps with Manila teams
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The "Time Zone Difference" is a Myth if You Use Asynchronous Communication Right
&lt;/h3&gt;

&lt;p&gt;The biggest hang-up Sydney CTOs have about Manila is the 3-hour time difference. "How can we possibly work together?" they ask. My answer: you probably &lt;em&gt;shouldn't&lt;/em&gt; be working synchronously that much anyway. On the Tokkatok V2 rebuild, we had a core team in Sydney and a significant portion of the mobile development happening in Manila.&lt;/p&gt;

&lt;p&gt;Instead of expecting real-time back-and-forth on every ticket, we leaned heavily on detailed asynchronous communication. Think meticulously written Jira tickets with clear acceptance criteria, Loom videos explaining complex UI flows, and Slack channels dedicated to specific features where discussions could live and be referenced later.&lt;/p&gt;

&lt;p&gt;For example, when we were building out the real-time chat feature for Tokkatok, the Manila team would push updates at the end of their day. Our Sydney team would review, add comments, and update tickets first thing in their morning. This meant that by the time the Manila team logged on, they had a clear set of actionable feedback. We didn't waste developer hours waiting for someone to wake up. We were consistently moving forward. The key was building a culture of detailed documentation and clear ownership. If a ticket was unclear, it was the responsibility of the person who created it to clarify it, not the developer to guess.&lt;/p&gt;

&lt;p&gt;Here's a snippet of how we'd structure a typical task description in Jira:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gs"&gt;**Story:**&lt;/span&gt; As a user, I want to see real-time updates in my chat feed so I know when new messages arrive.

&lt;span class="gs"&gt;**Acceptance Criteria:**&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; New messages appear at the top of the chat feed within 2 seconds of being sent.
&lt;span class="p"&gt;2.&lt;/span&gt; Unread message count is updated correctly.
&lt;span class="p"&gt;3.&lt;/span&gt; Message timestamps are accurate.

&lt;span class="gs"&gt;**Technical Notes:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use WebSockets for real-time updates.
&lt;span class="p"&gt;-&lt;/span&gt; Integrate with the existing message service API.
&lt;span class="p"&gt;-&lt;/span&gt; Ensure graceful handling of network interruptions.

&lt;span class="gs"&gt;**Designs:**&lt;/span&gt; [Link to Figma mockups]
&lt;span class="gs"&gt;**Video Walkthrough:**&lt;/span&gt; [Link to Loom recording of expected behavior]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Quality Isn't About Location, It's About Process and Talent Pool
&lt;/h3&gt;

&lt;p&gt;I've seen teams in Sydney produce shoddy code and teams in Manila produce absolute gems. The notion that you inherently get better quality because someone is in a more expensive city is a fallacy. What you &lt;em&gt;do&lt;/em&gt; get in Manila is a massive pool of highly motivated, technically sound developers who are eager to prove themselves.&lt;/p&gt;

&lt;p&gt;When we were building EngagePOS, a point-of-sale system for restaurants, we hired a mobile development team in Manila. We were initially concerned about app performance on lower-end Android devices common in some target markets. Our Manila team didn't just meet the specs; they optimized. They implemented efficient data caching strategies and profiled memory usage aggressively.&lt;/p&gt;

&lt;p&gt;The result? EngagePOS ran smoothly on devices that would have choked other apps. We spent significantly less on QA because the development quality was so high from the outset. We specifically looked for developers with experience in React Native and native Android (Kotlin), and we found exceptional talent. The cost savings were substantial – we built the entire MVP for EngagePOS for under $70,000, a fraction of what a Sydney-based team would have charged.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Communication is King, and Manila Devs Master "Show, Don't Tell"
&lt;/h3&gt;

&lt;p&gt;This ties back to asynchronous communication, but it’s more than just writing good tickets. Filipino developers I’ve worked with have an incredible knack for understanding a problem and then &lt;em&gt;showing&lt;/em&gt; you the solution, rather than just talking about it. This is gold when you're building complex applications.&lt;/p&gt;

&lt;p&gt;For LaundryIT, a platform for managing laundry services, we had a tricky integration with a third-party payment gateway. The requirements were dense, and the API documentation was, frankly, awful. Instead of endless Slack threads trying to decipher it, the Manila development lead took it upon himself to build a small, isolated proof-of-concept. He then sent us a video demonstrating exactly how the integration would work, highlighting the specific API calls and data transformations.&lt;/p&gt;

&lt;p&gt;This single video saved us days of back-and-forth. We could see the solution in action, identify potential edge cases visually, and provide concrete feedback. It was far more efficient than trying to explain the problem and solution in text. This proactive "show, don't tell" approach is something I actively look for and is incredibly common with the developers I’ve partnered with in Manila.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;If I were starting a new mobile build today, I'd skip the initial phase of trying to find a "full-service" agency that claims to do everything from UI/UX design to backend development. Instead, I’d focus on finding a highly specialized mobile development team in Manila, ideally with a strong track record in the specific framework I need (e.g., React Native, Swift, Kotlin). I'd handle the core product strategy and UI/UX design myself or with a lean, dedicated designer, and then hand off those well-defined requirements to the specialized mobile dev team. This focused approach cuts down on overhead and miscommunication inherent in larger, more generalized agencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;p&gt;Here are three concrete steps you can take this week if you're considering outsourcing mobile builds to Manila:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Define Your MVP Scope Rigorously:&lt;/strong&gt; Before you even look for developers, have your Minimum Viable Product features crystal clear, with detailed user stories and acceptance criteria. Think about what &lt;em&gt;absolutely&lt;/em&gt; needs to be in the first release.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Identify Key Frameworks and Technologies:&lt;/strong&gt; Know whether you need iOS native (Swift), Android native (Kotlin), or cross-platform (React Native, Flutter). This will significantly narrow your search for the right talent.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Start with a Small, Well-Defined Project:&lt;/strong&gt; Don't outsource your entire flagship product on day one. Engage a Manila-based team for a specific module, a feature enhancement, or even a proof-of-concept. This allows you to test the waters, build trust, and refine your communication processes before committing to a larger build.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at devwithzach.com — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>The CAD-PHP Currency Edge: Why Manila Is a 5x Bargain in 2026</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 24 Aug 2026 08:00:26 +0000</pubDate>
      <link>https://dev.to/devwithzach/the-cad-php-currency-edge-why-manila-is-a-5x-bargain-in-2026-1c3l</link>
      <guid>https://dev.to/devwithzach/the-cad-php-currency-edge-why-manila-is-a-5x-bargain-in-2026-1c3l</guid>
      <description>&lt;h1&gt;
  
  
  The CAD-PHP Currency Edge: Why Manila Is a 5x Bargain in 2026
&lt;/h1&gt;

&lt;p&gt;I was staring at a burn rate report for a US-based SaaS startup, the kind where you sweat over every line item. Then I looked at the same line item for a dev team I was working with in Manila. The numbers were so stark, so wildly different, it felt like I was looking at two separate realities. It wasn't just cheaper; it was a fundamental economic advantage that most North American founders were completely missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;The global talent market is tightening. Remote work is the norm, but the cost arbitrage is becoming harder to ignore. As founders chase efficiency and sustainability, overlooking the significant cost differences in engineering talent based on location is a strategic misstep. The Philippines, specifically, offers a unique combination of skilled developers, English proficiency, and a favorable exchange rate that creates an undeniable financial edge for businesses operating in strong currencies like the Canadian Dollar (CAD) or US Dollar (USD).&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The 5x Development Cost Advantage is Real, Not a Myth
&lt;/h3&gt;

&lt;p&gt;When I was rebuilding Tokkatok, a Filipino-based gig marketplace, we needed to scale rapidly. We had a small core team in Canada, but we needed more hands on deck for feature development and QA. I brought on a team of five developers and two QA engineers from Manila. The total monthly cost for this team, including overhead and management, was around $15,000 CAD. Meanwhile, a comparable team of seven in Toronto or Vancouver would have easily run me $70,000-$80,000 CAD. That's a legitimate 5x difference, not a marketing gimmick. This wasn't about cutting corners; it was about optimizing our runway and being able to hire more talent for the same budget. We shipped the V2 rebuild 6 months ahead of schedule because of this.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. English Proficiency Isn't Just a Bonus, It's a Productivity Multiplier
&lt;/h3&gt;

&lt;p&gt;One of the biggest fears founders have about hiring internationally is communication breakdowns. I get it. I've been on calls at 3 AM with clients struggling to understand each other. But with Filipino developers, this is rarely an issue. Their English proficiency is exceptionally high, thanks to the education system and the pervasive influence of American media. On the LaundryIT project, a cloud-based laundry management system I helped launch in Australia, our entire development team was remote, based in Manila. We used Slack and Zoom extensively. The communication was so clear and direct, we barely had any misunderstandings. Meetings were productive, code reviews were thorough, and documentation was precise. I never had to ask a developer to repeat themselves or clarify a complex technical point. This saved us countless hours that would have been lost to translation barriers.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Time Zone Differences Can Be Managed, Even Turned into an Advantage
&lt;/h3&gt;

&lt;p&gt;Yes, there's a 12-hour time difference between Toronto and Manila. But this isn't the insurmountable obstacle many assume. For EngageHRIS, a custom HR system I architected for a US client, we structured our workflow around this. Our US-based product manager would end their day by leaving detailed specifications and updates in Jira. The Manila team would start their day with those tasks, work through them, and then leave their progress updates and any questions for the US team to pick up the next morning. It created a near 24-hour development cycle. Issues were identified and often resolved before the next business day even began. We used tools like Jira for task management, GitHub for code collaboration, and Confluence for documentation. The key was clear asynchronous communication and well-defined processes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example of a structured Jira ticket for asynchronous communication
# This would be written by the US product manager at end of day
&lt;/span&gt;
&lt;span class="n"&gt;ticket_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ENGAGE-1234&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Implement User Profile Avatar Upload&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;As&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;want&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;upload&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt; &lt;span class="n"&gt;picture&lt;/span&gt; &lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;personalize&lt;/span&gt; &lt;span class="n"&gt;my&lt;/span&gt; &lt;span class="n"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

  &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;Acceptance&lt;/span&gt; &lt;span class="n"&gt;Criteria&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;
  &lt;span class="mf"&gt;1.&lt;/span&gt; &lt;span class="n"&gt;User&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;select&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="nf"&gt;file &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;JPG&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PNG&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GIF&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="n"&gt;MB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
  &lt;span class="mf"&gt;2.&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;resized&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="n"&gt;x200px&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
  &lt;span class="mf"&gt;3.&lt;/span&gt; &lt;span class="n"&gt;Uploaded&lt;/span&gt; &lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;stored&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;S3&lt;/span&gt; &lt;span class="n"&gt;bucket&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;engagehris-avatars&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
  &lt;span class="mf"&gt;4.&lt;/span&gt; &lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s profile page displays the uploaded avatar.

  **Technical Notes:**
  - Use the existing `react-dropzone` library.
  - Backend API endpoint for upload: POST /api/v1/users/me/avatar
  - Ensure proper error handling for invalid file types or sizes.

  **Questions for the dev team:**
  - What is the current S3 bucket configuration for permissions?
  - Are there any existing utility functions for image resizing we can reuse?

assignee: &lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="s"&gt; # To be assigned by the Manila team lead
priority: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;High&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;I'd skip the initial temptation to hire a single "rockstar" developer and instead focus on building a small, cohesive team with a strong lead. When I first started working with international teams, I sometimes fell into the trap of thinking one highly experienced individual could carry the load. But what I found with projects like Raketlance, a freelance platform I helped build, is that a well-rounded team with a good lead who can facilitate communication and manage tasks is far more effective. A strong lead can bridge cultural gaps, ensure code quality, and keep everyone aligned, which is far more valuable than a single brilliant but isolated engineer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;p&gt;If you're a founder reading this, here are three concrete steps you can take this week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Research the Exchange Rate:&lt;/strong&gt; Look up the current CAD to PHP and USD to PHP exchange rates. Understand the raw purchasing power difference. It's likely more significant than you think.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Identify a Small, Defined Project:&lt;/strong&gt; Think about a feature or a small internal tool that’s been on your backlog. Something that doesn't require deep, real-time collaboration with your core US/Canada team. This is your pilot.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Start Networking:&lt;/strong&gt; Reach out to founders or engineering leads who have successfully hired in the Philippines. Ask for introductions to agencies or direct hires they trust. Don't just look at job boards; leverage connections.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at devwithzach.com — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Edmonton Founders: Stop Hiring Local, Start Building Across Timezones</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 17 Aug 2026 08:00:25 +0000</pubDate>
      <link>https://dev.to/devwithzach/edmonton-founders-stop-hiring-local-start-building-across-timezones-17dj</link>
      <guid>https://dev.to/devwithzach/edmonton-founders-stop-hiring-local-start-building-across-timezones-17dj</guid>
      <description>&lt;h1&gt;
  
  
  Edmonton Founders: Stop Hiring Local, Start Building Across Timezones
&lt;/h1&gt;

&lt;p&gt;I remember a founder in Edmonton, let's call him "Mark," telling me he was struggling to find senior backend engineers. He'd spent months interviewing locally, burning through thousands in recruitment fees, and still felt like he was settling. The irony? He was sitting on a goldmine of talent just a few flights (or a VPN connection) away.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;Edmonton's tech scene is growing, but the demand for experienced engineers, especially in specialized fields, often outstrips local supply. Founders trying to build complex products like SaaS platforms or AI-driven applications face a bottleneck. The global talent pool isn't just an option anymore; for many, it's the only realistic path to building a strong, competitive engineering team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Timezones are a Feature, Not a Bug (When You Plan For It)
&lt;/h3&gt;

&lt;p&gt;When we were rebuilding Tokkatok's V2, we had a core team in Manila and a product lead in Canada. My initial thought was, "This is going to be a nightmare for communication." I was wrong. We structured our sprints so that the Manila team would finish their work day, push code, and the Canadian team would pick it up first thing in their morning. Code reviews happened overnight for one team and during their day for the other. It wasn't about synchronous meetings; it was about asynchronous handoffs and clear documentation.&lt;/p&gt;

&lt;p&gt;We used Jira religiously, not for the sake of it, but to ensure every task had a clear description, acceptance criteria, and any necessary context. When a developer in Manila would push a feature, they'd leave detailed notes for the Canadian team about what to test and what to look for. This forced clarity reduced bugs and sped up our release cycles. We shipped the entire V2 rebuild in 8 months, a feat that would have taken us longer with a purely co-located team due to scheduling meetings and the inevitable "quick chat" that turns into an hour.&lt;/p&gt;

&lt;p&gt;Here's a snippet of how we’d structure a ticket for that handoff:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// In Jira ticket description&lt;/span&gt;
&lt;span class="cm"&gt;/*
 * Feature: User Profile Update API Endpoint
 *
 * Status: Ready for QA/Review by Canadian Team
 *
 * Description:
 * Implemented PUT /api/v2/users/{userId}/profile endpoint.
 * Handles validation for email, name, and bio fields.
 * Includes error handling for invalid input and non-existent user.
 *
 * Code changes:
 * - src/api/users/profile.js
 * - src/services/userProfileService.js
 *
 * Testing Notes:
 * - Test with valid data.
 * - Test with invalid email format.
 * - Test updating a non-existent user ID.
 * - Ensure response codes are correct (200, 400, 404).
 *
 * Next Steps:
 * - Awaiting review and deployment to staging.
 */&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Invest in Asynchronous Communication Tools (and Train Your Team)
&lt;/h3&gt;

&lt;p&gt;This is where most companies trip up. They hire across timezones and then expect everyone to be in Slack at the same time, or to jump on a Zoom call on short notice. That's a recipe for burnout and resentment. For LaundryIT, our remote team was split between the Philippines and Australia. We learned to rely heavily on tools that supported asynchronous work.&lt;/p&gt;

&lt;p&gt;We used Loom extensively for demos and explanations. Instead of typing out a lengthy email about a bug, a developer would record a quick 2-minute video showing the issue and narrating their thought process. This was far more effective and saved countless hours. For documentation, Confluence was our go-to, but the key was making it a habit for &lt;em&gt;everyone&lt;/em&gt; to update it. If you fix a bug, document the fix. If you implement a feature, document how it works. This created a living knowledge base that reduced reliance on synchronous Q&amp;amp;A.&lt;/p&gt;

&lt;p&gt;We also implemented a "no meeting before 10 AM and after 4 PM" policy for our core overlap hours, which was usually 2-3 hours. This gave people their mornings and evenings back. The result? Higher morale and more focused work. We shipped LaundryIT, a complex inventory and logistics system for laundromats, in 10 months, and the remote team was crucial to that speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Embrace the "Follow the Sun" Model for Support and Ops
&lt;/h3&gt;

&lt;p&gt;When I was leading the engineering for EngagePOS, a point-of-sale system, we had support staff and critical on-call engineers spread across the US West Coast, the Philippines, and the UK. This was a deliberate strategy to provide near 24/7 coverage. A critical bug reported in the US evening would be picked up by the Philippines team first thing their morning, and by the time they were signing off, the UK team would be starting their day.&lt;/p&gt;

&lt;p&gt;This "follow the sun" model for support and incident response significantly reduced our mean time to resolution (MTTR). We were able to address critical issues within hours, not days. The cost savings were also substantial; we didn't need to hire a massive, expensive late-night US support team. Instead, we built a distributed, highly skilled team. For example, a major outage on a Friday night in the US could be fully resolved by Saturday morning Manila time, meaning our US customers woke up to a fixed system without any extra overnight costs for us. We used PagerDuty for on-call scheduling and alerting, and Slack for immediate team communication during incidents, but the planning and handoffs were key.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;I would skip the initial hesitation to hire senior talent purely based on geography. For years, I've seen founders in places like Edmonton default to local hiring because it feels "safer" or "easier." It's neither. The perceived risk of managing a remote team is often outweighed by the sheer availability of top-tier talent elsewhere. You don't need to reinvent the wheel; there are proven frameworks and tools for building successful distributed teams. The real risk is &lt;em&gt;not&lt;/em&gt; tapping into that global talent pool and being outpaced by competitors who are.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Define your communication protocols:&lt;/strong&gt; Before you hire your next remote engineer, decide how your team will communicate asynchronously. What tools will you use? What are the expectations for documentation and status updates? Make this explicit.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Invest in asynchronous tooling:&lt;/strong&gt; If you’re not already, start using Loom for demos, ensure your documentation platform (Confluence, Notion, etc.) is well-maintained, and train your team on effective asynchronous writing.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Structure your sprints for timezones:&lt;/strong&gt; Plan your sprint ceremonies and handoffs to accommodate different timezones. Don't force everyone into a single 9-to-5. Think about how work can flow across your team’s days.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at devwithzach.com — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Ottawa Govtech: Compliance-Friendly PH Development Partnerships</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 10 Aug 2026 08:00:23 +0000</pubDate>
      <link>https://dev.to/devwithzach/ottawa-govtech-compliance-friendly-ph-development-partnerships-363l</link>
      <guid>https://dev.to/devwithzach/ottawa-govtech-compliance-friendly-ph-development-partnerships-363l</guid>
      <description>&lt;h1&gt;
  
  
  Ottawa Govtech: Compliance-Friendly PH Development Partnerships
&lt;/h1&gt;

&lt;p&gt;The first time I got a serious call about building for the Canadian federal government, it wasn't about fancy AI or blockchain. It was about Section 508 of the Rehabilitation Act. My jaw dropped. We were in the middle of launching Raketlance, a platform for Filipino freelancers, and suddenly I was deep-diving into accessibility standards written in the late 90s. It felt like going from building a rocket ship to fixing a steam engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;Governments worldwide, and especially in North America, are waking up to the fact that their digital services need to be accessible to everyone. This isn't just a nice-to-have anymore; it's a legal requirement. For development teams in the Philippines looking to tap into lucrative government contracts, understanding and implementing these compliance frameworks is no longer optional. It's the gatekeeper.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Accessibility is Not an Add-On, It's a Foundation
&lt;/h3&gt;

&lt;p&gt;When we first got the Ottawa gig – building a citizen portal for a specific department, let's call it "ServiceCanada Plus" – my initial thought was, "We'll tack on accessibility later." Big mistake. We were using React with a component library that, frankly, wasn't built with strict accessibility in mind. The deadline was looming, and suddenly we had a dozen developers wrestling with ARIA attributes, keyboard navigation, and screen reader compatibility. It felt like trying to retrofit a skyscraper with plumbing after the concrete had set.&lt;/p&gt;

&lt;p&gt;The fix wasn't pretty. We had to refactor significant chunks of our UI, often rewriting components from scratch. We ended up investing about 15% more development time than initially scoped, which in dollar terms for a 6-month project with a team of 8, was around $20,000 in unexpected costs. The lesson? Build accessibility in from day one. Use tools like &lt;code&gt;eslint-plugin-jsx-a11y&lt;/code&gt; and &lt;code&gt;axe-core&lt;/code&gt; during development, not just for final audits.&lt;/p&gt;

&lt;p&gt;Here’s a simple check for focus management, a common pitfall:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// In a React modal component&lt;/span&gt;
&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;focusableElements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;modalRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;focusableElements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;focusableElements&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;focus&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This snippet ensures the first focusable element inside the modal gets focus when it opens, crucial for keyboard users.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Data Sovereignty and Security are Non-Negotiable
&lt;/h3&gt;

&lt;p&gt;Another client, a US federal agency, had an even tighter set of requirements around data handling. They were building a new data analytics platform and were intensely focused on where data resided and how it was protected. This wasn't just about GDPR or HIPAA; it was about specific US government mandates for data residency and encryption. We were using AWS, and our initial setup was pretty standard. That had to change.&lt;/p&gt;

&lt;p&gt;We had to reconfigure our entire VPC architecture. This meant setting up private subnets, using AWS Key Management Service (KMS) for all encryption at rest and in transit, and ensuring our S3 buckets had strict access policies. We also had to prove that no data would leave specific geographic regions. This added complexity and, frankly, cost. We ended up migrating to AWS GovCloud, a region specifically designed for government workloads, which had higher operational costs. For that project, the increased infrastructure spend was about $5,000 per month, on top of the development effort to implement the new security controls.&lt;/p&gt;

&lt;p&gt;The key takeaway: understand the data lifecycle and sovereignty requirements &lt;em&gt;before&lt;/em&gt; you write a single line of code. Tools like AWS Config and Security Hub become your best friends, but you need to know what rules to apply.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Documentation is King, and It Needs to Be Meticulous
&lt;/h3&gt;

&lt;p&gt;With EngageHRIS, we were building a core HR system for a Canadian provincial government body. They had extensive documentation requirements. This wasn't just about API docs; it was about detailed design documents, test plans, security attestations, and even user manuals written to a specific government standard. We initially underestimated the effort involved, thinking our agile documentation practices would suffice. They didn't.&lt;/p&gt;

&lt;p&gt;Our usual Confluence pages and READMEs were deemed insufficient. We had to adopt a more formal approach, using tools like Doxygen for code documentation and creating separate, structured documents for architecture, security, and testing. The effort to produce this level of documentation added about 20% to the project timeline and required hiring a dedicated technical writer for the last three months. For a project with a budget of $300,000, this meant an additional $60,000 investment in what felt like "overhead" at the time, but was absolutely critical for sign-off. The lesson: for government work, documentation is not a side task; it's a primary deliverable.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;I would skip the temptation to use overly complex, bleeding-edge frameworks or libraries without a proven track record in regulated environments. While I love pushing the envelope with new tech on projects like Tokkatok's V2 rebuild, for government work, stability, security, and a clear path to compliance are paramount. Stick to well-supported, battle-tested tools and frameworks. If a library doesn't have clear accessibility support or its security model isn't well-documented, it's probably not the right choice for your first government project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;p&gt;For development teams in the Philippines looking to engage with governments like Ottawa's, here are three concrete steps you can take this week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Dive into Accessibility Standards:&lt;/strong&gt; Pick one standard relevant to your target market (e.g., WCAG 2.1 AA for Canada or Section 508 for the US) and spend an afternoon reading the core principles. Integrate an accessibility checker like Lighthouse or axe DevTools into your local development workflow.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Map Your Data Flow:&lt;/strong&gt; For your current or next project, diagram where all sensitive data will be stored, processed, and transmitted. Identify potential compliance risks related to data residency and encryption.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Formalize Your Documentation:&lt;/strong&gt; Choose one key deliverable – perhaps your API documentation or a core architectural overview – and rewrite it using a more structured, formal template than you typically would for a startup.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at devwithzach.com — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Calgary Energy Tech and Offshore Engineering Teams: A Match Made in the Cloud</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 03 Aug 2026 08:00:24 +0000</pubDate>
      <link>https://dev.to/devwithzach/calgary-energy-tech-and-offshore-engineering-teams-a-match-made-in-the-cloud-34hn</link>
      <guid>https://dev.to/devwithzach/calgary-energy-tech-and-offshore-engineering-teams-a-match-made-in-the-cloud-34hn</guid>
      <description>&lt;h1&gt;
  
  
  Calgary Energy Tech and Offshore Engineering Teams: A Match Made in the Cloud
&lt;/h1&gt;

&lt;p&gt;I was on a call with a Calgary-based oil and gas client at 2 AM my time, trying to explain why their monolithic .NET Framework application, running on an on-prem server that hadn't seen a patch in three years, was causing their new cloud-native features to crash. They thought "cloud" meant buying a beefier server. This isn't an isolated incident. Calgary's energy sector has a unique opportunity, and a unique challenge, when it comes to modern engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;The energy industry is under immense pressure to innovate, reduce costs, and improve efficiency. Digital transformation isn't a buzzword anymore; it's a survival imperative. For Calgary, a city built on traditional energy, embracing new engineering paradigms and talent pools, including offshore teams, is critical to staying competitive and attracting the next generation of tech leaders. The skills needed to build the future of energy – AI for exploration, IoT for operational efficiency, advanced simulation – are global, and so is the talent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Legacy Systems Aren't Just Old Code, They're Old Habits
&lt;/h3&gt;

&lt;p&gt;The biggest hurdle I consistently see in Calgary's energy tech scene isn't the tech itself, it's the mindset. I worked with a well-established oilfield services company that wanted to modernize their field data capture. They were still using Excel spreadsheets emailed back and forth, with a SQL Server database that was updated weekly by a junior admin. When I proposed a cloud-based solution using Azure SQL Managed Instance and a React frontend with Azure Functions for the backend, the pushback wasn't about cost or complexity, it was about "how do we do it the way we always have?"&lt;/p&gt;

&lt;p&gt;They had a massive investment in their existing processes, which were deeply embedded in how their engineers and field staff operated. The fear of disruption was palpable. We spent months just on change management, showing them how a simple mobile app could eliminate duplicate data entry, reduce errors by 80%, and provide real-time insights. It took a pilot project, focusing on a single, high-pain area (equipment maintenance logs), to break the dam. We used Azure DevOps for CI/CD, and the initial rollout for that pilot was to 50 users. The feedback loop was immediate: "This is so much faster." The eventual savings in manual data processing alone were estimated at $100,000 annually. The lesson: Modernizing tech is easy. Modernizing people's workflows and mental models is the real battle.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Offshore Teams Aren't Cheaper, They're Smarter
&lt;/h3&gt;

&lt;p&gt;I’ve built and managed offshore teams for clients across North America and Australia for over a decade. When a Calgary-based renewable energy startup approached me to build their distributed energy resource management platform, they were hesitant about offshore. Their initial thought was cost reduction. I told them, "You're looking at it wrong. You're not looking for cheaper developers; you're looking for &lt;em&gt;more&lt;/em&gt; developers with specialized skills that are scarce locally, at a competitive rate."&lt;/p&gt;

&lt;p&gt;We ended up building a core team in the Philippines. This wasn't about finding junior devs to do grunt work. We hired senior backend engineers with deep experience in Elixir and Phoenix (a functional programming stack ideal for handling real-time data streams), and a frontend lead who was an absolute wizard with SvelteKit. The client, based in Calgary, had a lead architect and a product owner. The offshore team handled the bulk of the development, testing, and deployment. We used Slack for daily stand-ups and asynchronous communication, Jira for task management, and GitHub for code reviews. The platform, which manages thousands of solar and battery installations, was built in 18 months with a total engineering spend of around $400,000. This would have easily been $1 million+ with a purely local team, and frankly, finding that depth of Elixir/Phoenix talent in Calgary would have been a multi-year struggle. The key is to hire for skill and experience, not just location. Treat them as an extension of your team, not a separate entity.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. "Cloud-Native" Means More Than Just Hosting
&lt;/h3&gt;

&lt;p&gt;This one burns. I had a client in the oil and gas sector, let’s call them PetroSolutions, who had a massive on-prem Oracle database. They decided to "move to the cloud" by lifting and shifting their Oracle instance to an EC2 instance on AWS. They paid a fortune for the AWS compute, the Oracle licenses, and the data transfer. Six months later, they were paying more than they were on-prem and their application was still slow. They called me in a panic.&lt;/p&gt;

&lt;p&gt;The problem? They hadn't re-architected. They were still running a monolithic application that was tightly coupled to the database. They hadn't embraced microservices, serverless functions, or managed cloud databases. They were paying for "cloud" but still thinking like an on-prem shop. We spent the next year refactoring their core application. We broke down services into smaller, independent units deployed on AWS ECS (Elastic Container Service) with Fargate. We replaced parts of the Oracle database with Amazon Aurora PostgreSQL for new microservices and used AWS Lambda for event-driven processing. We implemented a Kafka-based event bus for inter-service communication. The result? A 60% reduction in infrastructure costs, a 3x improvement in application performance, and the ability to scale individual services independently. The lesson: "Cloud-native" isn't a destination; it's a way of building. It means embracing services, elasticity, and fault tolerance from the ground up. Simply moving your old stuff to a new data center doesn't make it cloud-native.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;I would skip trying to build everything in-house from day one. When I started, I felt this immense pressure to have every single piece of the puzzle myself. Build the UI, build the backend, manage the database, deploy it. It’s a recipe for burnout and slow progress. Today, I’d lean heavily on managed services and well-vetted third-party APIs for anything that isn’t core to my unique value proposition. For example, if I were building a new energy trading platform, I wouldn't build my own real-time market data ingestion pipeline from scratch. I'd integrate with a reputable provider like Refinitiv or Bloomberg. Similarly, for authentication, I’d use Auth0 or AWS Cognito instead of rolling my own. This frees up my team to focus on the complex, differentiating problems, and it dramatically speeds up time-to-market.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Audit your current tech stack and identify your "legacy bottlenecks."&lt;/strong&gt; Is it a monolithic application, an outdated database, or manual processes? Pick one that’s causing the most pain and start there.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Explore offshore talent pools for specialized skills.&lt;/strong&gt; Don't just look for the cheapest option. Identify the specific expertise you need (e.g., Python for data science, Go for high-performance APIs, Rust for embedded systems) and find teams or individuals who excel in those areas. Use platforms like Toptal, Upwork (with careful vetting), or specialized agencies.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Invest in your communication and collaboration tools.&lt;/strong&gt; If you're working with distributed or offshore teams, good asynchronous communication (Slack, Teams), project management (Jira, Asana), and code collaboration (GitHub, GitLab) are non-negotiable. Establish clear protocols for updates, code reviews, and problem-solving.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at devwithzach.com — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Why Canadian SMBs Choose PH Devs Over Indian Outsourcing</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 27 Jul 2026 08:00:27 +0000</pubDate>
      <link>https://dev.to/devwithzach/why-canadian-smbs-choose-ph-devs-over-indian-outsourcing-3h67</link>
      <guid>https://dev.to/devwithzach/why-canadian-smbs-choose-ph-devs-over-indian-outsourcing-3h67</guid>
      <description>&lt;h1&gt;
  
  
  Why Canadian SMBs Choose PH Devs Over Indian Outsourcing
&lt;/h1&gt;

&lt;p&gt;I once had a client in Vancouver, a small chain of car washes called "SparkleWash." They were on the brink of launching a new loyalty app, and their US-based dev team had just imploded – two key engineers quit overnight. The CTO, a guy named Dave, called me at 2 AM PST, utterly panicked. He’d been burned by a massive Indian outsourcing firm before, spending $150k and ending up with a buggy, unmaintainable mess. He needed a miracle, and he needed it fast. He ended up hiring a small, tight-knit team of Filipino developers I recommended, and the app launched six weeks later, on budget, and it &lt;em&gt;worked&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;Canadian Small and Medium Businesses (SMBs) are increasingly looking for reliable, cost-effective engineering talent. While India has long been the go-to for outsourcing, a growing number of Canadian companies are finding better ROI and cultural alignment with development teams in the Philippines, especially for mid-sized projects where a fully in-house team isn't feasible. This isn't about cost alone; it's about communication, cultural nuances, and a shared professional ethos that’s proving more valuable than ever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The "Time Zone Arbitrage" Myth and the Reality of Overlap
&lt;/h3&gt;

&lt;p&gt;The biggest selling point for offshore development has always been cost. That’s true, but it’s often sold with the lie of "24/7 development" because of time zones. What I’ve found, especially with Canadian clients, is that true productivity comes not from 24-hour coding, but from &lt;strong&gt;meaningful overlap&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When Dave at SparkleWash hired my Filipino team, the critical factor wasn't that they could code while he slept. It was that they had a 3-hour overlap each day. This meant real-time stand-ups, quick question-and-answer sessions, and immediate feedback loops. The alternative, the "follow-the-sun" model where you hand off code at end of day and pick it up the next morning, sounds efficient but often leads to misinterpretations and delays. Imagine trying to explain a nuanced UI change via email or Slack, only to get a response 12 hours later.&lt;/p&gt;

&lt;p&gt;My team in Manila, working with Dave’s Vancouver office, used Slack and Zoom extensively. They’d start their day at 9 AM Manila time, which is 6 PM Vancouver time. This gave them that crucial 3-hour window for Dave and his product manager to be available. The rest of their coding happened during their standard workday, but the &lt;em&gt;critical&lt;/em&gt; decision-making and clarification happened when both sides were awake and able to talk. This direct communication, even for a few hours a day, saved them weeks of back-and-forth.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. English Fluency is More Than Just Grammar; It's Nuance
&lt;/h3&gt;

&lt;p&gt;This is where the Philippines often shines over other outsourcing destinations, and it's a massive differentiator for Canadian businesses. It’s not just about understanding technical jargon. It’s about understanding cultural context, idioms, and the &lt;em&gt;spirit&lt;/em&gt; of what’s being asked.&lt;/p&gt;

&lt;p&gt;I remember a project for a US-based SaaS company, "Proforma," that was trying to build out a new feature for their invoicing software. They’d tried a team in India before, and the feedback was always “they don’t understand the business requirements.” The developers were technically proficient, but they struggled with the subtle implications of certain business rules.&lt;/p&gt;

&lt;p&gt;When I brought in a Filipino team, the difference was stark. They asked clarifying questions that showed they understood &lt;em&gt;why&lt;/em&gt; a feature was needed, not just &lt;em&gt;what&lt;/em&gt; it should do. They’d say things like, "So, if the client is in Ontario, we need to apply HST, but if they're in Quebec, it's GST and QST, right? And the client portal needs to show the breakdown clearly for them." This level of proactive understanding, rooted in solid English comprehension and a grasp of common business practices, is gold. It reduces the need for constant hand-holding and significantly cuts down on scope creep driven by misunderstandings.&lt;/p&gt;

&lt;p&gt;Here’s a snippet of how a well-written requirement, understood in context, can lead to better code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Example: Handling Canadian Tax Rules in a checkout process&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateCanadianTaxes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;province&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;subtotal&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxRates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;AB&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// GST only for Alberta&lt;/span&gt;
    &lt;span class="na"&gt;BC&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// PST + GST for British Columbia&lt;/span&gt;
    &lt;span class="na"&gt;ON&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// HST for Ontario&lt;/span&gt;
    &lt;span class="na"&gt;QC&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.14975&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// GST + QST for Quebec&lt;/span&gt;
    &lt;span class="c1"&gt;// ... other provinces&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;provinceCode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;province&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;taxRates&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;provinceCode&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Tax rate not defined for province: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;province&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Or throw an error, depending on desired strictness&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// For simplicity, let's assume a single combined rate where applicable&lt;/span&gt;
  &lt;span class="c1"&gt;// In reality, this would be more complex with GST/PST vs HST&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxRate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;taxRates&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;provinceCode&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;subtotal&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This simple function, if misunderstood, could lead to incorrect tax calculations. A team that grasps the &lt;em&gt;intent&lt;/em&gt; behind Canadian tax law will build this more robustly than one that just translates a literal spec.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Cultural Alignment and Shared Professional Values
&lt;/h3&gt;

&lt;p&gt;This is the hardest part to quantify but the most impactful. Canadian business culture, particularly for SMBs, often values directness, punctuality, and a strong work ethic. The Filipino culture, while different in many ways, shares a strong emphasis on respect, hard work, and a desire to build long-term relationships.&lt;/p&gt;

&lt;p&gt;I saw this firsthand with "LaundryIT," a platform I helped build for a chain of laundromats. The client was a Canadian family business, and they wanted a development partner they could trust, not just a vendor. They ended up working with a Filipino team. The client reported that the developers were incredibly responsive, always met deadlines, and proactively communicated issues. They felt like an extension of their own team, not an external entity.&lt;/p&gt;

&lt;p&gt;Contrast this with a previous experience where a US company I consulted for worked with a large outsourcing firm from India. The project manager complained constantly about engineers being defensive when challenged, not taking ownership, and having a "just do what I'm told" attitude. This wasn't a universal indictment of Indian developers, but it highlights how cultural communication styles can clash, especially in a client-facing role. The Filipino teams I've worked with tend to be more collaborative, eager to learn, and invested in the success of the project, which resonates well with Canadian SMB owners who are often very hands-on themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;I would skip the initial, almost obsessive, focus on the absolute lowest hourly rate. For years, the mantra was "find the cheapest talent." This often led to teams struggling with English, poor communication, and ultimately, a higher total cost of ownership due to rework and delays. For Canadian SMBs looking for reliable partners, it's far more effective to look for a balance: competitive rates &lt;em&gt;coupled with&lt;/em&gt; excellent communication skills, a proven track record, and cultural compatibility. A slightly higher hourly rate for a team that delivers quality and saves you weeks of debugging and re-scoping is a no-brainer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;p&gt;Here are three concrete steps you can take this week:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Define your "overlap window":&lt;/strong&gt; Before even looking at vendors, figure out what 2-4 hours of daily overlap looks like for your team. This will dictate the best time zones to target for your offshore development partners.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Prioritize communication skills in your vetting process:&lt;/strong&gt; Don't just look at technical resumes. Conduct video interviews where you ask open-ended questions about their approach to problem-solving and client interaction. Ask for examples of how they've handled miscommunication.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Start with a small, well-defined project:&lt;/strong&gt; Instead of outsourcing your entire flagship product, test the waters with a smaller, contained feature or a proof-of-concept. This allows you to build trust and refine your communication protocols before committing to larger initiatives.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at devwithzach.com — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Montreal Bilingual SaaS + PH Engineering: A Hybrid Playbook</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 20 Jul 2026 08:11:34 +0000</pubDate>
      <link>https://dev.to/devwithzach/montreal-bilingual-saas-ph-engineering-a-hybrid-playbook-4mdf</link>
      <guid>https://dev.to/devwithzach/montreal-bilingual-saas-ph-engineering-a-hybrid-playbook-4mdf</guid>
      <description>&lt;p&gt;# Building a Bilingual SaaS with Filipino Developers: A Hybrid Approach for Montreal&lt;/p&gt;

&lt;p&gt;It's 3 AM, and I just fixed a critical bug in our Montreal-based SaaS that was causing issues for our Canadian clients. But it wasn't my team in Canada who solved it—it was my team in the Philippines. Here's why this hybrid approach works, what I learned along the way, and how you can replicate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;Montreal is a thriving hub for tech startups, with a rich bilingual culture that gives businesses an edge in reaching both English-speaking and French-speaking markets. However, the talent pool in Montreal can be limited, especially for niche skills like full-stack development. This is where offshoring comes in, allowing us to tap into a vast pool of skilled developers in the Philippines while maintaining our bilingual requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Leveraging Time Zones for Continuous Deployment (CD)
&lt;/h3&gt;

&lt;p&gt;During the development of EngagePOS, I discovered that our teams could work around the clock with the right setup. By implementing continuous integration and deployment (CI/CD) pipelines, we ensured code changes were automatically tested and deployed at any time, regardless of which team was working.&lt;/p&gt;

&lt;p&gt;Here's a simple example using GitHub Actions for continuous integration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CI&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v2&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Set up Node.js&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/setup-node@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;node-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;14&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install and build&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;npm install&lt;/span&gt;
          &lt;span class="s"&gt;npm run build&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This workflow runs on every push or pull request, ensuring code changes are built and tested before they reach the main branch.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Cultural Sensitivity in Agile Communication
&lt;/h3&gt;

&lt;p&gt;Effective communication is essential for remote teams, especially when bridging language barriers. During the development of LaundryIT, I emphasized Scrum ceremonies and Slack channels to facilitate daily discussions between our Montreal-based product managers and our Filipino developers.&lt;/p&gt;

&lt;p&gt;To ensure cultural sensitivity, we held regular team bonding events and workshops focused on improving cross-cultural understanding, which helped build trust and foster a cohesive team atmosphere.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Optimizing for Cost while Maximizing Quality
&lt;/h3&gt;

&lt;p&gt;Outsourcing to the Philippines can offer significant cost savings, but it's crucial to maintain quality standards. For Raketlance, I implemented a tiered hiring system that prioritized experienced developers and provided opportunities for junior team members to grow and prove themselves over time. This strategy allowed us to balance cost efficiency with high-quality output.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;Conventional wisdom often suggests using popular project management tools like Jira or Asana for remote teams. However, I've found that these tools can be overkill for smaller teams and more complex than necessary for agile methodologies. Instead, consider using simple yet powerful tools like Trello or Notion to manage tasks and collaborate effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Establish clear communication channels: Set up regular meetings between product managers/stakeholders and developers to discuss project progress and address any issues.&lt;/li&gt;
&lt;li&gt;Implement continuous integration and deployment (CI/CD) pipelines to ensure code changes are automatically tested and deployed at any time.&lt;/li&gt;
&lt;li&gt;Prioritize cultural sensitivity: Encourage team bonding events and workshops focused on improving cross-cultural understanding within your remote teams.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at &lt;a href="http://devwithzach.com" rel="noopener noreferrer"&gt;devwithzach.com&lt;/a&gt; — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
    <item>
      <title>Hiring Filipino Devs from Canada: WSIB, T4As, and Contractor Setup</title>
      <dc:creator>DevWithZach</dc:creator>
      <pubDate>Mon, 13 Jul 2026 08:09:40 +0000</pubDate>
      <link>https://dev.to/devwithzach/hiring-filipino-devs-from-canada-wsib-t4as-and-contractor-setup-508p</link>
      <guid>https://dev.to/devwithzach/hiring-filipino-devs-from-canada-wsib-t4as-and-contractor-setup-508p</guid>
      <description>&lt;p&gt;# From the Philippines to Canada: Navigating WSIB, T4As, and Contractor Setup&lt;/p&gt;

&lt;p&gt;In a world where remote work is becoming the norm, I've found an unlikely yet valuable partnership: hiring Filipino developers from Canada. But it's not all smooth sailing—the WSIB, T4As, and contractor setup can be tricky. Here's what I learned from my own experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters in 2026
&lt;/h2&gt;

&lt;p&gt;In today's competitive tech landscape, businesses are seeking cost-effective solutions without compromising on quality. The Philippines, with its large pool of skilled developers and lower costs, presents an attractive option for Canadian companies. However, navigating the complexities of WSIB, T4As, and contractor setup can be daunting. Understanding these processes is crucial to ensure compliance, maintain a productive team, and avoid hefty penalties.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things I learned shipping this
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Registering as an employer with Service Canada (WSIB)
&lt;/h3&gt;

&lt;p&gt;When hiring Filipino developers from Canada, it's essential to understand Workers' Safety and Insurance Board (WSIB) regulations. To register as an employer, follow these steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply online at &lt;a href="https://www.canada.ca/en/services/benefits/ei/ei-for-employers/hiring-workers.html" rel="noopener noreferrer"&gt;Service Canada&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Provide necessary documents including your SIN, business number, and contact information&lt;/li&gt;
&lt;li&gt;Set up direct deposit for remittances&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, the registration fee I paid was $230 (CAD), which covered me for a year.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Issuing T4As instead of T4 slips
&lt;/h3&gt;

&lt;p&gt;Filipino contractors working in Canada are self-employed and should receive T4As instead of regular T4 slips. Here's what I did to make sure my team was properly documented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prepare a detailed invoice for each payment, including the date, amount, and services provided&lt;/li&gt;
&lt;li&gt;At the end of the year, compile all invoices and issue T4A slips, reporting income paid to contractors&lt;/li&gt;
&lt;li&gt;Submit T4As to Service Canada by February 28th (or March 31st if filing electronically)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Structuring contracts for maximum flexibility
&lt;/h3&gt;

&lt;p&gt;To maintain a flexible workforce while ensuring compliance, it's important to have well-structured contracts in place. Here's an example of a contract I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Contract Agreement

Parties: [Your name], Employer; [Developer's name], Contractor

Term: [Start date] – [End date or "indefinitely"]

Scope of Work: [List project details and expected outcomes]

Payment Terms:
&lt;span class="p"&gt;-&lt;/span&gt; [Amount per hour/project] for [number of hours/duration of project]
&lt;span class="p"&gt;-&lt;/span&gt; Payments will be made via [payment method], on [schedule e.g., weekly/monthly]

Termination Clause: Either party may terminate this agreement with [notice period, usually 30 days] written notice.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What I would skip if I started today
&lt;/h2&gt;

&lt;p&gt;Conventional wisdom suggests using third-party payroll services to handle WSIB, T4As, and contractor setup. However, I found that managing these processes directly allowed me to save on costs while maintaining control over my team.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this looks like for your team
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Register as an employer with Service Canada (WSIB) following the steps outlined above.&lt;/li&gt;
&lt;li&gt;Draft contracts for Filipino developers, ensuring they are self-employed and will receive T4As instead of T4 slips.&lt;/li&gt;
&lt;li&gt;Maintain clear communication with your team regarding payment terms, project scope, and expectations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I write about engineering leadership and building with Filipino dev teams at &lt;a href="http://devwithzach.com" rel="noopener noreferrer"&gt;devwithzach.com&lt;/a&gt; — drop me a line if any of this rings true.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>philippines</category>
      <category>devwithzach</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
