[PDF/EBOOK] The Psychology of Computer Programming

Ple s code and prefer to learn by writing "THINGS OURSELVES AND REPEATING EVERYONE ELSE S MISTAKES THIS "ourselves and repeating veryone Multichannel Marketing Ecosystems else s mistakes This has improved slightly since Weinberg wrote the book thanks to thexplosion of open source but it s still very rare for a programmer to sit down and just read code as a learning xercise Egoless programming see the code you write not as part of yourself but as independent objects owned by the team That way you don t see flaws in the code as flaws in your character and you become much better at seeking out feedback

And Handling Criticism Good 
handling criticism Good language design is primarily about taking into account the limitations of the human mind We can t hold or process too much information in our heads so languages need to be designed around the principles of uniformity compactness locality and linearity Programming is a nascent field and we need a lot research to figure out how to do it ffectively Sadly than 40 years later we ve done relatively little rigorous research and still don t seem to be much closer to knowing the answersSome of my favorite uotes from the bookThe material which follows is food for thought not a substitute for it Computer programming is a human activity One could hardly dispute this assertion and yet perhaps because of the Angels Whiskey emphasis placed on the machine aspects of programming many people many programmers have never considered programming in this light Programming is among other things a kind of writing One way to learn writing is to write but in all other forms of writing one also reads We readxamples both good and bad to facilitate learning But how many programmers learn to write programs by reading programs A few but not many Specifications Ritual Alliances of the Putian Plain: Volume Two: A Survey of Village Temples and Ritual Activities evolve together with programs and programmers Writing a program is a process of learning both for the programmer and the person who commissions the program The average programming manager would prefer that a project bestimated at twelve months and take twelve then that the same project be stimated at six months and take nine Fisher s Fundamental Theorem states in terms appropriate to the present context that the better adapted a system is to a particular nvironment the less adaptable it is to new Wish You Were Here: An Essential Guide to Your Favorite Music Scenes—from Punk to Indie and Everything in Between environments Psychology is the psychology of 18 year old college freshmen Maxwell the great physicist once said To measure is to know and his words are often taken as a motto by other sciences What Maxwell probably meant was To know how to measure is to know orven better To know what to Measure Is To KnowThe Organization Chart Is is to knowThe organization chart is nice toy for a manager but little programming work would The Day Christ Was Born ever get done if interactions among programmers has to follow its narrow straight lines John von Neumann himself was perhaps the first programmer to recognize his inadeuacies with respect toxamination of his own work Those who knew him have said that he was constantly asserting what a lousy programmer he was and that he incessantly pushed his programs on other people to read for rrors and clumsiness Yet the common image of von Neumann today is of the unparalleled computing genius flawless in his very action And indeed there can be no doubt of von Neumann s genius His very ability to realize his human limitations put him head and shoulders above the average programmer today As a rough rule three programmers organized into a team can do only twice the work of a single programmer same ability because of time spent coordination problems Moreover three groups of three programmers to do only twice the work of a single group or four times the work single programmer for the same reason The basic rule for size and composition of programming teams seem to be this for the best programming at the least cost give the best possible programs you can find sufficient time so you need the smallest number of them When you have to work faster or with less xperienced people costs and uncertainties will rise In any case the worst way to do programming project is to hire a horde of trainees and put them to work under pressure and without supervision although this is the most common practice todayProgrammers being people who tend to value creative vent and professional competence tend to put their stock in people whom they perceive to be good at the things they do Thus it is And the Miss Ran Away with the Rake easier toxert leadership over to influence programmers by being a soft spoken programming wizard than by being the world s fastest talking salesman 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 uickly as possibleIt 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. E computer programmer Returning to topics that are strikingly relevant to today's issues in programming Gerald M Weinberg provides a characteristically fresh perspective on his original insights highlighting the similarities and differences between now and then Using a conversational style that invites the reader to jo. Meh I was very disappointed The title seemed so promising but the book was just full of anecdotes and half baked ideas To his was just full of anecdotes and half baked ideas To his Weinberg says arly 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 than he had This book is misnamed as the author admits It should be named The Anthropology of Computer Programming It studies the culture of computer
Programming Rather Than The 
rather than the of the practice Fortunately despite being written over forty years ago it succeeds at its task for the reader today as well as for the original readerIf you can move past the references to dated languages and programming practices this book lucidates many observations about how programmers work 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 todayTo be frank I ve never felt that I ve truly understood my peers in the lab I ve done well with the computer with The Pocket Wife expressing myself through programs So many of my peers are socially passive in their demeanor I m outgoingven The Color of Our Sky energetic The cultural analysis in this book though dated helps me see this culture clearly It helps me feel at home in my ownnvironment and perhaps also in my own skin As such this book achieved its goal in my life and for that I am sincerely grateful Weinberg was one of the arliest 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 nabled in which context 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 If a programmer is indispensable get rid of him as uickly as possible because people are sometimes inconsiderate Obsession enough of their managers to get sick to get drafted or to die and this should not spell ruin for the project Adding inexperienced programmers to a project most likely will not speed it up Copy pasted code isrror 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 Recent I have read The Psychology of Computer Programming written by Gerald M Weinberg The book was originally published in 1971 though it got republished in 2011 I read it on a kindle paperwhite and it looked great So don t worry about the age of the book in case you fear it won t look good in Cabaret: A Roman Riddle e book formatEven though the book was written in a time before the public internet Java Javascript smartphones and many things we take for granted today a lot of the content still rings true todayI would actually recommend that softwarengineers still read this book ven today It has helped give me appreciation for the soft skills necessary in the professionI 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 Some very good take aways to keep in mind WHILST your writing your code This isn t a book about computer programming but about computer programmers It holds up remarkably well than 40 years after its publication date because ven though the technology changes rapidly the people creating it do not Of course not verything in the book has aged well The discussion of other programming tools in the final chapter is fairly specific to an ra of punch cards and shared terminals and should mostly be skipped Also there are some fairly dated views on the roles of women in the workplace and how they can t match up to men not that Weinberg All Roads Lead Home endorses these views but it s clear that this is a book from a differentra that said women in tech is still a problem nowOverall a very worthwhile read We need tech books that focus on the people and not the technology itselfSome of the key ideas I found specially memorable We should look at programming as a human activity not just a mathematical scientific or technological one Most programs are built by teams so we need to look not only at how an individual interacts with a computer but also how many individuals building software interact with ach other In most professions you look at the work of others to learn Not so in coding We rarely read other peo. This landmark 1971 classic is reprinted with new commentary and a Preface from the author Long regarded as one of the first books to pioneer a people oriented approach to computing The Psychology of Computer Programming ndures as a penetrating analysis of the intelligence skill teamwork and problem solving power of th.

