软件开发者路线图

软件开发者路线图 (豆瓣)

我不会告诉你这本书讲了如何应对“国民党反动统治”。

和其他笔记不同的是,这篇有更大比例的 remix1

Oreilly 公司的书中配套的代码你可以使用无需许可。将大量代码合并到你的产品文档中则需要获取许可,

空杯心态2

系上“白色腰带”。

入门语言

走过漫漫长路

准确的自我评估

恒久学习

安排你的课程

结束语

回顾模式列表

A Different Road

You have discovered that the direction you want to go is different from the path toward software craftsmanship.

Be the Worst

Your learning has decelerated as you’ve quickly surpassed everyone around you.

Breakable Toys

You work in an environment that does not allow for failure, yet you need a safe place to learn.

Concrete Skills

You want to work on a great development team, yet you have very little practical experience.

Confront Your Ignorance

You have discovered wide gaps in your knowledge, and your work requires that you understand these topics.

Craft over Art
You need to deliver a solution for your customer, and you can choose from a simpler, proven solution or take the opportunity to create something novel and fantastic.
Create Feedback Loops

You can’t tell if you’re suffering from “unconscious incompetence.”

Dig Deeper

You have only superficial knowledge of many tools, technologies, and techniques and keep hitting roadblocks as you try to tackle tougher problems.

Draw Your Own Map

None of the career paths that your employer provides is a fit for you.

Expand Your Bandwidth

Your understanding of software development is narrow and focused only on the low-level details of what you’ve worked on in your day job.

Expose Your Ignorance

You have discovered wide gaps in your knowledge and are afraid that people will think that you don’t know what you’re doing.

Familiar Tools

You are finding it difficult to estimate your work because your toolset and technology stack are changing so rapidly.

Find Mentors

You find that you’re spending a lot of time reinventing wheels and hitting roadblocks, but you aren’t sure where to turn for guidance.

Kindred Spirits

You find yourself stranded without mentors and in an atmosphere that seems at odds with your aspirations.

Learn How You Fail

Your learning skills have enhanced your successes, but your failures and weaknesses remain.

Nurture Your Passion

You work in an environment that stifles your passion for the craft.

Practice, Practice, Practice

The performance of your daily programming activities does not give you room to learn by making mistakes.

Read Constantly

There seems to be an endless stream of deeper and more fundamental concepts that are eluding you despite your quickly acquired proficiency.

Reading List

The number of books you need to read is increasing faster than you can read them.

Record What You Learn

You learn the same lessons again and again, but they never seem to stick.

Reflect as You Work

As the number of years and projects you have under your belt increases, you find yourself awaiting the epiphany that will magically make you“experienced.”

Retreat into Competence

You feel overwhelmed as you are faced with the vast reaches of your ignorance.

Rubbing Elbows

You have the feeling that there are superior techniques and approaches to the craft that are eluding you.

Share What You Learn

You are frustrated that the people around you are not learning as quickly as you are.

Stay in the Trenches

You have been offered a promotion into a role that will pull you away from programming.

Study the Classics

The experienced people around you are constantly referencing concepts from books that they assume you have read.

Sustainable Motivations

You find yourself working in the frustrating world of ambiguously specified projects for customers with shifting and conflicting demands.

Sweep the Floor

You are an inexperienced developer and need to earn your team’s trust.

The Deep End

You’re beginning to fear that your career is not resting on a plateau, but is in fact stuck in a rut.

The Long Road

You aspire to become a master software craftsman, yet your aspiration conflicts with what people expect from you.

The White Belt

You are struggling to learn, because the experience you have seems to have somehow made it harder to acquire new skills.

Unleash Your Enthusiasm

You find yourself holding back your excitement and curiosity about software development in order to fit in with your team.

Use the Source

How do you find out if your work is any good given that those around you may not have the ability to tell good code from bad?

Use Your Title

When you introduce yourself in a professional setting, you feel you have to apologize or explain away the difference between your skill level and your job description.

Your First Language

You are familiar with a few languages, but lack fluency in any of them.


  1. 因为 PDF 不能拷贝啊……

  2. 有点类似张五常的“假设大师是对的”。