Hiring is hard, Joel Spolsky once lamented (paraphrase :). He makes two pungent but insightful assertions: the really cool guys probably apply about four times in their lifetime, and they get snapped up right out of school by a better company, so they don’t want to move. (The recently deceased Dennis Ritchie was one of those people.) And most of what’s available in the “talent” market isn’t talent. Hiring these people will cost you money at best and ruin your company at worst.

When I reviewed this article to Teacher Zou Xin, he said two other points: 1. The best people may decide where to go without applying. So find them before they make a decision. 2. Poor candidates send out multiple resumes, and the more time they spend without a job search, the more resumes they send out, creating a lot of noise in the pool. The top10 percent of resumes may not be the top10 percent of all resumes.

True, perhaps there is no industry in which intangibles make up the vast majority of a company’s assets. Although Bill Gates is rumored to have said something along the lines of, “I could build another Microsoft if I just took 100 people with me.” The words can not be found in the original source, but from one side reflects the IT companies in the proportion of intellectual assets accounted for the heavy.

So a natural corollary is that hiring is probably the single most important part of a company’s decision-making. Joel Spolsky has compiled his observations, experiences, and insights into a small book called Smart and Gets Things Done, which begins by challenging the conventional wisdom that products are the key to a company’s success by creating the best environment for engineers to live in. Keeping the best talent is the first and most important step, and the next good product is the natural thing. Hao Peiqiang, founder of Iapp4me.com in China, is exactly this idea, so he said on weibo:

We are a small company, the salary is not high, also do not hire too many people, but the computers are iMac27, iMac21, Macbook PRO15, basically better than many big companies. The software is not pirated. I also accepted the original photoshop just now. Lunch, company umbrella. Ha ha. Holiday holiday normal, never work overtime, 11 in the morning to go to work, 6 in the afternoon off. I’m qualified to say that employees in some big companies are miserable.

As a matter of fact, it is still difficult to find someone in The United States. Joel even wrote a book to persuade enterprises to be kind to engineers, and it is even harder to find someone in China. Zhou Yuan, the founder of Zhihu, a high-quality q&A community in China, once shared his painstaking recruitment process on Zhihu. It’s so hard to find a good guy these days (there are many wonderful posts on this question) :

In fact, since 2008, I’ve been wondering if there’s a trick to this, or a practical way to do it, and the answer is almost none. I’ve used the same method everyone else uses:

  • Post on water tree (somewhat effective)
  • Post on blue ideal (invalid)
  • Posting a post in a technical email group (invalid)
  • Buy 51job/ Zhaopin.com the cheapest service (some effect)
  • Call everyone you can think of and ask for referrals (ineffective)
  • Call all the people you’ve talked to about starting a business and having a few drinks with (ineffective)
  • Make an appointment with a former colleague in private (valid)

I’ve used methods that you might not use:

  • Go to Twitter, look at XXX’s followers, look at them one by one, look at their Twitter, blog, Google Reader share, find ways to get email, contact, midnight phone harassment.
  • Go to Douban, pick a few heavyweight books on the front and back end, and find people who want to read, have read, and are reading this book. Read one by one, check their activities, blogs, Google Reader sharing, and find ways to get emails, contacts, and late-night phone calls.
  • Ask colleagues what tech blogs they read, find ways to get email, contact, and late-night phone calls.

It is not easy, there are many companies to take the approach of internal training, the logic here is: it is difficult to recruit reliable people at the beginning, but to find a reliable unpolished jade and carve carve relatively much simpler. That’s one way to do it, but people who do it get caught up in the dilemma of what to do if they leave. You can’t blame the company, it’s human nature. In fact, the solution is also very simple, appropriate guidance during training, let employees play their own active learning ability, so that not only people get more growth, the company will not feel too much worry about gains and losses. The so-called master leads the door to practice in the individual.

But that still doesn’t address the underlying problem, which is that hiring is really hard. The applicant certainly feels that he is “in the sea”, looking for a needle in a haystack. It’s a needle in a haystack feeling for recruiters. This is like two people falling in love, both want to be with each other, but just can’t talk to each other.

