Data Engineering

AI and Data Engineering: What Really Changes and What Doesn't

AI changed data engineering in two directions at once, and most articles only cover one: agents that write pipelines, and pipelines that serve models. This guide separates them, then defines what "AI-ready data" actually means as a specification rather than a slogan - a ten-dimension comparison against the BI-ready standard, a decision table for what to delegate to agents and what to never hand over, and a 90-day plan to get a platform ready.

Mohammed Yaseen
Mohammed Yaseen
Last Updated: · 16 min read
ShareXLinkedIn
AI and Data Engineering: What Really Changes and What Doesn't

Quick Answer: AI changed data engineering in two directions at once, and most articles only cover one. In the first direction, AI does the work: agents write transformations, generate tests and triage failures. In the second, data engineering does the work for AI: pipelines that serve models with correct, fresh, permission-aware data. The first direction automates roughly the smaller half of the job — Fivetran's 2026 benchmark found 53% of engineering capacity goes to maintaining pipelines, not writing them. The second direction is where the job actually grew, because a model given bad data does not fail loudly like a dashboard. It answers confidently and wrongly.

Almost every article about AI and data engineering makes the same structural mistake. It treats "AI" as one thing happening to the field, mixes together agents that write SQL and pipelines that feed chatbots, and concludes with the reassuring non-answer that data engineers should "adapt." That framing is useless when you have to decide what to build on Monday.

There are two separate systems here, with different risks, different tooling and different owners. This guide takes them apart, gives you a concrete specification for what "AI-ready data" means — a phrase every vendor uses and almost nobody defines — and provides a decision table for which parts of your job to hand to an agent and which to keep. By the end you will have a defensible answer to both questions: what AI does to your workflow, and what your platform has to become before AI is worth pointing at it.

The two questions hiding inside "AI and data engineering"

AI and data engineering describes two opposite flows: AI applied to the pipeline, and the pipeline applied to AI. Keeping them separate is the single most useful thing you can do with this topic, because a decision that is obviously right in one direction is often obviously wrong in the other.

AI and data engineering architecture diagram showing the two directions: AI for data engineering versus data engineering for AI

Direction 1 — AI for data engineering. The tooling layer. Coding agents author dbt models and PySpark jobs, generate test suites, propose schema mappings, write documentation, summarise failed runs and suggest fixes. The output is code and config that a deterministic system then executes. The risk profile is familiar: bad code, caught by tests and review.

Direction 2 — Data engineering for AI. The platform layer. You build ingestion, transformation, retrieval and serving so that models, agents and RAG systems get data that is correct, current and permission-scoped. The output is an answer generated at runtime by a probabilistic system. The risk profile is new: a plausible wrong answer, caught by nothing unless you built an evaluation harness.

The confusion between them is why so much advice is contradictory. "Let AI write your pipelines" is reasonable advice about Direction 1. "Never let AI touch production data logic" is reasonable advice about Direction 2's blast radius. Both statements are defensible; they are just about different systems.

The rule this article follows: in Direction 1, AI is the author and your existing engineering discipline is the safety net. In Direction 2, AI is the consumer, and it is the most demanding, least forgiving consumer your platform has ever had.

Where the time actually goes (the number that frames everything)

Automating pipeline authoring attacks the smaller half of data engineering. Fivetran's 2026 benchmark, a survey of 500 senior data and technology leaders at organisations with more than 5,000 employees, found that 53% of engineering capacity is devoted to maintaining and troubleshooting pipelines rather than building new ones.

The rest of that benchmark explains why:

Metric Finding
Pipeline failures per month (large enterprise) 4.7
Average time to resolve one incident ~13 hours
Monthly downtime delaying analytics 60+ hours
Estimated monthly business exposure $3 million
Pipelines managed per enterprise environment 300+
Leaders saying failures slowed analytics or AI 97%

Read those numbers against the promise of AI-generated pipelines and the mismatch is obvious. A team that ships a new pipeline in two hours instead of two days has improved the part of the job that was already working. The 13-hour incident, the 300 pipelines nobody fully understands, the upstream schema change that nobody announced — those are context problems, not typing problems.

This is also the honest answer to "will AI replace data engineers." AI is very good at the authoring half. The maintenance half is dominated by knowing which of three revenue tables the finance team actually means, why the 2023 backfill has a different grain, and who to call when the vendor changes an API. That knowledge mostly is not written down, which means it is not in the training data and not in the context window either.

