ISBN-10:
020161622X
ISBN-13:
9780201616224
Pub. Date:
11/03/1999
Publisher:
Addison-Wesley
The Pragmatic Programmer: From Journeyman to Master / Edition 1

The Pragmatic Programmer: From Journeyman to Master / Edition 1

by Andrew Hunt, David Thomas
Current price is , Original price is $49.99. You

Temporarily Out of Stock Online

Please check back later for updated availability.

Overview

What others in the trenches say about The Pragmatic Programmer...

“The cool thing about this book is that it’s great for keeping the programming process fresh. The book helps you to continue to grow and clearly comes from people who have been there.”

Kent Beck, author of Extreme Programming Explained: Embrace Change

“I found this book to be a great mix of solid advice and wonderful analogies!”

Martin Fowler, author of Refactoring and UML Distilled

“I would buy a copy, read it twice, then tell all my colleagues to run out and grab a copy. This is a book I would never loan because I would worry about it being lost.”

Kevin Ruland, Management Science, MSG-Logistics

“The wisdom and practical experience of the authors is obvious. The topics presented are relevant and useful.... By far its greatest strength for me has been the outstanding analogies—tracer bullets, broken windows, and the fabulous helicopter-based explanation of the need for orthogonality, especially in a crisis situation. I have little doubt that this book will eventually become an excellent source of useful information for journeymen programmers and expert mentors alike.”

John Lakos, author of Large-Scale C++ Software Design

“This is the sort of book I will buy a dozen copies of when it comes out so I can give it to my clients.”

Eric Vought, Software Engineer

“Most modern books on software development fail to cover the basics of what makes a great software developer, instead spending their time on syntax or technology where in reality the greatest leverage possible for any software team is in having talented developers who really know their craft well. An excellent book.”

Pete McBreen, Independent Consultant

“Since reading this book, I have implemented many of the practical suggestions and tips it contains. Across the board, they have saved my company time and money while helping me get my job done quicker! This should be a desktop reference for everyone who works with code for a living.”

Jared Richardson, Senior Software Developer, iRenaissance, Inc.

“I would like to see this issued to every new employee at my company....”

Chris Cleeland, Senior Software Engineer, Object Computing, Inc.

“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.


Product Details

ISBN-13: 9780201616224
Publisher: Addison-Wesley
Publication date: 11/03/1999
Edition description: New Edition
Pages: 352
Sales rank: 44,199
Product dimensions: 7.35(w) x 9.20(h) x 1.00(d)

About the Author

Andy Hunt is an avid woodworker and musician, but, curiously, he is more in demand as a consultant. He has worked in telecommunications, banking, financial services, and utilities, as well as in more exotic fields, such as medical imaging, graphic arts, and Internet services. Andy specializes in blending tried-and-true techniques with leading-edge technologies, creating novel—but practical—solutions. Andy owns his own consulting business in Raleigh, North Carolina.

Dave Thomas likes to fly single-engine airplanes and pays for his habit by finding elegant solutions to difficult problems, consulting in areas as diverse as aerospace, banking, financial services, telecommunications, travel and transport, and the Internet. Before moving to the United States in 1994, Dave founded an ISO9001-certified English software company that delivered sophisticated, custom software projects throughout the world. Dave is now an independent consultant based in Dallas, Texas.



020161622XAB04062001

Read an Excerpt

This book will help you become a better programmer.

It doesn't matter whether you are a lone developer, a member of a large project team, or a consultant working with many clients at once. This book will help you, as an individual, to do better work. This book isn't theoretical—-we concentrate on practical topics, on using your experience to make more informed decisions. The word pragmatic comes from the Latin pragmaticus—"skilled in business"—which itself is derived from a Greek word meaning "to do." This is a book about doing.

Programming is a craft. At its simplest, it comes down to getting a computer to do what you want it to do (or what your user wants it to do). As a programmer, you are part listener, part advisor, part interpreter, and part dictator. You try to capture elusive requirements and find a way of expressing them so that a mere machine can do them justice. You try to document your work so that others can understand it, and you try to engineer your work so that others can build on it. What's more, you try to do all this against the relentless ticking of the project clock. You work small miracles every day.

It's a difficult job.

