Refactoring: Improving the Design of Existing Code


Martin Fowler - 1999
    Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, non-optimal applications. For several years, expert-level object programmers have employed a growing collection of techniques to improve the structural integrity and performance of such existing software programs. Referred to as refactoring, these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use... until now. In Refactoring: Improving the Design of Existing Software, renowned object technology mentor Martin Fowler breaks new ground, demystifying these master practices and demonstrating how software practitioners can realize the significant benefits of this new process.

Code Complete


Steve McConnell - 1993
    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 the highest quality code. Discover the timeless techniques and strategies that help you: Design for minimum complexity and maximum creativity Reap the benefits of collaborative development Apply defensive programming techniques to reduce and flush out errors Exploit opportunities to refactor--or evolve--code, and do it safely Use construction practices that are right-weight for your project Debug problems quickly and effectively Resolve critical construction issues early and correctly Build quality into the beginning, middle, and end of your project

Agile Software Development, Principles, Patterns, and Practices


Robert C. Martin - 2002
    The author incudes OOD, UML, Design Patterns, Agile and XP methods with a detailed description of a complete software design for reusable programs in C++ and Java. Using a practical, problem-solving approach, it shows how to develop an object-oriented application -- from the early stages of analysis, through the low-level design and into the implementation. Walks readers through the designer's thoughts -- showing the errors, blind alleys, and creative insights that occur throughout the software design process. KEY TOPICS: Covers: Statics and Dynamics; Principles of Class Design; Complexity Management; Principles of Package Design; Analysis and Design; Patterns and Paradigm Crossings. Explains the principles of OOD, one by one, and then demonstrates them with numerous examples, completely worked-through designs, and case studies. Covers traps, pitfalls, and work arounds in the application of C++ and OOD and then shows how Agile methods can be used. Discusses the methods for designing and developing big software in detail. Features a three-chapter, in-depth, single case study of a building security system. MARKET: For Software Engineers, Programmers, and Analysts who want to understand how to design object oriented software with state of the art methods.

The Principles of Product Development Flow: Second Generation Lean Product Development


Donald G. Reinertsen - 2009
    He explains why invisible and unmanaged queues are the underlying root cause of poor product development performance. He shows why these queues form and how they undermine the speed, quality, and efficiency in product development.

Research Design: Qualitative, Quantitative, and Mixed Methods Approaches


John W. Creswell - 1994
    It is a book that models the types of issues that best suit different approaches and allows students to understand when to use mixed methods. Furthermore, its focus on theory and paradigms is done in a way that helps students decode their meaning." --MARTHA MONTERO-SIEBURTH, University of Massachusetts, BostonNew to the Second Edition:Because mixed methods research has come into its own since the publication of the first edition, every chapter now shows how to implement a mixed methods design in your proposal or plan as well as showing how to implement qualitative and quantitative approaches Ethical issues that may arise in quantitative, qualitative and mixed methods designs have been added to a new section in Chapter 3 Writing tips and considerations have been expanded and moved to the first part of the book to get your research plan started in the right direction The latest developments in qualitative inquiry, including advocacy, participatory, and emancipatory approaches have been added to Chapter 10 Mixed methods procedures (Chapter 11) show readers how to identify types of mixed methods strategy, select data collection and analysis approaches, and plan the overall structure of the study

India's Railway Man: A Biography of E. Sreedharan


Rajendra B. Aklekar - 2017
    The [Chithoni railway link] bridge was completed eleven weeks ahead of schedule and proved to be helpful to one and all.Two key railway projects changed the way India travels by train—the 760-km stretch of Konkan Railway and the Delhi Metro. Both the projects were up and running in seven years flat and the man in charge was Dr Elattuvalapil Sreedharan, popularly known as the Railway Man. He has been hailed as the messiah of new-age infrastructure projects and his success stories have become railway engineering benchmark.Respected, loved and equally hated, this book covers the amazing story of one man—his perseverance, beliefs, and public and private battles. India’s Railway Man: A Biography of E. Sreedharan is a tribute to this extraordinary man.

Coders at Work: Reflections on the Craft of Programming


