[Recommended Books]12 this programmer must book

Source: Internet
Author: User

Transferred from: http://mt.sohu.com/20160125/n435751361.shtml

Many people ask me this question, especially those colleagues and friends who have just started their software engineering career. What books should I read in order to be a better developer? Do I really need to read? This is a very interesting question, and it is also a question I asked a lot of mentors when I became a software engineer. But the problem is that many people recommend different books on different subjects. The books they recommend are great in their opinion, but no one can tell me what to be a great engineer, what I should read and what is important and must-read books.

I learned a lot from my mentor and realized that I still have a lot of things to learn and many different books to read. I decided to read a book on the field of specialization (software engineering) every month. As time went on, I summed up the list of books I thought I wanted to be a top developer to read.

Stating beforehand-just reading these books won't make you a great developer. You also need to accumulate years of work experience and apply the principles of these books to practical practice and develop your ability to solve problems in the real world.

Reading these books can help you avoid some common pitfalls and errors that some developers have experienced early in the pitfalls and mistakes they have made. I wish I had just been in the field of software when someone suggested these books to me, and I'm still glad I found them and read them over and over again! Maybe you've read some of the books in a computer science or engineering course at college. Maybe at that time, you don't think they are important, but I can use my own experience to show that I have used and applied many of the principles that come from these books.

I would also like to point out that the list of books is not exhaustive. There are many great books coming out every year. These are just the books that have the greatest impact on me and my career. In addition, these books are not related to what language to use and can be applied to any software language. Well, let's start introducing these books! (These are essential, and I will introduce them from the back to the size of their influence on me.) )

 1. Code Complete 2 (Codes Daquan 2)

  

