How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk. 0201633612B07092001
This volume is a handbook for enterprise system developers, guiding them through the intricacies and lessons learned in enterprise application development. It provides proven solutions to the everyday problems facing information systems developers.
Martin Fowler, Kent Beck
Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.
Comprehensive, complete coverage is given of Windows programming fundamentals. Fully revised for Windows 98, this edition covers the basics, special techniques, the kernel and the printer, data exchange and links, and real applications developed in the text.
Jasmin Blanchette, Mark Summerfield
Accompanied by a CD-ROM containing the open source editon of Qt 4.3, as well as examples and source code from the book, an updated guide to Qt 4 programming provides information on such topics as creating dialog boxes, file menus, user interfaces, graphical user interface programming, changes from Qt 4.2 and 4.3, custom widgets for applications, SVG file generation, and more. Original. (Intermediate)
“For software developers of all experience levels looking to improve their results, and design and implement domain-driven enterprise applications consistently with the best current state of professional practice, Implementing Domain-Driven Design will impart a treasure trove of knowledge hard won within the DDD and enterprise application architecture communities over the last couple decades.” –Randy Stafford, Architect At-Large, Oracle Coherence Product Development “This book is a must-read for anybody looking to put DDD into practice.” –Udi Dahan, Founder of NServiceBus Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven design (DDD) in a way that fluently connects strategic patterns to fundamental tactical programming tools. Vaughn Vernon couples guided approaches to implementation with modern architectures, highlighting the importance and value of focusing on the business domain while balancing technical considerations. Building on Eric Evans' seminal book, Domain-Driven Design, the author presents practical DDD techniques through examples from familiar domains. Each principle is backed up by realistic Java examples–all applicable to C# developers–and all content is tied together by a single case study: the delivery of a large-scale Scrum-based SaaS system for a multitenant environment. The author takes you far beyond “DDD-lite” approaches that embrace DDD solely as a technical toolset, and shows you how to fully leverage DDD's “strategic design patterns” using Bounded Context, Context Maps, and the Ubiquitous Language. Using these techniques and examples, you can reduce time to market and improve quality, as you build software that is more flexible, more scalable, and more tightly aligned to business goals. Coverage includes Getting started the right way with DDD, so you can rapidly gain value from it Using DDD within diverse architectures, including Hexagonal, SOA, REST, CQRS, Event-Driven, and Fabric/Grid-Based Appropriately designing and applying Entities–and learning when to use Value Objects instead Mastering DDD's powerful new Domain Events technique Designing Repositories for ORM, NoSQL, and other databases
Donald A. Norman
Reveals a current trend in smart design that can enable companies to move to or remain on the leading edge of the competitive frontier, offering a primer on how and why various products succeed or fail to satisfy consumers. Originally published as The Psychology of Everyday Things. Reprint. 25,000 first printing.
Alan Cooper, Robert Reimann, Dave Cronin
While the ideas and principles in the original book remain as relevant as ever, the examples in "About Face 3" are updated to reflect the evolution of the Web. Interaction Design professionals are constantly seeking to ensure that software and software-enabled products are developed with the end-user's goals in mind, that is, to make them more powerful and enjoyable for people who use them. "About Face 3" ensures that these objectives are met with the utmost ease and efficiency. Alan Cooper (Palo Alto, CA) has spent a decade making high-tech products easier to use and less expensive to build - a practice known as "Interaction Design." Cooper is now the leader in this growing field.
Donald A. Norman
Even the smartest among us can feel inept as we fail to figure our which light switch or oven burner to turn on, or whether to push, pull, or slide a door. The fault, argues this book, lies not in ourselves, but in product design that ignores the needs of users and the principles of cognitive psychology. The problems range from ambiguous and hidden controls to arbitrary relationships between controls and functions, coupled with a lack of feedback or other assistance and unreasonable demands on memorization. The book presents examples aplenty, among them, the VCR, computer, and office telephone, all models of how not to design for people. But good, usable design is possible. The rules are simple: make things visible, exploit natural relationships that couple function and control, and make intelligent use of constraints. The goal: guide the user effortlessly to the right action on the right control at the right time. But the designer must care. The author is a world-famous psychologist and pioneer in the application of cognitive science. His aim is to raise the consciousness of both consumers and designers to the delights of products that are easy to use and understand.
Pattern - Oriented Software Architecture A System of Patterns Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal of Siemens AG, Germany Pattern-oriented software architecture is a new approach to software development. This book represents the progression and evolution of the pattern approach into a system of patterns capable of describing and documenting large-scale applications. A pattern system provides, on one level, a pool of proven solutions to many recurring design problems. On another it shows how to combine individual patterns into heterogeneous structures and as such it can be used to facilitate a constructive development of software systems. Uniquely, the patterns that are presented in this book span several levels of abstraction, from high-level architectural patterns and medium-level design patterns to low-level idioms. The intention of, and motivation for, this book is to support both novices and experts in software development. Novices will gain from the experience inherent in pattern descriptions and experts will hopefully make use of, add to, extend and modify patterns to tailor them to their own needs. None of the pattern descriptions are cast in stone and, just as they are borne from experience, it is expected that further use will feed in and refine individual patterns and produce an evolving system of patterns. Visit our Web Page http://www.wiley.com/compbooks/
Most programmers' fear of user interface (UI) programming comes from their fear of doing UI design. They think that UI design is like graphic design—the mysterious process by which creative, latte-drinking, all-black-wearing people produce cool-looking, artistic pieces. Most programmers see themselves as analytic, logical thinkers instead—strong at reasoning, weak on artistic judgment, and incapable of doing UI design. In this brilliantly readable book, author Joel Spolsky proposes simple, logical rules that can be applied without any artistic talent to improve any user interface, from traditional GUI applications to websites to consumer electronics. Spolsky's primary axiom, the importance of bringing the program model in line with the user model, is both rational and simple. In a fun and entertaining way, Spolky makes user interface design easy for programmers to grasp. After reading User Interface Design for Programmers, you'll know how to design interfaces with the user in mind. You'll learn the important principles that underlie all good UI design, and you'll learn how to perform usability testing that works.
Arthur J. Riel
Wouldn't you like to have a seasoned OO design expert looking over your shoulder, critiquing your work, and giving advice on how to improve it? Here are 60 language-independent guidelines for evaluating the quality and integrity of object-oriented designs that will help you pinpoint where your design needs help and how to improve it. The guidelines range from such topics as classes and objects (with emphasis on their relationships) to physical object-oriented design. In particular, you will gain an understanding of the synergy between design heuristics, which can highlight a problem, and design patterns, which can provide the solution.
The honeymoon with digital technology is over: millions of users are tired of having to learn huge, arcane programs to perform the simplest tasks and have had enough of system crashes. In "The Humane Interface", Jef Raskin--the legendary, controversial creator of the original Apple Macintosh project--shows that there is another path. The book presents breakthrough solutions for navigation, error management, and more, with detailed case studies from the author's own work.
Simon Collison, Andy Budd, Cameron Moll
Building on what made the first edition a bestseller, CSS Mastery: Advanced Web Standards Solutions, Second Edition unites the disparate information on CSS-based design spread throughout the internet into one definitive, modern guide. Revised to cover CSS3, the book can be read from front to back, with each chapter building on the previous one. However, it can also be used as a reference book, dipping into each chapter or technique to help solve specific problems. In short, this is the one book on CSS that you need to have. This second edition contains: New examples and updated browser support information New case studies from Simon Collison and Cameron Moll CSS3 examples, showing new CSS3 features, and CSS3 equivalents to tried and tested CSS2 techniques What you’ll learn The best practice concepts in CSS design. The most important (and tricky) parts of CSS Identify and fix the most common CSS problems How to deal with the most common bugs Completely up to date browser support information Covers CSS3 as well as CSS2 showing you the future of CSS Who this book is for This book will be aimed towards intermediate web designers/developers, although the examples should be simple enough for novice designers/developers with a basic understanding of CSS to grasp. Readers will probably have read beginner/intermediate instructional books such as Web Standards Solutions and will be looking for more practical and in-depth information. This book is likely to have a broad appeal, attracting intermediate developers wanting to improve their skills as well as advanced developers wanting a useful reference. The CSS 2/3 content of the book is delivered in a way that allows readers to learn CSS2 techniques that they can implement now in professional work, and then gem up on CSS3 techniques if they want to start looking towards the future. Table of Contents Setting the Foundations Getting Your Styles to Hit the Target Visual Formatting Model Overview Using Backgrounds for Effect Styling Links Styling Lists and Creating Nav Bars Styling Forms and Data Tables Layout Bugs and Bug Fixing Case Study: Roma Italia Case Study: Climb the Mountains
Chet Haase, Romain Guy
This book is about building better, more effective and cooler desktop application using Java tools. Graphical effects, especially animated ones, can be overdone creating an application that would overload the senses. The authors show how to enrich the graphics and animate effectively.
Your 2-in-1 Self-Paced Training Kit. Fully updated and revised! Ace your preparation for the skills measured by MCTS Exam 70-536—and on the job. With this official Microsoft study guide, you'll work at your own pace through a series of lessons and reviews that fully cover each exam objective. Then reinforce and apply what you've learned through real-world case scenarios and practice exercises. Maximize your performance on the exam by learning to: Develop applications that use system types and collections Validate input, reformat text, and extract data with regular expressions Create services and multi-threaded applications Implement code-access security and role-based security Implement serialization to read and write complex objects Leverage legacy code using interoperability Monitor and troubleshoot applications Create applications for a global audience PRACTICE TESTS Assess your skills with practice tests on CD. You can work through hundreds of questions using multiple testing modes to meet your specific learning needs. You get detailed explanations for right and wrong answers?including a customized learning path that describes how and where to focus your studies. Your kit includes: 15% exam discount from Microsoft. (Limited time offer). Official self-paced study guide. Practice tests with multiple, customizable testing options and a learning plan based on your results. 300+ practice and review questions. Code samples in Microsoft Visual Basic and Visual C# on CD. Case scenarios, exercises, and best practices. 90-day evaluation of Microsoft Visual Studio Professional 2008. Fully searchable eBook of this guide. A Note Regarding the CD or DVD The practice test materials are available as a download along with your ebook version of the kit, and will be located in your account. Please direct any questions or concerns to email@example.com.