Peter Seibel - 2009
    As the words "at work" suggest, Peter Seibel focuses on how his interviewees tackle the day–to–day work of programming, while revealing much more, like how they became great programmers, how they recognize programming talent in others, and what kinds of problems they find most interesting. Hundreds of people have suggested names of programmers to interview on the Coders at Work web site: http://www.codersatwork.com. The complete list was 284 names. Having digested everyone’s feedback, we selected 16 folks who’ve been kind enough to agree to be interviewed:- Frances Allen: Pioneer in optimizing compilers, first woman to win the Turing Award (2006) and first female IBM fellow- Joe Armstrong: Inventor of Erlang- Joshua Bloch: Author of the Java collections framework, now at Google- Bernie Cosell: One of the main software guys behind the original ARPANET IMPs and a master debugger- Douglas Crockford: JSON founder, JavaScript architect at Yahoo!- L. Peter Deutsch: Author of Ghostscript, implementer of Smalltalk-80 at Xerox PARC and Lisp 1.5 on PDP-1- Brendan Eich: Inventor of JavaScript, CTO of the Mozilla Corporation - Brad Fitzpatrick: Writer of LiveJournal, OpenID, memcached, and Perlbal - Dan Ingalls: Smalltalk implementor and designer- Simon Peyton Jones: Coinventor of Haskell and lead designer of Glasgow Haskell Compiler- Donald Knuth: Author of The Art of Computer Programming and creator of TeX- Peter Norvig: Director of Research at Google and author of the standard text on AI- Guy Steele: Coinventor of Scheme and part of the Common Lisp Gang of Five, currently working on Fortress- Ken Thompson: Inventor of UNIX- Jamie Zawinski: Author of XEmacs and early Netscape/Mozilla hackerWhat you’ll learn:How the best programmers in the world do their jobWho is this book for?Programmers interested in the point of view of leaders in the field. Programmers looking for approaches that work for some of these outstanding programmers.

You Don't Know JS: Up & Going


Kyle Simpson - 2015
    With the "You Don’t Know JS" book series, you’ll get a more complete understanding of JavaScript, including trickier parts of the language that many experienced JavaScript programmers simply avoid.The series’ first book, Up & Going, provides the necessary background for those of you with limited programming experience. By learning the basic building blocks of programming, as well as JavaScript’s core mechanisms, you’ll be prepared to dive into the other, more in-depth books in the series—and be well on your way toward true JavaScript.With this book you will: Learn the essential programming building blocks, including operators, types, variables, conditionals, loops, and functions Become familiar with JavaScript's core mechanisms such as values, function closures, this, and prototypes Get an overview of other books in the series—and learn why it’s important to understand all parts of JavaScript

ESPN College Football Encyclopedia: The Complete History of the Game


Michael MacCambridge - 2005
    On any given Saturday, in dozens of stadiums across America, you will find crowds in excess of 75,000 gathered to root on their teams. This book is their Bible???a rich and comprehensive reference guide to the game??'s history, tradition and lore. Based on three years of research by the nation??'s foremost football experts, the book features: ???? ???? ??Capsule histories for each of the 119 Division 1-A programs, the Ivy League schools and teams from the SWAC, MEAC and historically black colleges ??????????????Year-by-year schedules and records ??????????????Statistical leaders from every school ??????????????Fightsong lyrics ??????????????Box scores for every bowl game ever played ??????????????4-color insert illustrating the evolution of each school??'s helmet design ??????????????Weekly polls dating back to 1936 ??????????????Essays by the game??'s top wordsmiths (Dan Jenkins, Beano Cook, Chris Fowler, Gene Wojciechowski) ??????????????Plus a lively round table discussion with ESPN??'s popular Game Day Team (Fowler, LeeCorso and Kirk Herbstreit) Packed with tables and charts and designed in an easy-to-read style, the updated ESPN College Football Encyclopedia will continue to dazzle even the most knowledgeable fan.

Ignition!: An informal history of liquid rocket propellants


John Drury Clark - 1972
    A favorite of Tesla and SpaceX founder Elon Musk, listeners will want to tune into this "really good book on rocket[s]," available for the first time in audio. Ignition! is the story of the search for a rocket propellant which could be trusted to take man into space. This search was a hazardous enterprise carried out by rival labs who worked against the known laws of nature, with no guarantee of success or safety. Acclaimed scientist and sci-fi author John Drury Clark writes with irreverent and eyewitness immediacy about the development of the explosive fuels strong enough to negate the relentless restraints of gravity. The resulting volume is as much a memoir as a work of history, sharing a behind-the-scenes view of an enterprise that eventually took men to the moon, missiles to the planets, and satellites to outer space. A classic work in the history of science, listeners will want to get their hands on this influential classic, available for the first time in decades.