Recruiting is really hard. So much so that every year employers have to rack their brains to write new exams, lest the previous ones be memorized. It takes a lot of thinking to set the questions. The ones that need to be made are not too simple or too difficult. To filter out most of the imposts but not to filter out the ones that are really competent due to the unfair questions, the only way to consider the time cost of the examiners is to use multiple choice questions. Multiple choice questions are guessable (very few people will dare to write in the blank space why they chose an answer after they have chosen an answer). To make matters worse, some of the questions were so wrong that the employees themselves got it wrong (or did they? Or is the question itself wrong?)

After the written test if you don’t have despised is about to enter the interview process, besides the shortcomings of the pen test, they said the interview process, just a few hours of the interview (most of the company probably doesn’t even have a few hours of the interview), need both comprehensive study basic knowledge, and to examine the programming quality, determined, perhaps the most important character. And then there is the one thing that is virtually unexamined but takes up a significant portion of a programmer’s time: the debug ability. The interviewer not only have to find out problems, don’t jump to conclusions by the other one right, nor because of a problem and then wrong stifle opportunities, but also to see, to see the whole world in a flower, the words from the interviewer manner, way to analyze the problem, and even write programs handwriting to observe this person’s personality, way of doing things and mentality, It takes an interviewer to be an analyst.

Employers here are miserable, and job seekers there are a mess. The vast majority of new graduates don’t know until they graduate what skills are required by the company they want to work for, or what skills they need to have in order to have a choice in the application season. Although China undergraduate education environment is poor, but also have a lot of people in the undergraduate course hope integral point things out, they have a cavity passion and ambition, has a strong power, but is don’t know if I need to know what skills to meet the requirements of the employer, call to slam shut, throughout the year all the year round anguish like no head of flies around (I received a letter from tried it many times. They often want to learn something, but they don’t know what is important and what isn’t, and how much they should learn. Uncertainty leads to uncertainty, and uncertainty leads to decision-making paralysis, so they simply don’t move and waste time.)

What is skilled? What is mastery? How about solid? What does two years of YY experience mean? Can you quantify it that easily? The same two years of “practice” some people can really learn something, others may be close to nothing. What about internships? How much does it say that so many people insist on having an internship on their resume? What about the big homework? The prize? Once I interviewed a classmate who won the first prize for a big assignment of the compilation principle course according to his resume. However, I was dumbfounded when I asked what recursive descent was.

As a result, perhaps the most informative part of most New Year’s resumes is not “proficient in XXX, familiar with YYY, master ZZZ”, “interned at UUU”, nor this project or this assignment, but rather one that is increasingly considered unimportant: the school of graduation. Graduation school is not supposed to be the most informative, but it is only the most informative because of the tragic fact that there is so little else on a resume. So good candidates have learned to ignore all the flashy stuff on a resume and trust what they see in the interview, glance at it and roll up their sleeves. Candidates may also know that recruiters aren’t going to scrutinize the items on their resume, so they’re not afraid to poke any words up before they’ve been screened by HR. The economics of this strategy are correct. There is no cost (since no company seems to be keeping an integrity database of people who have applied), but at least the payoff is likely to be huge. Hired as a bookie. And the lottery type of recruitment companies to bring huge screening pressure. Resumes become decoration.

What about the third party in the recruiting relationship, the school? Schools are more concerned with graduation and employment rates, which seems like a good thing, and with that goal in mind, teachers should try to get their students to learn more. Unfortunately, the quality of employment does not seem to be the most important indicator. Secondly, most of the teachers themselves do not have rich experience in the industry and do not know what kind of talents the enterprise needs. They may spend their energy, but they cannot train the people the employer really needs. On the other hand, teachers play a negative role in many cases. For example, the assignment of big homework seems to cultivate students’ ability. Let’s say plagiarism, assuming everyone does it, how much can the big homework measure? Can you measure code quality, can you measure teamwork? Can you measure communication skills? Big assignments don’t even measure learning ability, given that they often use things that are already in books. And the ability to learn is simply one of the most important skills in this industry.