There are many people offering you help. Tool vendors tout the miracles their products perform. Methodology gurus promise that their techniques guarantee results. Everyone claims that their programming language is the best, and every operating system is the answer to all conceivable ills.

Of course, none of this is true. There are no easy answers. There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances.

This is where pragmatism comes in. You shouldn't be wedded to any particular technology, but have a broad enough background and experience base to allow you to choose good solutions in particular situations. Your background stems from an understanding of the basic principles of computer science, and your experience comes from a wide range of practical projects. Theory and practice combine to make you strong.

You adjust your approach to suit the current circumstances and environment. You judge the relative importance of all the factors affecting a project and use your experience to produce appropriate solutions. And you do this continuously as the work progresses. Pragmatic Programmers get the job done, and do it well.

Who Should Read This Book?

This book is aimed at people who want to become more effective and more productive programmers. Perhaps you feel frustrated that you don't seem to be achieving your potential. Perhaps you look at colleagues who seem to be using tools to make themselves more productive than you. Maybe your current job uses older technologies, and you want to know how newer ideas can be applied to what you do.

We don't pretend to have all (or even most) of the answers, nor are all of our ideas applicable in all situations. All we can say is that if you follow our approach, you'll gain experience rapidly, your productivity will increase, and you'll have a better understanding of the entire development process. And you'll write better software.

What Makes a Pragmatic Programmer?

Each developer is unique, with individual strengths and weaknesses, preferences and dislikes. Over time, each will craft his or her own personal environment. That environment will reflect the programmer's individuality just as forcefully as his or her hobbies, clothing, or haircut. However, if you're a Pragmatic Programmer, you'll share many of the following characteristics:

  • Early adopter/fast adapter. You have an instinct for technologies and techniques, and you love trying things out. When given something new, you can grasp it quickly and integrate it with the rest of your knowledge. Your confidence is born of experience.
  • Inquisitive. You tend to ask questions. That's neat—-how did you do that? Did you have problems with that library? What's this BeOS I've heard about? How are symbolic links implemented? You are a pack rat for little facts, each of which may affect some decision years from now.
  • Critical thinker. You rarely take things as given without first getting the facts. When colleagues say "because that's the way it's done," or a vendor promises the solution to all your problems, you smell a challenge.
  • Realistic. You try to understand the underlying nature of each problem you face. This realism gives you a good feel for how difficult things are, and how long things will take. Understanding for yourself that a process should be difficult or will take a while to complete gives you the stamina to keep at it.
  • Jack of all trades. You try hard to be familiar with a broad range of technologies and environments, and you work to keep abreast of new developments. Although your current job may require you to be a specialist, you will always be able to move on to new areas and new challenges.

We've left the most basic characteristics until last. All Pragmatic Programmers share them. They're basic enough to state as tips:

Care About Your Craft

We feel that there is no point in developing software unless you care about doing it well.

Think! About Your Work

In order to be a Pragmatic Programmer, we're challenging you to think about what you're doing while you're doing it. This isn't a one-time audit of current practices—-it's an ongoing critical appraisal of every decision you make, every day, and on every development. Never run on auto-pilot. Constantly be thinking, critiquing your work in real time. The old IBM corporate motto, THINK!, is the Pragmatic Programmer's mantra.

If this sounds like hard work to you, then you're exhibiting the realistic characteristic. This is going to take up some of your valuable time—-time that is probably already under tremendous pressure. The reward is a more active involvement with a job you love, a feeling of mastery over an increasing range of subjects, and pleasure in a feeling of continuous improvement. Over the long term, your time investment will be repaid as you and your team become more efficient, write code that's easier to maintain, and spend less time in meetings.

Individual Pragmatists, Large Teams

Some people feel that there is no room for individuality on large teams or complex projects. "Software construction is an engineering discipline," they say, "that breaks down if individual team members make decisions for themselves."

We disagree.

The construction of software should be an engineering discipline. However, this doesn't preclude individual craftsmanship. Think about the large cathedrals built in Europe during the Middle Ages. Each took thousands of person-years of effort, spread over many decades. Lessons learned were passed down to the next set of builders, who advanced the state of structural engineering with their accomplishments. But the carpenters, stonecutters, carvers, and glass workers were all craftspeople, interpreting the engineering requirements to produce a whole that transcended the purely mechanical side of the construction. It was their belief in their individual contributions that sustained the projects:

