# 介绍

这些年在微博上回答和总结了不少关于程序员工作方面的问题，也获得了一些朋友的认可。随着总结内容的不断增多，有个疑惑在我心中逐渐增长：为什么这些事情之前没人告诉我？

后来我发现，虽然每个具体问题最终都能找到完整的、可参考的资料，但是这些问题并不能简单的归类为一个具体的类别，而是在程序员职业发展的过程中逐渐显现的，包含了各种类型的，难以被简单总结和归纳的一系列问题的合集。

在程序员成长过程中，每个阶段都会被赋予不同的角色，这些角色之间虽然有联系，也会有区别。例如，一个开发能力非常强的程序员，在他负责一个大型项目的时候，一部分精力实际上变为了管理者的角色；或者，当他去推广某个组件时，实际的角色是布道师。

大多数书籍或者文章都会专注在某个角色（比如“java开发者”）之上，而当角色发生转变，尤其是隐性转变的时候，就会发现过往的很多知识和技巧突然就不再适用了。程序员很容易发现不同编程语言和技术栈之间的区别，但是却往往容易忽视不同角色之间的技能鸿沟，很多时候，不同角色之间的区别会被淡化，最终会被归结于“人的能力”。但是假如能以新角色的视角审视问题，就会发现绝大部分的问题实际上都是简单到不能再简单的基础问题，之所以不断踩坑，只是因为自己没有察觉到角色已经发生改变了。

这促使我想做点什么，能够帮助自己和更多的程序员们避免在这些简单问题上持续的踩坑，因此就有了这本书。我希望能总结出程序员成长发展过程中面临的不同角色，以及作为这个角色，应该具备的基本知识和能力。

写下这篇介绍的时候，《成为程序员》这本书里还没有什么具体内容。按照我一贯的想法，我希望最终呈现的是一些有点意思，同时也能让人有点收获的东西，而不是完全的知识输出。这本书大概会以我自己的成长经历为基础，识别和总结出不同阶段的角色，再给出这个角色应该具备的基础能力和后续发展方向。

我希望它最终能够成为程序员职业发展的某种“索引”，本身不需要过多的篇幅，但是能够给人足够清晰的脉络。

本书的在线阅读地址为：<https://become-a-programmer.2baxb.me> ，由于个人的能力和视野有限，书中内容难免出现主观或客观错误，希望大家不吝指正。

同时由于精力有限，这本书目前采取不定期更新的方式编写，源码会在<https://github.com/qdaxb/become-a-programmer>同步，根据反馈来决定后续更新的频率，如果你觉着内容还不错，欢迎留下star。

让我们开始成为程序员吧。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://become-a-programmer.2baxb.me/xu/intro.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
