<?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: Lucas Ehara</title>
    <description>The latest articles on DEV Community by Lucas Ehara (@lehara).</description>
    <link>https://dev.to/lehara</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%2F1331821%2F8ad4207f-ece8-4cec-b41d-2cb75dde8a32.jpeg</url>
      <title>DEV Community: Lucas Ehara</title>
      <link>https://dev.to/lehara</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lehara"/>
    <language>en</language>
    <item>
      <title>The Real-Time Fetish: Why You (Probably) Don't Need Streaming</title>
      <dc:creator>Lucas Ehara</dc:creator>
      <pubDate>Thu, 06 Aug 2026 18:23:02 +0000</pubDate>
      <link>https://dev.to/lehara/the-real-time-fetish-why-you-probably-dont-need-streaming-nbi</link>
      <guid>https://dev.to/lehara/the-real-time-fetish-why-you-probably-dont-need-streaming-nbi</guid>
      <description>&lt;p&gt;&lt;strong&gt;In modern Data Engineering, there is an unspoken fetish for "Real-Time."&lt;/strong&gt; If you ask any business stakeholder how fast they need their dashboard to update, the default answer will always be: &lt;em&gt;"As fast as possible."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This drives well-intentioned engineers to design incredibly complex architectures. We spin up Kafka clusters, implement Flink, and wrestle with latency, late-arriving data, and tumbling windows. All to have data flowing in milliseconds. But the harsh reality is that the vast majority of companies are building Ferraris just to sit in rush-hour traffic.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Actionability Gap (The Golden Question)
&lt;/h2&gt;

&lt;p&gt;The biggest mistake when choosing a streaming architecture isn't technical; it's a business mistake. Before implementing real-time pipelines, the only question that matters is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Does the company have the operational capacity to make a decision in milliseconds?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you are building a credit card fraud detection system or a live e-commerce recommendation engine, yes, every millisecond counts. But if the data is feeding a financial dashboard that the executive board only reviews during their Monday morning meeting, updating that screen every second is a colossal waste of money and effort. Real-time data has zero value if the human action is batch.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Hidden Complexity and the Cloud Bill
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Batch processing is forgiving.&lt;/strong&gt; If a pipeline fails at 3 AM, you trigger a rerun, and by 8 AM, everything is fine. Batch is cheap, predictable, and easy to debug. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Streaming, on the other hand, is unforgiving.&lt;/strong&gt; Handling application state, event duplication (exactly-once semantics), out-of-order events, and sudden traffic spikes requires a senior engineering team dedicated solely to keeping the infrastructure alive. Furthermore, the cloud bill for 24/7 continuous processing is orders of magnitude higher than spinning up your compute clusters on a schedule.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. "Micro-Batch" Solves 99% of Your Problems
&lt;/h2&gt;

&lt;p&gt;There is a perfect middle ground that the hype industry tries to ignore: the &lt;strong&gt;micro-batch&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Running your data transformation pipelines every hour or even every 15 minutes delivers the "real-time" feeling to the end-user while maintaining the simplicity, reliability, and low cost of batch processing. &lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion: Scalable Boredom
&lt;/h2&gt;

&lt;p&gt;Good engineering isn't about using the most complex technology available; it's about solving the business problem with the simplest possible solution. &lt;/p&gt;

&lt;p&gt;Embracing batch processing doesn't make you a dinosaur. It makes you a mature professional who protects the company's budget and your own team's sanity. When in doubt, start with D-1 (previous day's data). When the business can mathematically prove that data latency is costing them real money, &lt;em&gt;then&lt;/em&gt; you build your streaming architecture.&lt;/p&gt;

</description>
      <category>kafka</category>
      <category>database</category>
      <category>dataengineering</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Stop Throwing Spark at Everything: The Case for Tech Agnostic Data Engineering</title>
      <dc:creator>Lucas Ehara</dc:creator>
      <pubDate>Mon, 13 Jul 2026 12:44:41 +0000</pubDate>
      <link>https://dev.to/lehara/stop-throwing-spark-at-everything-the-case-for-tech-agnostic-data-engineering-2i60</link>
      <guid>https://dev.to/lehara/stop-throwing-spark-at-everything-the-case-for-tech-agnostic-data-engineering-2i60</guid>
      <description>&lt;p&gt;Recently, the industry has developed a reflex. When faced with a new pipeline request, the immediate answer is often to spin up Databricks or write a complex PySpark job. It’s the shiny, distributed computing hammer that makes us feel like we’re doing "real" big data. &lt;/p&gt;

&lt;p&gt;If you are processing terabytes of streaming data or training heavy machine learning models, Spark is a lifesaver. The problem starts when this distributed reflex replaces actual architectural pragmatism, and we start using sledgehammers to hang picture frames.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Complexity Tax (The Real Cost of Overkill)
&lt;/h3&gt;

&lt;p&gt;Distributed computing introduces distributed problems. Modern cloud data warehouses are incredibly powerful and often more than capable of handling what many companies consider "big data." &lt;/p&gt;