Direction 1: what AI genuinely automates in data engineering

Delegate anything whose correctness a test can prove, and keep anything that defines what correct means. That single rule sorts most tasks correctly, and it is more useful than a list of tools because the tools change every quarter.

What agents are genuinely good at now

  • First-draft transformations. SQL and PySpark from a described intent, given a schema. Strong, and getting stronger.
  • Test scaffolding. Generating not-null, uniqueness, referential and range assertions from a table definition. This is arguably the best use of AI in the whole field, because the test is cheap to review and it hardens the system permanently.
  • Schema mapping and boilerplate. Source-to-target column mapping, connector config, DDL translation between dialects.
  • Documentation and column descriptions. Tedious, universally skipped, and — as the next section shows — now load-bearing for AI systems.
  • Failure triage. Reading a 4,000-line Spark stack trace and pointing at the shuffle stage that ran out of memory. Fast and usually right.
  • Code review assistance. Spotting a missing DISTINCT, an unpartitioned scan, or a join that will fan out.

What agents remain weak at

  • Choosing the definition. Which of the three revenue columns is the one leadership reports? No amount of context solves an ambiguity that the business has not resolved.
  • Grain reasoning across joins. Agents will happily produce a query that double-counts because a downstream table is one row per line item, not one per order. The job succeeds. The number is wrong.
  • Anything relying on undocumented history. The 2023 migration, the vendor quirk, the deliberate exception for one customer.
  • Cost-aware design. An agent optimises for a correct result, not for the result that does not scan 40 TB.
  • Knowing when to escalate. An agent asked to fix a failing job will fix the job. It will not tell you the upstream team is quietly corrupting the source.

The delegation decision table

This is the table we actually use internally at SolutionGigs when a client asks how far to push agents into their platform.

Task Delegate to AI? Why
Generate data quality tests ✅ Ship it Cheap to review, permanent value, verifiable
Draft a transformation from a spec ✅ Ship it Test suite is the gate; bad output fails loudly
Write column descriptions / docs ✅ Ship it Low risk, high leverage for Direction 2
Triage a failed run ✅ Ship it Suggests, does not act
Translate SQL between dialects ✅ Ship it Mechanical, verifiable by row-count diff
Refactor an existing model ⚠️ Human gate Needs a before/after data diff, not just a passing build
Propose a partitioning or clustering key ⚠️ Human gate Cost consequences are invisible in review
Define a business metric ⛔ Never This is the definition of correct; it cannot be inferred
Approve a schema change to a contract ⛔ Never Breaks downstream consumers silently
Auto-apply a fix to a production pipeline ⛔ Never Turns a visible failure into an invisible one

The last row deserves emphasis, because "self-healing pipelines" is the most oversold idea in this space. A pipeline that fails is giving you information. A pipeline that silently repairs itself by, say, coercing a type or dropping malformed rows has converted an alert into a data quality bug that will surface three weeks later in a board deck.

Why AI-generated pipelines fail differently

The dangerous failure mode is not broken code — it is code that runs perfectly and produces the wrong numbers. Human-written pipelines fail loudly, because humans write syntax errors and null pointer exceptions. Agent-written pipelines almost never fail that way. They compile, they run, the orchestrator turns green, and the aggregate is 4% off because of a join grain nobody checked.

This creates a review asymmetry that teams underestimate. Reviewing generated code for syntax takes a minute. Reviewing it for semantic correctness takes as long as writing it would have — sometimes longer, because you are reverse-engineering intent rather than expressing it. Teams that report large speedups from AI usually have one of two things in place: a strong test suite that makes correctness machine-checkable, or a tolerance for wrong numbers they have not discovered yet.

The countermeasure is structural, not procedural. Make correctness executable:

  1. Enforce data contracts at the boundary so a schema change cannot silently pass through.
  2. Gate every merge on data quality tests, not just on the code compiling.
  3. Run a data diff on refactors — compare row counts, key distributions and aggregate sums between old and new output.
  4. Keep the grain declared in the model, so a reviewer and an agent both know what one row means.

Do that and agents become genuinely fast, because the safety net catches what review misses. Skip it and speed becomes debt with a delay fuse.

Direction 2: what "AI-ready data" actually means