So, in short, if the development/recruitment thing itself is a project, then the whole project has been a huge failure so far. Why?

  • A serious disconnect with demand: What are the needs of employers on the demand side of talent? Most candidates don’t. What’s more, it’s not the candidate’s fault at all. Because the employer is the stakeholder, it’s the employer’s responsibility to say what the needs are. As a result, what the applicant achieved was not what the employer wanted, and what the employer wanted the applicant did not achieve.
  • The person the candidate hired to train him or her is not in charge: the student pays the tuition, which is like hiring a teacher to train him or her, who doesn’t understand (or care about) the needs of his or her clients. Here, students are the demand side, teachers are the implementation side. The latter is responsible for figuring out the requirements, but the latter is also unclear.
  • Students themselves are also confused: students themselves are both the demander (the need for specific skills) and the enabler. But they don’t know what needs are.

The above three points are not the most serious, but the most serious ones are as follows:

  • Understand what the demand is, but do not know how to achieve: how to cultivate the talents that modern IT enterprises really need? In particular, how to cultivate actual combat ability? How to develop code literacy? How to cultivate the ability of collaboration and communication? How to cultivate learning ability? Even if they knew how to cultivate, how would they provide enough motivation for the students in the ivory tower, who are still far from being pushed to death? And even if students themselves knew what skills to learn, how would they know exactly how to start? What is the most efficient way to learn? How do you keep yourself motivated to learn?

These are the dismal realities of talent development/recruitment. In short, there is a huge gap between employers and students. Both are in a hurry, both are motivated, but there is no means. For example, Microsoft and Google, simply partnering with universities to get directly involved in undergraduate or master’s education to ensure that there are strong enough candidates at that time is indeed the fundamental solution to some extent, but the cost is too high for ordinary enterprises to afford, and the impact is too small.

All this may change radically in the next five years.

Switch: How to Change Things When Change Is Hard points out that seemingly difficult changes may be missing the point. Using extensive case studies and psychological research, the author eloquently points out the following keys to change:

  • The Inner Elephant: People who want to change must be motivated on an emotional level. There are certain ways to touch people’s emotions more than others.
  • Give clear, specific goals: Goals must not be vague. Ambiguous goals can be confusing and paralyze decision-making. For example, recently our group is recruiting interns. I posted a recruitment message on Weibo, which mentioned “solid” basic knowledge of the system. Some students wrote to ask how to call it “solid”. I was dumbfounded. Bill Gates is known for his clarity of purpose, not only in strategy, “everyone has a PC on their desk”, but also in hiring — “If you read TAOCP, send me your resume”. What a clear, unambiguous goal — albeit a bit high, which is probably why Bill Gates hasn’t been inundated with applications yet 🙂
  • Clear the way: People are lazy and will not move forward if they have an excuse. If you have a clear goal, and the road points straight to it, you can see everything in front of you, and just wait for you to move on, there is no excuse to move on.

So let’s look up here. What can we do?

First of all, the inner elephant doesn’t need to be touched. There are enough people in China who start worrying about employment early enough, but just don’t know where to put their efforts. If these people put their energy into the right things, they may be enough to satisfy the talent hunger of IT enterprises. As for other people, well, maybe they’ll be touched when the people around them start moving.

Then there are clear, unambiguous goals. The best part is the emphasis on practical experience and teamwork, and the worst part is the vaguest requirement for basic knowledge and skills: “XX language proficiency”, “solid skills of XX”, “familiar with XX technology”, and even look to feel the most quantitative description of “X years experience in YY” actually is not that how much thing, in terms of the amount of information is not as good as my door market on a sell butter cake shops in banners – “three days not hard, at least six layers!” .