We who cut mere stones must always be envisioning cathedrals.
—- Quarry worker's creed

Within the overall structure of a project there is always room for individuality and craftsmanship. This is particularly true given the current state of software engineering. One hundred years from now, our engineering may seem as archaic as the techniques used by medieval cathedral builders seem to today's civil engineers, while our craftsmanship will still be honored.

It's a Continuous Process

A tourist visiting England's Eton College asked the gardener how he got the lawns so perfect. "That's easy," he replied, "You just brush off the dew every morning, mow them every other day, and roll them once a week."

"Is that all?" asked the tourist.

"Absolutely," replied the gardener. "Do that for 500 years and you'll have a nice lawn, too."

Great lawns need small amounts of daily care, and so do great programmers. Management consultants like to drop the word kaizen in conversations. "Kaizen" is a Japanese term that captures the concept of continuously making many small improvements. It was considered to be one of the main reasons for the dramatic gains in productivity and quality in Japanese manufacturing and was widely copied throughout the world. Kaizen applies to individuals, too. Every day, work to refine the skills you have and to add new tools to your repertoire. Unlike the Eton lawns, you'll start seeing results in a matter of days. Over the years, you'll be amazed at how your experience has blossomed and your skills have grown.

How the Book Is Organized

This book is written as a collection of short sections. Each section is self-contained, and addresses a particular topic. You'll find numerous cross references, which help put each topic in context. Feel free to read the sections in any order—-this isn't a book you need to read front-to-back.

Occasionally you'll come across a box labeled Tip nn (such as Tip 1, "Care About Your Craft" on xix). As well as emphasizing points in the text, we feel the tips have a life of their own—-we live by them daily. You'll find a summary of all the tips on a pull-out card inside the back cover.

Appendix A contains a set of resources: the book's bibliography, a list of URLs to Web resources, and a list of recommended periodicals, books, and professional organizations. Throughout the book you'll find references to the bibliography and to the list of URLs.

We've included exercises and challenges where appropriate. Exercises normally have relatively straightforward answers, while the challenges are more open-ended. To give you an idea of our thinking, we've included our answers to the exercises in Appendix B, but very few have a single correct solution. The challenges might form the basis of group discussions or essay work in advanced programming courses.

Table of Contents

Foreword.


Preface.


1. A Pragmatic Philosophy.

The Cat Ate My Source Code.

Software Entropy.

Stone Soup and Boiled Frogs.

Good-Enough Software.

Your Knowledge Portfolio.

Communicate!



2. A Pragmatic Approach.

The Evils of Duplication.

Orthogonality.

Reversibility.

Tracer Bullets.

Prototypes and Post-it Notes.

Domain Languages.

Estimating.



3. The Basic Tools.

The Power of Plain Text.

Shell Games.

Power Editing.

Source Code Control.

Debugging.

Text Manipulation.

Code Generators.



4. Pragmatic Paranoia.

Design by Contract.

Dead Programs Tell No Lies.

Assertive Programming.

When to Use Exceptions.

How to Balance Resources.



5. Bend, or Break.

Decoupling and the Law of Demeter.

Metaprogramming.

Temporal Coupling.

It's Just a View.

Blackboards.



6. While You Are Coding.

Programming by Coincidence.

Algorithm Speed.

Refactoring.

Code That's Easy to Test.

Evil Wizards.



7. Before the Project.

The Requirements Pit.

Solving Impossible Puzzles.

Not Until You're Ready.

The Specification Trap.

Circles and Arrows.



8. Pragmatic Projects.

Pragmatic Teams.

Ubiquitous Automation.

Ruthless Testing.

It's All Writing.

Great Expectations.

Pride and Prejudice.



Appendices.


A Resources.

Professional Societies.

Building a Library.

Internet Resources.

Bibliography.



B Answers to Exercises.


Index. 020161622XT04062001

Preface

This book will help you become a better programmer.

It doesn't matter whether you are a lone developer, a member of a large project team, or a consultant working with many clients at once. This book will help you, as an individual, to do better work. This book isn't theoretical—-we concentrate on practical topics, on using your experience to make more informed decisions. The word pragmatic comes from the Latin pragmaticus—'skilled in business'—which itself is derived from a Greek word meaning 'to do.' This is a book about doing.

