THE PSYCHOLOGY OF COMPUTER PROGRAMMING PDF
Long regarded as one of the first books to pioneer a people-oriented approach to computing, The Psychol- ogy of Computer Programming endures. Long regarded as one of the first books to pioneer a people-oriented approach to computing, The Psychology of Computer Programming. Editorial Reviews. Review. I recently reread parts of The Psychology of Computer Programming that seemed very radical to me when I first read them in
|Language:||English, Spanish, French|
|ePub File Size:||28.81 MB|
|PDF File Size:||10.43 MB|
|Distribution:||Free* [*Regsitration Required]|
The Psychology of Programming in the. Large: Team and Organizational. Behaviour. Bill Curtis' and Diane Walzº. 1 Microelectronics and Computer Technology. The Psychology Of Computer Programming by Gerald Weinberg ( VanNostrandReinhold ).pdf - Ebook download as PDF File .pdf), Text File . txt) or read. The Psychology of Computer Programming book. Read 48 reviews from the world's largest community for readers. This landmark classic is reprinted with.
If a manager wants to run a stable project, he would do well to follow this simple maxim: If a programmer is indispensable, get rid of him as quickly as possible. It is a well-known psychological principle that in order to maximize the rate of learning, the subject must be fed back information on how well or poorly he is doing. What is perhaps not so well known is that people who feel that their performance is being judged but who have no adequate information on how well they are doing will test the system by trying certain variations.
PDF - The Psychology of Computer Programming
The hierarchical organization, which so many of our projects seem to emulate, comes to us not from the observation of successful machines or natural systems, but from the nineteenth century successes of the Austrian Army. Whenever a supervisor is responsible for work he does not understand, he begins to reward workers not for work, but for the appearance of work. Programmers who arrive early in the morning are thought to be better programmers than ones who are seen to arrive after official starting time.
Programmers who work late, however, may not be rewarded because the manager is not likely to see that they are working late. Programmers who are seen taking to there are not considered to be working, because the manager has an image that programming work involves the solitary thinker scratching out secret messages to the computer. The amateur, then, is learning about his problem , and any learning about programming he does may be a nice frill or may be a nasty impediment for him.
The professional, conversely, is learned about his profession --programming--and the problem being programmed is only one incidental step in the process of his development. A large proportion of the variance between programmers on any job can be attributed to a different conception of what is to be done.
Lacking any objective measure, we often judge how difficult a problem is by how hard a programmer works on it. Using this sort of measure, we can easily fall into believing that the worst programmers are the best--because they work so hard at it. Once the solution has been shown, it is easy to forget the puzzlement that existed before it was solved. For one thing, one of the most common reasons for problem difficulty is overlooking of some factor.
Once we have discovered or been told this factor is significant, working out the solution is trivial. If we present the problem to someone else, we will usually present him with that factor, which immediately solves nine-tenths of the problem for him. He cannot imagine why we had such trouble, and soon we begin to wonder ourselves. The explanations for success given by some programmers bring to mind the story of the village idiot who won the monthly lottery.
When asked to explain how he picked the winning number, he said, "Well, my lucky number is seven, and this was be seventh lottery this year, so I multiplied seven times seven and got the winning number And, when someone tried to tell him that seven times seven was forty-nine, he merely answered with disdain, "Oh, you're just jealous"--which, of course, was true.
The two major influences we can exert on a programmer's performance are on the desire he feels for working and on what he knows that is needed for the job. The first is called motivation and the second is called training, or, if it is sufficiently general, education. But little is known about why programmers program harder, or whether they are already programming too hard for their own good. Possibly even less is known about educating programmers, even though vast sums have been spent on training schemes.
In a way, the reason it is so hard to attribute the source of programming inefficiency to either programmer or programming language is that if we had ideal programmers, programming languages would be be necessary. It is a psychological which prevents us from writing out problem specifications directly in machine language. Let's face up to it: Programming is at best a communication between two alien species, and programming languages with all their systems paraphernalia are an attempt to make communication simpler for one of those species.
Which one? Not the computer, certainly, for nobody ever heard a complaint from a computer that it couldn't do the work. Oct 21, Valia rated it did not like it Shelves: I was lured to this book by the title and ratings, and the latter still puzzle me. First of all, I cannot praise this book based on its contents because if there were any insights at the time of the first edition, they are at best commonplace today. How people engage in programming has changed a lot—environment, tools, languages, standard practices, they all have changed.
Psychology has changed a lot and the guy still swears by MBTI, that tells you something. But most importantly, Weinberg doesn't bother with gathering data to support his ideas. OK, maybe he didn't have the time to do research then huh? He took trouble to add "hindsight" comments to each chapter, and none of them point to any old or modern research, either by the author himself, or by anybody else.
I wonder if he ever did any studies at all, except for the amateurish stuff. So, nothing novel, plus the style is really bad. Tedious writing, lengthy rants about now dated practices and technologies, weird personal anecdotes so weird, they seem completely made up , plain jokes. To give you a taste of how ridiculous his writing is, here's an excerpt from the epilogue: Can there by any doubt that if Pilate had computers, they would have been used to store the information gathered from informers, the better to crucify those that were crying out for crucifixion by their heretical zeal?
Can there be any doubt that somewhere in our country today some human beings are using computers as just another, finer weapon in their arsenal of ways to subjugate other human beings to their wishes—to their conception of the proper life of man? Definitely not a timeless classic. On a more constructive note: Mar 16, Bill rated it it was amazing Shelves: An insightful collection of essays that still resonate today even though some of its anecdotes reference punch cards.
Egoless programming remains its strongest practice and one that is still not the norm. It's also staggering in its prescience. Although sometimes under different names, he predicts unit testing, code analysis tools, and countless other great ideas.
It has helped give me more appreciation for the soft skills necessary in the profession. I've highlighted and discussed some points made in the book on my blog, which can give you an idea of the type of content the book discusses: Nov 30, Ushan rated it really liked it Shelves: Weinberg was one of the earliest authors who realized that computer programming is a human activity, and has a lot in common with other human activities.
A programmer is reluctant to see the flaws in his code, so it must be checked by others. A programming language should be orthogonal because it is hard for a programmer to keep in his head, which features are enabled in which context. A programming project could never move forward if all interactions between the programmers follow the up-and-do Weinberg was one of the earliest authors who realized that computer programming is a human activity, and has a lot in common with other human activities.
A programming project could never move forward if all interactions between the programmers follow the up-and-down lines of an org chart, and not informal horizontal lines. Managers are advised: Adding more inexperienced programmers to a project most likely will not speed it up.
Copy-pasted code is error-prone because mistakes introduced during the copy-pasting are hard to spot; better to use parametrized code in one place. These seem like truisms now, but remember that this was written over 40 years ago! There are lots of amusing anecdotes illustrating the author's theses.
Aug 23, Kenny rated it did not like it.
I was very disappointed. The title seemed so promising, but the book was just full of anecdotes and half-baked ideas.
To his credit, Weinberg says early on that he only wrote the book to get people thinking about the psychology of computer programming. And he really did get me thinking about it and gave some interesting insights, but I was really hoping he would have thought things out more than he had.
May 16, Volkan rated it it was ok. Apr 20, Michael Bayne rated it liked it. The occasional interesting tidbit, but mostly truisms and observations on processes that have changed a lot over the decades. Feb 09, Scott Pearson rated it really liked it Shelves: This book is misnamed, as the author admits.
It should be named "The Anthropology of Computer Programming. Fortunately, despite being written over forty years ago, it succeeds at its task for the reader today as well as for the original reader. If you can move past the references to dated languages and programming practices, this book elucidates many observations about how programmers work.
It's like readi This book is misnamed, as the author admits. It's like reading an anthropology of a long-hidden culture from decades ago. From one who works in computer programming, the cultural fruit of these observations can be seen in labs today. To be frank, I've never felt that I've truly understood my peers in the lab. I've done well with the computer - with expressing myself through programs.
So many of my peers are socially passive in their demeanor. I'm outgoing, even energetic. The cultural analysis in this book, though dated, helps me see this culture more clearly. It helps me feel more at home in my own environment - and perhaps also, in my own skin.
As such, this book achieved its goal in my life, and for that, I am sincerely grateful. Sep 16, Mathieu rated it it was amazing. This is an absolutely fantastic book, delightfully written, full of evidently timeless wisdom, and with a very poignant epilogue.
The end-of-chapter questions and bibliographies are worth reading too. Weinberg deals with the social and psychological aspects of the craft of programming with both studies and stories, and is always careful to point out where a lack of thought can lead one astray.
None of the software, systems, or hardware discussed in the book are relevant today, but it turns out t This is an absolutely fantastic book, delightfully written, full of evidently timeless wisdom, and with a very poignant epilogue.
None of the software, systems, or hardware discussed in the book are relevant today, but it turns out that the people working with them haven't changed much in the past 40 years. The general lesson is timeless: Sep 16, Tomas Janousek rated it really liked it.
A bit long, but perhaps suprisingly still very relevant, as we still keep repeating the same mistakes as 50 years ago. I expected the Programming Tools chapter to definitely be outdated, but even that one isn't — it predicts TDD, mutation testing, and other techniques that still aren't as widely used as they should be.
From the earlier chapters I'd highlight the concept of Egoless programming.
Jan 22, Jan Holcapek rated it liked it Shelves: Sometimes a bit hard to read as it is more of a scientific report yet written for a broad audience rather than easy-to-read kind-of-self-help bestseller.
Some parts obviously obsolete in terms of technology machines, languages, tools , others not so surprisingly still relevant - those revolving around human mind.
Jan 12, Steve Bitner rated it it was ok. I'm sure this was a poignant book years ago, but it misses the mark in the teens.
Nice insights for research. But too much there does not apply anymore. Mar 03, Alexander Holbreich rated it liked it. This book is not interesting today if you're familiar with the topic. So no surprises for me. But need take into account the age! Interesting from historical point of view.
The book has great early chapters. However, I do find the latter part of the book a bit more tedious as the author is trying to address a more social aspect of computer programming from a technical standpoint. I think it's hard to write about something social when the writer is approaching it as an engineering problem to solve.
There are few major takeaways on computer programming: Think of computer programming as a social event. It is a group of people trying to build a product together. It is The book has great early chapters. It is important to think about how these people are going to collaborate, how they communicate about their common goals, and how they measure the progress of building a product.
Programming is like writing. The goal is to build a program that meets the requirement features, easy to change in the future, easy to detect problems, etc. Writing a perfect program should never be the goal because we don't know what a perfect, or even good program looks like. Great quotes: We read examples—both good and bad—to facilitate learning. And with the advent of terminals, things are getting worse, for the programmer may not even see his own program in a form suitable for reading.
Perhaps if we want to understand how programmers program —to lift the veil of the programming mystique—we could fruitfully begin by seeing what is to be learned from the reading of programs.
When the programmer includes something that is intended to overcome some limitation of the machine, he rarely marks it explicitly as such. Although this omission adds to the intrigue of reading programs, it does penalize the program when, for example, it is transferred to another machine. The programmer may not even be aware that some of his coding is intended to compensate for a limitation of the machine, in which case he could hardly be expected to mark it. Not all historic code can be so easily differentiated as these examples might imply.
In particular, the larger a program grows, the more diffuse are the effects of particular historical choices made early in its life. Even the very structure of the program may be determined by the size and composition of the programming group that originally wrote it—since the work had to be divided up among a certain number of people, each of whom had certain strengths and weaknesses. There will always remain the fact that, in most cases, we do not know what we want to do until we have taken a flying leap at programming it.
Writing a program is a process of learning—both for the programmer and the person who commissions the program. The most important reason for studying the process by which programs are written by people is not to make the programs more efficient, more compact, cheaper, or more easily understood. Instead, the most important gain is the prospect of getting from our programs what we really want—rather than just whatever we can manage to produce in our fumbling, bumbling way.
Looking honestly at the situation, we are never looking for the best program, seldom looking for a good one, but always looking for one that meets the requirements.
If a program doesn't work, measures of efficiency, of adaptability, or of cost of production have no meaning. One of the recurring problems in programming is meeting schedules, and a program that is late is often worthless.
Few programmers of any experience would contradict the assertion that most programs are modified in their lifetime.
Psychology of computer programming pdf
Why, then, when we are forced to modify programs do we find it such a Herculean task that we often decide to throw them away and start over? Reading programs gives us some insight, for we rarely find a program that contains any evidence of having been written with an eye to subsequent modification.
The question of what makes a good program is not a simple one, and may not even be a proper question. Each program has to be considered on its own merits and in relation to its own surroundings. Some of the important factors are: Does the program meet specifications? Or, rather, how well does it meet specifications?
Is it produced on schedule, and what is the variability in the schedule that we can expect from particular approaches?
Will it be possible to change the program when conditions change? How much will it cost to make the change? How efficient is the program, and what do we mean by efficiency? Are we trading efficiency in one area for inefficiency in another? In the future, and particularly in the discussion of this book, we should refrain from using the concept "good program" or "good programmer" as if it were something universally agreed upon, or something that even can be universally agreed upon, or something that even should be universally agreed upon.
Mar 18, Wanasit Tanakitrungruang rated it liked it. Mar 01, Ubaldo P. Computer science evolves, but people's mind remains the same: A must read. Apr 12, steve rated it liked it. This review has been hidden because it contains spoilers.
To view it, click here. OK, it took me around 8 months to read this book. It was not a page turner. I brought it to Canada, and down into the Grand Canyon and back up. It is also not a light book. It is considered a CS "classic", though, and my perseverance paid off, I think.
The most interesting stuff was at the beginning, such as these tidbits I had notes on earlier: Although it is the "bane of scientific observation" the Hawthorne Effect the process of being observed often motivates people to better performance ca OK, it took me around 8 months to read this book.
Although it is the "bane of scientific observation" the Hawthorne Effect the process of being observed often motivates people to better performance can be harnessed for good by just paying attention to the people you are supervising.
Buy for others
Software development teams function best as democracies, as opposed to dictatorships. Team leaders who are less technical should admit that fact freely. The team is going to find out anyway, so it's much worse if they do in a way that makes the leader lose all sense of credibility. One of the paradoxes of leadership is simply this: only the leader who is ready to step down has a real chance of success.
Many project managers are unable to grasp this view of a project. There was, in short, no measurable relationship between what had been reported at the bottom and what came out the top. Note that Weinberg himself commented on my post and argued for the gradual layer-by-layer changes that he describes in his book; I countered with two real-world examples where a single individual was responsible for most of the filtering.
Programmers who arrive early in the morning are through to be better programmers than ones who are seen to arrive after official starting time. Programmers who work late, however, may not be rewarded because the manager is not likely to see that they are working late.
Programmers who are observed talking to others are not considered to be working, because the manager has an image that programming work involves scratching out secret messages to the computer. Yet it is an occupational disease of programmers to spend more time on those program parts that present, for some reason, the most intellectual challenge rather than on those that require the most work.
For the professional, at least, the job from getting to specifications to delivered program demands various kinds of work, wihch, in turn, demand various talents.
Although this rough view contains some truth, it distorts the truth in several ways. First of all, the actual sequence is not so fixed, because, for example, documentation may precede testing, coding, flow diagramming and even analysis. Second, not all steps need to be present, as when we are recoding a program for a new machine or language.
Thirdly, it need not be a sequence at all — and, in actual practice, rarely is.
Who has not experienced a problem definition that changes as discoveries are made in analysis, flow diagramming, coding, testing, and documentation? Or who has ever seen a flow diagram that remains unmodified throughout the coding — or code that remains unmodified throughout testing? It is in this sense that we can assert that personality is more important than intelligence in programming. Another essential personality factor is at least a small dose of humility.
Without humility, a programmer is foredoomed to the classic pattern of Greek drama: success leading to overconfidence hubris leading to blind self-destruction…. The other side of the coin of humility is assertiveness, or force of character. Last among the essential personality traits for programming, we might list sense of humor. I knew you could. Later, when we discuss language design and program testing, we shall see that the correlation between the esthetic and the pragmatic value of a program is not accidental — the more pleasing to the eye and mind, the more likely to be correct.
Weinberg illustrates point after point with real-world stories that — aside from the archaic technology — sound very contemporary and very true to life, and are usually entertaining to boot. Weinberg also has questions for IT managers and for programmers themselves at the end of each chapter. Here are some examples [For managers:] On what basis do you reward programmers?
Are certain of your criteria mutually contradictory, as in asking for efficient but general programs? How explicit are you with your programmers in indicating what you are looking for in their programs?
Or do you just tell them that you want the programs to be fast, small, neat, easily modifiable, errorless, and done in a week? Try doing this on the next bug you find, and write a brief report or outline on what you find. Try passing one week without using the personal possessive in reference to programs, and take notes on the effects you observe. Describe some of these incidents, and also some incidents in which it was discovered that your technical competence was in at least one respect inferior to one of the people who work for you.
What were the consequences of that discovery, and do they justify attempting to cover up? If so, describe the incident, what ultimately happened to your doubt, and how your work was affected. Do your programmers know what the information you require is used for? Do they see the final reports which are the destination of their information?
If not, why not?The text still seems relevant, and it contains some anecdotes that I recognise because they simply seem to have entered the general software development mythology.
What were the consequences of that discovery, and do they justify attempting to cover up? Programmers who arrive early in the morning are through to be better programmers than ones who are seen to arrive after official starting time.
Copy-pasted code is error-prone because mistakes introduced during the copy-pasting are hard to spot; better to use parametrized code in one place. Weinberg touched upon that very quest early on in the book as well :  Over the years, executives have backed their desire to eliminate programmers with staggering funds.
- THE LEFT HAND OF DARKNESS EBOOK
- THE ALCHEMIST PDF IN MARATHI
- IWORK 09 THE MISSING MANUAL PDF
- AROUND THE WORLD IN 80 DAYS BY JULES VERNE EBOOK
- COMPUTER AWARENESS FOR BANK EXAMS PDF
- STANTON MOORE TAKE IT TO THE STREET PDF
- THE FIGHTING TOMAHAWK PDF
- THE QUEEN OF ATTOLIA EBOOK
- AIM HIGH 4 TEACHERS BOOK PDF
- INVESTMENT PUNK EPUB
- MERCURY OUTBOARD MANUAL PDF
- ACE THE IELTS ACADEMIC MODULE PDF