Many of you may have noticed that employers are becoming more flexible in their resume requirements. ThoughtWorks, for example, expects employers to send their blog addresses when hiring people. Blogging is probably more important to the IT industry than any other industry. A tech blog built up over the years speaks louder than any resume. Guo Anding from Taiwan also asked why writing a tech blog is so important for newcomers. Unfortunately, there is a downside to this approach: Not all tech-savvy people blog. Some are just do-nothing types, and even if you’re blogging, or even if you’ve been doing it for a while, it’s harder than you think to write (say) well than it is to do well. So this filter doesn’t work a lot of the time.

But it does suggest a way to think about looking for more discriminating filters, and what makes Stackoverflow Careers 2.0 so powerful It is because Joel Spolsky and Jeff Atwood, two veteran bloggers who have been working in the community for a long time, have creatively condensed the history of a person’s activities in the community into a series of quantitative values, which are highly discriminating due to the long history. The problem with this is that it can be quite time consuming for a candidate, and not always time spent (answering questions on Stackoverflow) is spent to the point.

What are the characteristics that are both universal and effective in distinguishing high and low candidates? This feature must not be as difficult to implement as blogging, but must be sufficiently differentiated.

Some places require you to fill out your resume with the technical websites you visit. Well, nice try, but differentiation is still not enough, because of the Internet site to check something, after all, only a few sources of most seniors at present stage, especially when we consider more is this year’s applicants of systematic knowledge base, online things although rich, but belongs to the class, and more trivial, what is more system source of knowledge? The answer to this question is well known

Book.

I always believe that, in many cases, reading a good book can make a qualitative difference to one’s improvement. Even if you don’t finish a good book or finish it just so-so, as long as the book is really good, it will certainly improve a lot. I often ask people in interviews what technical books they read, what websites they visit, and what blogs they subscribe to. Here the distinction is highest, especially in books. In addition, the difference between good books and bad books is, in essence, the difference in learning efficiency and overall direction. A bad book can waste half a year of your time, but a good book can give you a really solid foundation and a wide perspective. People often use “internal strength” to describe a solid foundation, think that after learning internal strength, you can learn anything quickly. In fact, it is true that a good “internal strength” book not only makes clear the profound principles, but also points out the essence of technology and depicts the map of the field. Good books grasp invariants and allow people to understand by analogy. Good books introduce not only knowledge, but principles, and those things which are invariable. Bad books waste time, but good ones save time.

Students in the ivory tower, limited by their vision, tend to choose books carelessly and get half the result with twice the effort. Bad books not only waste time, but also discourage people’s enthusiasm and make people fear knowledge and think it is difficult to master, but they do not know that the author has not spoken well (or translated well). Therefore, it’s a good idea for companies struggling with recruitment to come up with a list of 10 books they must read before hiring for a company. It doesn’t have to be different for every company. Influencers in a technology subfield, or founders, can define a representative list of books.

Let’s call this project the Booklist Project. It’s easy to see that the Booklist project has the following outstanding advantages:

  1. Clear and unambiguous. Completely measurable.
  2. Anti-counterfeiting: read not read, casual ask will know. And because candidates know it’s not like an internship, they’re afraid to mention it on their resume.
  3. Don’t care if it leaks: The book list is completely open. It doesn’t matter. You’re supposed to read it. Want to back the topic? An endorsement. If you can recite it, you’ve been watching it.
  4. Whether you read carefully or not, as long as you read, read, there will be a difference. It’s hard not to be attracted to a really good book. From what I’ve observed, a lot of people just don’t know what to read.
  5. There is no “how” barrier: everyone knows how to read — page by page.
  6. No need for the employer to put in the effort: here’s the list, it’s as simple as that.
  7. The burden of evaluation is transferred to the applicant’s body to a great extent: is it finished seriously, have experience, you weigh yourself. Don’t come to us until you’re done.

The booklist program can act as a strong discriminator to a large extent. If you read, you will learn. If you don’t read, you will not read. The difference between knowing and not knowing is fundamental. In fact, a lot of enterprise internal training, basically is not to ask employees to read books or materials that have not been read before. Finally, in addition to its role as a discriminator, it is a goal of clear promotion and is a completely effortless cultivation.