Programming is a craft. At its simplest, it comes down to getting a computer to do what you want it to do (or what your user wants it to do). As a programmer, you are part listener, part advisor, part interpreter, and part dictator. You try to capture elusive requirements and find a way of expressing them so that a mere machine can do them justice. You try to document your work so that others can understand it, and you try to engineer your work so that others can build on it. What's more, you try to do all this against the relentless ticking of the project clock. You work small miracles every day.

It's a difficult job.

There are many people offering you help. Tool vendors tout the miracles their products perform. Methodology gurus promise that their techniques guarantee results. Everyone claims that their programming language is the best, and every operating system is the answer to all conceivable ills.

Of course, none of this is true. There are no easy answers. There is no such thing as a best solution, be it a tool, a language, or an operating system. There can only be systems that are more appropriate in a particular set of circumstances.

This is where pragmatism comes in. You shouldn't be wedded to any particular technology, but have a broad enough background and experience base to allow you to choose good solutions in particular situations. Your background stems from an understanding of the basic principles of computer science, and your experience comes from a wide range of practical projects. Theory and practice combine to make you strong.

You adjust your approach to suit the current circumstances and environment. You judge the relative importance of all the factors affecting a project and use your experience to produce appropriate solutions. And you do this continuously as the work progresses. Pragmatic Programmers get the job done, and do it well.

Who Should Read This Book?

This book is aimed at people who want to become more effective and more productive programmers. Perhaps you feel frustrated that you don't seem to be achieving your potential. Perhaps you look at colleagues who seem to be using tools to make themselves more productive than you. Maybe your current job uses older technologies, and you want to know how newer ideas can be applied to what you do.

We don't pretend to have all (or even most) of the answers, nor are all of our ideas applicable in all situations. All we can say is that if you follow our approach, you'll gain experience rapidly, your productivity will increase, and you'll have a better understanding of the entire development process. And you'll write better software.

What Makes a Pragmatic Programmer?

Each developer is unique, with individual strengths and weaknesses, preferences and dislikes. Over time, each will craft his or her own personal environment. That environment will reflect the programmer's individuality just as forcefully as his or her hobbies, clothing, or haircut. However, if you're a Pragmatic Programmer, you'll share many of the following characteristics:

  • Early adopter/fast adapter. You have an instinct for technologies and techniques, and you love trying things out. When given something new, you can grasp it quickly and integrate it with the rest of your knowledge. Your confidence is born of experience.
  • Inquisitive. You tend to ask questions. That's neat—-how did you do that? Did you have problems with that library? What's this BeOS I've heard about? How are symbolic links implemented? You are a pack rat for little facts, each of which may affect some decision years from now.
  • Critical thinker. You rarely take things as given without first getting the facts. When colleagues say 'because that's the way it's done,' or a vendor promises the solution to all your problems, you smell a challenge.
  • Realistic. You try to understand the underlying nature of each problem you face. This realism gives you a good feel for how difficult things are, and how long things will take. Understanding for yourself that a process should be difficult or will take a while to complete gives you the stamina to keep at it.
  • Jack of all trades. You try hard to be familiar with a broad range of technologies and environments, and you work to keep abreast of new developments. Although your current job may require you to be a specialist, you will always be able to move on to new areas and new challenges.

We've left the most basic characteristics until last. All Pragmatic Programmers share them. They're basic enough to state as tips:

Care About Your Craft

We feel that there is no point in developing software unless you care about doing it well.

Think! About Your Work

In order to be a Pragmatic Programmer, we're challenging you to think about what you're doing while you're doing it. This isn't a one-time audit of current practices—-it's an ongoing critical appraisal of every decision you make, every day, and on every development. Never run on auto-pilot. Constantly be thinking, critiquing your work in real time. The old IBM corporate motto, THINK!, is the Pragmatic Programmer's mantra.

If this sounds like hard work to you, then you're exhibiting the realistic characteristic. This is going to take up some of your valuable time—-time that is probably already under tremendous pressure. The reward is a more active involvement with a job you love, a feeling of mastery over an increasing range of subjects, and pleasure in a feeling of continuous improvement. Over the long term, your time investment will be repaid as you and your team become more efficient, write code that's easier to maintain, and spend less time in meetings.

