Book picks similar to
No Silver Bullet Essence and Accidents of Software Engineering by Frederick P. Brooks Jr.
software-development
grad-school
software-engineering
ux-ui-book-club
Envisioning Information
Edward R. Tufte - 1990
The Whole Earth Review called Envisioning Information a "passionate, elegant revelation."
A Byte of Python
Swaroop C.H. - 2004
An introduction to Python programming for beginners.
Software Architecture Patterns
Mark Richards - 2015
By describing the overall characteristics of the architecture, these patterns not only guide designers and developers on how to design components, but also determine the ways in which those components should interact.This O’Reilly report takes a deep dive into many common software architecture patterns. Each pattern includes a full explanation of how it works, explains the pattern’s benefits and considerations, and describes the circumstances and conditions it was designed to address. The report also includes an analysis and scorecard for each pattern based on several architecture and software development quality attributes.Patterns include: - Layered architecture - Event-driven architecture - Microkernel architecture - Microservices architecture - Space-based architectureIn addition to these specific patterns, you’ll also learn about the Architecture by Implication anti-pattern and the causes and effects of not using architecture patterns.Mark Richards is an experienced software architect with significant experience and expertise in application, integration, and enterprise architecture. Active in the software industry since 1983, he is the author/presenter of several O’Reilly books and videos, including Software Architecture Fundamentals; Enterprise Messaging, Java Message Service, 2nd Edition; and 97 Things Every Software Architect Should Know.
Digital Design and Computer Architecture
David Money Harris - 2007
Digital Design and Computer Architecture begins with a modern approach by rigorously covering the fundamentals of digital logic design and then introducing Hardware Description Languages (HDLs). Featuring examples of the two most widely-used HDLs, VHDL and Verilog, the first half of the text prepares the reader for what follows in the second: the design of a MIPS Processor. By the end of Digital Design and Computer Architecture, readers will be able to build their own microprocessor and will have a top-to-bottom understanding of how it works--even if they have no formal background in design or architecture beyond an introductory class. David Harris and Sarah Harris combine an engaging and humorous writing style with an updated and hands-on approach to digital design.Unique presentation of digital logic design from the perspective of computer architecture using a real instruction set, MIPS.Side-by-side examples of the two most prominent Hardware Design Languages--VHDL and Verilog--illustrate and compare the ways the each can be used in the design of digital systems.Worked examples conclude each section to enhance the reader's understanding and retention of the material.
The Principles of Object-Oriented JavaScript
Nicholas C. Zakas - 2012
It has no concept of classes, and you don't even need to define any objects in order to write code. But don't be fooled—JavaScript is an incredibly powerful and expressive object-oriented language that puts many design decisions right into your hands.In The Principles of Object-Oriented JavaScript, Nicholas C. Zakas thoroughly explores JavaScript's object-oriented nature, revealing the language's unique implementation of inheritance and other key characteristics. You'll learn: The difference between primitive and reference values What makes JavaScript functions so unique The various ways to create objects How to define your own constructors How to work with and understand prototypes Inheritance patterns for types and objects The Principles of Object-Oriented JavaScript will leave even experienced developers with a deeper understanding of JavaScript. Unlock the secrets behind how objects work in JavaScript so you can write clearer, more flexible, and more efficient code.
User Story Mapping: Discover the Whole Story, Build the Right Product
Jeff Patton - 2012
With this practical book, you'll explore the often-misunderstood practice of user story mapping, and learn how it can help keep your team stay focused on users and their experience throughout the development process.You and your team will learn that user stories aren't a way to write better specifications, but a way to organize and have better conversations. This book will help you understand what kinds of conversations you should be having, when to have them, and what to keep track of when you do. Learn the key concepts used to create a great story map. Understand how user stories really work, and how to make good use of them in agile and lean projects. Examine the nuts and bolts of managing stories through the development cycle. Use strategies that help you continue to learn before and after the product's release to customers and usersUser Story Mapping is ideal for agile and lean software development team members, product managers and UX practitioners in commercial product companies, and business analysts and project managers in IT organizations—whether you're new to this approach or want to understand more about it.
Modern Operating Systems
Andrew S. Tanenbaum - 1992
What makes an operating system modern? According to author Andrew Tanenbaum, it is the awareness of high-demand computer applications--primarily in the areas of multimedia, parallel and distributed computing, and security. The development of faster and more advanced hardware has driven progress in software, including enhancements to the operating system. It is one thing to run an old operating system on current hardware, and another to effectively leverage current hardware to best serve modern software applications. If you don't believe it, install Windows 3.0 on a modern PC and try surfing the Internet or burning a CD. Readers familiar with Tanenbaum's previous text, Operating Systems, know the author is a great proponent of simple design and hands-on experimentation. His earlier book came bundled with the source code for an operating system called Minux, a simple variant of Unix and the platform used by Linus Torvalds to develop Linux. Although this book does not come with any source code, he illustrates many of his points with code fragments (C, usually with Unix system calls). The first half of Modern Operating Systems focuses on traditional operating systems concepts: processes, deadlocks, memory management, I/O, and file systems. There is nothing groundbreaking in these early chapters, but all topics are well covered, each including sections on current research and a set of student problems. It is enlightening to read Tanenbaum's explanations of the design decisions made by past operating systems gurus, including his view that additional research on the problem of deadlocks is impractical except for "keeping otherwise unemployed graph theorists off the streets." It is the second half of the book that differentiates itself from older operating systems texts. Here, each chapter describes an element of what constitutes a modern operating system--awareness of multimedia applications, multiple processors, computer networks, and a high level of security. The chapter on multimedia functionality focuses on such features as handling massive files and providing video-on-demand. Included in the discussion on multiprocessor platforms are clustered computers and distributed computing. Finally, the importance of security is discussed--a lively enumeration of the scores of ways operating systems can be vulnerable to attack, from password security to computer viruses and Internet worms. Included at the end of the book are case studies of two popular operating systems: Unix/Linux and Windows 2000. There is a bias toward the Unix/Linux approach, not surprising given the author's experience and academic bent, but this bias does not detract from Tanenbaum's analysis. Both operating systems are dissected, describing how each implements processes, file systems, memory management, and other operating system fundamentals. Tanenbaum's mantra is simple, accessible operating system design. Given that modern operating systems have extensive features, he is forced to reconcile physical size with simplicity. Toward this end, he makes frequent references to the Frederick Brooks classic The Mythical Man-Month for wisdom on managing large, complex software development projects. He finds both Windows 2000 and Unix/Linux guilty of being too complicated--with a particular skewering of Windows 2000 and its "mammoth Win32 API." A primary culprit is the attempt to make operating systems more "user-friendly," which Tanenbaum views as an excuse for bloated code. The solution is to have smart people, the smallest possible team, and well-defined interactions between various operating systems components. Future operating system design will benefit if the advice in this book is taken to heart. --Pete Ostenson
The Scrum Field Guide: Practical Advice for Your First Year
Mitch Lacey - 2012
If you're one of them, The Scrum Field Guide will give you skills and confidence to adopt Scrum more rapidly, more successfully, and with far less pain and fear. Long-time Scrum practitioner Mitch Lacey identifies major challenges associated with early-stage Scrum adoption, as well as deeper issues that emerge after companies have adopted Scrum, and describes how other organizations have overcome them. You'll learn how to gain "quick wins" that build support, and then use the flexibility of Scrum to maximize value creation across the entire process. In 30 brief, engaging chapters, Lacey guides you through everything from defining roles to setting priorities to determining team velocity, choosing a sprint length, and conducting customer reviews. Along the way, he explains why Scrum can seem counterintuitive, offers a solid grounding in the core agile concepts that make it work, and shows where it can (and shouldn't) be modified. Coverage includes Getting teams on board, and bringing new team members aboard after you've started Creating a "definition of done" for the team and organization Implementing the strong technical practices that are indispensable for agile success Balancing predictability and adaptability in release planning Keeping defects in check Running productive daily standup meetings Keeping people engaged with pair programming Managing culture clashes on Scrum teams Performing "emergency procedures" to get sprints back on track Establishing a pace your team can truly sustain Accurately costing projects, and measuring the value they deliver Documenting Scrum projects effectively Prioritizing and estimating large backlogs Integrating outsourced and offshored components Packed with real-world examples from Lacey's own experience, this book is invaluable to everyone transitioning to agile: developers, architects, testers, managers, and project owners alike.
UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design
Jim Arlow - 2001
Even for people not working with the Unified Process, the book is still of great use. UML 2 and the Unified Process, Second Edition is a must-read for every UML 2 beginner and a helpful guide and reference for the experienced practitioner."--Roland Leibundgut, Technical Director, Zuehlke Engineering Ltd."This book is a good starting point for organizations and individuals who are adopting UP and need to understand how to provide visualization of the different aspects needed to satisfy it. "--Eric Naiburg, Market Manager, Desktop Products, IBM Rational SoftwareThis thoroughly revised edition provides an indispensable and practical guide to the complex process of object-oriented analysis and design using UML 2. It describes how the process of OO analysis and design fits into the software development lifecycle as defined by the Unified Process (UP). UML 2 and the Unified Process contains a wealth of practical, powerful, and useful techniques that you can apply immediately. As you progress through the text, you will learn OO analysis and design techniques, UML syntax and semantics, and the relevant aspects of the UP. The book provides you with an accurate and succinct summary of both UML and UP from the point of view of the OO analyst and designer.This book providesChapter roadmaps, detailed diagrams, and margin notes allowing you to focus on your needs Outline summaries for each chapter, making it ideal for revision, and a comprehensive index that can be used as a reference New to this edition:Completely revised and updated for UML 2 syntax Easy to understand explanations of the new UML 2 semantics More real-world examples A new section on the Object Constraint Language (OCL) Introductory material on the OMG's Model Driven Architecture (MDA) The accompanying website providesA complete example of a simple e-commerce system Open source tools for requirements engineering and use case modeling Industrial-strength UML course materials based on the book
Agile Project Management with Kanban
Eric Brechner - 2015
You open the box and right on top is a quick-start guide. Being a novice, you follow the guide, and quickly get up and running. As you become more experienced, the other box contents address common advanced issues you'd face, like right-sizing teams, estimation, hitting deadlines, transitioning from Scrum or Waterfall, deploying components and services, and using Kanban within larger organizations.Real-world experience from a direct practitioner working on Xbox and Xbox.comA concise, pragmatic, and easy-to-read guide with clear, fresh, and hard-won guidanceUsing Kanban within larger organizations - how to deal with upper management, planning, and dependencies
Refactoring: Ruby Edition, Adobe Reader
Jay Fields - 2009
What’s more, they can do it one step at a time, through a series of simple, proven steps. Now, there’s an authoritative and extensively updated version of Martin Fowler’s classic refactoring book that utilizes Ruby examples and idioms throughout–not code adapted from Java or any other environment.The authors introduce a detailed catalog of more than 70 proven Ruby refactorings, with specific guidance on when to apply each of them, step-by-step instructions for using them, and example code illustrating how they work. Many of the authors’ refactorings use powerful Ruby-specific features, and all code samples are available for download. Leveraging Fowler’s original concepts, the authors show how to perform refactoring in a controlled, efficient, incremental manner, so you methodically improve your code’s structure without introducing new bugs. Whatever your role in writing or maintaining Ruby code, this book will be an indispensable resource.This book will help you Understand the core principles of refactoring and the reasons for doing it Recognize “bad smells” in your Ruby code Rework bad designs into well-designed code, one step at a time Build tests to make sure your refactorings work properly Understand the challenges of refactoring and how they can be overcome Compose methods to package code properly Move features between objects to place responsibilities where they fit best Organize data to make it easier to work with Simplify conditional expressions and make more effective use of polymorphism Create interfaces that are easier to understand and use Generalize more effectively Perform larger refactorings that transform entire software systems and may take months or years Successfully refactor Ruby on Rails code
Mastering Regular Expressions
Jeffrey E.F. Friedl - 1997
They are now standard features in a wide range of languages and popular tools, including Perl, Python, Ruby, Java, VB.NET and C# (and any language using the .NET Framework), PHP, and MySQL.If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage. If you think you know all you need to know about regularexpressions, this book is a stunning eye-opener.As this book shows, a command of regular expressions is an invaluable skill. Regular expressions allow you to code complex and subtle text processing that you never imagined could be automated. Regular expressions can save you time and aggravation. They can be used to craft elegant solutions to a wide range of problems. Once you've mastered regular expressions, they'll become an invaluable part of your toolkit. You will wonder how you ever got by without them.Yet despite their wide availability, flexibility, and unparalleled power, regular expressions are frequently underutilized. Yet what is power in the hands of an expert can be fraught with peril for the unwary. Mastering Regular Expressions will help you navigate the minefield to becoming an expert and help you optimize your use of regular expressions.Mastering Regular Expressions, Third Edition, now includes a full chapter devoted to PHP and its powerful and expressive suite of regular expression functions, in addition to enhanced PHP coverage in the central "core" chapters. Furthermore, this edition has been updated throughout to reflect advances in other languages, including expanded in-depth coverage of Sun's java.util.regex package, which has emerged as the standard Java regex implementation.Topics include:A comparison of features among different versions of many languages and toolsHow the regular expression engine worksOptimization (major savings available here!)Matching just what you want, but not what you don't wantSections and chapters on individual languagesWritten in the lucid, entertaining tone that makes a complex, dry topic become crystal-clear to programmers, and sprinkled with solutions to complex real-world problems, Mastering Regular Expressions, Third Edition offers a wealth information that you can put to immediateuse.Reviews of this new edition and the second edition: "There isn't a better (or more useful) book available on regular expressions."--Zak Greant, Managing Director, eZ Systems"A real tour-de-force of a book which not only covers the mechanics of regexes in extraordinary detail but also talks about efficiency and the use of regexes in Perl, Java, and .NET...If you use regular expressions as part of your professional work (even if you already have a good book on whatever language you're programming in) I would strongly recommend this book to you."--Dr. Chris Brown, Linux Format"The author does an outstanding job leading the reader from regexnovice to master. The book is extremely easy to read and chock full ofuseful and relevant examples...Regular expressions are valuable toolsthat every developer should have in their toolbox. Mastering RegularExpressions is the definitive guide to the subject, and an outstandingresource that belongs on every programmer's bookshelf. Ten out of TenHorseshoes."--Jason Menard, Java Ranch
Business Law: Legal Environment, Online Commerce, Business Ethics, and International Issues
Henry R. Cheeseman - 1992
Visually engaging, enticing and current examples with an overall focus on business.Legal Environment of Business and E-Commerce; Torts, Crimes, and Intellectual Property; Contracts and E-Commerce; Domestic and International Sales and Lease Contracts; Negotiable Instruments and E-Money; Credit, Secured Transactions, and Bankruptcy; Agency and Employment; Business Organizations and Ethics; Government Regulation; Property; Special Topics; Global EnvironmentMARKET Business Law continues its dedication to being the most engaging text for readers by featuring a visually appealing format with enticing and current examples while maintaining its focus on business.
Leading Change in Your School: How to Conquer Myths, Build Commitment, and Get Results
Douglas B. Reeves - 2009
In Leading Change in Your School, distinguished author and researcher Douglas B. Reeves offers lessons learned through his work with educators in thousands of schools around the world and presents real-life examples of leaders who have met the challenge of change head-on--with impressive results for their schools and districts. Readers will also find practical resources for engaging their colleagues in change initiatives.Expanding on a number of his columns in the journal Educational Leadership, Reeves offers insights ad recommendations in four areas: * Creating conditions for change, including assessments to determine personal and organizational readiness for change; * Planning change, including cautionary notes about strategic planning; * Implementing change, including the importance of moving from rhetoric to day-to-day reality; and * Sustaining change, including the need to reorient priorities and values so that individual convenience gives way to a shared sense of the greater good.The change leaders--both teachers and administrators--whose stories Reeves tells come from varied districts, but they share a passion for creating schools that work for all students. They are, Reeves says, "people like you, sharing similar challenges but perhaps with different results."
Manage Your Project Portfolio
Johanna Rothman - 2008
But how much time you actually spend on your projects, and how much time do you spend responding to emergencies? This book will introduce you to different ways of ordering all of the projects you are working on now, and help you figure out how to staff those projects--even when you've run out of project teams to do the work. Once you learn to manage your portfolio better, you'll avoid emergency "firedrills." The trick is adopting lean and agile approaches to projects, whether they are software projects, projects that include hardware, or projects that depend on chunks of functionality from other suppliers. You may be accustomed to spending time in meetings where you still don't have the data you need to evaluate your projects. Here, with a few measures, you'll be able to quickly evaluate each project and come to a decision quickly. You'll learn how to define your team's, group's, or department's mission with none of the buzzwords that normally accompany a mission statement. Armed with the work and the mission, you can make those decisions that define the true leaders in the organization.