Behind the book program, of course, is the reality of another tragedy, if IT weren’t for the reality, this plan is completely unnecessary, that is, the requirements of China’s IT university education books to learn, and really need you to read books than not completely inadequate, is written is not good enough, or more of the tragedy is not used, So in this big background out of the cattle are their own tao books to learn. Xiong Li, a senior development and test engineer at Microsoft and the author of Windows User-mode Program Efficient Error Correction, said on his Weibo: “WHEN I graduated, I summed up a formula: the monthly salary of my first job = the sum of the price of all the technical books I bought during the four years in college.”

But a “book list” is not enough, because books can only deal with the basics, and what about some of the more difficult to measure practical “capabilities”? At least for now, there doesn’t seem to be a particularly good way out of practice. But can projects or big assignments done in the ivory tower really play a role in training? As mentioned above, students know that they will ultimately have to deliver not to their employers, but to their teachers, so they default to standards that teachers can judge, can teachers judge coding literacy? Code style? The document? Design? Collaboration? Even the famous Joel # 1 of Article 12, “Use source control system or not”, failed to pass. So most of the time, the big assignments are about zero.

But if all this is judged by the employer, the “assignment” is given by the employer, it is completely different. The thought of homework as part of your resume makes you nervous. You can’t do it right. Can we not learn something?

But can it be done? Can employers give students big assignments? Maybe one or two well-connected universities can, but what about so many students in China?

Why not? It is the students’ own problem if they are given a list of “recommended projects to try in school” in each technical field. Do, will naturally be able to exercise, when the interview will naturally get a greater advantage.

The question is, how will the interviewer evaluate it? Isn’t that just another cycle of unevaluation? The answer is simple, but it is only in the last few years that it has really become a reality

GitHub

GitHub launched in the spring of 2008 with 46,000 public projects in its first year, and about a year and a half later it had 100,000 users. By September, GitHub had gained millions of users. Host over 2 million projects.

It’s growing too fast! It’s like Twitter. This insane growth can only be explained by the fact that people have been waiting too long for this product.

Social Coding.

Real projects, real processes, real names, review, check-in, test, build, document, even discussion, planning, brianstorming, flow, everything, are all part of the project history, and can be replicated like a chess game. With a quick glance at someone’s GitHub history and a few check-ins, an experienced interviewer can quickly determine if this person meets his or her requirements. You don’t have to think hard, you don’t have to observe, you don’t have to guess, you don’t have to spend a lot of time sampling a very limited number of points.

It’s not like the ivory tower, there’s source code management, there’s automated builds, there’s check-ins, there’s reviews, there’s division of labor, there’s collaboration, and most importantly — it’s a marketplace, a marketplace beyond the ivory tower, where great people are attracted to each other, and you can find people on the Internet who have the same interests as you. Do something real, rather than cross the job, without being confined to a small class of dozens of people. Here Comes Everybody.

Why am I so confident? Because it’s already happening. This idea is not original to me at all.

As with so many things, what happens at home these days is often history on the American side. In mid-July, Github is Your New Resume, wrote a blog post by the head of an engineering firm in New York. Point out a surprising but perfectly reasonable fact: More and more IT companies are asking for GitHub accounts when hiring. Someone has even written a tool for GitHub that automatically generates resumes based on GitHub history.

When you think about it, it makes more sense than StackOverflow’s history being a resume, and GitHub’s history being a better resume: You want to have hands-on experience, you want to know about check-in, you want to know about review, you want to know about test and the importance of code quality, you want to know about communication and communication, and you should be practicing all of these things in a real project, and you can do all of these things now. As Teacher Zou Xin said, your job is the best interview.

This would have been impossible a few years ago, because we didn’t have GitHub. Just as many things would not be possible without Twitter and Weibo, you have the power of thousands of people, and you cannot move an entire community without a proper fulcrum. The organization of the unorganized has a powerful leverage effect.