Individual Pragmatists, Large Teams

Some people feel that there is no room for individuality on large teams or complex projects. 'Software construction is an engineering discipline,' they say, 'that breaks down if individual team members make decisions for themselves.'

We disagree.

The construction of software should be an engineering discipline. However, this doesn't preclude individual craftsmanship. Think about the large cathedrals built in Europe during the Middle Ages. Each took thousands of person-years of effort, spread over many decades. Lessons learned were passed down to the next set of builders, who advanced the state of structural engineering with their accomplishments. But the carpenters, stonecutters, carvers, and glass workers were all craftspeople, interpreting the engineering requirements to produce a whole that transcended the purely mechanical side of the construction. It was their belief in their individual contributions that sustained the projects:

We who cut mere stones must always be envisioning cathedrals.
—- Quarry worker's creed

Within the overall structure of a project there is always room for individuality and craftsmanship. This is particularly true given the current state of software engineering. One hundred years from now, our engineering may seem as archaic as the techniques used by medieval cathedral builders seem to today's civil engineers, while our craftsmanship will still be honored.

It's a Continuous Process

A tourist visiting England's Eton College asked the gardener how he got the lawns so perfect. 'That's easy,' he replied, 'You just brush off the dew every morning, mow them every other day, and roll them once a week.'

'Is that all?' asked the tourist.

'Absolutely,' replied the gardener. 'Do that for 500 years and you'll have a nice lawn, too.'

Great lawns need small amounts of daily care, and so do great programmers. Management consultants like to drop the word kaizen in conversations. 'Kaizen' is a Japanese term that captures the concept of continuously making many small improvements. It was considered to be one of the main reasons for the dramatic gains in productivity and quality in Japanese manufacturing and was widely copied throughout the world. Kaizen applies to individuals, too. Every day, work to refine the skills you have and to add new tools to your repertoire. Unlike the Eton lawns, you'll start seeing results in a matter of days. Over the years, you'll be amazed at how your experience has blossomed and your skills have grown.

How the Book Is Organized

This book is written as a collection of short sections. Each section is self-contained, and addresses a particular topic. You'll find numerous cross references, which help put each topic in context. Feel free to read the sections in any order—-this isn't a book you need to read front-to-back.

Occasionally you'll come across a box labeled Tip nn (such as Tip 1, 'Care About Your Craft' on xix). As well as emphasizing points in the text, we feel the tips have a life of their own—-we live by them daily. You'll find a summary of all the tips on a pull-out card inside the back cover.

Appendix A contains a set of resources: the book's bibliography, a list of URLs to Web resources, and a list of recommended periodicals, books, and professional organizations. Throughout the book you'll find references to the bibliography and to the list of URLs.

We've included exercises and challenges where appropriate. Exercises normally have relatively straightforward answers, while the challenges are more open-ended. To give you an idea of our thinking, we've included our answers to the exercises in Appendix B, but very few have a single correct solution. The challenges might form the basis of group discussions or essay work in advanced programming courses.



Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews

