Here are 66 books that Refactoring Databases fans have personally recommended if you like
Refactoring Databases.
Book DNA is a community of 12,000+ authors and super readers sharing their favorite books with the world.
My first computer was an early IBM PC back when all my friends had Commodores they used for gaming. Not being able to share their games meant I had to do something else, so I read the Introduction to Basic book that came in the box. I’ve been coding, reading about coding, writing about coding, teaching about coding, and talking about coding ever since. The world of technology moves so fast that it is hard to keep up. If you’ve taken one of my courses or listened to The Real Python Podcast, I hope you’ve heard about my passion for the topic.
When I work with students new to programming I often find they struggle with translating the toy problems in exercises to actually doing something in the real world.
I love this book and frequently recommend it to new programmers because it is centered around problems. Coding should be about making your life easier. At the beginning, the problems are small, but by the end, you’re learning about email, PDFs, and GUIs.
Sweigart has a great voice, and reading this feels like being guided by a friend rather than yet another coding textbook.
In this second edition of Automate the Boring Stuff with Python, you'll learn the basics of programming in Python, the fastest growing programming language today, before moving on to create Python programs that effortlessly perform useful and impressive feats of automation. This updated edition is full of step-by-step instructions that walk through each programme. Practice projects at the end of each chapter challenge you to improve those programmes and use your newfound skills to automate similar tasks.
Magical realism meets the magic of Christmas in this mix of Jewish, New Testament, and Santa stories–all reenacted in an urban psychiatric hospital!
On locked ward 5C4, Josh, a patient with many similarities to Jesus, is hospitalized concurrently with Nick, a patient with many similarities to Santa. The two argue…
I’m a software engineer because I’m a builder at heart. I have always had a profoundly curious mind, and always enjoyed tinkering. So at one point in my life, it became evident that I was going to be an engineer. I consider teaching the final step of learning, so whether this means writing an article or giving a talk, or simply sharing recommendations, I make a final effort to share with the community of like-minded people what I have learnt. For this reason, I hope you enjoy reading my book and the ones I recommended.
I have to be honest here: when I was reading this book on a trip to New York, I found myself quite surprised because I had seen so many praises for this book, yet I did not particularly agree with most of the topics I was reading about. In particular, I found several points that contradicted those in Clean Code and Code Complete.
I know there’s a debate going on between the authors on a distribution list, but besides some of these points on which I respectfully disagree with the author, I can see is a book of immense value, and there are tons of other great points made about great software design (for example, ”modules should be deep”). And the explanations are crystal clear.
A final reason for recommending this book is that it’s always enriching to expose oneself to a different viewpoint.
This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can…
My first computer was an early IBM PC back when all my friends had Commodores they used for gaming. Not being able to share their games meant I had to do something else, so I read the Introduction to Basic book that came in the box. I’ve been coding, reading about coding, writing about coding, teaching about coding, and talking about coding ever since. The world of technology moves so fast that it is hard to keep up. If you’ve taken one of my courses or listened to The Real Python Podcast, I hope you’ve heard about my passion for the topic.
Most of the code I write and use is open source. As a programmer, it is easy to think “open source means free.” I didn’t think much about it until one of the companies I worked at got acquired, and we had to audit our licenses.
The big company that bought us was very particular about which licenses were compatible with their needs. That was when I realized I needed to understand this stuff better. Rosen does a great job of teaching what is otherwise legalese in plain-spoken, easy-to-understand language. This book taught me why I choose the licenses I do rather than picking blindly.
"I have studied Rosen's book in detail and am impressed with its scope and content. I strongly recommend it to anybody interested in the current controversies surrounding open source licensing." -John Terpstra, Samba.org; cofounder, Samba-Team"Linux and open source software have forever altered the computing landscape. The important conversations no longer revolve around the technology but rather the business and legal issues. Rosen's book is must reading for anyone using or providing open source solutions." -Stuart Open Source Development LabsA Complete Guide to the Law of Open Source for Developers, Managers, and Lawyers
Now that open source software is blossoming around…
Stealing technology from parallel Earths was supposed to make Declan rich. Instead, it might destroy everything.
Declan is a self-proclaimed interdimensional interloper, travelling to parallel Earths to retrieve futuristic cutting-edge technology for his employer. It's profitable work, and he doesn't ask questions. But when he befriends an amazing humanoid robot,…
The art of computer programming is a lot like the art of writing: It's not just about what your program says but about how it says it. One of the reasons I like the C and C++ languages—which I picked up in the late 1990s and haven't put down since—is that, as compiled, non-sandboxed languages, they promise total control over the machine. Show me where you want each byte of data to go in memory; show me the machine instructions you want; and I can make C++ do that for you.
Next to Fred Brooks' The Mythical Man-Month, this is perhaps the most classic of all classic programming books.
The authors write: "Besides showing how to make effective use of the language, we have also tried where possible to illustrate useful algorithms and principles of good style and sound design."
The book is astoundingly practical as a tutorial, which is itself a testament to the Unix "pipe" model of programming: By page 13, they've introduced getchar and putchar, and by the end of Chapter 1, twenty pages later, you've implemented a host of useful utilities including cat, wc, and detab. In Chapter 5 you implement a function recognizable as the now-standard qsort; in Chapter 8 you implement malloc itself.
Now, I recommend "K&R1," not the more popular "K&R2." The first edition was issued in 1978 at a slim 225 pages; the second edition, a decade later, added conformance with ANSI…
Known as the bible of C, this classic bestseller introduces the C programming language and illustrates algorithms, data structures, and programming techniques.
I’m a professional software developer for more than 22 years now. I’ve used many programming languages, platforms, frameworks, etc. throughout my career. However, the only constant for me personally was the practice of Test-Driven Development. I’ve never stopped learning about the principles and practices behind it, and it paid huge dividends throughout my career. I’m very humbled and grateful to be able to learn from all those amazing people over the years, that I decided to write a book on the topic. Giving back some of the knowledge that I gathered about TDD throughout 18+ years.
During the early years of my career as a software developer, I regularly developed very small programs that would exercise parts of the system that I was working on back then. I realized very quickly that those small programs would save me a lot of time figuring out whether the changes that I made would actually work or not. Until at some point a colleague mentioned the concept of Test-Driven Development. I first did some experimentation, dipping a toe into the water to feel the temperature. It wasn’t until the first time I picked up this book that I jumped right in. From then moment on, it all made sense. Although this book was published back in 2002, for me it still is the book when it comes to the subject of Test-Driven Development.
Quite simply, test-driven development is meant to eliminate fear in application development. While some fear is healthy (often viewed as a conscience that tells programmers to "be careful!"), the author believes that byproducts of fear include tentative, grumpy, and uncommunicative programmers who are unable to absorb constructive criticism. When programming teams buy into TDD, they immediately see positive results. They eliminate the fear involved in their jobs, and are better equipped to tackle the difficult challenges that face them. TDD eliminates tentative traits, it teaches programmers to communicate, and it encourages team members to seek out criticism However, even the…
I first learned to program in college in 1970. Since then I’ve spent much time as a software developer, manager, tester, process improvement leader, consultant, trainer, author, and, of course, a user. I quickly learned that I didn’t have time to make all the mistakes that every software developer before me had already made. My training and writing career has involved sharing what I and others have learned with audiences to help them quickly become more effective software development team members, regardless of their project role. This book distills insights and observations both from my own experience and from what I’ve heard from thousands of students and consulting clients.
One way to craft lessons learned is in the form of recommended best practices (or, as I prefer, “good practices”). Best practices represent collected and distilled wisdom from many observers, many projects, and many years of experience. Rapid Development includes 27 best practices for software development, with one chapter devoted to each. Although the book was published more than 25 years ago, most of these are still relevant. Indeed, several of them have been incorporated into routine contemporary practices: evolutionary delivery, designing for change, timebox development, and requirements scrubbing. Techniques such as inspections, miniature milestones, principled negotiation, and reuse are perennially pertinent.
Corporate and commercial software-development teams all want solutions for one important problem-how to get their high-pressure development schedules under control. In RAPID DEVELOPMENT, author Steve McConnell addresses that concern head-on with overall strategies, specific best practices, and valuable tips that help shrink and control development schedules and keep projects moving. Inside, you'll find:
A rapid-development strategy that can be applied to any project and the best practices to make that strategy work Candid discussions of great and not-so-great rapid-development practices-estimation, prototyping, forced overtime, motivation, teamwork, rapid-development languages, risk management, and many others A list of classic mistakes to avoid for…
Nature writer Sharman Apt Russell tells stories of her experiences tracking wildlife—mostly mammals, from mountain lions to pocket mice—near her home in New Mexico, with lessons that hold true across North America. She guides readers through the basics of identifying tracks and signs, revealing a landscape filled with the marks…
I’m a software engineer because I’m a builder at heart. I have always had a profoundly curious mind, and always enjoyed tinkering. So at one point in my life, it became evident that I was going to be an engineer. I consider teaching the final step of learning, so whether this means writing an article or giving a talk, or simply sharing recommendations, I make a final effort to share with the community of like-minded people what I have learnt. For this reason, I hope you enjoy reading my book and the ones I recommended.
I've found this book enlightening in many key areas of software development, and as I was reading it, I felt connected with the author (even though I've never met him, I could imagine us having a conversation about software engineering, and agreeing on pretty much everything).
It was a revealing book for me, in the sense that it gave a formal framework to several ideas I've noticed as a practitioner over the years. In that regard, I wish I'd come across this work way earlier in my career.
Widely considered one of the best practical guides to programming, Steve McConnell's original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices-and hundreds of new code samples-illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking-and help you build…
Defining and managing the requirements for a software system is hard! I’ve been interested in improving how projects handle their requirements for more than 35 years. I realized how important this was when I saw how many projects—including my own—struggled and failed when they neglected to build a solid foundation of well-understood and clearly communicated requirements. I’ve personally used nearly all of the techniques described in my book Software Requirements, and I got always better results when I applied those techniques. My books, articles, training courses, presentations, and videos on requirements have been helpful to thousands of business analysts worldwide for many years.
Many agile projects employ user stories as a way to represent requirements rather than a more traditional approach combining use cases and functional requirements. I favor the latter approach for several reasons. Nonetheless, user stories are well established in the agile development world, and if you wish to learn about them, there’s no better author to read than Mike Cohn. Cohn describes how to craft user stories well and how they fit into the agile development process.
Thoroughly reviewed and eagerly anticipated by the agile community, User Stories Applied offers a requirements process that saves time, eliminates rework, and leads directly to better software.
The best way to build software that meets users' needs is to begin with "user stories": simple, clear, brief descriptions of functionality that will be valuable to real users. In User Stories Applied, Mike Cohn provides you with a front-to-back blueprint for writing these user stories and weaving them into your development lifecycle.
You'll learn what makes a great user story, and what makes a bad one. You'll discover practical ways to gather…
I first learned to program in college in 1970. Since then I’ve spent much time as a software developer, manager, tester, process improvement leader, consultant, trainer, author, and, of course, a user. I quickly learned that I didn’t have time to make all the mistakes that every software developer before me had already made. My training and writing career has involved sharing what I and others have learned with audiences to help them quickly become more effective software development team members, regardless of their project role. This book distills insights and observations both from my own experience and from what I’ve heard from thousands of students and consulting clients.
Many of the most significant principles of effective software development are timeless. They’re independent of the development life cycle or model, programming language, application type, and so forth. Although this book is quite a few years old now, nearly all of its contents are still valid. The 201 principles cover the full spectrum of software engineering: general principles, requirements engineering, design, coding, testing, management, product assurance, and evolution. The descriptions of each principle are concise, whereas my 60 lessons in Software Development Pearls go into a great deal more detail and offer many practical techniques.
There’s an unfortunate tendency among young software people to disregard knowledge from the past as irrelevant to them. That’s not correct. This book can help close significant gaps in any practicing software developer’s knowledge.
This text defines governing principles for software development, assumptions that work regardless of tools used, to keep software projects from costing too much, taking too long and disappointing users.
The Bridge provides a compassionate and well researched window into the worlds of linear and circular thinking. A core pattern to the inner workings of these two thinking styles is revealed, and most importantly, insight into how to cross the distance between them. Some fascinating features emerged such as, circular…
I’ve always enjoyed mentoring folks whether new or experienced in programming. Whether it is teaching an intern or a high school robotics student, or onboarding an experienced Java developer, it brings me joy to see people learn. I also love to read. Being able to recommend some of my favorite books can help even more people absorb all of this information.
In addition to Java, you need to know about the Java ecosystem.
Each chapter covers a type of tool like version control, securing binaries, or mobile. Some chapters cover a variety of tools. I particularly liked the overview of Quarkus and Micronaut. I also liked the emphasis of tools vs a role. The analogies were great such as comparing identify/fix/deploy to an oil spill.
The book is 300 pages and easy to carry around. Despite having four authors, the book is very cohesive and reads well.
With the rise of DevOps, low-cost cloud computing, and container technologies, the way Java developers approach development today has changed dramatically. This practical guide helps you take advantage of microservices, serverless, and cloud native technologies using the latest DevOps techniques to simplify your build process and create hyperproductive teams.
Stephen Chin, Melissa McKay, Ixchel Ruiz, and Baruch Sadogursky from JFrog help you evaluate an array of options. The list includes source control with Git, build declaration with Maven and Gradle, CI/CD with CircleCI, package management with Artifactory, containerization with Docker and Kubernetes, and much more. Whether you're building applications with…