The only thing I’m suggesting in this case is: Under the current situation in China, the frustrated employer should take the initiative and give some suggested projects. Just like the book list plan mentioned above, the employer only needs to give guidance and clear goals, and the job applicants will naturally complete the rest. These projects can be experimental projects. Also can be completely can make some money project (if you do), the only indispensable premise is that project could not be too small, a single project will be finished not ideal, one or two months to finish the project is not ideal, the best is large enough to can exercise to every aspect, slant a bit bigger is indifferent, Because an unfinished project is a perfect resume. Of course, it is to be expected that when the time comes, students will not be satisfied with just doing projects that have already been done by many others. So the project that companies suggested at the beginning was just a Nudge, a bit of initial momentum needed before it snowballed. They’ll do the rest on their own.

The GitHub project also has some obvious, even irreplaceable, benefits:

  1. Clear, unambiguous, and completely measurable.
  2. Anti-counterfeiting: also do not worry about “leakage”. You can’t forge a GitHub history, you can’t forge a Check-in history, review comments, documents, exchanges…
  3. It’s not just about recruiting, it’s also about nurturing. Good is good.
  4. The responsibility for evaluation is largely left to the candidates themselves.

From the start of your GitHub journey, you’ve got your foot in the door of a real business, and the interviews have already begun.

Book list +GitHub is equivalent to a two-year interview.

Few interviews are more informative than one that lasts two years.

The book list, along with the project, has almost covered all the skills required. Best of all, too many people are waiting for a clear signal from their prospective employer that they want to invest their energy, learn and practice, and become the person the organization needs, but they just don’t know where to go. So, for many, the clarity of the employer’s requirements can be a relief: “I finally know what to do.” Why is Beauty of Programming such a bestseller? Because it reveals what the employer sees as a need, a specific, clear need that can be achieved and knows how to achieve it.

There’s no better job interview than interviewing and grooming potential candidates two years in advance, requiring no effort on your part, and making them happy.

Think how surprised and justified it will be for unsophisticated companies to see you pull out your GitHub account.

And all because of two small changes:

  1. The demander (employer) has given clear and explicit goals.
  2. GitHub.

So, where do schools/teachers fit into this? I honestly don’t know. No industry is as special as IT: nothing can (or should) be learned on the Internet. The power of self-organization is completely superior to traditional methods of education. Besides, now that the employers are taking the lead, I don’t know what the middle developers are about. (Note: This is software development, not computer science research, which is a different story.)

So will this change happen? How soon will that happen? Of course, it’s already happening abroad, so asking the question is somewhat boring. But I still expect it to happen in China very soon, after all, isn’t there already a request for blogs and websites that people visit regularly? Maybe 5 years or so (median of 4 years undergraduate and 6 years master’s?). ) will profoundly change the entire talent development/recruitment landscape. Of course, I’m no prophet, so don’t take my time estimates seriously. I’m sure this is the way it’s going to be.

Just now, I received an invitation from a student to answer a question on Zhihu: “What is the first principle of job hunting? “The answer, of course, is” Find out what the employer wants “.


Here are the 10 books I believe you must read before you get a job interview with Microsoft:

  1. Code: The Hidden Language of Computer Hardware and Software
  2. Computer Systems: A Programmer’s Perspective (” Understanding Computer Systems “)/Windows VIA C/C++
  3. Code Complete 2 (The Pragmatic Programmer, as I call it)
  4. Pearls (天 然 Pearls)/Algorithms/Algorithm Design
  5. The C Programming Language
  6. The C++ Programming Language / Programming: Principles and Practice Using C++ / Accelerated C++
  7. The Structure and Interpretation of Computer Programs
  8. Clean Code / Implementation Patterns
  9. Design Patterns (Design Patterns)/Agile Software Development, Principles, Patterns, and Practices
  10. Refactoring

You can read them all. Trust me, there’s plenty of time. 2. Reading these books doesn’t mean reading from page one to page one — you can do that, too. For smart and efficient reading, see my previous post on how to read and find/identify books/materials.)