Pragmatic Programmer 4.7 out of 5 based on 0 ratings. 19 reviews.
Guest More than 1 year ago
My programming 'esteem' was pretty low, I was disjointed and trying to learn 5 different technologies at once, trying to get up to speed with a new job. This book help me settle down and attack my 'knowledge base portfolio' and get me back on the right track. All new or disallusioned programmers should read this book. VERY easy to read, the authors mention in the book that the chapters aren't necessarily ordered, so you get a look at a bunch of great topics.
pmerriam on LibraryThing More than 1 year ago
An excellent handbook. Useful for everyone who wants to build high quality software.
Murdocke23 on LibraryThing More than 1 year ago
One of the first books I read when getting more seriously into coding. First read was a bit over my head, but I grasped some of the concepts. After reading other books and doing more work, the next read a few months later was clearer and I found myself nodding more often. I think it's a book I'll keep returning to as long as I'm programming. Some of the tips it has apply to other aspects of work (and life), not just coding.
alecclews on LibraryThing More than 1 year ago
Excellent book -- provides suggestions and guidance. You will need to apply some thought and sense to apply
Wprecht on LibraryThing More than 1 year ago
The Pragmatic Programmer is a language and technology agnostic look at the craft of production programming. It covers all of the things you don't find in the typical technology specific book: How to write flexibly, maintainable code, source management, basic architectural techniques, career management. Basically, the stuff you need to know to be a successful "master" programmer. In some sense, if this book appeals to you, it's too late. You probably do a lot of what's contained in the book. It's still a fun and fast read though and you may pickup a few things here or there. This book is really aimed at the new professional programmer, maybe right out of college or with only a few years of experience. A lot of these guys won't be looking for a book like this, so it's up to us, the veterans, to point the way. As I said, it's mostly review for successful programmers, but it's still worthwhile to review the basics from time to time to make sure we don't stray from the path. The book is almost devoid of code, and that's OK. There are problems and exercises at the end of each of the brief chapters and there is a pull out card of the "pragmatic tips". Frankly, I find it hard enough to find time to read even an "easy" book like this, I just don't have time to work through the problems. However, I think this would make an excellent textbook for a course on the programming craft. This isn't something that is much offered at universities. They tend to focus either on vocational training (specific languages and techniques) or theoretical computer science. Almost no one I have hired out of college has the slightest idea of practical debugging techniques, source code management, team practices, etc. This book would be invaluable to them. Now, I would like to say a bit about the production of the book and the publisher. They self-publish. Yet, it's not a cheesy, vanity, print-on-demand type of thing. It's a real publishing house. But it's run by technically literate people and they produce books like it's software. That means a fast turnaround time, faster editing and quicker to market. Their theory is the faster they can produce the book the longer it will be a valuable resource. For those with the urge to write, they also offer a 50% post-cost royalty (versus the industry standard 10%). They really do print the books and they distribute them through a deal with O'Rielly, so you can find them in Borders, Barnes and Nobles, etc. But, you can also buy them direct off their website in either PDF or print or both. That's really cool. Bookshelf space being what it is, you rarely seem to have the book you want handy. It's either at home and you are at work or something like that. Even if it is to hand, it's often that it would be a heck of a lot faster to search the electronic version than thumb through the book (especially if you are like me and are easily distracted and end up reading or reading other stuff while you are there). Also, the PDF has no DRM, so you can print it out as well. For the record, I bought the printed version somewhere (I would guess Amazon, but maybe Borders).
celephicus on LibraryThing More than 1 year ago
This book turned me into a professional programmer. Of course I had to work at it, but this book showed me the way. So I owe it a great debt. Like Extreme Programming, none of the techniques are new, they just work very well together. The book is short, some of the tips are strange (tracer bullets?), but most are exquisite, like Broken Windows (an abandoned house will be quickly vandalised if one broken window is not fixed immediately). Often compared to McConnell's [Code Complete], but this book is much broader, and barely touches on actual code or languages. The authors do prefer more dynamic languages, which is why they are now the Ruby champions, but they recognise that most programmers use more mainstream languages.I still follow much of their advice, like investing in my knowledge portfolio, taking time to learn New Stuff. The month I spent learning FORTH is chalked up to experience, and I will probably never get to use my inside knowledge of the Z39.50 protocol (which is how Library Thing talks to library catalogues worldwide), but I tried Python and I now use it every day. Some investments pay big dividends!Thank you, Pragmatic Programmers!
lorin on LibraryThing More than 1 year ago
This book is a collection of helpful hints and advice for software developers. It's a relatively short, pithy book, targeted at a similar audience to McConnell's Code Complete book.
Anonymous More than 1 year ago
Good advise, but a bit repetitive. Orthogonality of the tips would improve it.
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Anonymous More than 1 year ago
Guest More than 1 year ago
I am a junior programmer, and I found the ideas in this book to be very helpfull. Teaches you how to improve on your toolkit, and master the language of your choice with key points on what to do and not to do. Save yourself hours of trial and error in your career, BUY THIS BOOK!!!
Guest More than 1 year ago
I loved this book. And the programming set-up they have on their page is great. I would recommend this to all my friends. In fact, I have. I'm still in college but it has helped reduce the time I spend on projects, and has made my group projects run more smothly. I lvoe it.