What Customers Crave: How to Create Relevant and Memorable Experiences at Every Touchpoint


Nicholas J. Webb - 2016
    How well do you know your customers What Customers Crave examines how the hyper-connected economy is radically changing consumer expectations, and reveals what companies need to do to stay on top. The solution rests on two simple questions: What do your customers love? What do they hate? Find the answers, and you’re well on your way to success.Jam-packed with tools and examples, What Customers Crave helps you reinvent how you engage with customers (both digitally and non-digitally) and:● Gain invaluable insights into who they are and what they care about● Use listening posts and Contact Point Innovation to refine customer types● Engineer experiences for each micromarket that are not only exceptional, but insanely relevant● Connect across the five most important touchpoints● Co-create with your customers● And much moreWhen you learn to provide your customers with exactly what they want, they not only buy—they come back again and again…and bring their friends.

Absolute C++


Walter J. Savitch - 2001
    Concepts and techniques are presented in a clear and concise style, giving readers the opportunity to master key topics.

The Mythical Man-Month: Essays on Software Engineering


Frederick P. Brooks Jr. - 1975
    With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 45 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.The added chapters contain (1) a crisp condensation of all the propositions asserted in the original book, including Brooks' central argument in The Mythical Man-Month: that large programming projects suffer management problems different from small ones due to the division of labor; that the conceptual integrity of the product is therefore critical; and that it is difficult but possible to achieve this unity; (2) Brooks' view of these propositions a generation later; (3) a reprint of his classic 1986 paper "No Silver Bullet"; and (4) today's thoughts on the 1986 assertion, "There will be no silver bullet within ten years."

Domain-Driven Design: Tackling Complexity in the Heart of Software


Eric Evans - 2003
    "His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric thinks that learning about your problem domain is as likely to happen at the end of your project as at the beginning, and so refactoring is a big part of his technique. "The book is a fun read. Eric has lots of interesting stories, and he has a way with words. I see this book as essential reading for software developers--it is a future classic." --Ralph Johnson, author of Design Patterns "If you don't think you are getting value from your investment in object-oriented programming, this book will tell you what you've forgotten to do. "Eric Evans convincingly argues for the importance of domain modeling as the central focus of development and provides a solid framework and set of techniques for accomplishing it. This is timeless wisdom, and will hold up long after the methodologies du jour have gone out of fashion." --Dave Collins, author of Designing Object-Oriented User Interfaces "Eric weaves real-world experience modeling--and building--business applications into a practical, useful book. Written from the perspective of a trusted practitioner, Eric's descriptions of ubiquitous language, the benefits of sharing models with users, object life-cycle management, logical and physical application structuring, and the process and results of deep refactoring are major contributions to our field." --Luke Hohmann, author of Beyond Software Architecture "This book belongs on the shelf of every thoughtful software developer." --Kent Beck "What Eric has managed to capture is a part of the design process that experienced object designers have always used, but that we have been singularly unsuccessful as a group in conveying to the rest of the industry. We've given away bits and pieces of this knowledge...but we've never organized and systematized the principles of building domain logic. This book is important." --Kyle Brown, author of Enterprise Java(TM) Programming with IBM(R) WebSphere(R) The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process. Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development. Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis--refactoring not just the code but the model underlying the code--in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include:Getting all team members to speak the same language Connecting model and implementation more deeply Sharpening key distinctions in a model Managing the lifecycle of a domain object Writing domain code that is safe to combine in elaborate ways Making complex code obvious and predictable Formulating a domain vision statement Distilling the core of a complex domain Digging out implicit concepts needed in the model Applying analysis patterns Relating design patterns to the model Maintaining model integrity in a large system Dealing with coexisting models on the same project Organizing systems with large-scale structures Recognizing and responding to modeling breakthroughs With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.

The Psychology of Computer Programming


Gerald M. Weinberg - 1971
    Weinberg adds new insights and highlights the similarities and differences between now and then. Using a conversational style that invites the reader to join him, Weinberg reunites with some of his most insightful writings on the human side of software engineering.Topics include egoless programming, intelligence, psychological measurement, personality factors, motivation, training, social problems on large projects, problem-solving ability, programming language design, team formation, the programming environment, and much more.Dorset House Publishing is proud to make this important text available to new generations of programmers -- and to encourage readers of the first edition to return to its valuable lessons.