AI-ready data is data that a model can use correctly without a human interpreting it first. That single sentence carries the whole difference, and it explains why the phrase is used so loosely: everyone agrees data should be "AI-ready," and almost nobody writes down the spec.

Gartner predicted that through 2026, organisations would abandon 60% of AI projects unsupported by AI-ready data, and found that 63% of organisations either did not have or were unsure whether they had the right data management practices for AI. The number gets quoted constantly. The definition rarely follows it.

Here is the specification, dimension by dimension, against the BI-ready standard most platforms already meet.

BI-ready vs AI-ready: the specification

Dimension BI-ready standard AI-ready standard Why the gap matters
Semantics Meaning lives in the dashboard and the analyst's head Every column and table carries a machine-readable description A model sees rev_amt_c with no dashboard around it and guesses
Grain Fixed by whoever built the report Declared explicitly in metadata Wrong grain is the #1 cause of confidently wrong AI answers
Scope Structured tables Structured plus unstructured: docs, tickets, wikis, transcripts Most questions people ask an assistant are answered in prose, not tables
Freshness Refresh cadence, measured in hours A freshness SLA enforced at query time, with staleness surfaced to the model A dashboard shows its refresh timestamp; a chat answer shows nothing
Access control Enforced at the dashboard or row level Attached to every row and every text chunk, and applied as a retrieval filter An embedding of a confidential doc has no permissions of its own
Deletion Delete the row, refresh the dashboard Must propagate to derived indexes, embeddings and caches Deleted text stays retrievable in a vector index unless you handle it
Lineage Nice to have, used for debugging Required, and exposed to the answer as a citation Users trust an answer they can trace; auditors require it
Quality signal A human notices the chart looks wrong An evaluation set that fails a build There is no visual "that looks wrong" moment in a fluent paragraph
Interface BI tool connection A queryable semantic layer or tool API an agent can call Handing an agent raw table access is how you get a 40 TB scan
Failure mode Empty chart, obvious Plausible wrong answer, invisible This row is the entire reason the standard is stricter

That last row is the thesis of this whole section. Every additional requirement in the AI-ready column exists because the failure is silent. BI has a human circuit breaker built in: someone looks at a chart, says "revenue can't be 4 million, we did 4 billion," and files a ticket. Remove that human and every safeguard has to move into the pipeline.

MIT's Project NANDA study in 2025 found that only about 5% of enterprise generative AI pilots produced measurable business value — and the report was explicit that the model was almost never the reason. This is the mechanism behind that number. The pilot demo works because someone hand-picked the data. Production fails because nothing in the platform enforces the ten rows above.

Three concrete ways BI-ready data breaks an AI system

1. The grain trap. Your orders_enriched table is one row per line item. An analyst knows to count DISTINCT order_id. An agent asked "how many orders did we get last quarter?" counts rows, returns a number 2.7× too high, and phrases it beautifully. Fix: declare grain in table metadata and expose aggregate-safe views, not raw fact tables.

2. The permission leak. Salary data is protected by row-level security in the warehouse. HR documents get embedded into a shared vector index for the company assistant. The security model was in the warehouse; the embeddings live somewhere else. Fix: permission metadata travels with the chunk, and retrieval filters on it before the model sees anything.

3. The stale confident answer. A pricing page changed on Tuesday. The index rebuilds weekly. On Wednesday the assistant quotes last week's price to a customer with total confidence and no timestamp. Fix: freshness tiers per source, with the highest tier on change data capture — the pattern covered in depth in our guide to AI data pipelines that don't go stale.

The retrieval layer is a serving layer, not a batch job

The moment a model queries your data live, you have taken on production serving requirements you probably never had in analytics. This catches teams out badly. Analytics platforms are built for throughput and tolerate an occasional late job. A retrieval endpoint sitting in front of a user-facing assistant has latency, availability and correctness requirements closer to an API than to a nightly batch.

Requirement Typical analytics platform Retrieval layer for AI
Latency budget Minutes are fine 50–200 ms, inside a larger response budget
Availability Business hours, retries acceptable Same as the product it powers
Freshness Daily or hourly batch Tiered: batch for policy docs, CDC for pricing and permissions
Consistency Eventually, by tomorrow Deletions and access revocations must be immediate
Failure behaviour Job fails, alert fires Must degrade to "I don't know" rather than answer from stale data
Correctness gate A dashboard review A versioned evaluation set in CI

