{"schema_version":"bf_book_companion_v1","release_id":"20260417T232332Z","book":{"amazon_purchase_url":"https://www.amazon.com/dp/1098151240?tag=bookfrontier-20","asin":"1098151240","authors":["Kent Beck"],"book_id":"9781098151249","canonical_url":"https://bookfrontier.com/books/tidy-first-1098151240","cover_image_url":"https://img.bookfrontier.com/9781098151249.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","description":"Messy code is a nuisance. \"Tidying\" code, to make it more readable, requires breaking it up into manageable sections. In this practical guide, author Kent Beck, creator of Extreme Programming and pioneer of software patterns, suggests when and where you might apply tidyings to improve your code while keeping the overall structure of the system in mind. Instead of trying to master tidying all at once, this book lets you try out a few examples that make sense for your problem. If you have a big function containing many lines of code, you'll learn how to logically divide it into smaller chunks. Along the way, you'll learn the theory behind software design: coupling, cohesion, discounted cash flows, and optionality. This book helps you: - Understand the basic theory of how software design works and the forces that act on it - Explore the difference between changes to a system's behavior and changes to its structure - Improve your programming experience by sometimes tidying first and sometimes tidying after - Learn how to make large changes in small, safe steps - Approach design as a human activity with diverging incentives","forthcoming":false,"isbn13":"9781098151249","publication_date":"20231128","publisher":"O'Reilly Media","slug":"tidy-first","subtitle":"A Personal Exercise in Empirical Software Design","title":"Tidy First?"},"discovery":{"categories":{"all":[{"bisac_code":"COM051230","confidence_band":"medium","label":"Software Development","score":0.7987,"source":"bisac_hint_model"},{"bisac_code":"COM051240","confidence_band":"medium","label":"Systems Design","score":0.7978,"source":"bisac_hint_model"},{"bisac_code":"COM051330","confidence_band":"medium","label":"Testing & QA","score":0.7955,"source":"bisac_hint_model"}],"hint":[{"bisac_code":"COM051230","confidence_band":"medium","label":"Software Development","score":0.7987,"source":"bisac_hint_model"},{"bisac_code":"COM051240","confidence_band":"medium","label":"Systems Design","score":0.7978,"source":"bisac_hint_model"},{"bisac_code":"COM051330","confidence_band":"medium","label":"Testing & QA","score":0.7955,"source":"bisac_hint_model"}],"publisher":[{"bisac_code":"COM051000","confidence_band":"high","label":"Programming Basics","score":1,"source":"onix_publisher_code"},{"bisac_code":"COM051240","confidence_band":"high","label":"Systems Design","score":1,"source":"onix_publisher_code"},{"bisac_code":"COM060160","confidence_band":"high","label":"Web Programming","score":1,"source":"onix_publisher_code"}]},"genres":[{"label":"Software Development","score":0.7987,"slug":"software-development"},{"label":"Systems Design","score":0.7978,"slug":"systems-design"},{"label":"Testing & QA","score":0.7955,"slug":"testing-qa"}],"reader_fit":["Good for readers who enjoy Software Development","Good for fans of Programming","Good for readers who enjoy Software Development and Systems Design."],"related_lists":[],"series":null,"similar_books":[{"authors":["Cem Kaner","James Bach","Bret Pettichord","& 0 more"],"book_id":"9780471081128","cover_image_url":"https://img.bookfrontier.com/9780471081128.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","score":12.4069,"title":"Lessons Learned in Software Testing","url":"https://bookfrontier.com/books/9780471081128"},{"authors":["Richard L. Sites"],"book_id":"9780137589739","cover_image_url":"https://img.bookfrontier.com/9780137589739.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","score":12.3617,"title":"Understanding Software Dynamics","url":"https://bookfrontier.com/books/9780137589739"},{"authors":["Michael Nygard","Michael T. Nygard"],"book_id":"9781680502398","cover_image_url":"https://img.bookfrontier.com/9781680502398.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","score":9.6017,"title":"Release It!","url":"https://bookfrontier.com/books/9781680502398"},{"authors":["Robert C. Martin"],"book_id":"9780132350884","cover_image_url":"https://img.bookfrontier.com/9780132350884.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","score":9.3725,"title":"Clean Code","url":"https://bookfrontier.com/books/9780132350884"},{"authors":["Ron Jeffries"],"book_id":"9781941222379","cover_image_url":"https://img.bookfrontier.com/9781941222379.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","score":9.3355,"title":"The Nature of Software Development","url":"https://bookfrontier.com/books/9781941222379"},{"authors":["Neal Ford","Mark Richards","Pramod Sadalage","Zhamak Dehghani"],"book_id":"9781492086895","cover_image_url":"https://img.bookfrontier.com/9781492086895.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","score":9.2115,"title":"Software Architecture: the Hard Parts","url":"https://bookfrontier.com/books/9781492086895"},{"authors":["Mauricio Aniche"],"book_id":"9781633439931","cover_image_url":"https://img.bookfrontier.com/9781633439931.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","score":9.1707,"title":"Effective Software Testing","url":"https://bookfrontier.com/books/9781633439931"},{"authors":["George Dinwiddie"],"book_id":"9781680506983","cover_image_url":"https://img.bookfrontier.com/9781680506983.jpg?v=20260417T232332Z%3A2026-04-17T23%3A23%3A32Z","score":9.1544,"title":"Software Estimation Without Guessing","url":"https://bookfrontier.com/books/9781680506983"}],"topics":[],"what_you_get":["Reading lane: Software Development and Systems Design.","Publisher: O'Reilly Media."]},"llm_signals":null,"source_presence":{"amazon":true,"book_detail":true,"goodreads":true,"llm_signals":false,"similarity_seed":true},"stats":{"amazon_ratings_count":0,"goodreads_ratings_count":1084,"goodreads_reviews_count":146,"quality_score":0.9106}}