&lt;p&gt;When you force a heavy tool onto a moderate dataset, you spend more time managing cluster configurations, overhead, and driver memory than actually delivering data. Often, a well designed SQL pipeline can handle the workload perfectly. Sometimes, solving a severe table lock issue on a massive dataset doesn't require a brand new execution it just requires stepping back and implementing a smart, sequential batch update strategy. If your first instinct is to scale the tech instead of fixing the approach, you aren't engineering; you're just paying a complexity tax.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Trap of Vendor Driven Logic
&lt;/h3&gt;

&lt;p&gt;A data pipeline is a mechanism to deliver business value, not an excuse to showcase a framework. When you tightly couple your entire mental model and transformation logic to the specific nuances of one platform, you lose flexibility. &lt;/p&gt;

&lt;p&gt;Being tech agnostic means understanding the fundamental patterns: idempotency, robust data modeling, and clear, modular transformations. If you build your logic agnostically, you own the architecture. If tomorrow the business needs to optimize costs and shift workloads away from a heavy Spark cluster back to native warehouse processing, a tech agnostic foundation makes that migration a planned engineering task, not a complete rewrite.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion: Engineering Requires Pragmatism
&lt;/h3&gt;

&lt;p&gt;Save the heavy artillery for the heavy problems. When you are responsible for a company's data architecture, your loyalty must be to the solution, not the stack.&lt;/p&gt;

&lt;p&gt;Regardless of the vendors in the market, the act of understanding the true data volume and applying the simplest, most effective tool isn't backward. It's elegant engineering.&lt;/p&gt;

&lt;p&gt;You can love a specific technology. But to build sustainable data platforms, you must remain agnostic to it.&lt;/p&gt;

</description>
      <category>python</category>
      <category>architecture</category>
      <category>database</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Why "Vibe Coding" Your Data Warehouse is a Terrible Idea</title>
      <dc:creator>Lucas Ehara</dc:creator>
      <pubDate>Sat, 11 Apr 2026 19:16:15 +0000</pubDate>
      <link>https://dev.to/lehara/why-vibe-coding-your-data-warehouse-is-a-terrible-idea-5ham</link>
      <guid>https://dev.to/lehara/why-vibe-coding-your-data-warehouse-is-a-terrible-idea-5ham</guid>
      <description>&lt;p&gt;Recently, the term &lt;em&gt;"vibe coding"&lt;/em&gt; has been everywhere. It’s that practice of sitting down, opening your editor (often with an AI assistant), and just writing code in the flow state. You test, iterate, and build without a massive upfront blueprint.&lt;/p&gt;

&lt;p&gt;If you are spinning up a landing page or writing a quick Python automation script, vibe coding is liberating. The problem starts when this culture tries to infiltrate Data Engineering, specifically, Data Warehouse modeling.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Trap of "Just Writing SQL"&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Modern cloud data warehouses like AWS Redshift make it incredibly trivial to transform data on the fly. You get a request, you write a massive CREATE TABLE AS SELECT (CTAS) or a Materialized View with some intuitive joins, and push it to production. The stakeholder is happy today. The vibe is great.&lt;/p&gt;

&lt;p&gt;But the reality of data engineering catches up to you, and it hits hardest in two specific areas:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. The Business Disconnect (The Real Cost)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A Data Warehouse is not an IT project; it is the mathematical and historical representation of a company's business processes.&lt;/p&gt;

&lt;p&gt;When you vibe code, you skip the whiteboard. You make technical assumptions about business concepts. You assume a &lt;code&gt;user_id&lt;/code&gt; means the same thing across all schemas. But without talking to stakeholders and designing a unified conceptual model, you end up creating isolated data silos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Suddenly, the Marketing dashboard shows 5,000 "active clients," but the Finance report shows 4,200. You spend the next three weeks in endless alignment meetings trying to debug why the numbers don't match, only to realize the core logic was fundamentally different. Once the business users realize the dashboards conflict, &lt;strong&gt;trust&lt;/strong&gt; in the data team evaporates. And in data engineering, &lt;strong&gt;trust&lt;/strong&gt; is the only currency that matters.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. The Nightmare of Time and History&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Software engineering mostly deals with the current state. Data engineering deals with time.&lt;/p&gt;

&lt;p&gt;Vibe coding focuses on solving the problem for today's snapshot. But what happens tomorrow when a business rule changes? What if a customer moves to a different sales region? If you didn't plan for table granularity and Slowly Changing Dimensions (SCDs) beforehand, your intuitive "vibe coded" joins will silently overwrite the past.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Suddenly, last year's Q3 revenue report changes because a client's status changed today. You broke the immutability of the past. Trying to retroactively fix historical data in a massive Redshift cluster because you didn't design your dimension tables properly isn't just hard, it's a nightmare that stalls the entire data team.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion: Engineering Requires Foundations&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Save the vibe coding for your side projects. When you are responsible for a company's data architecture, you need blueprints.&lt;/p&gt;

&lt;p&gt;Regardless of the technology you chose, the act of understanding the business rules and designing the logical models before writing the first line of SQL isn't bureaucracy. It’s fundamental.&lt;/p&gt;

&lt;p&gt;You can code on a vibe. But you must architect your data.&lt;/p&gt;

</description>
      <category>database</category>
      <category>vibecoding</category>
      <category>ai</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