"Code Complete 2" Is it! This is the book I think is worth reading (please forgive me) if you want to be a good software engineer. It is widely regarded as one of the best practical programming guides, and Steve McConnell's initial code complete has been helping developers write better software over the past more than 10 years. Now, this classic book has been completely updated to the forefront of practice-and hundreds of new code examples-to revise the art and science of software architecture. Capturing knowledge systems from research, academia and everyday business practices, McConnell the most effective technologies and the principles that must be known to be clear and practical guidance. Regardless of your level of experience, your development environment, and the size of your project, this book can inspire and inspire your thinking and help you build the highest quality code.

  2. Pragmatic Programmer (the path of Programmer's cultivation)

  

"Pragmatic Programmer" This is one of the first programming books I have read. It was a friend of mine who was recommended to me during my first career as a professional. I'm glad he did. Although this book was written in 1999, its concept is the basis of a pragmatic approach to the development of complex systems. Programmers are also craftsmen who are trained to use a specific set of tools (editor, object management, version Tracker) to produce a product (program) that can work in a certain environment (the operating system on a hardware component). As with any other process, computer programming also breeds wisdom, but most of the wisdom is not learned from universities or certification programs. Most programmers can only master these so-called tricks through independent experimentation and a little time of accumulation. In the book Pragmatic Programmer, Andrew Hunt and David Thomas compiled many of the truths they found in their careers as software designers and code writers.

Some of the author's practical recommendations are very specific and clearly easy to implement. They advise readers to learn, such as a text editor, and then use it in a variety of situations. They also recommend using version tracking software--even for the smallest projects--to learn the regular expression syntax and the text manipulation language. There are also many other very valuable suggestions in the book. In the commissioning section, the author points out: "If you see hoof prints, you should consider the range of horses, not zebras." That is to say, be suspicious of everything and then look for problems from the most conspicuous places. There are also recommendations for estimating time and cost, and incorporating integration testing into the development process. There are two reasons why pragmatic Programmer is so addictive: it will comb your own accumulated wisdom more clearly, and it will introduce you to working methods that you have not yet considered.

 3. Structure and interpretation of computer Programs

  

"Structure and interpretation of computer Programs" with an analytical and rigorous approach to problem solving and programming techniques, this book is geared towards engineering. The Structure and interpretation of computer Programs emphasizes the central role in different ways to deal with the time in the computational model. Its unique approach makes it ideal for computer science courses, as well as programming language and program design for getting started. This book further explains the 4 most famous programming language paradigms-imperative programming, object-oriented programming, logic-based programming and application programming.

4. Introduction to algorithms (Introduction to algorithms)

  

Introduction to algorithms this must be the best book for understanding and Using algorithms (which will involve a lot in software development). Some of the books on algorithms are rigorous, but not comprehensive-and some of them are not rigorous, although they are wide-ranging. "Introduction to Algorithms" is a unique combination of rigor and comprehensiveness. This book covers a wide range of in-depth algorithms that enable the design and analysis of the book to be targeted at all levels of reading staff. Each chapter is relatively independent and can be viewed as a learning unit. The algorithm is described in English and readable pseudo-code. It uses elementary basic explanations and does not sacrifice the depth of coverage and the rigor of the material. The first edition is not only widely used as a textbook for universities around the world, but also a standard reference book for professionals. The second edition added the chapters for algorithms, probabilistic analysis, stochastic algorithms, and linear programming.

 5. "Clean Code"

  

"Clean Code", author Robert C. Martin, is divided into three parts. The first section introduces principles, patterns, and practical methods for writing clean code. The second part includes a number of research cases with progressive complexity. Each case study is an exercise in cleaning code, and it's a good practice to make your code sound and efficient by solving some of the problems in the code base. The third part is a decisive part: Each individual chapter contains a series of heuristic teaching methods when creating a case study. Finally, we have a knowledge base that describes how we think when writing, reading, and cleaning code.

 6. Refactoring (Reconstruction)

  

"Refactoring", written by Martin Fowler of Refactoring, focuses on improving the design of existing code. This is a process that changes the software system without changing the external behavior of the code, but improves its internal structure. By refactoring, you can even recreate a bad design as a good design. This book explores the refactoring principles in depth, including where to find opportunities for refactoring and how to build the tests you need. There is also a catalog of more than 40 refactoring that has been proven in detail, including when and why refactoring is being used, and how refactoring is done, with examples of how refactoring works. This book is written in Java as its main language, but the ideas apply to any OO language.

 7. The Art of computer programming (computer Programming Arts)

  

The ART of computer programming is a classic. By the famous computer scientist Professor Donald Knuth, and by the industry's many top programmers alike. Even Bill Gates praised the book:

"If you think you are a really good programmer ... Then read [Knuth's] "The Art of computer programming" ... If you can read the whole book, please be sure to send me a resume. ”

The book begins with basic programming concepts and techniques, and then focuses on more specific information structures-the representation of information within a computer, the structural relationships between data elements, and how to deal with these issues effectively. Also available are basic applications for simulation, numerical methods, symbolic calculations, software and system design.

8. Code:the Hidden Language of computer Hardware and software (code: hidden in the language behind computer hardware and software)

  

The book "Code:the Hidden Language of computer Hardware and software" cleans up a lot of "magic" in creating and developing complex systems. There are so many abstractions now that some low-level details are not known to developers. While you may not find yourself using the book in practice – I believe it is always a good idea to know what you are building and how the entire orchestration works. It can come in handy when you need to open a "black box" and drill into software or hardware to solve a nasty bug. Charles Petzold wrote "Code:the Hidden Language of computer Hardware and software" combed through many programming concepts-from decimal, octal, binary to high-level languages of digital systems. This book describes packet-based communication protocols and TCP. Many chapters explain the concept of hardware, with five chapters on software and guidance operating systems, floating-point arithmetic, and graphical user interfaces.

 9. "Programming Pearls Second Edition (programming Zhu Ji Nanxiong)"

  

"Programming Pearls Second Edition" This book is slightly different from the other books on the book list. I want to say that this book can help a person "think like a programmer." "Programming Pearls" is an outline of 15 columns previously published in the Communications of the ACM (American Society of Computer Communication). These columns cover a wide range of programming-related topics: from requirements collection to performance optimization. Focus on coding techniques and algorithms.

Each column is organized into a chapter. Chapters usually start with a scenario with a real problem. Then, various solutions and corresponding lessons are presented. The writing style is clear and crisp.

"Programming Pearls" is not an ordinary book that teaches new programming concepts. Although it contains excellent, sometimes even quite novel ideas, the purpose of this book is not to teach you something new, but to help you become a better problem-solving person.

 10. Design Patterns (in layman's mode)

  

Design Patterns If you are going to be an architect or a system designer, you are likely to be asked to read the book. This is one of the greatest books ever written about software development, detailing many different design patterns that have helped software engineers to avoid and deal with the common problems faced by the industry over the years. Following this book's strategy will help you build higher quality, flexible and maintainable software. The legendary "Gang of Four" is the book, as it was written by four well-known authors.

  11. The Mythical Man-Month (People's Month myth)

  

The book "The Mythical Man-Month" is a classic, but has recently been revised and corrected. Surprisingly, this book is still closely related to software product development. This book is a must-read if you are in the software. The most valuable part of the book, I believe, is the "plan to throw out" prototype chapter. Although our goal is usually to do something bigger, better, faster, whatever it is, we always build something that has to be scrapped and needs to be re-done. I have experienced this situation many and many times. Therefore, the key is to have plan to throw out (plan discard) so that you can adapt to the situation. If you dream that the first product is OK, then you risk abandoning them, because the improvement and development of the product is unavoidable. Plan abandonment also helps to achieve progress goals by setting reasonable milestones.

 12. "Working effectively with Legacy code" (Art of Coding modification)

  

"Working effectively with Legacy code" I like this book because almost all software developers, at some point in their career, tend to have to support and work on legacy systems. In this book, Michael feathers provides strategies from start to finish to work more effectively with untested legacy code repositories. This book draws on Michael's material for his famous object Mentor Symposium: Michael's techniques for mentoring to help developers, technical managers, and testers control legacy systems.

[Recommended Books]12 this programmer must book

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.