The practical implication: your vector index is not a special AI artifact. It is a derived table — a materialised view over source content — and it needs every discipline you already apply to derived datasets. Idempotent replacement, change data capture, a reconciliation job, versioned schema. The vocabulary is new; the engineering is not. That reframing is the core argument of our AI data pipeline guide, and it is what lets an experienced data engineer become genuinely good at this in weeks rather than years.

Semantics became infrastructure

The metadata layer stopped being documentation and became the thing that determines whether an agent gets the right answer. For a decade, column descriptions were the chore everyone deferred. They were for humans, and humans could ask a colleague instead.

An agent cannot ask a colleague. When it decides which of your 4,000 tables to query, it has table names, column names, descriptions and whatever metadata you exposed. If fct_txn_v2_final has no description, the agent picks something else — or picks it and misuses it.

This is why three previously "nice to have" things are now load-bearing:

  • A semantic layer. Metric definitions expressed once, queryable by both BI and agents, so "revenue" resolves to one calculation rather than whichever column looked plausible.
  • A tool interface rather than raw SQL access. Give an agent a curated set of parameterised tools ("get_revenue(period, segment)") instead of arbitrary warehouse access. This is exactly the pattern that MCP servers standardise, and it converts an open-ended reasoning problem into a bounded one.
  • Rich, current column descriptions. The one place where Direction 1 pays directly into Direction 2: agents are very good at drafting descriptions, and those descriptions are what makes agents effective later. It is the closest thing to a free lunch in this whole field.

The clearest place to watch this play out is plain-English querying, where the gap between a documented gold mart and a raw table is the whole difference between a right and a wrong answer — why text-to-SQL fails and how to fix it works through that gap in detail.

If your platform is layered with bronze, silver and gold zones, the practical guidance is simple: point agents at gold, never at bronze. Curated, documented, grain-declared tables are the AI-ready surface. Raw landing zones are where confident wrong answers come from.

Evaluation replaces the dashboard as the acceptance gate

You cannot review your way to correctness in a probabilistic system — you have to measure it. In analytics, the acceptance test is often a human comparing a new dashboard to the old one. That method fails completely for AI systems, because the output space is unbounded and the failures are fluent.

The replacement is an evaluation set, and it should feel familiar: it is a data quality test suite for answers.

  1. Collect 50–200 real questions users actually ask, not questions you invented. Pull them from support tickets, Slack and the assistant's own logs.
  2. Write the correct answer for each, with the source it should cite. This is the expensive part and there is no shortcut.
  3. Run the set on every change — new embedding model, new chunking strategy, new retrieval filter, new prompt, new source.
  4. Gate on regression, not on a score. An absolute accuracy number means little. "This change dropped 6 previously-correct answers" is actionable.
  5. Grow the set from production failures. Every wrong answer a user reports becomes a permanent test case.

Teams that skip this ship changes based on vibes and discover regressions from users. Teams that have it can upgrade an embedding model on a Tuesday afternoon. The gap between those two teams is not model quality — it is data engineering practice applied to a new artifact.

Governance changed shape: from row access to answer access

The governance question moved from "who can query this table" to "who can receive this fact in a sentence." That is a harder question, and it lands on the data platform team.

Four things you now have to handle explicitly:

  • Permission-aware retrieval. Access control must be applied as a filter before the model sees candidate context, not after. A model cannot be trusted to withhold something it has already been shown.
  • Deletion propagation. A GDPR or DPDP deletion must reach source tables, derived tables, chunk stores, vector indexes and caches. Regulators do not accept "it's in a derived index" as an answer. Access revocations should be enforced at query time rather than waiting for the next indexing run — a delete that is 30 minutes late is a compliance incident, not a stale answer.
  • PII in embeddings. An embedding is a lossy but real representation of its source text. Treat vector stores containing personal data as personal data stores, with the same retention and residency rules.
  • Citation as a control. Requiring the system to cite its source is not only a UX nicety; it is the audit trail, and it makes wrong answers findable instead of anonymous.

For teams already running data contracts and lineage, this is an extension of existing practice. For teams that were treating governance as a compliance checkbox, it becomes a functional requirement overnight.

What the AI-ready platform actually looks like

Putting both directions together, the reference shape is not exotic. It is your existing platform with three additions.

