
This new edition enhances, extends, and clarifies the concepts and examples presented in the first edition. Topics have been restructured to coherently develop the data warehouse architecture.
A viral article in The Atlantic [1] shows evidence and testimony that kids at elite universities simply can't read anymore. I've seen the claim repeated in many other places and looking around me I believe it. Those kids are not replacing Dostoevsky or Aristotle with more compact versions of it.
The airport book industry is indeed full of books that could be fit in ten pages. But there's a universe of useful - potentially life-changing - books beyond that, and not only in the humanities. Some modern technical books justify their length. I seriously doubt that something like The Data Warehouse Toolkit can be replaced by reading piecemeal blogposts online.
Same goes for history, I sincerely doubt you can properly learn it in depth without reading long-form. In my experience, people who only listen to history podcasts or consume 10-minute videos tend to have a much poorer command of the facts and of the broader motions of history.
[1] https://www.theatlantic.com/magazine/archive/2024/11/the-eli...
Google will inmon for the info factory
Google data vault
Joe reis is the guy for tying it up with a modern bow recently.
Designing data intensive applications book
Firstly, I think youtube is a great primary resource here that you shouldn't neglect. There's a lot of conference talks by companies that scaled very quickly which go into great technical detail.
Also blog posts, there's a lot of great blog posts from the scale up phase of companies that don't hide anything.
The reason these fairly transparent conference sessions and blog posts exist is because the company is trying to interest top-level applicants and to look good for a future sale (I know because I experienced these requests) but it's great for just learning from.
For actual books, my suggestions will be very related to the system I had to scale. So my main suggestion is to first find some means to learn the optimal ways for your own system to scale before you go deep into any specifics.
"Designing Data Intensive Applications" by Martin Kleppmann is as the title describes. If "data" storage or manipulation is central to your systems (and what modern app isn't), I'd say it's essential to at least skim through. It's more of a breadth than depth book, but it goes deeper than you'd expect.
"Big Data" by Nathan Marz was foundational to the system I ended up designing, usefulness may vary. It describes a specific architecture for a flexible and high throughput data-based application. He has a new framework(?) named Rama that's open source, has some good blogs, and was recently featured on HN. And it appears to be based on improvements to the ideas in Big Data. So that's free and may be a better first look, though the available details aren't as in depth as the Big Data book.
"Event Streams in Action" by Alexander Dean & Valentin Crettaz is another one that may be specific to the area I needed. But if that's what you need, it has what you need.
"The Data Warehouse Toolkit" is another somewhat specific usecase book. It's also more developer-level than CTO level in a lot of areas. But it includes good, very specific examples such as several chapters dedicated to case studies of specific industries like banking, accounting, ecommerce, healthcare.
"Working Effectively with Legacy Code" By Michael Feathers is a personal favorite. Maybe a bit opinionated. You might think "We have older/early startup code, but we don't have legacy code", but Michael introduces a unique (and IMO very effective) idea of 'Legacy Code', anything that doesn't have tests is legacy code. It's a great resource on refactoring/maintaining/modifying and even rewriting important code without comprehensive coverage, and not written to make test coverage simple. The way I now look at it, any services written before the "scaleup" phase are almost always legacy code.
"Scrum: The Art of Doing Twice the Work in Half the Time" By Jeff Sutherland. If you're doing Scrum abd haven't read the original, I'd give it an extreme recommendation. The most important part of Scrum (in my opinion) is the flexibility and self-modification. The team I lead chose to trial Scrum and it was fantastic. The whole company decided to implement it. When the CEO learned we had abandoned literal "standups" for daily slack threads he made us revert to standups. The whole company had to follow the initial template laid out by Scrum with no deviation. It failed horribly and everyone hated it, it became the dreaded "waterfall with sprints". The main issue is he didn't listen to us about how it's meant to be modified, but I also think a big issue is he ordered 50 copies of some 30-page cliff-notes version of Scrum for the whole office, which completely omits the "kaizen" and other details about how malleable it can be.
"Don't Make Me Think" by Steve Krugg. Not so much about scaling but about user testing. So maybe not technically CTO territory but please advocate for this :P I'm paraphrasing some phrase in the book but 2 hours of proper user testing from random people off Craigslist/etc will provide you with 2 months of dev-work. You will not believe the features users misunderstand or various opportunities for additional sales users completely miss until you try with real people off the street.
"High Output Management" by Andrew Grove is about where management can be effective or harmful in developer productivity. It's an older book, sir, but it checks out. Some of it is fairly commonplace information nowadays, but still a good intro to tech management, and probably some useful information for very high-level management since Grove was the Director of Engineering at Intel when he wrote it.
1) Data modeling: Fully read Kimball's book, The Data Warehouse Toolkit, 3rd edition. It's outdated and boring but it's an excellent foundation, so don't skip it.
2) Data modeling: After #1 above, spend at least 30 minutes learning about Inmon's approach, the ER Model, 3NF, etc. You can find some decent YouTube videos. You don't need to learn this deeply, but you should understand how it's different than Kimball's approach.
3) Data warehousing & data lakes: Read the academic paper titled "Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics." For an academic paper, it's surprisingly approachable.
4) If you don't know this already, do 15 minutes of googling to understand ETL vs ELT and the pros and cons of each approach.
5) Putting it all together: Once you've done the things above, then read Kleppman's book, Designing Data-Intensive Applications.
6) Focus on the future: Spend a little time learning about streaming architectures, including batch/microbatch/streaming and pros and cons for each. You may also want to learn about some of the popular tools, but you can easily google those.
From first principals, I can highly recommend Ralph Kimball's primer, The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling.[1]
Ralph Kimball and Margy Ross, The Data Warehouse Toolkit -- even if you're in an OLTP context, it's useful to know about warehousing techniques
Dmitri Fontaine, The Art of PostgreSQL -- cookbook approach to modern SQL with plenty of explanations
Not a book but Heinz Klein and Kalle Lyytinen's paper "Towards a New Understanding of Data Modeling" in the Software Development and Reality Construction remains a must-read 30 years later. The organizers of that conference have published a free PDF copy of SDRC if you look around a bit.