Original link
Author: Joel Spolsky is the founder of New York, a small software company, Fog Creek Software. He graduated from Yale University and worked as a software designer and manager at Microsoft, Viacom and Juno in the United States.
I know this person because I read his article, "Advice to computer students," published in the journal programmer. He recently mentioned in his blog that he has a reading list that is recommended to programmers.
OK, this is a list that Joel sorted out as early as 2002, and I recently started subscribing to his blog. But fortunately, these books are so classic that they are not obsolete. And found that Joel's Chinese blog did not give a translation. I recently also happened to make a reading plan, simply translate it.
A man called Derk said: "Pretty close to the perfect short list for any programmer." (Almost a perfect, streamlined list for any programmer.) )
The following is the text:
You can learn a lot about this person by reading a book from a person. And I've always thought that if you read all the books that I've read, you'll be just as I thought.
So here's Joel's Programmer's bookshelf. This is a short list that lists all the books I really think every programmer needs to read. If you haven't noticed, it's mixed up with my own book because I can get two dollars when you buy it. (I like Joel's humor)
Painless Software Management class (painless software Management)
Human pieces (peopleware:productive Projects and teams)
Tom DeMarco and Timothy R. Lister
(with Chinese version)
When I was practicing at Microsoft in the summer, my friends and I used to go to the warehouse where we used to store lecture materials for a short visit. In the floppy disk, the mouse pad, notes record found a pile of small books, so I took a book home to read. This book is "The Man", Tom DeMarco and Timothy Lister wrote the book. This book is one of the most influential books I have ever read. The most appropriate description of it may be the "Dilbert Manifesto" (Dilbert, the famous career cartoon character of Scott Adams, USA). It means to be in charge of the job and be mistreated or used by the supervisor. Once wondered why everyone in Microsoft had a wall and door partition office. There is an answer in the book. Why do managers give their team so much leeway to complete the task. The answer is in the book. Why Microsoft has so many cohesive "home run" teams, they are clearly capable. The main reason is that Bill Gates has created a company full of managers who have read the human pieces. I can't recommend the book to a high enough height. Every software manager in this book needs to read it, not just once, but once a year.
The myth of the People's Moon (the mythical Man-Month)
Frederick P. Brooks
(with photocopy, Chinese version)
This, of course, is a classic book of software project Management, which appeared 25 ago, when Fred Brooks was trying to implement one of the first OS/360 software engineering projects (IBM's operating system), and he was the first to mention the fundamental difference between the development and other projects. One of the most notable of the books is the idea that adding more programmers to a project that has been delayed will only make the project more delayed, but that's just the tip of the iceberg. Understanding this book is a good basis for thinking about software team management.
"Rapid development" (Rapid development:taming Wild Software schedules)
Steve C. McConnell
(with photocopy, Chinese version)
Steve McConnell captured a lot of Microsoft's development management ideas in the first decade of their development of large-scale software. You will find that the ideas in this book overlap with my original "Joel Test" (Joel is modest), even though the book focuses on getting control of the schedule.
Coding Technology Class (code craftmanship)
"Perfect Code" (Code complete:a Practical Handbook of Software Construction)
Steve C. McConnell
(the Chinese translation is called "Code Encyclopedia", the English version has a second edition)
Encyclopedia of Good Programming practices, perfect coding focus on personal skills-all of the content to illustrate what we call "writing clever Code" (write clean Code,clean can translate a variety of meanings, it can only be understood that some English translation into Chinese will be very painful). This book is the kind of book that uses 50 of pages to talk about code layout and white keeping.
"Results-oriented programmer" (The Pragmatic Programmer:from journeyman to Master)
Andrew Hunt and David Thomas
(with Chinese version)
Those who may still be in college, if they have learned the programming mechanism, but feel unsure about what to do, this is a very appropriate book. Just like the difference between cartography and architecture. What you learn in class is drawing, and you can draw it beautifully, but when someone lets you write a peer-to-peer music Exchange online, you still feel like you don't know where to start. It happens to be the book for you.
Programming Philosophy Class (Philosophy of programming)
"Microsoft Believer" (Microserfs)
Douglas Coupland
(not introduced in China)
(Note: Microserf's explanation is that those who use only Microsoft's products refuse to recognize the existence of other brands--a Microserf is somebody who only uses Microsoft product and refuses to ackknowled GE the existance of Linux. Typically, a microserf evolves to MSCE, or suffers BSOD after BSOD)
One of the important things to understand is that you have just graduated from university to work in Microsoft. You are young, in a new city. You don't know anyone else, and there's nothing you can do about it. And you're a "computer clown", a laughingstock at work, and what may happen is that when you eat your takeout dinner at a Mexican fast food restaurant, you'll get tired of it so you'll go back to your luxurious office where you can see the mountains and stay with evergreen and code. For these young programmers, life outside of work is lonely and empty, and they have done a great job for Microsoft because they have spent all their energy on the most interesting part of the day-the development of cool software.
There is no better way to describe the feeling of a young employee who works for a large software company than the word Microsoft Believer. Douglas Coupland's description of Microsoft's life in the early 90 was so wonderful that it struck me-but he later provided a moral and ethical understanding of what was going on that no one had thought of. No one understands the emptiness, the mediocrity of loneliness, and the Coupland of personal contact with modern North America.
(Note: The introduction of this book Sucks, the level is limited, forgive)
Motorcycle Maintenance Arts (Zen and the Art of Motorcycle maintenance)
Robert M. Pirsig.
(not introduced in China)
Some people's attitude toward programming is that it's a way to pay bills. It's not enough for others ... Our work is an important part of our lives, and we need a philosophical understanding of what he means. The book delves into the relationship between engineering and philosophy.
"Goethe, Escher, Bach" (Godel, Escher, Bach:an eternal Golden)
Douglas R. Hofstadter
(Chinese translation information)
I read the book before I started college and decided that I was going to take "song Derrescherbach" for my professional direction. The main criterion of my choice is to cover the topics of this lofty, panoramic, brilliant and interesting book: AI, Cognitive science, computer science, philosophy, psychology, music and art are magically intertwined.
"Architectural model Language" (A pattern language:towns, buildings, construction)
Christopher Alexander, Sara Ishikawa, Murray Silverstein, et al.
(Chinese version)
Well, it's a book about architecture. You know, buildings and raw materials. I don't think there's even a point in the whole book about computers.
I bought this book because I am interested in architecture. Then I noticed something, everything in this book that we can apply to our work as a software designer. For example, (note: This part is not translated because it is not known to the relevant content) the splash screen-CityDesk is based on the highly influential pattern of Zen View. Dave Winer ' s Radio userland appeals to people because it follows the pattern of Windows overlooking life. The software that understands the level of space patterns is easy to grasp.
A similar and somewhat short-lived sport was popular in programming a few years ago; I think the pattern movement in programming will never be fully achieved, because it is an attempt to copy the form of the book rather than the wisdom of the book.
UI Design Class (user Interface)
Programmer UI Design (user Interface Designer for programmers)
Joel Spolsky
(Note that this is Joel's own book)
I can get an ad for my own book, right?
"Programmer user Interface Design" is my attempt to teach what I think is the highest level of content, including the most important principles of interface design that every programmer needs to know. The most common response I've heard from readers is: "After reading your book, I found three places to change in my program." ”
Don't make me want to (Don t makes me think)
Steve Krug
"Don't Make me think" is an excellent and interesting book about web interface design. Decisively, the book tries to understand the principles of good user interface design, not just mundane rules (such as "Don't change the color of links"). Steve Krug's main thesis is that the less you make the user think, the easier it is for your site to be used. "What a waste it is to lose one ' s mind. Or not to have a mind is being very wasteful. How true this is. "
About Face (about face:the Essentials of User Interface design)
Alan Cooper.
(The second edition of the book "Software concept Revolution-the essence of Interaction Design")
A classic interface design book, is a great graphic user interface design treasure, the author is the father of Visual Basic.
"Everyday Objects Design" (Everyday Things)
Donald A. Norman.
(There should be a Chinese version, but I only found its sister article "Affective Design")
Donald Norman's classic "Design of Everyday Things" (also published in the name of "The Psychology Everyday Things") is one of the best books on user interface designs, Even though it talked more about things like doors and refrigerators than computers. This is the cornerstone of affordances theory, and affordances theory is still one of the most influential points of good design for everyday objects, and I've talked about it in the fourth chapter of my user interface book.
Web Usability design (designing web Usability)
Jakob Nielsen
(Chinese version)
I know, I understand, poor Jakob because of his similar "ClearType ..." the bizarre statements of can save users $2,000 per year and micropayments are the answer have been criticized. Well, all right, I'm still going to say, in those stupid math, Nielsen puts forward a series of very good, tight, correct ideas that you need to understand. If you're working on any kind of web design, you need to know the principles in this book. If you're working on a web-agnostic design, consider this an excellent case study of usability engineering.
Programmer Capital Class (Capitalism for programmers)
"Random Walk On Wall Street" (A Random Walk down Wall)
Burton Gordon Malkiel
(Chinese translation "Walking on Wall Street", in fact random walk not mean to walk casually, random walk:a process (as Brownian motion or genetic drift) consisting of a sequence O F Steps (as movements or changes in gene frequency) all of whose characteristics (as magnitude and direction) is Determin Ed by chance. So I translate it as a random walk)
If you spend enough time in this industry, it's almost impossible to avoid you finding that you have a lot of money to manage. If you don't want it to be a mess, you need to know something.
Oh, you say, but it seems so complicated. How can you be smarter than the wily foxes on Wall Street? It seems that making a reasonable investment should continue to research, analyze, work, read, and learn all the annual reports. You must book all the very boring newspapers printed with a column of small print.
What would you think if I told you that you could read a book and know everything about managing your investment? I'm talking about all the things. Well, it's true. And this is the book, and if you're impatient to read anything else about investing, read the book.
It seems to be a qualified programmer is really not easy, and we can see that Joel recommended a large number of UI design books, and the relative UI design in the domestic attention is not enough, books are relatively few, only in recent years has gradually increased. The UI is the part that deals with user bytes, and the success or failure of a software 90% depends on the UI.
Entrepreneurial class (striking out on Your Own)
"Enterprise Development" (Growing a Business)
Paul Hawken
People often email me and say, "Well, I like your theory of starting a company like Ben and Jerry, but how do I start?" "You'll want to read this book." It's a bit superficial, but it does give you an organic philosophy about how to grow a company.
Graphic Design Class (Graphic)
"Non-designer's design Manual" (The Non-designer ' s book)
Robin Williams
Wow. Everyone has to do some graphic design, and not every software team is extravagant to have a professional designer. This excellent brochure will give you a deep understanding of the principles of page layout, typography, and so on. The good news is that you can read it while waiting for the water to cool in the bathroom, and the next day, your dialog boxes and slides and pages will start to look better.
Become different/influential (making a difference)
(Note: I am puzzled by these two interpretations here, so I have written them)
Impact (Influence:the Psychology of Persuasion)
Robert B. Cialdini.
Another book worth reading is Robert's classic "Influence". When a charitable organization sends you a donation request, they usually enclose a small gift in the envelope. Put a label with your address on the gift. Or a pair of empty greeting cards. The reason they give you gifts is the basic social principle: "reciprocity"; now you feel compelled to give something back. You may have heard the tone: "Buy as soon as possible, with a limited number." So many times it appeared in TV commercials that there was no way to register. But it will still appear, because of the "scarcity" principle; you will naturally assume that scarce things will be worth more money. These traps, along with other tricks, are used by salespeople, marketers, and advertisers to influence people to do certain things. Cialdini's excellent book discusses the psychological theories behind the science and practice that affect others. It is best to read it before it is affected.
"Helpless" (Helplessness:on Depression, Development, and Death)
Martin E. P. Seligman
When we released CityDesk a few months ago, I received an email from a client complaining that he used to use Alt+f,alt+s to save the file. Unfortunately, because of a tiny neglected bug, this shortcut saves the file and then shuts it down, which is annoying. I never noticed this because my habit was to use alt+f, then S to save the file instead of alt+f,alt+s--just a tiny difference, and alt+f,s could work properly.
Once you have formed a alt+f,alt+s to save, then automatically you do not think back that is alt+f,alt+s, you see it as "save". And when you press the "Save" button in your mind, the file is closed, which makes you feel like you can't control your environment. This is a small matter, but you will become very unhappy when it happens for the fourth time. That's why I spent a couple of hours tracking the bug and fixing it. In the singular application of Murphy's law, this modification can lead to a series of time that makes us waste such as a week, but that is irrelevant, and it is worth the time. This is called care about usability. If you still think this is like when you press the ALT key for a long time when you activate the menu it doesn't matter, OK, your software will make people unhappy. These minor contradictions are making swing based applications so annoying and unbearable to use, in my opinion, that's why there is no successful commercial application of the Java graphical interface.
I say again and again, good user interface design is so important because it makes users happy. In other words, if your interface design is good, people who use your software will be happy, otherwise they will be unhappy.
So why do you have to read a book about frustration? Well, when people feel they can't control their lives and their environment, they really become clinically depressed patients. Pioneer Seligman in the research field found that one of the most effective non-drug treatments for depression was to encourage people to take small steps to try to control their environment.
I want to be a programmer (I Wanna be a programmer)
A group of books that are recommended for programmers who want to learn about programming.
The Mystery of Coding (code)
Charles Petzold
(Chinese version)
This book is clearly not for programmers, it's for non programmers who want to be programmers (novices). Or those who want to understand what a programmer does, or just want to explore the bits and bytes of the quirky world. By reading this book, if you think the code is fascinating and then want to be a programmer, then read the following C programming language.
"C Programming Language" (the C programming Language)
Brian W. Kernighan and Dennis M. Ritchie
(Chinese version, original version)
One of the most misguided teachings in programming teaching the general view is that it is necessary to induce people to delve into program design with simple and interesting graphical material. Some people think that the best way to learn programming is to start with HTML, maybe, and then learn how to cut and paste some javascripts and then go on. Another misconception is to start with a trendy, market-based programming technology such as Java or Web database programming.
All right, these people are mistaken.
For a variety of reasons, the world of deep programming is too complex, and I believe you have to start at a more machine-level learning program (Joel's other article on why.) This book, the legendary K&r, is anyone who wants to be a programmer must first learn. Pick it up and read it carefully. If you love every minute with it, you can be a programmer. If you find this old school programming textbook full of boredom, or pointers to things that make you crazy, believe me, you don't seem very well suited to be a programmer. If you need to be induced into the world of programming or you don't have the patience to comprehend all the meaning of the crazy asterisk, you should be happy to do other things, really. But if you can handle this book by yourself, you have the capital to become a top programmer, and you have a great foundation to master all the things you will learn in the future.
Note: For beginners, the foreigner's book is not necessarily the best choice, even if the Chinese version will be because of the differences in English expression habits and difficult to read, even if the good translation is difficult to translate those in English is also regarded as obscure sentences. Hou Jie and other people's books have been regarded as the best in the Chinese version, but open these books, you will find that many sentences are not very good understanding. Perhaps Tan Haoqiang's C programming material is more suitable for Chinese reading habits, it is also a good book, the Chinese people write their own books most suitable for the Chinese to read. Unfortunately the situation is not very optimistic, the best books are still in English, and I have not seen the Chinese to write their own book worthy of everyone to see the new books. So good English is almost an essential skill for top programmers, not only can you understand ordinary English, but we also have to be able to understand some of the professional terminology and the authors deliberately write "advanced" sentences for showing off, including, of course, some obscure statements that must be used to express really difficult theories.