Layer 1 — Ingestion. Unchanged, except the scope widens. Structured sources plus documents, tickets, wikis and transcripts, with change data capture on anything whose staleness produces a wrong answer rather than an old chart.

Layer 2 — Transformation. Unchanged in mechanics, stricter in discipline. ELT into a lakehouse, medallion layering, contracts at the boundaries, tests in CI. This is where agents (Direction 1) do most of their useful work.

Layer 3 — Semantic layer. New and non-optional. Metric definitions, table and column descriptions, declared grain, and a tool API that agents call instead of writing arbitrary SQL.

Layer 4 — Retrieval and serving. New. Chunking, embedding, the vector index treated as a derived table, permission filters applied at query time, freshness tiers per source, and graceful degradation to "I don't know."

Layer 5 — Evaluation and observability. Extended. Everything in pipeline monitoring — freshness, volume, schema drift — plus answer-level evaluation running in CI and sampled in production.

Notice that layers 1, 2 and 5 are things a competent data platform already does. The genuinely new work is layers 3 and 4. That is the honest scope of "becoming AI-ready" for most teams: two new layers, not a rebuild.

What this means for your career

If you are a data engineer, the shift is additive rather than threatening, but it is not passive. The skills that transfer directly are the valuable ones — change data capture, idempotency, orchestration, testing, lineage — because retrieval pipelines have the same failure modes as any derived dataset. That transfer is why data engineers move into AI infrastructure work faster than most other roles, a comparison we break down in data engineer vs AI engineer.

What to add, in priority order: retrieval pipeline design, evaluation engineering, semantic modelling, and permission-aware serving. What to stop investing in: hand-writing boilerplate transformations, and any workflow whose value is typing speed.

If you are earlier in the journey, none of this changes the foundation — SQL, Python, distributed processing, modelling — which is still the entry path covered in how to become a data engineer. It changes what a strong portfolio looks like at the end of it. A project with an evaluation harness and permission-filtered retrieval now says more than another Airflow DAG.

Common mistakes to avoid

  • Treating "AI-ready" as a data volume problem. More data in the lake does not help. Documented, grained, permission-tagged data does.
  • Pointing an agent at raw or bronze tables. Curated, documented gold tables only. Raw zones generate confident nonsense.
  • Auto-applying AI-generated fixes to production pipelines. You are converting loud failures into silent ones.
  • Shipping a RAG system with no evaluation set. You have no way to know whether your next change made it worse, and you will make many changes.
  • Assuming warehouse row-level security covers your vector index. It does not. Permissions must travel with the chunk.
  • Measuring agent productivity in lines of code or PRs merged. Measure it in incidents avoided and time-to-resolution, since maintenance is 53% of the work.
  • Treating the retrieval layer as a batch job. It is a serving layer with an API's latency and availability profile.
  • Rebuilding the platform before proving one use case. Two new layers on an existing platform, not a greenfield rewrite.

A 90-day plan to make your platform AI-ready

Days 1–30 — Make meaning machine-readable. Pick one domain, not the whole warehouse. Write column and table descriptions for its gold tables — use an agent to draft them, review them yourself. Declare grain explicitly on every table. Identify the three metrics that domain argues about most and define them once, in one place.

Days 31–60 — Build the honest evaluation set. Collect 50 real questions from tickets and Slack for that domain. Write correct answers and expected sources. Stand up the simplest possible retrieval over the domain's documents and tables, and run the set. Your first score will be worse than you expect; that is the point of measuring rather than demoing.

Days 61–90 — Harden the serving path. Add permission filters applied before retrieval. Set a freshness tier per source and enforce it with change data capture on anything user-facing. Wire the evaluation set into CI so every change is gated. Add citations to every answer. Then, and only then, expand to a second domain.

The reason for this order is that most teams do it backwards: they build retrieval first, demo it successfully on hand-picked data, then discover in production that nothing underneath was ready. Semantics before retrieval, evaluation before scale.

Need this built with you rather than described to you? SolutionGigs works with teams on exactly this transition — semantic layers, retrieval pipelines and evaluation harnesses on top of platforms that already exist. See how we can help →

Frequently Asked Questions

What is AI in data engineering?