Note: These are the 10 books I personally believe you must read before interviewing for a development position at Microsoft. They do not represent the views of my employer. It is also only a preliminary reading list, which will certainly be limited by my personal experience and vision. Comments are welcome.

Also, must-read lists for different subfields of IT can vary a lot, so I sent this post to a few friends before Posting and they came up with their own reading lists (can you see any interesting similarities?) :

Yun Feng (Chinese game programming pioneer, former senior programmer of netease Game Department, founder of Jian Yue) :

For an interview, I would pick the following books that I have read myself and ask the person to choose the parts that he has also read to understand his understanding of these books. These books are essentially two categories of understanding of what you’re dealing with, whether it’s the programming language, the operating system, or the underlying infrastructure. And another: understanding of design ideas and principles:

  1. C++ programming ideas
  2. Effective C++
  3. Explore the C++ object model in depth
  4. C++ language design and evolution
  5. C expert programming
  6. C Pitfalls and defects
  7. C language interface and implementation
  8. Lua programming
  9. Linkers and Loaders
  10. COM essentialism
  11. Windows Core Programming
  12. In-depth analysis of the Windows operating system
  13. The way of programmer training
  14. The code of
  15. UNIX Programming art
  16. Design patterns
  17. Code optimization: Efficient use of memory
  18. Deep understanding of computer systems
  19. Deep understanding of the LINUX kernel
  20. TCP/IP, rounding

Feng Dahui (CTO of Ding Xiang Yuan, founder of Beta Coffee) :

  1. Software capriccio
  2. Hackers and Painters
  3. again
  4. UNIX Programming art
  5. Programming life

Hong Qiangning (Douban Technical Director) :

Here’s a list of the top10 on StackOverflow’s must-read list for programmers. See more here.

  1. Code Complete 2
  2. Mythical Man-month for The women of my generation
  3. Code: The Hidden Language of Computer Hardware and Software
  4. TAOCP (not explained)
  5. The Pragmatic Programmer
  6. Design Patterns
  7. The Structure and Interpretation of Computer Programs
  8. Refactoring
  9. The C Programming Language
  10. Introduction to Algorithms

Zheng Yun (Vice President of R&D of Wowo Tuan) :

  1. Introduction to Engineers:
    1. Code Complete 2
    2. The way of programmer training
    3. Deep understanding of computer systems
  2. Engineer upgrade:
    1. Design patterns
    2. Refactoring – Improving the design of existing code
  3. Engineer Transformation:
    1. Rapid software development – effective control and completion of schedule
    2. One month myth
    3. IT project management stuff
    4. Software capriccio
    5. The deadline for
    6. Out of the software workshop
    7. Are your lights on? — Identify the real problem

Zhang Zheng (Vice President of Microsoft Research Asia) :

  1. Algorithms (by Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani)
  2. Data Structure and Algorithms
  3. The C Programming Language
  4. The Design of the UNIX Operating System
  5. Ilers (Dragon Book)
  6. Computer Architecture: A Quantitative Approach
  7. Flow
  8. Outliers (why hard work and luck are both important)

Zou Xin (Chief R&D Manager of MSRA Innovation Engineering Center) :

Books about innovation (book.douban.com/doulist/125…). :

  1. The Myths of Innovation
  2. The Innovator’s was
  3. The Innovator’s Solution
  4. Crossing the Chasm
  5. Inside Intuit
  6. Akio morita,
  7. The autobiography of Jack Welch
  8. Dream broken code
  9. Innovation
  10. At the top of the wave

A blog post on mastery, The Opposite of Skill: Rubik’s Cube and Imitation:

www.cnblogs.com/xinz/archiv…

In my modern Software Engineering class, in addition to the textbook, each student reads another related book and writes a reading analysis. This blog has some student book reports: www.cnblogs.com/OMG-Team/ar…


Reading good books is so important, because good books often lead you to better books and a bigger world.