Home > Books that changed a programmer's life | |
![]() |
After the Gold Rush: Creating a True Profession of Software Engineering (Best Practices) (Paperback) by Steve C McConnell In this newest addition to Microsoft Press's acclaimed BEST PRACTICES series, award-winning author Steve McConnell offers candid reflections upon and a look ahead at the software engineering profession from one of the industry's most highly regarded practitioners. AFTER THE GOLD RUSH is a collection of illuminating original essays on contemporary software development topics that highlight critical trends and call for a more rigorous and standards-based profession. McConnell delivers a lively and provocative narrative that aims to help software developers step back from the day-to-day rush of their work and think about where their careers-and the industry they're helping to shape-are going. |
|
![]() |
The Pragmatic Programmer: From Journeyman to Master (Paperback) by Andrew Hunt, David Thomas If I'm putting together a project, it's the authors of this book that I want. . . . And failing that I'd settle for people who've read their book." -- Ward Cunningham Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you'll learn how to Fight software rot; Avoid the trap of duplicating knowledge; Write flexible, dynamic, and adaptable code; Avoid programming by coincidence; Bullet-proof your code with contracts, assertions, and exceptions; Capture real requirements; Test ruthlessly and effectively; Delight your users; Build teams of pragmatic programmers; and Make your developments more precise with automation. Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether you're a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you'll quickly see improvements in personal productivity, accuracy, and job satisfaction. You'll learn skills and develop habits and attitudes that form the foundation for long-term success in your career. You'll become a Pragmatic Programmer. |
|
![]() |
The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition (Paperback) by Frederick P. Brooks Anniversary edition includes four new chapters. Author offers insight for anyone managing complex projects in software engineering. Paper. DLC: Software engineering. |
|
![]() |
Peopleware : Productive Projects and Teams, 2nd Ed. (Paperback) by Tom Demarco, Timothy Lister Demarco and Lister demonstrate that the major issues of software development are human, not technical. Their answers aren't easy--just incredibly successful. New second edition features eight all-new chapters. Softcover. Previous edition: c1987. DLC: Management. |
|
![]() |
UML for Java Programmers (Paperback) by Robert C. Martin It was 1991 when I got my first copy of Booch's classic Object Oriented Design with Applications (first edition). I had learned several OO languages by then, including C++ and Smalltalk. I was absolutely thrilled by the concept of Booch's notation. Those clouds! Those relationships! The message passing diagrams! As a software designer it was just what I needed! I also needed a tool to draw the diagrams. So I started writing a CASE tool in Think-C for the Macintosh. I remember spending a lot of time getting the cloud icon to look just right. Though I never finished that CASE tool, one artifact of it remains. The cloud icon I created has followed me from computer to computer, from Macintosh to Windows, and has been the source of all the cloud icons I have ever drawn in any book or article. I remember the incredible day that my office partner, Billy Vogel, was talking on the phone to a head-hunter. He looked over at me and said: "Uncle Bob, I think you should take this call." The recruiter was looking for consultants to work at Rational, with Grady Booch, on a CASE tool to draw Booch Diagrams! How could such luck drop right into my lap? A dozen years have passed. I still have my original copy of Booch's book. It's a bit frayed and dog-eared, but the book still has the power to evoke echoes of the same old thrills. Today, of course, we use UML -- the one-third offspring of Booch's notation. UML is a powerful and comprehensive notation, far grander in its sweep and scope than Booch's was. Whereas Booch's notation was good for drawing pictures of software, UML is apparently good for creating models of just about anything you can imagine -- or so say some of its pundits. As grand and all-encompassing as UML may be, I find that a reasonable subset is all I need for drawing pictures of software. The same kind of pictures I used to create with Booch's notation.This book is about that subset, and about those pictures. This book takes the vast richness of UML 2.0 and boils it down to the essence that every programmer needs in order to draw pictures of his, or her, software designs. This book reduces the panoply of UML widgets, icons, diagrams, relationships, and arrowheads, into a simple suite of tools that Java programmers can use to record their design decisions. Make no mistake about it. This book will not teach you everything about UML. But if you are a Java programmer, it will teach you what you need to know. |
|
![]() |
Agile Software Development, Principles, Patterns, and Practices (Hardcover) by Robert C. Martin Best selling author and world-renowned software development expert Robert C. Martin shows how to solve the most challenging problems facing software developers, project managers, and software project leaders today. This comprehensive, pragmatic tutorial on Agile Development and eXtreme programming, written by one of the founding father of Agile Development: - Teaches software developers and project managers how to get projects done on time, and on budget using the power of Agile Development. - Uses real-world case studies to show how to of plan, test, refactor, and pair program using eXtreme programming. - Contains a wealth of reusable C++ and Java code. - Focuses on solving customer oriented systems problems using UML and Design Patterns. |
|
![]() |
Vi iMproved (VIM) (Paperback) by Steve Oualline Real Linux users don't use GUIs. No matter how popular, slick and sophisticated the interfaces become for Linux and UNIX, you'll always need to be able to navigate in a text editor. The vi editor is the original standard UNIX full screen editor. It's been around almost since UNIX began and it has changed very little. To get around the limitations of vi the people at Bram Moolenaar created the vim editor (the name stand for VI iMproved). It contains many more features than the old vi editor including: help, multiple windows, syntax highlighting, programmer support, and HTML support. All of the books published to date focus on vi alone not the expanded vim shipping with every major Linux distribution. In true New Riders' form, the vim reference will be a definitive, concise reference for the professional Linux user and developer. This tutorial takes a task oriented approach allowing you to learn only the commands that make your job easier. |
|
![]() |
People Styles at Work: Making Bad Relationships Good and Good Relationships Better (Paperback) by Robert Bolton, Dorothy Grover Bolton |
|
![]() |
Streamlined Object Modeling: Patterns, Rules, and Implementation (Paperback) by Jill Nicola, Mark Mayfield, Mike Abney, Michael Abney |
|
![]() |
Effective XML: 50 Specific Ways to Improve Your XML (Paperback) by Elliotte Rusty Harold Learning the fundamentals of XML might take a programmer a week. Learning how to use XML effectively might take a lifetime. While many books have been written that teach developers how to use the basic syntax of XML, this is the first one that really focuses on how to use XML well. This book is not a tutorial. It is not going to teach you what a tag is or how to write a DTD. I assume you know these things. Instead it's going to tell you when, why, where, and how to use such tools effectively (and perhaps equally importantly when not to use them). This book derives directly from my own experiences teaching and writing about XML. Over the last five years. I've written several books and taught numerous introductory courses about XML syntax, APIs, and tools. Increasingly I'm finding that audiences are already familiar with the basics of XML. They know what a tag is, how to validate a document against a DTD, and how to transform a document with an XSLT style sheet. The question of what XML is and why to use it has been sufficiently well evangelized. The essential syntax and rules are reasonably well understood. However, although most developers know what a CDATA section is, they are not sure what to use one for. Although programmers know how to add attribute and child nodes to elements, they are not certain which one to use when. Since XML has become a fundamental underpinning of new software systems, it becomes important to begin asking new questions, not just what XML is, but how does one use it effectively? Which techniques work and which don't? Perhaps most importantly, which techniques appear to work at first but fail to scale as systems are further developed? When I teach programming at my university, one of the first things I tell my students is that it is not enough to write programs that compile and produce the expected results. It is as important (perhaps more important) to write code that is extensible, legible, and maintainable. XML can be used to produce robust, extensible, maintainable, comprehensible systems or it can be used to create masses of unmaintainable, illegible, fragile, closed code. |
|
![]() |
Effective Java Programming Language Guide (Paperback) by Joshua Bloch Editorial Reviews Amazon.com Written for the working Java developer, Joshua Bloch's Effective Java Programming Language Guide provides a truly useful set of over 50 best practices and tips for writing better Java code. With plenty of advice from an indisputable expert in the field, this title is sure to be an indispensable resource for anyone who wants to get more out of their code. As a veteran developer at Sun, the author shares his considerable insight into the design choices made over the years in Sun's own Java libraries (which the author acknowledges haven't always been perfect). Based on his experience working with Sun's best minds, the author provides a compilation of 57 tips for better Java code organized by category. Many of these ideas will let you write more robust classes that better cooperate with built-in Java APIs. Many of the tips make use of software patterns and demonstrate an up-to-the-minute sense of what works best in today's design. Each tip is clearly introduced and explained with code snippets used to demonstrate each programming principle. Early sections on creating and destroying objects show you ways to make better use of resources, including how to avoid duplicate objects. Next comes an absolutely indispensable guide to implementing "required" methods for custom classes. This material will help you write new classes that cooperate with old ones (with advice on implementing essential requirements like the equals() and hashCode() methods). The author has a lot to say about class design, whether using inheritance or composition. Tips on designing methods show you how to create understandable, maintainable, and robust classes that can be easily reused by others on your team. Sections on mapping C code (like structures, unions, and enumerated types) onto Java will help C programmers bring their existing skills to Sun's new language. Later sections delve into some general programming tips, like using exceptions effectively. The book closes with advice on using threads and synchronization techniques, plus some worthwhile advice on object serialization. Whatever your level of Java knowledge, this title can make you a more effective programmer. Wisely written, yet never pompous or doctrinaire, the author has succeeded in packaging some really valuable nuggets of advice into a concise and very accessible guidebook that arguably deserves a place on most any developer's bookshelf. --Richard Dragan |
|
![]() |
Fearless Change: Patterns for Introducing New Ideas (Hardcover) by Mary Lynn Manns, Linda Rising ...there is nothing more difficult to carry out, nor more doubtful of success, nor more dangerous to handle, than to initiate a new order of things. For the reformer has enemies in all those who profit by the old order, and only lukewarm defenders in all those who would profit by the new order, this lukewarmness arising partly from fear of their adversaries...and partly from the incredulity of mankind, who do not truly believe in anything new until they have had actual experience of it. —Niccolo Machiavelli, The Prince You miss one hundred percent of the shots you never take. —Wayne Gretzky, Hall of Fame hockey player Since you picked up this book, we assume that you've tried to introduce something new into your organization. Maybe you were successful or maybe you were not completely happy with the result. Change is hard. Wouldn't it be wonderful if all the people, just like you, those "powerless leaders," who have had some success in their attempts to introduce a new idea, could sit down with you and share their secrets? This book will provide the next best thing. We've gathered strategies from those successful people so you can take advantage of their experience. |
|