Download The Psychology of Computer Programming

Feel that their performance is being judged but who have no adeuate information on how well they are doing will test the system by trying certain variations The hierarchical organization which so many of our projects seem to mulate 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 a supervisor is responsible for work he does understand he begins to reward workers not for work but for the appearance of work Programmers who arrive arly in the morning are thought to Be Better Programmers Than Ones Who Are Seen To Arrive better programmers than ones who are seen to arrive 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 job can be attributed to a different conception of what is to be done Lacking 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 asily 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 asy to forget the puzzlement that xisted 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 lse 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 xplanations for success given by some programmers bring to mind the story of the village idiot who won the monthly lottery When asked to Just Cause 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 63 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 canxert 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 ducation But little is known about why programmers program harder or whether they are already programming too hard for their own good Possibly ven less is known about ducating programmers ven 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 ither 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 people don t think the same way that computers do that s why we use computers 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 ver heard a complaint from a computer that it couldn t do the work An insightful collection of ssays that still resonate today ven 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 I highly recommended it I picked up this book on a whim purely based on the title I didn t look at the copyright info or the introduction first where I would have learned that Gerald Weinberg first wrote about programmer psychology in 1971To my surprise much of it aged well Weinberg took an interesting approach when TL DR don t waste your time browse this blog insteadI was lured to this book by the title and ratings and the latter still puzzle meFirst of all I cannot praise this book based on its contents because if there were any. In him Weinberg reunites with some of his most nduring straight from the heart observations on the human side of software ngineeringDorset House Publishing is proud to make this important text available to new generations of Weinberg fans and to ncourage readers of the first dition to return to its valuable lesso. The Psychology of Computer Programming