Analytics Engineering with SQL and dbt serves as a solid primer on dbt and its role in modern data analytics workflows. It effectively introduces key concepts, guiding readers through the fundamentals of using dbt for transforming and organizing data models.
As a software engineer with a decent amount of database experience, I found the book informative but less exciting. The way dbt structures data transformations feels like the equivalent of modern C-style macros, relying on Python and Jinja to generate SQL. Rather than providing a true abstraction, it mostly shifts SQL logic around into code snippets, requiring a significant cognitive load to understand how everything stitches together. The end result often resembles “Fancy SQL” with organizational conventions but also a fair amount of spaghetti code.
That said, I do appreciate how the data engineering field is embracing software engineering best practices, such as version control, modularity, separation of concerns, and concepts from domain driven design. While dbt’s approach feels somewhat hodgepodge at this stage, I’m optimistic that these workflows will mature over time. For those new to analytics engineering, this book is a great starting point although getting up and running is a bit kludgy (even when streamlined). For seasoned software engineers, it provides insight into how the data world is evolving—but might leave you wishing for a more robust abstraction layer and a simpler set of tools.
The biggest takeaway for me was gaining familiarity with the tools, workflows, and mindset of the data engineers I work with. This has made conversations more productive, helped me navigate their chosen tools effectively, and fostered stronger collaboration across our cross-functional teams.