"The Ancient and Modern mediocre people in the world are all defeated by an inactive word. All the talented people in the world are defeated by an arrogant word. -- Zeng guofan"
I am a mediocre person. I wasted a lot of time last year and will study harder this year.
Return to today's topic. I collected a lot of books for my study plan last year and some time ago, and I am also responsible for purchasing books for our R & D department. So I bought a lot of excellent books and I will share them with you today.
1. C Language Improvement
C and pointer
C defects and traps
C expert Programming
I have mentioned these three books in many articles. They are a must-read book for Junior C programmers. They are also teaching materials for new employees in our company to study hard, it is very suitable for graduates.
2. c ++ Language Improvement
Valid
C ++: 55 specific practices for improving procedures and Design
More
ValidC++: 35 effective methods to improve programming and design (Chinese Version)
《C++ Meditation
《C++ Templates Chinese edition
In-depth exploration of the C ++ Object Model
Generic programming and STL
I am a programmer who switched from C to C ++, so I have never systematically studied C ++ syntax, and I often learn what I use. C ++ primer is good if you want to get started with the system. I am reading the first book of the above books. I plan to finish both Objective C ++ and more objective C ++ over the past two months, and then I will study them further. Of course, the course here is just to read the book and take notes. Further practice is required to fully understand the content of the book.
3. Design
Code Daquan: This is a book that I like very much and is very suitable for work 2 ~ 3 years of intensive reading. I have made recommendations in an article.
Refactoring-improving the design of existing code
Clean code
Implementation Mode
97 things programmers should know
These books generally talk about functions and lower-level design. I have finished reading the code and made a lot of notes, which has benefited a lot. You don't have to talk about refactoring. I have read some of the other books before, but it is also very good. I plan to have time to study well.
4. Architecture
The art of software architecture
Domain-driven design: The Way to cope with software core complexity
97 things software architects should know
Enterprise Application Architecture Model
Model-Oriented Software Architecture Volume 1: Model System
《Software Architecture Design"
97 things architects need to know
I am a stranger to this part, which is also my learning focus this year. I have read the book "Software Architecture Design" from the beginning to the end, and I have built an overall impression on the software architecture. I will combine the later learning with the learning of models. The first learning goal is "model-Oriented Software Architecture volume 1", followed by "analysis model", "enterprise application architecture model", and "Domain-driven design".
5. Agile Development
Test-driven development
Agile Software Development-principles, models and practices
Scrum Agile Project Management
Scrum and XP in smoke-how do we implement scrum
Agile Software Development I have learned the "principles" and have a general understanding of agile software development. Other books are more like reference books to me. At present, a large amount of time system learning cannot be arranged.
6. Mode
Java and mode (including disks)
Implementation Mode
Enterprise Application Architecture Model
Reusable Object Model in Analysis Mode
Anti-pattern: Reconstruction of software, architecture and projects in crisis
Design Patterns
Model-Oriented Software Architecture Volume 1: Model System
As mentioned above, schema learning should be combined with architecture. Of course, this is a higher level: the architecture model. Implementation Mode is function-oriented, and design mode is an object-oriented system. I have read the design pattern from the beginning to the end, but I still need to read it again. At that time, I had limited experience and did not fully understand it. Now, there will be new gains.
7. Thoughts
Thoughts on transformation-Zhang yaqin's decoding Innovation
The path to technical leadership-a comprehensive solution to problems
Innovation wins the world: nine business leaders talk about innovation
Software Transcript: programmer's tribal chief Joel talks about software: the articles in this book are all very good.
Huawei R & D: It seems inappropriate to put it here.
Hacker and painter
Unix programming Art
Code path
These books can train your thoughts. I like software recording and code writing, and I look forward to hacking and painter.
8. Beauty Series
Team beauty
Architecture beauty
Code beauty
These three books all choose a topic and ask some world-class experts to write an article based on the topic. Therefore, these books are not systematic (but do not mean that the books are not good ). You can put it at hand, have time to read a chapter, and talk to the master.
9. development language
PHP 6 and MySQL
5 basic tutorials
PHP and MySQL programming (version 3rd)
Ruby
Rails Chinese Version
My first working language is C/C ++, my second working language is Python, and my spare time working language is Php. There are still few books related to python in the books above, which are being supplemented and also being learned.
10. Linux/Unix
Deep understanding of Linux kernel
In-depth Linux kernel architecture
Advanced Programming in UNIX environment
Linux kernel design and implementation
Connectors and loaders
Linux Advanced Programming
ARM Embedded System Development: Software Design and Optimization
Unix programming Art
Most of these books are some of my reference books except Unix programming art. They are a very special book and worth reading.
In addition, I always want to take the time to study the Linux kernel.
11. Management
Effective managers (collector's edition)
Management practices (collector Edition)
45 habits of efficient programmers: practices of agile development
I have read and take notes on the book "fruitful managers (collector's edition)" from the beginning to the end. This is a very good book.
12. Algorithms
Introduction to Algorithms
Programming Pearl
This is my weakness. The first book cannot be understood, and the second book has not been read. Work hard.
The above classification is my rough division, which may not be scientific enough. However, there should be more than enough books to organize.
In addition, many of the above books may be repeated, so you may choose to read them as needed. Some books may not be available, but you should be able to find e-books.
Finally, let's talk about my views on reading:
1. Some books must be intensively read, but notes must be taken during intensive reading.
2. It is also important to choose the time to study. If you do not have a certain degree of practice and foundation, it may be very painful to read some books. At this time, we have to stop. If you have a strong desire or need for some knowledge, this is the best time.
3. The best learning effect in the development practice process.
4. Focus. There are two levels. The first level is to focus on a large period of time (such as 90 minutes), which can improve the learning efficiency. The second level is long-term focus, and in a long period of time (for example, a quarter or a year), we must focus on a certain field so that we can accumulate and break through in a certain area, it will not fall into the general age where everything is well known but not refined. I am focusing on C ++, followed by the model and architecture.
5. Expand your knowledge on the basis of focus and learn about the changes that are currently taking place in it.
To be a T-type it person: both depth and breadth.