AI in data engineering means two different things that are usually confused. The first is AI applied to the work: coding agents that write transformations, generate tests, draft documentation and triage failures. The second is data engineering applied to AI: pipelines that feed retrieval systems and agents with correct, fresh, permission-aware data. The first changes how you work; the second changes what you are accountable for.

What does AI-ready data actually mean?

AI-ready data carries enough semantics, freshness, lineage and access metadata for a model to use it correctly without a human interpreting it first. It is stricter than BI-ready data because a dashboard has a human who notices when a number looks wrong, while a model produces a fluent answer either way. Concretely: documented columns, declared grain, a freshness SLA, permission metadata that survives into retrieval, and an evaluation set.

Will AI replace data engineers?

No, and the numbers point the other way. Fivetran's 2026 benchmark found 53% of engineering capacity goes to maintaining and troubleshooting pipelines rather than writing them, so automating authoring removes the smaller half of the job. AI also added a consumer with stricter requirements than a dashboard. Routine SQL authoring shrinks; contracts, semantics, evaluation and governance grow.

Why do AI projects fail because of data?

Because the failure is silent. Gartner predicted organisations would abandon 60% of AI projects unsupported by AI-ready data through 2026, and the mechanism is consistent: the model receives data that is stale, ambiguous, wrongly grained or unfiltered, and answers confidently anyway. There is no empty chart and no failed job to alert on — trust erodes until the project is quietly dropped.

Can AI agents write and maintain data pipelines?

They write well and maintain poorly. Agents are strong at first-draft transformations, test scaffolding, schema mapping, documentation and log triage — tasks with a verifiable output. They are weak wherever correctness depends on business context nobody wrote down. The rule: let agents produce anything a test can validate, and keep a human gate on anything that defines what correct means.

Is BI-ready data the same as AI-ready data?

No. BI-ready data assumes a human interprets it inside a curated dashboard where grain, filters and definitions are fixed. A model gets a table or text chunk out of context and must infer meaning from names and metadata alone. AI-ready data therefore additionally requires column descriptions, explicit grain, unstructured content in scope, permission metadata per row or chunk, and freshness guaranteed at query time.

What skills should a data engineer learn for AI?

Start with retrieval pipeline design, evaluation engineering and semantic modelling. Add permission-aware serving, which is the difference between a useful assistant and a data incident. Skills in change data capture, idempotency, orchestration and testing transfer directly — a vector index has the same failure modes as any derived table, which is why data engineers move into this work faster than most roles.

Conclusion

The most common claim about AI and data engineering is that AI will automate the field. The evidence says something more specific and more interesting: AI automates the part of data engineering that was never the bottleneck, and simultaneously creates a consumer that makes the actual bottleneck — correctness, context, freshness, permissions — far more expensive to get wrong.

A wrong dashboard is a visible embarrassment. A wrong answer from an assistant is a fluent, sourceless paragraph that someone forwards to a customer. That asymmetry is the whole reason the AI-ready standard is stricter than the BI-ready one, and it is why the ten-row specification above is a real engineering backlog rather than a marketing phrase.

So treat the two directions differently. In Direction 1, let agents write — but make correctness machine-checkable first, because a passing build proves nothing about a join grain. In Direction 2, build the two missing layers: a semantic layer so an agent knows what your data means, and a retrieval layer with the discipline of a serving system rather than a batch job. Then measure it with an evaluation set built from questions your users actually ask.

If you want the single highest-leverage thing to do this week, it is unglamorous: pick your most-queried domain and write real descriptions and a declared grain for every gold table in it. It is the task everyone defers, an agent can draft most of it in an hour, and it is the input every AI system you build afterwards depends on. And if you would rather have engineers who have shipped these platforms build it alongside your team, talk to us — it is free to start.

Sources: Fivetran 2026 pipeline benchmark (500 senior data leaders, Q4 2025) · Gartner on AI-ready data

Mohammed Yaseen

Mohammed Yaseen

Founder, SolutionGigs

Mohammed builds production data platforms and the retrieval layers that sit on top of them, where a missing column description turns into a confidently wrong answer. He writes about the engineering decisions that keep data systems and AI systems honest. LinkedIn →

Try Free SQL Query Generator

Free, no signup — right in your browser.

Try Free SQL Query Generator →
Found this useful? Share it.
ShareXLinkedIn

Comments

0

Join the conversation. Sign in to leave a comment — we'd love to hear your thoughts.