├── .gitignore ├── .readthedocs.yaml ├── LICENSE.md ├── README.md ├── book.json ├── build.sh ├── cursor-large-project-tips.md ├── docs ├── ads.txt ├── assets │ ├── images │ │ ├── chapter1 │ │ │ ├── 996.jpg │ │ │ ├── balance.jpg │ │ │ ├── balding-programmer.jpeg │ │ │ ├── career-confusion.jpg │ │ │ ├── office-social.jpg │ │ │ ├── programmer-daily.jpg │ │ │ ├── relax.jpg │ │ │ ├── rocket-launch.jpeg │ │ │ └── work-meaning.jpg │ │ ├── chapter2 │ │ │ ├── ai-coding.jpg │ │ │ ├── art-of-asking.jpg │ │ │ ├── burnout.jpg │ │ │ ├── career-choice.jpg │ │ │ ├── debugging-panic.png │ │ │ ├── face-conflict.jpg │ │ │ ├── fear-conflict.jpg │ │ │ ├── ie-goodbye.jpeg │ │ │ ├── panic-frog.png │ │ │ ├── practice.jpg │ │ │ ├── programmer-evolution.png │ │ │ ├── right-way.jpg │ │ │ ├── self-friction.jpg │ │ │ ├── sixiangxian.jpg │ │ │ ├── star.jpg │ │ │ ├── take-action.jpg │ │ │ ├── tired-of-coding.jpg │ │ │ ├── workplace-pua.jpg │ │ │ └── zongfenzong.jpg │ │ ├── chapter3 │ │ │ ├── 1on1-meeting.jpg │ │ │ ├── colleague-relationship.png │ │ │ ├── give-advice.jpg │ │ │ ├── involution.jpg │ │ │ ├── promotion.jpg │ │ │ └── workplace-pressure.jpg │ │ ├── chapter4 │ │ │ ├── emotion.png │ │ │ ├── family-support.png │ │ │ └── relationship.jpg │ │ ├── chapter5 │ │ │ ├── gap.png │ │ │ ├── mindset.jpeg │ │ │ ├── not-work.png │ │ │ └── programmer-side-job.png │ │ ├── icon.jpg │ │ ├── icon.png │ │ ├── qrcode.jpg │ │ ├── self-consistent-programmer.png │ │ └── xingqiu.jpg │ └── js │ │ └── analytics.js ├── chapter1 │ ├── index.md │ ├── section1.md │ ├── section2.md │ ├── section3.md │ └── section4.md ├── chapter2 │ ├── index.md │ ├── section1.md │ ├── section10.md │ ├── section11.md │ ├── section12.md │ ├── section13.md │ ├── section2.md │ ├── section3.md │ ├── section4.md │ ├── section5.md │ ├── section6.md │ ├── section7.md │ ├── section8.md │ └── section9.md ├── chapter3 │ ├── index.md │ ├── section1.md │ ├── section2.md │ ├── section3.md │ ├── section4.md │ ├── section5.md │ ├── section6.md │ └── section7.md ├── chapter4 │ ├── index.md │ ├── section1.md │ ├── section2.md │ ├── section3.md │ ├── section4.md │ └── section5.md ├── chapter5 │ ├── index.md │ ├── section1.md │ ├── section2.md │ ├── section3.md │ ├── section4.md │ └── section5.md ├── chapter6 │ ├── index.md │ ├── section1.md │ ├── section2.md │ └── section3.md ├── cookies.md ├── epilogue.md ├── hooks.py ├── index.md ├── overrides │ ├── main.html │ └── partials │ │ └── comments.html ├── pdf_template │ └── footer.html ├── preface │ └── index.md ├── privacy.md ├── robots.txt ├── stylesheets │ ├── extra.css │ └── pdf.css ├── terms.md └── urls.txt ├── mkdocs.yml ├── package-lock.json ├── package.json ├── requirements.txt ├── runtime.txt ├── vercel-build.sh └── vercel.json /.gitignore: -------------------------------------------------------------------------------- 1 | site/ 2 | venv/ 3 | .env 4 | __pycache__/ 5 | *.pyc 6 | .DS_Store 7 | .cursorrules 8 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | build: 4 | os: ubuntu-22.04 5 | tools: 6 | python: "3.11" 7 | jobs: 8 | post_create_environment: 9 | # 在环境创建后,确保所需的目录存在 10 | - mkdir -p docs/assets/images 11 | post_build: 12 | # 构建完成后,确保静态资源被复制到正确位置 13 | - cp -r docs/assets/images _readthedocs/html/assets/ 14 | 15 | mkdocs: 16 | configuration: mkdocs.yml 17 | 18 | python: 19 | install: 20 | - requirements: requirements.txt 21 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International 2 | 3 | This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. 4 | 5 | ## 您可以: 6 | - **共享** — 在任何媒介以任何形式复制、发行本作品 7 | - **演绎** — 修改、转换或以本作品为基础进行创作 8 | 9 | 只要你遵守许可协议条款,许可人就无法收回你的这些权利。 10 | 11 | ## 惟须遵守下列条件: 12 | - **署名** — 您必须给出适当的署名,提供指向本许可协议的链接,同时标明是否(对原始作品)作了修改。您可以用任何合理的方式来署名,但是不得以任何方式暗示许可人为您或您的使用背书。 13 | 14 | - **非商业性使用** — 您不得将本作品用于商业目的。 15 | 16 | - **相同方式共享** — 如果您再混合、转换或者基于本作品进行创作,您必须基于与原先许可协议相同的许可协议分发您贡献的作品。 17 | 18 | - **没有附加限制** — 您不得适用法律术语或者技术措施从而限制其他人做许可协议允许的事情。 19 | 20 | ## 声明: 21 | - 您不必因为公共领域的作品要素而遵守许可协议,或者您的使用被可适用的例外或限制所允许。 22 | - 不提供担保。许可协议可能不会给与您意图使用的所有许可。例如,其他权利比如形象权、隐私权或人格权可能限制您如何使用作品。 23 | 24 | 完整的许可协议:[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-nc-sa -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 自洽的程序员 2 | 3 | ## [在线阅读](https://www.dev-life.site/) 4 | 5 | 6 | ## 简介 7 | 8 | ### 这不是一本技术书 9 | 首先,这**不是**一本程序员的技术书籍,整本书不会提及任何一个技术词汇,这也不是一本教你如何规划职业生涯,如何在职场走个更远的书,虽然我相信大部分内容确实有助于在职场的发展。 10 | 11 | 但这本书的真正用意是想解决工作过程中碰到的**焦虑、倦怠、迷茫、抑郁**等情绪,聚焦于解决具体问题,通过改变认知将我们从负面情绪的泥淖中走出来,做到更坦然,真诚的面对自己的内心,成为一个自洽的程序员。 12 | 13 | 总而言之,这不是一本成功学的书,它不会教你如何赢,笔者本身也不是一个世俗意义上成功的人,而是一本帮你**梳理情绪,转变心境**的书。 14 | 15 | ### 关于情绪 16 | 为什么要从情绪这个角度出发呢?笔者相信,这个世界就是你自己内心的投射,而情绪,是一个人自洽程度的晴雨表。 17 | 18 | 我想再花点篇幅聊一下情绪: 19 | > 情绪并非是理智的对立面,他在人类进化几万年的时间里起到了非常重要的作用,但是在强调价值理性的现代工业社会里,情绪被大家当成了害群之马,仿佛有情绪就是不成熟,这种认知是很偏狭的。 20 | 21 | 即便是负面情绪,也并不全是负面的,他也有其正面积极的意义,负面情绪是**清醒剂**,他让你认清现实,提醒你是时候接受现实,或者做出改变。 22 | 23 | ### 书写的初衷 24 | 不过现实中,当我们有负面情绪时,往往陷入其中忽略了客观现实,关于这点无需自责,这是人性的弱点,每个人都会有这样的脆弱时刻,这时候,需要有一些外界的善意提醒或者建议,帮助我们理清负面情绪背后的逻辑,我希望,这本书在这个方向上能能发挥一点点这样的作用。 25 | 26 | ### 作者的态度 27 | 因为个人的局限性,这本书难免有其偏颇狭隘的地方,同时,笔者本身是一个**乐观的悲观主义者**,认为这个世界上有太多我们没法真正认清,没法改变的事情,个人力量在整个时代面前是非常渺小的。我们能做的就是尽量保持清醒,调整自己的心态,把幸福的定义从别人的期望里转到自己的内心感受上。 28 | 29 | > 就像那本著名的祷告词一样:上帝,请赐予我平静,去接受我无法改变的,给予我勇气,去改变我能改变的,赐我智慧,分辨两者的区别。 30 | 31 | 因为笔者是程序员,所以这本基于作者经验的书起名叫做《自洽的程序员》,但我相信书里面提到的很多问题都是有共性的,绝大部分打工人都可以从书里面找到共鸣。 32 | 33 | ## 目录 34 | 35 | * [前言](./docs/preface/index.md) 36 | * [第一章:建立你的工作哲学](./docs/chapter1/index.md) 37 | * [1.1 第一性原理思考工作](./docs/chapter1/section1.md) 38 | * [1.2 工作挣扎是常态](./docs/chapter1/section2.md) 39 | * [1.3 工作承载不了太多意义,但也不要陷入工作虚无主义](./docs/chapter1/section3.md) 40 | * [1.4 人,要过得自私且坦荡](./docs/chapter1/section4.md) 41 | * [第二章:工作方法论](./docs/chapter2/index.md) 42 | * [2.1 心态开放,你的职场第一课](./docs/chapter2/section1.md) 43 | * [2.2 下场去做,你的职场第二课](./docs/chapter2/section2.md) 44 | * [2.3 寻求帮助是项高级技能](./docs/chapter2/section3.md) 45 | * [2.4 害怕直面冲突,怎样才能支棱起来](./docs/chapter2/section4.md) 46 | * [2.5 如何面对职场PUA](./docs/chapter2/section5.md) 47 | * [2.6 内耗,是从拒绝沟通开始的](./docs/chapter2/section6.md) 48 | * [2.7 不喜欢编程,还要坚守程序员这个岗位吗](./docs/chapter2/section7.md) 49 | * [2.8 工作倦怠了吗,试试三叶草模型](./docs/chapter2/section8.md) 50 | * [2.9 天天用AI,以后自己不会写代码怎么办](./docs/chapter2/section9.md) 51 | * [2.10 职场中如何做选择](./docs/chapter2/section10.md) 52 | * [2.11 职场中最实用的三个思维模型](./docs/chapter2/section11.md) 53 | * [2.12 不会吹牛逼,述职/晋升总是吃亏怎么办?](./docs/chapter2/section12.md) 54 | * [2.13 程序员容易最忽略的几件重要的事](./docs/chapter2/section13.md) 55 | * [第三章:工作中的人际关系 ](./docs/chapter3/index.md) 56 | * [3.1 领导一对一(1on1)聊什么](./docs/chapter3/section1.md) 57 | * [3.2 领导让我提意见,我该怎么提](./docs/chapter3/section2.md) 58 | * [3.3 同事太优秀了,我嫉妒到想退休养猪](./docs/chapter3/section3.md) 59 | * [3.4 同事是傻逼,我有厌蠢症,实在受不了了](./docs/chapter3/section4.md) 60 | * [3.5 卷王太凶残,我要不要'反卷'?](./docs/chapter3/section5.md) 61 | * [3.6 我没有晋升不重要,但是他的晋升让我不爽](./docs/chapter3/section6.md) 62 | * [3.7 社恐人混职场是真难啊](./docs/chapter3/section7.md) 63 | * [第四章:工作与家庭](./docs/chapter4/index.md) 64 | * [4.1 好的伴侣可以帮你消化工作上的负面情绪](./docs/chapter4/section1.md) 65 | * [4.2 维系亲密关系最重要的一点](./docs/chapter4/section2.md) 66 | * [4.3 情绪稳定是个伪命题](./docs/chapter4/section3.md) 67 | * [4.4 伴侣老是抱怨,我该怎么办](./docs/chapter4/section4.md) 68 | * [4.5 婆媳关系真是男人的噩梦啊](./docs/chapter4/section5.md) 69 | * [第五章:程序员副业](./docs/chapter5/index.md) 70 | * [5.1 打工人做副业,要先学会转换思维模式](./docs/chapter5/section1.md) 71 | * [5.2 2025年程序员最值得做的副业](./docs/chapter5/section2.md) 72 | * [5.3 副业跑起来最重要的一点](./docs/chapter5/section3.md) 73 | * [5.4 副业中,如何克服畏难情绪](./docs/chapter5/section4.md) 74 | * [5.5 如何平衡主业和副业](./docs/chapter5/section5.md) 75 | * [第六章:只工作不上班](./docs/chapter6/index.md) 76 | * [6.1 我所接触到的程序员副业](./docs/chapter6/section1.md) 77 | * [6.2 gap 无罪,寻找属于你自己的pathless path](./docs/chapter6/section2.md) 78 | * [6.3 其实,不工作,也能活得很好](./docs/chapter6/section3.md) 79 | * [结语:成为一个自洽的程序员](./docs/epilogue.md) 80 | 81 | ## 关于作者 82 | 83 | 🎓 **2013-2016** 84 |     毕业于北大软件与微电子学院 85 | 86 | 💻 **2016-2024** 87 |     编码八年,混迹于国企,大厂,外企 88 | 89 | 🚀 **2025-至今** 90 |     独立开发/一人公司/只工作不上班(其实就是社会闲散人员) 91 | 92 | ### 公众号:辣条加辣 93 | 平时会分享一些职场、技术和个人成长的思考。 94 | 95 | ![公众号二维码](./docs/assets/images/qrcode.jpg) 96 | 97 | ### 个人博客:[https://dev-life.online/](https://dev-life.online/) 98 | 99 | --- 100 | 101 | ## 许可证 102 | 本书采用 [CC BY-NC-SA 4.0](LICENSE.md) 协议开源。 103 | -------------------------------------------------------------------------------- /book.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "自洽的程序员", 3 | "author": "pekingzcc", 4 | "description": "这是一本关于程序员职业生涯中的情绪管理与心理健康的书籍,帮助读者在工作中找到内心的平衡与自洽。", 5 | "language": "zh-hans", 6 | "structure": { 7 | "readme": "README.md" 8 | }, 9 | "plugins": [ 10 | "-sharing", 11 | "sharing-plus", 12 | "expandable-chapters", 13 | "search-pro", 14 | "copy-code-button", 15 | "back-to-top-button" 16 | ], 17 | "pluginsConfig": { 18 | "sharing": { 19 | "douban": true, 20 | "facebook": false, 21 | "google": false, 22 | "twitter": false, 23 | "weibo": true, 24 | "all": [ 25 | "douban", "weibo" 26 | ] 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | python3 -m pip install --upgrade pip 3 | python3 -m pip install -r requirements.txt 4 | python3 -m mkdocs build -f mkdocs.yml -d site -------------------------------------------------------------------------------- /cursor-large-project-tips.md: -------------------------------------------------------------------------------- 1 | # Cursor二次开发大型项目的实用技巧分享 2 | 3 | 最近这几个月,我用Cursor做了不少大型项目的二次开发,踩了不少坑,也总结出一些实用技巧。今天就跟大家聊聊,怎么用Cursor更高效地进行大型项目的二开。 4 | 5 | 说实话,一开始我也是直接丢代码给AI就开始问,结果常常陷入"AI看不懂项目结构"、"代码上下文丢失"的困境,经常是改一个地方,其他地方就炸了。后来慢慢摸索出一套方法,效率提高了不少,分享给同样在用Cursor的朋友们。 6 | 7 | ## 1. 先让AI熟悉代码,生成项目文档 8 | 9 | 这是最关键的一步。成熟项目通常有复杂的封装和分层,依赖关系错综复杂,如果不让AI先熟悉代码,它根本搞不清楚修改一处会影响哪些地方。 10 | 11 | 我的做法是:先让Cursor读代码,生成一份markdown文档,包括: 12 | 13 | ``` 14 | 请分析整个代码库,生成一份项目结构文档,包括: 15 | 1. 项目架构概览 16 | 2. 主要目录结构及其职责 17 | 3. 关键模块的依赖关系图 18 | 4. 核心类和接口的功能说明 19 | 5. 数据流向图 20 | 6. API接口清单 21 | 7. 常见的代码模式和约定 22 | ``` 23 | 24 | 记住,这份文档不是给人看的,是给AI自己看的!所以信息密度要高,尽量用列表、表格和简单流程图表示。文档生成后我甚至不怎么读,直接存起来下次用。 25 | 26 | 举个例子,我最近做的一个React+Node的AI 视频项目,让Cursor生成了一份30多页的项目文档,里面详细记录了前后端的结构、数据流、组件复用逻辑等。后面每次开发新功能,AI的准确率提高了至少50%。 27 | 28 | ## 2. 一个chat只开发一个功能 29 | 30 | 这点看似简单,但很多人(包括我自己)刚开始都犯这个错:一个chat里问东问西,改这改那。 31 | 32 | 正确的做法是: 33 | - 每开始一个新功能,就新建一个chat 34 | - chat开头就把第一步生成的项目文档作为context引入 35 | - 然后说明这次要开发的具体功能需求 36 | 37 | 比如: 38 | 39 | ``` 40 | 我现在要开发一个新功能:给商品添加批量导入功能。 41 | 以下是项目的结构文档,请先阅读以熟悉代码库: 42 | 43 | [粘贴前面生成的项目文档] 44 | ``` 45 | 46 | 这么做的好处是让AI专注在一个功能上,不会被其他无关上下文干扰,也避免了chat太长AI遗忘前面的内容。 47 | 48 | ## 3. 功能开发后总结成Guide文档 49 | 50 | 这是我踩坑后总结出来的宝贵经验:每次实现一个通用功能后,立即让AI总结经验。 51 | 52 | 比如我们刚实现了"给系统添加新接口"这个功能,开发完成后,我会让AI生成一个guide文档: 53 | 54 | ``` 55 | 请总结一下我们刚才添加新接口的过程,生成一个"如何添加新接口"的指南文档,包括: 56 | 1. 需要修改哪些文件 57 | 2. 代码结构和注意事项 58 | 3. 测试方法 59 | 4. 潜在的坑和解决方案 60 | ``` 61 | 62 | 同样,这个guide主要是给AI自己看的,下次再开发类似功能时直接引用这个guide即可。 63 | 64 | 比如说我们项目要增加一个导出PDF的功能,我直接把之前总结的"如何添加文件导出功能"的guide丢给AI,它几乎不需要什么额外指导就把功能实现了,连测试用例都写得很完善。 65 | 66 | ## 4. 持续维护和更新文档 67 | 68 | 文档不是一成不变的,项目在迭代,文档也要跟着更新。每次我们遇到困难,解决了一个复杂问题,都要让AI更新相关文档。 69 | 70 | 比如有次我们修改用户权限系统花了大半天,过程中发现不少坑,最后我让AI把这些坑和解决方案补充到了"权限系统指南"中: 71 | 72 | ``` 73 | 我们刚才解决了权限系统的几个问题,请将以下内容更新到权限系统指南文档中: 74 | 1. 修改角色权限时需要同步更新缓存 75 | 2. 权限检查顺序应该是:特殊权限 -> 角色权限 -> 默认权限 76 | 3. 前端权限组件需要处理异步加载状态 77 | ``` 78 | 79 | 看似多此一举,但这些"踩坑记录"往往是最宝贵的经验,下次遇到类似问题可以直接避开。 80 | 81 | ## 5. 迭代多了,开发效率飞升 82 | 83 | 文档积累到一定程度后,效果是惊人的。以前要写半天的功能,现在可能十几分钟就搞定了。 84 | 85 | 最近我们需要给系统增加一个数据导入功能,以前这种功能至少要一两天。但因为有了前面积累的各种guide,我直接把需求和相关guide丢给AI,开启YOLO模式(OpenAI的最新代码能力),然后去泡咖啡。回来一看,基本功能已经实现了,只需要再做些小调整。 86 | 87 | 真正体验到了"一边玩去,AI帮我写代码"的感觉。 88 | 89 | ## 实用小技巧 90 | 91 | 除了上面的主要方法,还有些小技巧分享一下: 92 | 93 | 1. **给文档分类**:随着项目推进,文档会越来越多,建议按功能模块分类存储 94 | 2. **定期"总文档"**:每隔一段时间,让AI重新生成一份总体项目文档,因为项目在不断迭代变化 95 | 3. **换个问法**:有时AI不理解你的意思,换种表达方式,或者给它更具体的例子 96 | 4. **保存成功案例**:特别成功的开发案例,把整个chat过程保存下来,作为以后的参考 97 | 98 | ## 总结 99 | 100 | 用好Cursor做大型项目开发,关键是让AI真正理解你的项目结构,并且积累项目特定的知识。 101 | 102 | 项目文档 + 功能guides + 不断更新 = 开发效率飞升 103 | 104 | 刚开始可能觉得麻烦,要生成这个文档那个guide的,但随着项目推进,你会发现这些前期投入带来的回报是指数级的。 105 | 106 | 最后,AI再强大也只是工具,真正的主导者还是我们程序员自己。希望这些经验对你有所帮助,有什么问题或者你自己摸索出的好方法,欢迎一起交流! -------------------------------------------------------------------------------- /docs/ads.txt: -------------------------------------------------------------------------------- 1 | google.com, pub-1287064704904877, DIRECT, f08c47fec0942fa0 -------------------------------------------------------------------------------- /docs/assets/images/chapter1/996.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/996.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter1/balance.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/balance.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter1/balding-programmer.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/balding-programmer.jpeg -------------------------------------------------------------------------------- /docs/assets/images/chapter1/career-confusion.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/career-confusion.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter1/office-social.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/office-social.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter1/programmer-daily.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/programmer-daily.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter1/relax.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/relax.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter1/rocket-launch.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/rocket-launch.jpeg -------------------------------------------------------------------------------- /docs/assets/images/chapter1/work-meaning.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter1/work-meaning.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/ai-coding.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/ai-coding.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/art-of-asking.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/art-of-asking.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/burnout.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/burnout.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/career-choice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/career-choice.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/debugging-panic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/debugging-panic.png -------------------------------------------------------------------------------- /docs/assets/images/chapter2/face-conflict.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/face-conflict.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/fear-conflict.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/fear-conflict.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/ie-goodbye.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/ie-goodbye.jpeg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/panic-frog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/panic-frog.png -------------------------------------------------------------------------------- /docs/assets/images/chapter2/practice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/practice.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/programmer-evolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/programmer-evolution.png -------------------------------------------------------------------------------- /docs/assets/images/chapter2/right-way.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/right-way.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/self-friction.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/self-friction.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/sixiangxian.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/sixiangxian.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/star.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/star.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/take-action.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/take-action.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/tired-of-coding.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/tired-of-coding.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/workplace-pua.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/workplace-pua.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter2/zongfenzong.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter2/zongfenzong.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter3/1on1-meeting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter3/1on1-meeting.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter3/colleague-relationship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter3/colleague-relationship.png -------------------------------------------------------------------------------- /docs/assets/images/chapter3/give-advice.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter3/give-advice.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter3/involution.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter3/involution.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter3/promotion.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter3/promotion.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter3/workplace-pressure.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter3/workplace-pressure.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter4/emotion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter4/emotion.png -------------------------------------------------------------------------------- /docs/assets/images/chapter4/family-support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter4/family-support.png -------------------------------------------------------------------------------- /docs/assets/images/chapter4/relationship.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter4/relationship.jpg -------------------------------------------------------------------------------- /docs/assets/images/chapter5/gap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter5/gap.png -------------------------------------------------------------------------------- /docs/assets/images/chapter5/mindset.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter5/mindset.jpeg -------------------------------------------------------------------------------- /docs/assets/images/chapter5/not-work.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter5/not-work.png -------------------------------------------------------------------------------- /docs/assets/images/chapter5/programmer-side-job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/chapter5/programmer-side-job.png -------------------------------------------------------------------------------- /docs/assets/images/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/icon.jpg -------------------------------------------------------------------------------- /docs/assets/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/icon.png -------------------------------------------------------------------------------- /docs/assets/images/qrcode.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/qrcode.jpg -------------------------------------------------------------------------------- /docs/assets/images/self-consistent-programmer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/self-consistent-programmer.png -------------------------------------------------------------------------------- /docs/assets/images/xingqiu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhangchenchen/self-consistent-coder/507d3aa661cb5a97e9d338663742778f86019e77/docs/assets/images/xingqiu.jpg -------------------------------------------------------------------------------- /docs/assets/js/analytics.js: -------------------------------------------------------------------------------- 1 | // Google Analytics 2 | window.dataLayer = window.dataLayer || []; 3 | function gtag(){dataLayer.push(arguments);} 4 | gtag('js', new Date()); 5 | gtag('config', 'G-Z0830M4X7R'); -------------------------------------------------------------------------------- /docs/chapter1/index.md: -------------------------------------------------------------------------------- 1 | # 第一章 建立你的工作哲学 2 | 3 | # 什么是工作哲学 4 | 5 | 工作哲学,本质上是一个人对工作的基本认知和价值判断体系。它不是空洞的说教,而是建立在个人经验和思考基础上的,关于"为什么工作"以及"如何工作"的系统性思考。 6 | 7 | ## 工作哲学可以由上到下分为三个维度 8 | 9 | ### 认知维度 10 | 工作哲学首先体现在对工作本质的理解上: 11 | 12 | - 工作在我们人生中的定位,我们如何通过工作跟社会链接 13 | - 对工作与生活关系的认识 14 | 15 | ### 价值维度 16 | 其次是对工作价值的判断: 17 | 18 | - 什么是我们值得追求的工作目标,薪资?能力?影响力? 19 | - 如何平衡个人价值和公司价值,尤其是双方冲突的时候如何平衡 20 | - 在工作中应该坚持什么,可以妥协什么 21 | 22 | ### 方法维度 23 | 最后是将认知和价值转化为行动指南: 24 | 25 | - 如何处理工作中的具体问题 26 | - 如何做出职业选择和决策 27 | - 如何平衡工作中的各种关系 28 | 29 | ## 为什么需要工作哲学 30 | 31 | 在当今快速变化的职场环境中,想清楚自己的工作哲学,或者起码不断的思考这些问题,对于个人来说意义重大,因为我们很容易陷入到工作的细节以及繁琐中,而忘记了自己出发的目的,忘记了工作的本质和意义。 32 | 33 | 工作哲学并不是一成不变的,一个刚入职的员工和一个工作了10年的员工,他们的工作哲学肯定是不同的,随着我们不断的成长,我们的工作哲学也应该不断开放和进化,它会随着我们的经历和成长不断调整和完善,但核心价值观则应保持相对稳定。这种平衡能够帮助我们在职业生涯中既保持定力,又不失灵活性。 34 | 35 | -------------------------------------------------------------------------------- /docs/chapter1/section1.md: -------------------------------------------------------------------------------- 1 | # 1.1 第一性原理思考工作 2 | 3 | ## 什么是第一性原理思考 4 | 5 | 第一性原理这个词儿,最早是亚里士多德提出来的。不过要不是马斯克天天挂在嘴边,这词儿可能现在还躺在哲学书的角落里吃灰呢。 6 | 7 | 说白了,第一性原理就是:不人云亦云,不轻信二手结论,而是从最基本的事实出发,重新思考问题。 8 | 9 | ### 来个栗子🌰 10 | 11 | 马斯克想造火箭的故事可能你们都听腻了,但这真的是个绝佳的例子: 12 | 13 | ![火箭发射](../assets/images/chapter1/rocket-launch.jpeg) 14 | 15 | 当所有人都在说"火箭太贵了,造不起"的时候,马斯克在想啥? 16 | - "等等,火箭到底是啥玩意儿?" 17 | - "造个火箭要多少铝合金、多少燃料?" 18 | - "这些原材料一共才多少钱?" 19 | - "为啥组装起来就贵了这么多?" 20 | 21 | 这就像我们写代码,与其复制Stack Overflow上的答案,不如想想这段代码到底要解决什么问题,从零开始写会是什么样。 22 | 23 | ## 为什么要用第一性原理思考工作 24 | 25 | 在职场里,我们经常被各种"你应该..."给包围了: 26 | 27 | - "你应该去大厂"(BAT是程序员的终极梦想?) 28 | - "你应该转管理"(技术大牛就该带团队?) 29 | - "你应该卷起来"(不卷就会被优化?) 30 | - "你应该35岁前达到P8"(为啥不是38岁?) 31 | - "你应该像隔壁老王一样努力"(老王也想像你一样清闲...) 32 | 33 | ![职场迷茫](../assets/images/chapter1/career-confusion.jpg) 34 | 35 | 这些"应该"是从哪来的? 36 | 37 | ### 1. 社会压力 38 | - 爸妈的期望:"你看隔壁家小明..." 39 | - 同学的压力:"他们都在大厂..." 40 | - 社会舆论:"35岁危机..." 41 | 42 | ### 2. 行业惯性 43 | - "前端必须会React" 44 | - "后端必须会分布式" 45 | - "全栈工程师才有前途" 46 | 47 | ### 3. 个人认知局限 48 | - "大家都这么做,我也这样吧" 49 | - "按老方法来准没错" 50 | - "不确定的事情最可怕" 51 | 52 | 但是,用第一性原理思考的话,最基本的问题其实是: 53 | **"我为什么要上班,为什么要写代码?"** 54 | 55 | ## 工作认知的演进 56 | 57 | ### 初入职场:简单粗暴 58 | 59 | 刚开始工作时,想法特别纯粹: 60 | 61 | - 赚钱,养活自己 62 | - 学技术,长经验 63 | - 独立,不啃老 64 | - 证明自己,我行的! 65 | 66 | #### 真实案例 67 | 小辣条(没错,就是我)刚毕业时: 68 | 69 | - "月薪过万就满足了" 70 | - "有免费零食的公司就是好公司" 71 | - "能学到技术就行" 72 | - "领导夸我代码写得好,开心!" 73 | 74 | 那会儿想法简单,就想着能糊口就行,这没啥不好,都是必经之路。 75 | 76 | ### 工作三五年后:开始怀疑人生 77 | 78 | 工作几年后,你可能会发现,代码写得越多,问题越多: 79 | 80 | - "我到底喜欢写代码吗?还是只是因为工资还不错?" 81 | - "为啥我天天加班改Bug,隔壁老王天天摸鱼还升职了?" 82 | - "这工作到底是我想要的,还是别人眼中的'好工作'?" 83 | - "35岁危机是真的假的?要不要转管理?" 84 | - "要不要跳槽?要不要创业?要不要躺平?" 85 | 86 | #### 典型困惑 87 | - "工资是涨了,但感觉越来越菜了" 88 | - "技术越学越深,但好像离产品越来越远" 89 | - "工作稳定,但无聊得想打瞌睡" 90 | - "收入可观,但头发越来越少" 91 | 92 | 这时候我们开始关注一些更深层次的问题: 93 | 94 | - "我还能卷几年?" 95 | - "要不要转行?" 96 | - "要不要考个公务员?" 97 | - "要不要回老家开个串串香?" 98 | 99 | ### 更成熟的阶段:开始看透 100 | 101 | 经过多年摸爬滚打,很多人会达到一个更通透的状态: 102 | 103 | - 不再焦虑要不要转管理(反正都是坑) 104 | - 不再纠结要不要进大厂(大厂也裁员) 105 | - 找到了自己的节奏(摸鱼和卷,都是人生的一部分) 106 | - 建立了自己的判断标准(老板开心不是最重要的,自己开心才是) 107 | 108 | ![秃头程序员](../assets/images/chapter1/balding-programmer.jpeg) 109 | 110 | #### 真实案例 111 | 辣条(还是我)十年工作感悟: 112 | 113 | - 从BAT离职后选择了小公司(钱少事少,生活质量高) 114 | - 拒绝了几个管理岗位(我还是喜欢写代码) 115 | - 有时间陪家人了(再也不用和老婆解释为什么要加班) 116 | - 开始做副业(加密货币搞起来) 117 | - 心态更佛系了(项目延期?延就延吧,天还没塌) 118 | 119 | ## 用第一性原理重新思考工作 120 | 121 | 让我们把所有的条条框框都扔掉,重新想想:工作到底是个啥玩意儿? 122 | 123 | ### 1. 工作是价值交换 124 | 就像API调用: 125 | 126 | - **Request**: 127 | - 时间(每天8小时,加班另算) 128 | - 技能(CRUD boy的自我修养) 129 | - 创意(产品经理的需求该怎么实现) 130 | - 体力(连续调试8小时的专注力) 131 | 132 | - **Response**: 133 | - 工资(房贷车贷的解药) 134 | - 经验(从Bug中学习) 135 | - 人脉(同事,未来的创业伙伴?) 136 | - 成就感(这个Bug终于改完了!) 137 | 138 | ### 2. 工作是成长的游戏 139 | - 技能树不断升级 140 | - 认知水平不断提升 141 | - 思维方式不断进化 142 | - 社交能力不断提高 143 | 144 | 就像玩RPG游戏,工作就是主线任务,但别忘了还有支线任务(副业)和休闲任务(生活)。 145 | 146 | ### 3. 工作是人生的一部分 147 | - 不是全部(还有老婆孩子热炕头) 148 | - 需要平衡(头发和工资不可兼得) 149 | - 要有边界(下班就是下班,工作群设置免打扰) 150 | 151 | ## 建立自己的工作观 152 | 153 | ### 1. 摆脱"应该"的束缚 154 | - 不是非要进大厂(小公司也能过得很滋润) 155 | - 不是非要当领导(技术专家也很香) 156 | - 找到自己的节奏(有人喜欢冲刺,有人喜欢马拉松) 157 | 158 | ### 2. 建立健康的工作边界 159 | - 该摸鱼时摸鱼 160 | - 该努力时努力 161 | - 该休息时休息 162 | 163 | ### 3. 保持进化和迭代 164 | - 定期反思和总结(就像代码要重构) 165 | - 及时调整方向(需求变了就要改方案) 166 | - 保持开放和学习(新框架要学,新语言要懂) 167 | 168 | ## 实践建议 169 | 170 | 1. **定期和自己对话** 171 | - 每月反思:这个月摸鱼摸得值得吗? 172 | - 记录心情,看见自己的情绪:今天改Bug改得想跳楼了吗? 173 | - 复盘得失:这个项目坑在哪里? 174 | 175 | 2. **建立评估框架** 176 | - 工作是否开心? 177 | - 技术是否进步? 178 | - 钱是否够花? 179 | 180 | 3. **及时做出调整** 181 | - 不爽就换(总有更适合的坑) 182 | - 相信直觉(心累就该走了) 183 | - 大胆尝试(最差也就是回去继续写CRUD) 184 | 185 | ## 最后的几句话 186 | 187 | 用第一性原理思考工作,不是为了否定现有的一切,而是帮助我们: 188 | 189 | - 看清本质(工作就是交换) 190 | - 建立标准(开心最重要) 191 | - 做出选择(人生苦短,及时止损) 192 | 193 | 笔者还想强调的是,你对工作的认知,会随着年龄和阅历不断变化,这很正常。关键是要经常问问自己:"我为什么要工作?" 只有时不时的思考下这个问题,才能在代码的细节以及工作的繁琐中偶尔抬起头来,看清现阶段的自己真正想要的是什么。 194 | 195 | 毕竟,人生苦短,代码要甜。🍬 196 | 197 | 198 | -------------------------------------------------------------------------------- /docs/chapter1/section2.md: -------------------------------------------------------------------------------- 1 | # 1.2 工作挣扎是常态 2 | 3 | ## 你今天挣扎了吗? 4 | 5 | "今天的需求改了三遍..." 6 | "这个bug改了一周还没解决..." 7 | "产品经理又改需求了..." 8 | "领导说要周末加班..." 9 | 10 | 如果你也经常发出这样的感叹,别担心,你不是一个人。每个程序员都在挣扎,只是有的人挣扎得比较优雅,有的人挣扎得比较狼狈而已。 11 | 12 | ### 程序员的日常挣扎 13 | 14 | ![程序员日常](../assets/images/chapter1/programmer-daily.jpg) 15 | 16 | #### 技术挣扎 17 | - "这个框架文档写得跟天书一样..." 18 | - "这代码是哪个祖宗写的?注释呢?" 19 | - "为啥我本地运行得好好的,一上线就炸了?" 20 | - "这bug到底是从哪来的?" 21 | 22 | #### 业务挣扎 23 | - "产品经理,我们能好好说话吗?" 24 | - "这需求真的有人用吗?" 25 | - "又改需求?要不你来写代码?" 26 | - "这个功能真的要这周上线?" 27 | 28 | #### 团队挣扎 29 | - "代码评审怎么又被挑刺了?" 30 | - "为啥我的代码总是被说不规范?" 31 | - "老王的代码我看不懂啊..." 32 | - "新来的同事水平有点差,带起来好累..." 33 | 34 | ## 为什么会挣扎? 35 | 36 | ### 1. 技术发展太快 37 | - 昨天的最佳实践,今天就成了反面教材 38 | - 刚学会Vue2,Vue3就出来了 39 | - 刚搞懂Redux,Mobx又火了 40 | - 刚入门Docker,k8s又来了 41 | 42 | 就像你刚买的iPhone 13,iPhone 14就发布了,这种感觉,懂的都懂... 43 | 44 | ### 2. 业务需求太飘 45 | 产品经理的日常语录: 46 | 47 | - "这个功能很简单,下班前能改完吧?" 48 | - "客户说要改一下,就改个小需求" 49 | - "这个需求很急,能不能今天就上线?" 50 | 51 | 每次听到"简单"这个词,内心都会咯噔一下。因为经验告诉我们,产品经理说的"简单",往往意味着通宵。 52 | 53 | ### 3. 人际关系太复杂 54 | 55 | ![办公室社交](../assets/images/chapter1/office-social.jpg) 56 | 57 | - 产品经理想要天马行空 58 | - 测试想要零缺陷 59 | - 运营想要快速上线 60 | - 老板想要降本增效 61 | - 我只想安静地写代码 62 | 63 | 这就像在玩一个多人在线游戏,每个人都想当C位,但最后背锅的往往是程序员... 64 | 65 | ## 挣扎的本质是什么? 66 | 67 | 其实仔细想想,工作中的挣扎无非是这么几种情况: 68 | 69 | ### 1. 能力与要求不匹配 70 | - 项目要求:精通分布式架构 71 | - 现实情况:熟练CRUD 72 | - 最终结果:天天加班还写不完 73 | 74 | ### 2. 期望与现实不匹配 75 | - 期望:心无旁骛写优雅的代码,改变世界 76 | - 现实:天天改bug,跟各个方向对需求 77 | - 结果:每天怀疑人生 78 | 79 | ### 3. 付出与回报不匹配 80 | - 付出:每天工作12小时 81 | - 回报:工资涨幅不及物价 82 | - 收获:头发越来越少 83 | 84 | ## 如何优雅地挣扎? 85 | 86 | ### 1. 调整心态 87 | - 把Bug当成送分题 88 | - 把加班当成充电 89 | - 把改需求当成锻炼 90 | - 把背锅当成历练 91 | 92 | (好吧,我知道这听起来很像"精神胜利法",但是真的有用!) 93 | 94 | ### 2. 提升能力,挣扎的越厉害,成长越快 95 | - 每天学习一个新技能 96 | - 遇到问题先自己解决 97 | - 做好复盘和总结 98 | - 建立知识体系 99 | 100 | ### 3. 建立护城河 101 | 102 | - 技术上: 103 | - 至少一个领域要精通 104 | - 至少一个方向要深入 105 | - 至少一个特长要突出 106 | 107 | - 软实力上: 108 | - 学会和产品经理谈判 109 | - 学会和测试讲道理 110 | - 学会和领导说不 111 | - 学会和同事互帮互助 112 | 113 | ## 挣扎中的成长 114 | 115 | ### 1. 技术成长 116 | - 从"这bug怎么改?"到"为什么会有这个bug?" 117 | - 从"这代码怎么写?"到"这代码该怎么设计?" 118 | - 从"复制粘贴"到"看源码找答案" 119 | 120 | ### 2. 思维成长 121 | - 从"完成任务"到"解决问题" 122 | - 从"写代码"到"写方案" 123 | - 从"改bug"到"防bug" 124 | 125 | ### 3. 职业成长 126 | - 从"被动接需求"到"主动提方案" 127 | - 从"只管写代码"到"参与决策" 128 | - 从"单打独斗"到"团队协作" 129 | 130 | ## 最后的几句话 131 | 132 | ![躺平时刻](../assets/images/chapter1/relax.jpg) 133 | 134 | 工作中的挣扎就像人生的必修课:不是你的错,但要你来解决。不是你能控制的,但要你来负责。不是你想要的,但要你来面对。 135 | 136 | 与其抱怨挣扎,不如把挣扎当成成长的机会。就像重构代码一样,挣扎的过程也是重构自己的过程。 137 | 138 | 最后的最后,挣扎是常态,但快乐也可以是!你无法控制工作的挣扎现实,但可以控制自己面对现实的心态。 139 | -------------------------------------------------------------------------------- /docs/chapter1/section3.md: -------------------------------------------------------------------------------- 1 | # 1.3 工作承载不了太多意义,但也不要陷入工作虚无主义 2 | 3 | ![工作的意义](../assets/images/chapter1/work-meaning.jpg) 4 | 5 | ## 关于工作的两个极端 6 | 7 | 最近在程序员群里,经常看到两种极端的声音: 8 | 9 | ### 极端1:工作就是生活的全部 10 | 11 | ![996福报](../assets/images/chapter1/996.jpg) 12 | 13 | - "不加班怎么能进步?" 14 | - "不卷怎么能成功?" 15 | - "工作就是生活的意义啊!" 16 | - "多干活才能有未来!" 17 | 18 | 这帮人把工作当成了人生的全部,仿佛不工作就活不下去了。每天加班到深夜,周末也在想工作,朋友圈全是技术文章... 19 | 20 | ### 极端2:工作就是浪费生命 21 | 22 | - "工作不就是为了赚钱吗?" 23 | - "反正都是给老板打工" 24 | - "上班就是浪费生命" 25 | - "能摸鱼就摸鱼" 26 | 27 | 这些人觉得工作毫无意义,上班就是在消耗生命,除了赚钱没有任何其他意义,恨不得立马辞职去流浪。 28 | 29 | ## 为什么会有这两种极端? 30 | 31 | ### 1. 社会压力 32 | - 房贷车贷的压力 33 | - 35岁危机的焦虑 34 | - 同龄人的对比 35 | - 父母的期望 36 | 37 | ### 2. 互联网的放大效应 38 | - 成功学的洗脑 39 | - 躺平学的诱惑 40 | - 各种极端观点的传播 41 | - 戾气的积累 42 | 43 | ### 3. 个人认知的局限,当然也是当下主流的工作伦理 44 | - 把工作等同于生活 45 | - 把工作努力等同于最高道德 46 | - 把收入等同于价值 47 | - 把职位等同于能力 48 | - 把忙碌等同于进步 49 | 50 | ## 工作到底承载了什么? 51 | 52 | ### 1. 最基本的:生存需求 53 | - 温饱(这是最基本的) 54 | - 房子(安身之所) 55 | - 车子(代步工具) 56 | - 医疗保险(以防万一) 57 | 58 | ### 2. 进阶的:成长需求 59 | - 技能提升 60 | - 视野拓展 61 | - 人脉积累 62 | - 经验沉淀 63 | 64 | ### 3. 更高层的:自我实现 65 | - 成就感 66 | - 价值认同 67 | - 社会贡献 68 | - 个人影响力 69 | 70 | ## 工作的真相是什么? 71 | 72 | ### 1. 工作既不是全部,也不是虚无 73 | - 它是生活的一部分,但不是全部 74 | - 它有它的价值,但不是唯一的价值 75 | - 它值得认真对待,但不要太较真 76 | - 它需要投入,但不是无限投入 77 | 78 | ### 2. 工作是一种平衡 79 | - 在理想和现实之间 80 | - 在付出和收获之间 81 | - 在个人和团队之间 82 | - 在工作和生活之间 83 | 84 | ### 3. 工作是一个过程 85 | - 不是终点,而是旅程 86 | - 不是结果,而是经历 87 | - 不是负担,而是选择 88 | - 不是束缚,而是机会 89 | 90 | ## 如何找到平衡? 91 | 92 | ![平衡之道](../assets/images/chapter1/balance.jpg) 93 | 94 | ### 1. 给工作一个合适的位置 95 | - 不要把它看得太重 96 | - 也不要把它看得太轻 97 | - 找到自己舒服的节奏 98 | - 保持健康的距离 99 | 100 | ### 2. 建立多元的生活 101 | - 工作之外要有爱好 102 | - 职场之外要有朋友 103 | - 技术之外要有兴趣 104 | - 收入之外要有追求 105 | 106 | ### 3. 保持清醒的认知 107 | - 知道自己要什么 108 | - 明白自己在做什么 109 | - 清楚自己能做什么 110 | - 了解自己该做什么 111 | 112 | ## 一些具体建议 113 | 114 | ### 1. 工作时间 115 | - 正常下班就走 116 | - 周末尽量不加班 117 | - 休假要好好休 118 | - 摸鱼要有度 119 | 120 | ### 2. 工作态度 121 | - 该认真时认真 122 | - 该放松时放松 123 | - 该拒绝时拒绝 124 | - 该妥协时妥协 125 | 126 | ### 3. 工作方法 127 | - 提高效率,而不是延长时间 128 | - 追求质量,而不是堆砌数量 129 | - 注重成长,而不是纯粹付出 130 | - 讲求方法,而不是蛮干 131 | 132 | ## 最后的几句话 133 | 134 | 工作就像人生的一个维度:它很重要,但不是唯一。它需要投入,但要有度。它值得认真,但别太执着。 135 | 136 | 工作是为了更好的生活,而不是让生活成为工作的附属品。 137 | 138 | 我们的目标是:认真工作,快乐生活。既不做工作的奴隶,也不做生活的逃兵。 139 | 140 | 最后,送大家一句话: 141 | 工作和生活就像代码和注释,缺一不可,但要比例适当。 142 | 143 | -------------------------------------------------------------------------------- /docs/chapter1/section4.md: -------------------------------------------------------------------------------- 1 | # 1.4 人,要过得自私且坦荡 2 | 3 | ## 自私的真正含义 4 | 5 | 自私,是指人要重视自己的感受与需求。从心理学上来讲,个人感受相当于一种针对外界环境的反馈机制: 6 | 7 | - **正反馈**:愉悦、轻松、幸福、积极的情绪 8 | - **负反馈**:悲伤、愤怒、恐惧、负面的情绪 9 | 10 | 我们从这种反馈机制中调和自己的心理机制,让它总体上处于一种和谐平衡的状态。而一旦我们忽略了自己的感受,忽略了这种反馈,就容易引起心理机制的失衡,产生各种心理问题。 11 | 12 | ## 情感需求的复杂性 13 | 14 | 也许有人说,这还不简单吗,我高兴还是悲伤我自己能不知道吗?其实不然,察觉到自己的情绪是容易的,但是洞悉自己的情感需求以及背后的真相却不是那么容易的。 15 | 16 | 举个例子: 17 | > 为什么明明渣男已经这么渣,背叛对方过多次,女方还是不离不弃?因为虽然女方遭受背叛后心理很悲伤,但是对于害怕这份感情的失去以及对对方侥幸的期冀,最终掩盖了这份悲伤。 18 | 19 | 这时负反馈没有得到正确的疏通解决,于是整个心理机制开始失衡,男方变本加厉,女方愈加纵容,在这条不平等的两性关系之路中越走越远。 20 | 21 | ## 自私与坦荡的平衡 22 | 23 | 任何事物都有两面,甚至三面,四面性。自私,也要注意度,这个度是什么呢,就是坦荡。 24 | 25 | 坦荡的表现: 26 | 1. 可以直面自己的感受 27 | 2. 坦诚地把感受说出来 28 | 3. 不憋着坏,不想着作奸犯科 29 | 4. 不侵害他人 30 | 31 | 如果心怀不轨,想着作奸犯科,侵害他人的事情,心态是绝不可能如此坦荡的。那必定是藏着掖着,眼神闪烁,即便是演戏骗过了别人,也骗不了自己的良心。 32 | 33 | 当然,君子论迹不论心,诱惑面前心态有了起伏,内心挣扎过后的平静,也是一种坦荡。 34 | 35 | ## 如何平衡自私与坦荡 36 | 37 | 让我们来看几个具体的工作场景案例: 38 | 39 | ### 案例1: 加班与工作边界 40 | 当领导临时要求加班时: 41 | - 自私的部分:评估自己的精力状态和个人安排 42 | - 坦荡的部分:直接沟通自己的情况,"今天确实有重要的私人安排,无法加班" 43 | - 平衡之道:提出替代方案,"我可以明天早点来完成,或者现在先理出重点任务" 44 | 45 | ### 案例2: 项目分工与任务分配 46 | 当同事想把困难的任务推给你时: 47 | - 自私的部分:考虑自己的能力范围和时间精力 48 | - 坦荡的部分:明确表达,"这个任务对我来说有难度,我担心无法很好完成" 49 | - 平衡之道:建议共同完成或寻求上级协调 50 | 51 | ### 案例3: 晋升与竞争 52 | 面对职位竞争时: 53 | - 自私的部分:积极展示自己的能力和成果 54 | - 坦荡的部分:不诋毁竞争对手,靠实力说话 55 | - 平衡之道:在竞争中保持专业性和道德底线 56 | 57 | ### 关键要点 58 | 1. 设立清晰的个人边界 59 | 2. 用专业和理性的方式表达 60 | 3. 在维护自身利益的同时不损害他人 61 | 4. 对自己的决定负责 62 | 63 | 真正的职场高手既不是一味地委曲求全,也不是蛮横无理,而是在自私与坦荡之间找到恰当的平衡点。这样既能维护自己的利益,也能赢得他人的尊重。 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /docs/chapter2/index.md: -------------------------------------------------------------------------------- 1 | # 第二章 工作方法论 2 | 3 | 在第一章中,我们建立了对工作的基本认知:接纳工作中的挣扎,理性看待工作的意义。但认知的提升并不能自动转化为问题的解决,我们还需要一套切实可行的方法论来指导具体实践。 4 | 5 | ## 为什么需要方法论 6 | 7 | 工作中的困扰往往表现为两个层面: 8 | 9 | - **情绪层面**:焦虑、压力、倦怠、困惑 10 | - **问题层面**:技术难题、项目瓶颈、团队协作、人际关系 11 | 12 | 这两个层面是相互影响的:情绪影响问题解决的效率,问题的堆积又加剧情绪的波动。 13 | 14 | 因此,我们需要一套系统的方法论来识别和处理负面情绪,提升问题解决能力,建立良性循环。 15 | 16 | ## 本章内容 17 | 18 | 在这一章中,我们将探讨: 19 | 20 | - 如何保持开放的心态,接纳新的可能 21 | - 如何在实践中提升认知,解决问题 22 | - 如何建立情绪管理机制 23 | - 如何提高工作效能 24 | 25 | 这些方法论不是空洞的理论,而是笔者源于自己实践的经验总结,也就是一个个坑踩过来的。他们有其共性的地方,也有其局限性,请自行斟酌。同时,方法论不是万能钥匙,而是一套思维工具,千万别生搬硬套,关键在于灵活运用,找到最适合自己的方式。 26 | -------------------------------------------------------------------------------- /docs/chapter2/section1.md: -------------------------------------------------------------------------------- 1 | # 2.1 心态开放,你的职场第一课 2 | 3 | 4 | ## 为什么心态开放这么重要? 5 | 6 | 还记得第一次接触新框架时的感觉吗?面对满屏的新概念,你可能像我一样,恨不得立刻关掉编辑器,躲回自己熟悉的"舒适窝"。这就像一只从来没见过大海的青蛙,突然被扔进了太平洋 —— 慌得不行。 7 | 8 | ![慌张的程序员青蛙:第一次接触新框架的我](../assets/images/chapter2/panic-frog.png) 9 | 10 | 但你知道吗?正是这种"慌得不行"的感觉,往往预示着我们遇到了成长的机会。 11 | 12 | 13 | ### 固定型思维 vs 成长型思维 14 | 15 | 说到思维模式,不得不提心理学家德韦克提出的这两种类型: 16 | 17 | **固定型思维的小伙伴们是这样的:** 18 | - "这个新框架太难了,我学不会的" 19 | - "我就是个后端程序员,前端的事情碰都不想碰" 20 | - "我写了十年Java,改不了这个习惯了" 21 | - "新技术?等别人踩完坑再说吧" 22 | 23 | 听起来是不是特别耳熟?这就像一只固执的鸵鸟,遇到挑战就把头埋在沙子里,心想:"看不见就不存在"。 24 | 25 | **而成长型思维的小伙伴则是这样的:** 26 | - "虽然看不懂,但是好像挺有意思的" 27 | - "多学一样技能,多一条路" 28 | - "试试看呗,大不了就是报错" 29 | - "踩坑也是一种经验啊" 30 | 31 | 这就像一只好奇的猫咪,看到什么新东西都想去拨弄两下,说不定就发现了新大陆。 32 | 33 | ### 为什么说心态开放是第一课? 34 | 35 | 想象一下,如果你是一个杯子: 36 | 37 | - 固定型思维就像一个已经装满水的杯子,新的东西都装不进去 38 | - 成长型思维则像一个空杯子,随时准备接纳新的知识 39 | 40 | 在职场中,技术更新得比你手机系统还快。今天你精通的技术,明天可能就变成"传统艺能"了。如果不保持开放的心态: 41 | 42 | - 新技术学不进 43 | - 新方法用不上 44 | - 新机会抓不住 45 | - 新发展看不到 46 | 47 | 就像那句老话:"`SELECT * FROM world WHERE 心态 = '开放'`"——好吧,这是我编的,但你懂我意思。 48 | 49 | ## 如何培养开放的心态? 50 | 51 | ### 1. 拥抱"不懂" 52 | 53 | 54 | 记得我刚转行做程序员时,遇到不懂的东西特别害怕被人发现,问问题之前要先憋上半天,搜索一堆资料,生怕被人说"连这都不知道"。 55 | 56 | ![程序员看着满屏报错](../assets/images/chapter2/debugging-panic.png) 57 | 58 | 现在想想,这就像公共场合突然想放屁一样,憋得自己难受,还要装作若无其事一样不让人看出来。其实,承认"不懂"一点都不丢人,丢人的是:不懂装懂(这是最容易被戳穿的),不懂不学(这是最快掉队的),不懂不问(这是最耽误事的)。 59 | 60 | ### 2. 学会"归零" 61 | 62 | 每隔一段时间,我们都需要给自己"格式化"一下: 63 | 64 | - 清空已有的经验偏见 65 | - 重新审视工作方式 66 | - 思考是否有更好的解决方案 67 | 68 | 就像我们的电脑一样,时不时需要重启一下,清清缓存,更新更新系统。不然,你可能还在用IE浏览器,坚持认为这是最好的选择。 69 | 70 | ![IE浏览器告别:有些经验该说再见了](../assets/images/chapter2/ie-goodbye.jpeg) 71 | 72 | ### 3. 保持好奇心 73 | 74 | 好奇心就像是我们的"技能点",需要不断投入: 75 | 76 | - 看到新技术,先想想"这个有意思" 77 | - 遇到新方法,试着问问"为什么" 78 | - 碰到新工具,琢磨着"怎么用" 79 | 80 | 记得有个同事说过:"我不是天才,但我有一颗八卦的心。"没错,职场进步有时候就靠这种"八卦"精神。 81 | 82 | ### 4. 建立"试错"机制 83 | 84 | 85 | 很多人不敢尝试新东西,是因为害怕犯错。但是,你想啊: 86 | 87 | - 测试环境不就是用来犯错的吗? 88 | - Code Review不就是用来发现问题的吗? 89 | - 版本控制不就是用来后悔的吗? 90 | 91 | 把"试错"当作学习的一部分,就像打游戏一样,死几次才能熟悉地图,这很正常。 92 | 93 | ## 开放心态的实践建议 94 | 95 | ### 1. 从小事开始 96 | 不要一上来就要啃最难的骨头,可以: 97 | 98 | - 今天试用一个新的IDE插件 99 | - 明天学习一个新的快捷键 100 | - 后天尝试一个新的调试方法 101 | 102 | 就像玩游戏要从新手村开始一样,一步步来。 103 | 104 | ### 2. 找到学习伙伴 105 | - 和同事组成学习小组 106 | - 参加技术社区 107 | - 关注技术大牛的博客 108 | 109 | 有个伙伴一起学习,就不会觉得自己是一个人在战斗,同时,小伙伴还会给你带来新的视角和思路,甚至于,起到一定的监督作用。 110 | 111 | ### 3. 建立反馈循环 112 | - 定期总结学习收获 113 | - 及时记录遇到的问题 114 | - 分享自己的心得体会 115 | 116 | 就像写代码要有单元测试一样,学习也需要及时的反馈。这个是非常重要的,因为只有反馈,才能让我们知道自己的学习效果,才能让我们知道自己的学习方向是否正确,也更能让我们有动力去继续学习。 117 | 118 | ## 结语 119 | 120 | ![程序员进化论:从复制粘贴到架构设计](../assets/images/chapter2/programmer-evolution.png) 121 | 122 | 心态开放不是让你变成一个没有主见的"随风草",而是要成为一个愿意尝试的探索者,乐于学习的追求者,勇于改变的行动者。 123 | 124 | 就像一个优秀的程序,既要有稳定的核心逻辑,也要有足够的扩展性。保持开放的心态,就是给自己的"程序"预留了足够的接口,随时准备迎接新的更新和升级。 125 | 126 | 毕竟,在这个快速发展的互联网时代,唯一不变的就是变化本身。与其抗拒,不如拥抱。让我们带着开放的心态,开始职场的新征程吧! 127 | -------------------------------------------------------------------------------- /docs/chapter2/section10.md: -------------------------------------------------------------------------------- 1 | # 2.10 职场中如何做选择 2 | 3 | ![职场选择](../assets/images/chapter2/career-choice.jpg) 4 | 5 | "要不要跳槽?" 6 | "要不要转管理?" 7 | "要不要接这个项目?" 8 | "要不要去创业公司?" 9 | 10 | 职场就是一个不断做选择的过程。 11 | 但很多时候,我们纠结得像在debug一个随机bug。 12 | 13 | ## 选择困难症患者日常 14 | 15 | ### 1. 跳槽选择困难 16 | - 现在公司虽然不完美,但是很稳定 17 | - 新公司给的多,但是不知道坑多不多 18 | - 现在同事关系不错,换了环境要重新适应 19 | - 要不...再等等? 20 | 21 | ### 2. 方向选择困难 22 | - 继续做技术还是转管理? 23 | - 专精一个方向还是广泛发展? 24 | - Java转Go好还是转Python好? 25 | - 要不...都学学? 26 | 27 | ### 3. 项目选择困难 28 | - 老项目虽然烂,但是熟悉 29 | - 新项目虽然好,但是风险大 30 | - 这个有挑战,但是可能会很累 31 | - 要不...随便吧? 32 | 33 | ## 为什么选择这么难? 34 | 35 | ### 1. 信息不对称 36 | - 新公司看起来很好,但实际呢? 37 | - 新技术很火,但会不会昙花一现? 38 | - 新项目很酷,但坑有多深? 39 | 40 | 就像买房: 41 | 看起来装修不错, 42 | 但你永远不知道邻居半夜会不会放音乐。 43 | 44 | ### 2. 结果不确定 45 | - 跳槽可能升职加薪,也可能处处碰壁 46 | - 转管理可能平步青云,也可能两头不讨好 47 | - 接新项目可能大放异彩,也可能翻车现场 48 | 49 | ### 3. 机会成本 50 | - 选A就意味着放弃B 51 | - 选这个就要错过那个 52 | - 现在不选以后可能没机会了 53 | 54 | ## 两个实用的决策思路 55 | 56 | ### 1. "Hell Yeah" or "No" 57 | 遇到选择时,问问自己: 58 | "这个机会让我兴奋到想大喊'Hell Yeah!'吗?" 59 | 60 | 如果你的回答是:"还可以吧","还不错诶","蛮好的","值得考虑", 61 | 62 | 对不起,这些都不是"Hell Yeah!" 63 | 那就应该是"No"。 64 | 65 | ### 2. 未来的故事法则 66 | 再问问自己: 67 | "这会是一个值得在饭局上开心分享的故事吗?" 68 | 69 | 好故事的样子: 70 | 71 | - "我带领团队重构了整个系统架构..." 72 | - "我们在一个月内把性能提升了10倍..." 73 | - "我从零开始组建了公司的AI团队..." 74 | 75 | 无聊故事的样子: 76 | 77 | - "我在那混了三年,每天按时下班..." 78 | - "工作还行,工资还可以..." 79 | - "就那样呗,还能咋样..." 80 | 81 | ## 如何利用这两个思路做选择? 82 | 83 | ### 1. 跳槽决策 84 | 不要问: 85 | 86 | - 新公司工资高多少? 87 | - 新公司福利好不好? 88 | - 新公司名气大不大? 89 | 90 | 要问: 91 | 92 | - 想到去这家公司,我兴奋吗? 93 | - 这份工作会让我有好故事讲吗? 94 | - 三年后,我会为这个选择自豪吗? 95 | 96 | ### 2. 技术方向 97 | 不要问: 98 | 99 | - 这个技术火不火? 100 | - 这个方向赚不赚钱? 101 | - 学习曲线陡不陡? 102 | 103 | 要问: 104 | 105 | - 这个技术让我热血沸腾吗? 106 | - 这个方向能让我有成就感吗? 107 | - 这会是我职业生涯的精彩一笔吗? 108 | 109 | ### 3. 项目选择 110 | 不要问: 111 | 112 | - 这个项目简单不简单? 113 | - 这个项目有没有风险? 114 | - 这个项目能不能按时完成? 115 | 116 | 要问: 117 | 118 | - 这个项目够挑战吗? 119 | - 这个项目能让我成长吗? 120 | - 这个项目值得我投入吗? 121 | 122 | ## 一些特别提醒 123 | 124 | ### 1. "Hell Yeah"不是盲目乐观 125 | 不是不考虑风险,不是不考虑现实,而是在充分评估后的由衷兴奋。 126 | 127 | ### 2. "好故事"不是吹牛 128 | 不是追求表面光鲜,不是为了炫耀,而是真实的成长和收获。 129 | 130 | ### 3. 找不到"Hell Yeah"的选择? 131 | 可能是视野要再开阔些,可能是能力要再提升些,可能是方向要再调整些。 132 | 133 | ## 最后的碎碎念 134 | 135 | 职场选择就像写代码:不要只看表面的需求,不要只顾眼前的实现,要考虑长期的可维护性,要思考未来的扩展性。 136 | 137 | 最后的最后: 138 | 你的职业生涯是一个个选择堆积而成的故事, 139 | 要么激动人心到值得说"Hell Yeah!" 140 | 要么干脆就不要写进去。 141 | -------------------------------------------------------------------------------- /docs/chapter2/section11.md: -------------------------------------------------------------------------------- 1 | # 2.11 职场中最实用的三个思维模型 2 | 3 | 4 | "这个需求怎么说清楚?" 5 | "这堆任务怎么排优先级?" 6 | "述职报告怎么写?" 7 | 8 | 每次遇到这些问题,是不是感觉脑子有点乱? 9 | 今天我们就聊三个特别实用的思维模型。 10 | 11 | 不是那种看完就忘的"高大上"框架, 12 | 而是真的能用、常常用、越用越顺手的工具。 13 | 14 | ## 一、总分总模型:让表达更清晰 15 | 16 | ![总分总](../assets/images/chapter2/zongfenzong.jpg) 17 | 18 | ### 什么是总分总? 19 | 简单说就是:先说结论(总),再说细节(分),最后重申(总)。 20 | 21 | 就像写周报: 22 | "本周完成了订单系统优化(总) 23 | 具体包括修复了三个性能问题,优化了两个接口,新增了监控(分) 24 | 整体性能提升了30%(总)" 25 | 26 | ### 实战场景 27 | 28 | #### 1. 写周报 29 | 差的版本: 30 | "这周修了三个bug,开发了两个功能,参加了四个会议..." 31 | (领导看完:所以重点是什么?) 32 | 33 | 好的版本: 34 | "这周主要完成了订单系统的性能优化(总) 35 | - 修复了三个性能瓶颈 36 | - 优化了两个核心接口 37 | - 系统响应提升了30% 38 | 整体达到了预期的优化目标(总)" 39 | 40 | #### 2. 技术方案汇报 41 | 差的版本: 42 | "我们要用这个技术,那个框架,还要用什么什么..." 43 | (听众:所以你要做什么?) 44 | 45 | 好的版本: 46 | "这个方案主要解决订单峰值问题(总) 47 | - 优化系统架构 48 | - 增加缓存机制 49 | - 改进数据处理 50 | 通过这些措施,系统可以支撑双十一峰值(总)" 51 | 52 | ## 二、优先级四象限:让工作更高效 53 | 54 | ![四象限](../assets/images/chapter2/sixiangxian.jpg) 55 | 56 | ### 什么是优先级四象限? 57 | 把任务按照"重要"和"紧急"分成四类: 58 | 59 | - 重要且紧急(第一象限) 60 | - 重要不紧急(第二象限) 61 | - 紧急不重要(第三象限) 62 | - 不紧急不重要(第四象限) 63 | 64 | ### 实战场景 65 | 66 | #### 1. 处理各种任务 67 | 68 | 重要且紧急: 69 | 70 | - 线上故障 71 | - 重大bug 72 | - 老板要的报告 73 | 74 | 重要不紧急: 75 | 76 | - 系统重构 77 | - 技术升级 78 | - 团队建设 79 | 80 | 紧急不重要: 81 | 82 | - 各种会议 83 | - 日常报表 84 | - 临时帮忙 85 | 86 | 不紧急不重要: 87 | 88 | - 茶水间八卦 89 | - 日常闲聊 90 | - 整理工位 91 | 92 | #### 2. 排期安排 93 | 早上来到公司: 94 | 95 | - 产品经理说有个紧急需求 96 | - 测试说发现个严重bug 97 | - 运维说要升级系统 98 | - 同事说要帮看个问题 99 | 100 | 按四象限排序: 101 | 1. 先处理严重bug(重要且紧急) 102 | 2. 再看紧急需求(评估重要性) 103 | 3. 安排系统升级(重要不紧急) 104 | 4. 最后帮看问题(不紧急不重要) 105 | 106 | ## 三、STAR模型:让经历更有说服力 107 | 108 | ![STAR](../assets/images/chapter2/star.jpg) 109 | ### 什么是STAR? 110 | - Situation(情境):什么背景 111 | - Task(任务):做什么事 112 | - Action(行动):怎么做的 113 | - Result(结果):达到什么效果 114 | 115 | ### 实战场景 116 | 117 | #### 1. 写述职报告 118 | 差的版本: 119 | "我负责了订单系统的开发维护,完成了性能优化..." 120 | 121 | 好的版本: 122 | "Situation:订单系统在双十一期间频繁超时 123 | Task:需要优化系统性能,确保双十一稳定性 124 | Action: 125 | 126 | - 梳理系统瓶颈 127 | - 优化数据库查询 128 | - 引入缓存机制 129 | - 添加监控告警 130 | Result: 131 | 132 | - 系统响应时间降低70% 133 | - 双十一零故障 134 | - 经验在团队内推广" 135 | 136 | #### 2. 面试介绍项目 137 | 差的版本: 138 | "我做过订单系统,用了各种技术框架..." 139 | 140 | 好的版本: 141 | "S:公司准备双十一大促 142 | T:负责订单系统的性能优化 143 | A:通过以下步骤: 144 | 145 | - 性能压测定位问题 146 | - 优化系统架构 147 | - 增加缓存机制 148 | - 改进数据处理 149 | R:系统最终支撑了双十一百万订单" 150 | 151 | ## 这三个模型的配合使用 152 | 153 | ### 1. 写文档时 154 | - 用总分总组织整体结构 155 | - 用四象限突出重点内容 156 | - 用STAR描述关键实践 157 | 158 | ### 2. 解决问题时 159 | - 用总分总梳理思路 160 | - 用四象限确定优先级 161 | - 用STAR总结复盘 162 | 163 | ### 3. 汇报工作时 164 | - 用总分总组织语言 165 | - 用四象限展示重点 166 | - 用STAR讲述成果 167 | 168 | ## 最后的建议 169 | 170 | ### 1. 少即是多 171 | - 与其记100个用不上的模型 172 | - 不如精通3个天天都用的工具 173 | 174 | ### 2. 多实践 175 | - 不要只是记住 176 | - 要在日常工作中刻意练习 177 | - 直到形成肌肉记忆 178 | 179 | ### 3. 灵活运用 180 | - 模型是工具不是教条 181 | - 根据场景灵活调整 182 | - 找到最适合自己的方式 183 | 184 | 记住: 185 | 思维模型就像我们常用的工具, 186 | 不是放在工具箱里就有用, 187 | 而是要经常拿出来用, 188 | 用着用着就顺手了。 189 | 190 | (这篇文章就是用总分总写的,你发现了吗?) -------------------------------------------------------------------------------- /docs/chapter2/section12.md: -------------------------------------------------------------------------------- 1 | # 不会吹牛逼,述职/晋升总是吃亏怎么办? 2 | 3 | > 在职场中,很多人都有这样的困扰:明明做了很多事情,但是一到述职和晋升的时候,就不知道该怎么表达,总觉得说出来就是在吹牛。其实,这往往不是能力的问题,而是表达方式的问题。 4 | 5 | ## 🤔 为什么我们不擅长"吹牛" 6 | 7 | 很多程序员都有这样的心理: 8 | - "我做的事情不够出彩,说出来怕别人笑话" 9 | - "我只是完成了分内的工作而已,有什么好说的" 10 | - "说多了显得在炫耀,说少了又显得没做事" 11 | - "别人说起工作头头是道,我说起来就觉得很平淡" 12 | 13 | 其实,这种心理很常见,尤其在程序员群体中。我们习惯于用代码说话,习惯于把事情做好就行,不习惯"包装"自己。但问题是,在现代职场中,**展示自己的工作成果,本身就是工作能力的一部分**。这方面,印度三哥就是我们值得学习的榜样。 14 | 笔者还记得在前司的时候,有一次公司内部的述职会,我们都是几页PPT就糊弄了,印度三哥默默拿出了自己剪辑的述职视频,还有各种特效,把我们都看呆了。 15 | 16 | ## 💡 这不是"吹牛",而是"讲故事" 17 | 18 | 首先,我们要转变一个观念:**合理展示自己的工作成果,不是在吹牛,而是在帮助他人了解你的价值**。 19 | 20 | ### 1. 从"我做了什么"到"我解决了什么问题" 21 | 22 | ❌ 不好的表达: 23 | "我优化了数据库查询性能" 24 | 25 | ✅ 好的表达: 26 | "发现用户反馈系统响应慢,通过分析发现是数据库查询效率低下。优化后,接口响应时间从 3s 降到 300ms,用户体验显著提升,差评率下降 30%" 27 | 28 | ### 2. 用数据说话 29 | 30 | 不要觉得数据是在炫耀,恰恰相反,数据是最客观的表达方式: 31 | - 代码覆盖率提升了多少 32 | - 系统性能提升了多少 33 | - 节省了多少人力成本 34 | - 减少了多少线上故障 35 | 36 | ### 3. 突出你的思考过程 37 | 38 | 很多时候,我们不仅要说结果,更要说思考过程: 39 | - 为什么选择这个解决方案 40 | - 考虑过哪些备选方案 41 | - 权衡了哪些利弊 42 | - 学到了什么经验教训 43 | 44 | ## 🎯 如何准备述职报告 45 | 46 | ### 1. 建立工作日志习惯 47 | 48 | > 最怕的不是记不住,而是根本就没记录 49 | 50 | 平时就要养成记录的习惯: 51 | - 每周五花 10 分钟总结本周完成了什么 52 | - 遇到重要节点及时记录(比如解决了一个疑难 bug) 53 | - 记录下数据变化(性能提升、用户反馈等) 54 | 55 | ### 2. STAR 法则 56 | 57 | 讲述一个工作事例时,可以遵循 我们在之前文章提到过的STAR 法则: 58 | - **Situation**:什么场景下 59 | - **Task**:需要解决什么问题 60 | - **Action**:采取了什么行动 61 | - **Result**:取得了什么成果 62 | 63 | ### 3. 突出你的独特价值 64 | 65 | 每个人都有自己的特点,要懂得发挥自己的优势: 66 | - 如果你觉得自己技术吊,就多说技术难点攻克 67 | - 如果你觉得自己沟通能力强,就多说项目推进 68 | - 如果你觉得自己产品思维好,就多说业务价值 69 | 70 | ## 🌟 述职/晋升中的加分项 71 | 72 | 1. **主动性** 73 | - 不是被动完成任务,而是主动发现问题 74 | - 不是等待分配,而是主动承担责任 75 | 76 | 2. **影响力** 77 | - 带动了团队成员一起进步 78 | - 经验分享被其他团队采纳 79 | - 解决方案变成最佳实践 80 | 81 | 3. **成长性** 82 | - 展示你的学习能力 83 | - 说明你如何突破自己的舒适区 84 | - 分享你对未来的规划 85 | 86 | ## 💪 改变从现在开始 87 | 88 | 记住,合理展示自己不是虚荣,而是职场中必要的软技能。就像代码需要注释一样,你的工作也需要合适的表达。 89 | 90 | 从以下几个方面开始改变: 91 | 1. 养成记录的习惯,让数据说话 92 | 2. 学会用 STAR 法则组织语言 93 | 3. 多听优秀同事是如何表达的 94 | 4. 在日常工作中就开始练习表达 95 | 96 | 最后,请记住:**真诚永远是最好的包装**。不要为了晋升刻意去"包装"自己,而是学会更好地展示真实的自己。因为真诚的表达,才能赢得真正的尊重。 -------------------------------------------------------------------------------- /docs/chapter2/section13.md: -------------------------------------------------------------------------------- 1 | # 聊聊职场程序员那些真正重要但却经常被忽略的事 2 | 3 | 大半夜的,窗外霓虹闪烁,我端着一个大茶瓷缸子,看着显示器上那一行行代码,突然想起今天看到的脉脉上的一个帖子:一个技术大牛,写代码贼溜,可就是混不上去。这让我想起高盛那四句话,忍不住想唠叨两句。 4 | 5 | ## 那些年,我们都看错的事 6 | 7 | 记得刚入行那会儿,我跟大多数人想的一样:技术牛逼就能横着走。那时候为了学新技术,经常熬到凌晨三四点,第二天顶着两个黑眼圈去上班,就觉得自己特别牛。 8 | 9 | 结果呢?干了几年才发现,技术好的人多了去了,可是能往上走的,往往不是技术最强的那个。 10 | 11 | 高盛挑人的时候特别看重四点: 12 | 13 | **1. 软实力比专业知识重要** 14 | 15 | **2. 与人沟通的能力重要** 16 | 17 | **3. 解决问题的思路比知道答案重要** 18 | 19 | **4. 知道自己边界,学会求助很重要** 20 | 21 | 这几点,我也是工作几年才真正整明白的。 22 | 23 | ## 软实力:那些看不见的竞争力 24 | 25 | 说起软实力,很多人第一反应就是:这不就是拍马屁吗? 26 | 27 | 我先给你讲个真事。 28 | 29 | 几年前我还在某大厂的时候,我们组来了个年轻人,技术一般,但这孩子特别有意思。每次开会他都会提前到,帮大家准备投影;有同事遇到问题,他二话不说就去帮忙;最绝的是,他还会主动收集大家工作中遇到的痛点,整理成文档分享出来。 30 | 31 | 半年后,他就成了我们组最受欢迎的人。再过一年,他就被提拔成了小组长。 32 | 33 | 有人说这是"向上管理",我觉得这话说得片面了。软实力根本不是什么花花肠子,按人话说它就是: 34 | - 靠谱:说到做到 35 | - 担当:出了问题不甩锅 36 | - 同理心:能设身处地为他人着想 37 | - 学习能力:不固步自守 38 | - 情商:懂得照顾他人感受 39 | 40 | 这些东西,说起来容易做起来难。因为它们都是需要长期坚持的习惯,不是说学两天就能掌握的。 41 | 42 | ## 沟通:职场的必修课 43 | 44 | 有一说一,我是吃过沟通不畅的亏的。 45 | 46 | 记得有次做一个跨部门项目,我这边写好了接口,测试也都通过了,但就是对接不上。找对方部门的人聊,说话吞吞吐吐的,就是不说问题出在哪。后来我直接杀到人家工位上,一聊才知道,人家觉得我们的接口设计有问题,但又不好意思直说。 47 | 48 | 从那以后,我就琢磨出来一套跨部门协作的招: 49 | 50 | 1. 先处好关系再谈事 51 | - 约人吃个饭 52 | - 一起抽根烟 53 | - 聊聊工作之外的事 54 | 55 | 2. 把对方当盟友,不要当对手 56 | - 有问题直接说,不藏着掖着 57 | - 多问问对方的想法 58 | - 一起找解决方案 59 | 60 | 3. 沟通要过度,不要嫌烦 61 | - 重要的事情说三遍 62 | - 开会记录要发出来 63 | - 口头约定要有书面确认 64 | 65 | ## 解决问题:方法论比答案重要 66 | 67 | 现在的面试,都喜欢问八股文。但在真正的职场中,背完答案就完事了?我看未必。 68 | 69 | 举个栗子:我们组前段时间遇到个性能问题,系统总是莫名其妙地卡顿。新来的小伙子一顿操作,各种工具上来就是干。忙活了一天,问题没解决,人倒是累得够呛。 70 | 71 | 最后是老王出手,他先画了个架构图,又抓了几个关键指标,最后定位到是某个服务的连接池配置有问题。整个过程,他花的时间反而比那个小伙子少。 72 | 73 | 这就是思路的重要性: 74 | - 先理清楚问题的边界 75 | - 找到可能的突破点 76 | - 验证假设 77 | - 总结经验教训 78 | 79 | 这种解决问题的思路,才是真正的核心竞争力。 80 | 81 | ## 知道自己的能力边界,懂得求助,避免蛮干,很重要 82 | 83 | 关于这一点,我之前就犯过类似的错误。 84 | 85 | 那时候刚进入职场没多长时间,我手上分配了一个比较紧急,对我又有点挑战性的任务,我认为是一个表现自己的好机会,就加班加点的去做, 86 | 虽然最终勉强完成了任务,但是效果不是很好。 87 | 88 | 后来,我跟我们领导聊起这件事,她就直截了当的说,你为什么不向我求助呢,如果你当时问我一下,可能咱们两个一下午的时间,就把这个事情做完了,而不是你周末加班加点的去自己琢磨。之后你自己还为免费加班觉得委屈,我们还觉得你做的不好。 89 | 90 | 我自己之后反思了一下,确实,当时我的心态就是,这个任务我一定要自己独立完成,不能让我的同事看不起我。这种心态其实还是典型的学生思维。 91 | 92 | 每个人都有自己覆盖不到的知识面,要承认自己的能力边界,求助别人,并不是一件需要为此感到难堪的事情,其实,这也是为什么公司需要这么多人的原因,就是需要彼此的能力互补。 93 | 94 | 知道自己的能力边界,懂得求助,避免蛮干,很重要。 95 | 96 | -------------------------------------------------------------------------------- /docs/chapter2/section2.md: -------------------------------------------------------------------------------- 1 | # 2.2 下场去做,你的职场第二课 2 | 3 | ## 从一个真实的故事开始 4 | 5 | 记得我刚开始学React的时候,整整看了两周的教程和文档。脑子里天天想着组件生命周期、虚拟DOM、状态管理...但是迟迟不敢动手写第一行代码。 6 | 7 | 直到有一天,leader把一个小需求甩给我: 8 | "这个页面很简单,你用React重构一下。" 9 | 10 | 我:"啊?可是我还没完全理解React的设计理念..." 11 | leader:"先做,边做边学。" 12 | 13 | 就这样,我被迫上手了。结果发现很多觉得复杂的概念,用起来其实很简单,很多觉得简单的东西,做起来还真有点绕,书上看懂的东西,实操时经常卡壳,但是!真的做了之后,很多疑惑都自然解开了。 14 | 15 | ## 为什么我们总是迟迟不动手? 16 | 17 | ### 1. 完美主义的陷阱 18 | - "再多看几个教程..." 19 | - "等我把设计模式全部搞懂..." 20 | - "让我再研究下最佳实践..." 21 | - "这个方案还不够完美..." 22 | 23 | ### 2. 对失败的恐惧 24 | - "万一写得不好被同事笑话..." 25 | - "要是项目做砸了怎么办..." 26 | - "这个技术栈我不熟悉,不敢碰..." 27 | - "万一出了线上问题..." 28 | 29 | ### 3. 舒适区的诱惑 30 | - "现有的方案虽然不完美,但是能用..." 31 | - "学新技术太累了,还是用老技术吧..." 32 | - "这个功能用jQuery也能实现..." 33 | - "重构风险太大,能跑就行..." 34 | 35 | ## 不动手的后果是什么? 36 | 37 | ### 1. 技术停滞 38 | - 知识始终停留在理论层面 39 | - 实战经验得不到积累 40 | - 问题解决能力无法提升 41 | - 技术广度和深度都受限 42 | 43 | ### 2. 焦虑加剧 44 | - 看着别人进步,自己原地踏步 45 | - 害怕承担责任,导致机会越来越少 46 | - 对新技术的恐惧越来越深 47 | - 职业发展陷入瓶颈 48 | 49 | ### 3. 能力退化 50 | - 执行力逐渐下降 51 | - 解决问题的勇气越来越小 52 | - 面对挑战时习惯性退缩 53 | - 创新能力逐渐丧失 54 | 55 | ## 为什么要"下场去做"? 56 | 57 | ![实践出真知](../assets/images/chapter2/practice.jpg) 58 | 59 | ### 1. 实践是最好的学习 60 | - 动手实操比看十篇教程有用 61 | - 真实项目中的一个bug能学到很多东西 62 | - 生产环境的问题才是最好的老师 63 | - 实战中的教训记得最深 64 | 65 | ### 2. 反馈是最好的老师 66 | - 代码写得对不对,跑一下就知道 67 | - 方案可不可行,实践了才清楚 68 | - 性能好不好,上线了就明白 69 | - 用户喜不喜欢,发布了才知道 70 | 71 | ### 3. 失败是最好的经验 72 | - 每个bug都是成长的机会 73 | - 每次报错都是学习的契机 74 | - 每个坑都值得记录和总结 75 | - 每次失败都是宝贵的经验 76 | 77 | ## 如何开始行动? 78 | 79 | ![开始行动](../assets/images/chapter2/take-action.jpg) 80 | 81 | ### 1. 从小需求开始 82 | - 先重构一个小组件 83 | - 先优化一个小功能 84 | - 先解决一个小bug 85 | - 先改进一个小细节 86 | 87 | ### 2. 给自己设定期限 88 | - 本周必须提交一个PR 89 | - 这个月必须上线一个功能 90 | - 这季度必须掌握一个新技术 91 | - 今年必须完成一个完整项目 92 | 93 | ### 3. 建立反馈机制 94 | - 及时code review 95 | - 定期复盘总结 96 | - 主动收集反馈 97 | - 持续改进优化 98 | 99 | ## 一些实用建议 100 | 101 | ### 1. 关于学习新技术 102 | - 先跑通官方demo 103 | - 再写个小项目 104 | - 然后在非核心项目中试水 105 | - 最后才在重要项目中使用 106 | 107 | ### 2. 关于重构老代码 108 | - 先写测试用例 109 | - 再小范围重构 110 | - 然后逐步扩大范围 111 | - 最后整体优化 112 | 113 | ### 3. 关于解决问题 114 | - 先本地复现 115 | - 再分析原因 116 | - 然后验证方案 117 | - 最后总结经验 118 | 119 | ## 结语 120 | 121 | 程序员的成长没有捷径:理论再扎实,不实践也是空的;方案再完美,不执行也是零;想法再好,不落地也是假的。 122 | 123 | 就像写代码一样,再多的设计模式,不如一个能用的功能;再多的架构图,不如一个能跑的程序;再多的技术预演,不如一次真实的上线。 124 | 125 | 所以,与其在原地焦虑,不如: 126 | 127 | - 放下完美主义的包袱 128 | - 克服对失败的恐惧 129 | - 走出舒适区的束缚 130 | - 勇敢地下场去做 131 | 132 | 毕竟,代码是写出来的,不是想出来的。 133 | -------------------------------------------------------------------------------- /docs/chapter2/section3.md: -------------------------------------------------------------------------------- 1 | # 2.3 寻求帮助是项高级技能 2 | 3 | ![正确求助](../assets/images/chapter2/right-way.jpg) 4 | 5 | ## 从一个尴尬的故事说起 6 | 7 | "那个...老王啊,这个报错你知道怎么解决吗?" 8 | "你自己有谷歌过吗?" 9 | "呃...还没..." 10 | "......" 11 | 12 | 相信每个程序员都经历过这种尴尬:问题没调研就去问同事,结果被嫌弃了。但反过来也有另一种情况: 13 | 14 | "这bug我已经调了一周了,实在搞不定..." 15 | "你怎么不早说啊?这个问题我上周刚处理过!" 16 | 17 | 是不是很眼熟?其实这两种情况都说明了一个问题:我们不会寻求帮助,或者说,不会正确地寻求帮助。 18 | 19 | ## 为什么我们不敢寻求帮助? 20 | 21 | ### 1. 面子问题 22 | - "问这么简单的问题会不会显得我很菜?" 23 | - "都工作这么久了,这都不会,多丢人啊..." 24 | - "万一被同事看不起怎么办..." 25 | - "领导会不会觉得我能力不行..." 26 | 27 | ### 2. 错误认知 28 | - "自己的问题应该自己解决" 29 | - "优秀的程序员应该什么都会" 30 | - "问别人就是无能的表现" 31 | - "独立解决问题才是真本事" 32 | 33 | ### 3. 性格因素 34 | - 内向不善于交流 35 | - 不想麻烦别人 36 | - 害怕被拒绝 37 | - 社交恐惧症 38 | 39 | ## 不会寻求帮助的后果 40 | 41 | 42 | ### 1. 时间成本 43 | - 一个有经验的同事5分钟能解决的问题 44 | - 你可能要花一整天去摸索 45 | - 项目进度被拖延 46 | - 工作效率严重下降 47 | 48 | ### 2. 心理负担 49 | - 越卡越焦虑 50 | - 越焦虑越卡 51 | - 自信心受挫 52 | - 工作热情下降 53 | 54 | ### 3. 团队影响 55 | - 本可以共享的经验没有共享 56 | - 本可以避免的坑没有避免 57 | - 团队协作效率低下 58 | - 重复踩同样的坑 59 | 60 | ## 什么时候该寻求帮助? 61 | 62 | ### 1. 该自己解决的时候 63 | - 基础语法问题 64 | - 简单的配置问题 65 | - 常见的报错信息 66 | - 有明确错误提示的问题 67 | 68 | ### 2. 该求助的时候 69 | - 尝试过多种方案都不行 70 | - 搜索了很多资料没头绪 71 | - 卡了较长时间没进展 72 | - 涉及到历史遗留问题 73 | - 需要业务相关的上下文 74 | 75 | ## 如何正确寻求帮助? 76 | 77 | 78 | ### 1. 求助前的准备 79 | - 把问题描述清楚 80 | * 什么情况下出现的 81 | * 已经试过哪些方案 82 | * 当前卡在哪一步 83 | 84 | - 准备相关信息 85 | * 错误日志 86 | * 环境信息 87 | * 复现步骤 88 | * 相关代码片段 89 | 90 | ### 2. 选择合适的对象 91 | - 了解这个领域的同事 92 | - 做过类似项目的前辈 93 | - 有相关经验的朋友 94 | - 特定技术社区的专家 95 | 96 | ### 3. 选择合适的时机 97 | - 不要在别人最忙的时候 98 | - 不要在快下班的时候 99 | - 不要在对方在开会时 100 | - 最好提前预约时间 101 | 102 | ## 提问的艺术 103 | 104 | ![提问艺术](../assets/images/chapter2/art-of-asking.jpg) 105 | 106 | ### 1. 好的提问方式 107 | - "我在实现XX功能时遇到了问题..." 108 | - "我已经尝试了A、B、C方案,但都不行..." 109 | - "我觉得可能是XX原因,你觉得呢?" 110 | - "能否帮我看看这个思路对不对?" 111 | 112 | ### 2. 糟糕的提问方式 113 | - "这个怎么做啊?" 114 | - "为什么我的代码不行?" 115 | - "帮我看看哪错了" 116 | - "这个bug怎么解决?" 117 | 118 | ### 3. 提问时的注意事项 119 | - 表达要清晰具体 120 | - 态度要谦虚诚恳 121 | - 要尊重对方时间 122 | - 记得总结和感谢 123 | 124 | ## 建立良性循环 125 | 126 | ### 1. 及时记录和总结 127 | - 把解决方案记录下来 128 | - 总结问题的原因 129 | - 整理相关的知识点 130 | - 分享经验给其他同事 131 | 132 | ### 2. 主动回馈他人 133 | - 帮助遇到类似问题的同事 134 | - 分享自己的经验教训 135 | - 参与技术讨论和分享 136 | - 贡献团队的知识库 137 | 138 | ### 3. 建立学习体系 139 | - 收集常见问题 140 | - 整理解决方案 141 | - 建立知识体系 142 | - 形成经验沉淀 143 | 144 | ## 最后的话 145 | 146 | 在程序员这个职业里,寻求帮助不是能力不足的表现,更不是逃避责任的借口,而是一种提高效率的方法,解决问题的手段。 147 | 148 | 就像代码要讲究复用一样,经验也是可以复用的,知识也是可以共享的,成长也是可以互助的。 149 | 150 | 会寻求帮助的程序员,才是真正的高手。 151 | 不是因为他什么都会,而是因为他知道如何更快地解决问题。 -------------------------------------------------------------------------------- /docs/chapter2/section4.md: -------------------------------------------------------------------------------- 1 | # 2.4 害怕直面冲突,怎样才能支棱起来 2 | 3 | ![害怕冲突](../assets/images/chapter2/fear-conflict.jpg) 4 | 5 | "老王,你这代码写得也太烂了吧?" 6 | "啥?我这代码怎么了?" 7 | "你这变量命名,这代码结构,这是人能看懂的吗?" 8 | "我寻思挺好啊,能跑就行呗..." 9 | "能跑就行?!后面谁维护你知道吗?" 10 | 11 | 场面一度很尴尬。 12 | 13 | 代码评审现场翻车,相信不少同学都经历过。但更多时候,我们的反应是: 14 | 15 | - 默默点个"收到",然后继续摸鱼 16 | - 心里暗骂对方太较真,但嘴上说"好的我改" 17 | - 改完立马找产品理论:"这需求本来就不合理!" 18 | - 在工作群怼不过,转手就把对方拉黑 19 | 20 | 说实话,谁不是从怂包子开始的呢?我自己刚工作那会儿,那叫一个怂。产品经理改需求,默默接受;测试提bug,默默修改;leader说要加班,默默加班...直到有一天,我实在忍不住了。 21 | 22 | ## 为啥我们这么怂? 23 | 24 | ### 传统文化教我们做"老好人" 25 | 从小到大,我们都被教育要"和为贵"。打小学起: 26 | 27 | - "要和同学好好相处啊" 28 | - "忍一忍就没事了" 29 | - "吃亏是福" 30 | 这些话听得耳朵都起茧子了。 31 | 32 | 到了职场,这种思维更甚: 33 | 34 | - "大家都是同事嘛" 35 | - "和气生财" 36 | - "多一事不如少一事" 37 | 38 | 结果呢?憋出一堆职场"老好人"。 39 | 40 | ### 害怕得罪人 41 | 这个真不能怪我们怂,实在是: 42 | 43 | - 得罪测试,你的bug就别想过了 44 | - 得罪产品,下次需求改到你怀疑人生 45 | - 得罪leader,你的绩效就悬了 46 | - 得罪同事,代码评审能挑毛病挑到天亮 47 | 48 | 更要命的是,现在都讲究"团队协作"。得罪一个,可能得罪一群。谁还不想混口饭吃了? 49 | 50 | ### 技术底气不足 51 | 说实话,很多时候我们不敢怼,是因为: 52 | 53 | - 代码写得确实不够好 54 | - 技术深度确实不够 55 | - 方案确实有漏洞 56 | - 经验确实不足 57 | 58 | 就很尴尬,明明知道对方说的不全对,但又说不出所以然来。 59 | 60 | ## 怂着怂着,就出事了 61 | 62 | ### 技术债越堆越多 63 | - 今天妥协用了个烂方案 64 | - 明天将就写了个烂代码 65 | - 后天将就改了个烂需求 66 | 最后?整个项目烂得像坨浆糊。 67 | 68 | 我之前就遇到过,一个"临时方案"用了两年,最后重构的时候,连碰都不敢碰,生怕整个系统崩溃。 69 | 70 | ### 背锅侠本侠 71 | - 测试说有bug,默默改 72 | - 产品说要改需求,默默改 73 | - 运营说要加功能,默默改 74 | - 领导说要优化,默默改 75 | 76 | ![正面冲突](../assets/images/chapter2/face-conflict.jpg) 77 | 78 | 结果呢?但凡出点问题: 79 | "这块代码是谁改的?" 80 | "哦,是小王啊,每次都是他改的..." 81 | 82 | ### 职场混成透明人 83 | 久而久之: 84 | 85 | - 技术讨论不敢发言 86 | - 方案评审不敢反对 87 | - 有想法也不敢说 88 | - 有建议也憋着 89 | 90 | 最后在团队里混成了隐形人,存在感只剩下每天打卡。 91 | 92 | ## 冲突其实没那么可怕 93 | 94 | ### 职场冲突很正常 95 | 就像写代码一样: 96 | 97 | - 不同的人有不同的代码风格 98 | - 不同的团队有不同的技术栈 99 | - 不同的项目有不同的要求 100 | 101 | 有分歧很正常,没分歧才不正常。 102 | 103 | ### 把冲突当成机会 104 | - 代码评审被怼,是提高代码质量的机会 105 | - 方案被质疑,是完善设计的机会 106 | - 观点不一致,是思维碰撞的机会 107 | - 需求有分歧,是深入理解业务的机会 108 | 109 | ## 如何硬气起来? 110 | 111 | ### 先把技术能力搞上去 112 | 说白了,底气不足就是因为实力不足。 113 | 114 | 要学会: 115 | 116 | - 写代码先想想为什么要这么写 117 | - 接需求先想想有什么坑 118 | - 做方案先调研同行都怎么做 119 | - 有空多看看源码,别光是CRUD 120 | 121 | ### 学会正确表达 122 | 以前我的表达方式: 123 | "这个...可能...会不会有问题..." 124 | 125 | 现在的表达方式: 126 | "这个方案我觉得有三个问题: 127 | 1. 性能可能会有瓶颈 128 | 2. 扩展性不太好 129 | 3. 维护成本会很高 130 | 我建议我们可以..." 131 | 132 | ### 把对抗变成合作 133 | 与其对抗: 134 | 135 | - "你这需求改得也太频繁了!" 136 | - "你这代码写得也太烂了!" 137 | - "你这测试也太细了!" 138 | 139 | 不如: 140 | 141 | - "要不我们先确定核心需求?" 142 | - "我们一起看看代码怎么优化?" 143 | - "测试案例是不是可以优先级排序?" 144 | 145 | ## 最后说两句 146 | 147 | 职场冲突就像代码里的bug,遇到很正常,解决很重要,回避不可取,处理要及时。 148 | 149 | 重要的不是避免冲突,而是学会处理冲突。 150 | 151 | 记住: 152 | 153 | - 把话说出来总比憋在心里强 154 | - 把问题摆在台面上总比暗地里较劲强 155 | - 把分歧当面讨论总比背后吐槽强 156 | 157 | 最后,祝大家都能成为职场上的"硬汉",不再害怕冲突。 158 | 159 | -------------------------------------------------------------------------------- /docs/chapter2/section5.md: -------------------------------------------------------------------------------- 1 | # 2.5 如何面对职场PUA 2 | 3 | ![职场PUA](../assets/images/chapter2/workplace-pua.jpg) 4 | 5 | "小王啊,你看看隔壁组的小张,人家周末都在加班呢..." 6 | "就这点代码量,你要写到什么时候?" 7 | "你这个年纪的时候,我早就是高级工程师了..." 8 | "不加班?你是不是对公司没有归属感啊?" 9 | 10 | 听着耳熟吗?这不是普通的说教,这是赤裸裸的职场PUA。 11 | 12 | ## 什么是职场PUA? 13 | 14 | 简单说,就是用各种"看似合理"的方式,打击你的自信,控制你的行为。 15 | 16 | ### 常见的PUA话术 17 | 18 | 产品经理版: 19 | 20 | - "其他开发都说这个需求很简单啊" 21 | - "就改个小需求,怎么这么久还没好?" 22 | - "你看某某某,人家从来不说做不到" 23 | 24 | 技术领导版: 25 | 26 | - "这么简单的bug,你怎么会犯?" 27 | - "代码写成这样,你是怎么通过面试的?" 28 | - "你的代码水平好像没什么进步啊" 29 | 30 | HR版: 31 | 32 | - "你看看同期的小李,人家都升职了" 33 | - "你觉得就你这表现,年终奖能拿多少?" 34 | - "现在外面行情不好,你要好好珍惜这个机会" 35 | 36 | ## 为啥会被PUA? 37 | 38 | ### 1. 江湖地位太低 39 | - 刚毕业没经验 40 | - 技术深度不够 41 | - 资历尚浅 42 | - 没有话语权 43 | 44 | 就像我刚工作那会儿,改个代码还要被喷十遍,写个需求要改八百遍,天天被说"这都不会?"。 45 | 46 | ### 2. 不懂套路 47 | - 以为多做就能出头 48 | - 以为忍让就能平安 49 | - 以为付出就有回报 50 | - 以为老实就不会挨欺负 51 | 52 | 结果呢?越老实越被欺负,越忍让越得寸进尺。 53 | 54 | ### 3. 不敢反抗 55 | - "万一得罪领导怎么办?" 56 | - "得罪HR会不会被穿小鞋?" 57 | - "现在找工作不容易啊..." 58 | - "忍忍就过去了吧..." 59 | 60 | ## PUA的后果有多严重? 61 | 62 | ### 1. 身心俱疲 63 | - 工作没激情 64 | - 睡觉睡不好 65 | - 上班心慌慌 66 | - 看到某些人就胃疼 67 | 68 | ### 2. 职业发展受阻 69 | - 自信心被打击 70 | - 创造力被压制 71 | - 主动性被消磨 72 | - 成长空间被限制 73 | 74 | ### 3. 越来越卷 75 | 今天: 76 | 77 | - "周末加个班吧" 78 | 明天: 79 | 80 | - "这个月多做点吧" 81 | 后天: 82 | 83 | - "你看看人家..." 84 | 85 | ## 如何应对职场PUA? 86 | 87 | ### 1. 擦亮眼睛,识别PUA 88 | 正常的批评: 89 | 90 | - "这段代码可以优化一下,我们一起看看" 91 | - "这个bug下次注意下,我来教你排查思路" 92 | - "最近进度有点慢,是不是遇到什么困难?" 93 | 94 | PUA式批评: 95 | 96 | - "就这么简单的代码都写不好?" 97 | - "这种低级bug都会犯,你是怎么想的?" 98 | - "你这个效率,怎么做程序员的?" 99 | 100 | ### 2. 建立自我防护 101 | - 记录工作内容 102 | * 每天做了什么 103 | * 解决了什么问题 104 | * 贡献了什么价值 105 | 106 | - 留存证据 107 | * 保存聊天记录 108 | * 保存邮件往来 109 | * 记录关键会议内容 110 | 111 | - 设立边界 112 | * 工作时间要有度 113 | * 加班要有补偿 114 | * 职责要有边界 115 | 116 | ### 3. 学会正面回应 117 | PUA:这么简单的需求,你怎么做这么久? 118 | 回应: 119 | 120 | - "这个需求涉及到A、B、C三个模块的改动,我评估需要3天时间" 121 | - "我这边已经完成了70%,还有哪些地方你觉得可以加快?" 122 | - "如果你觉得时间太长,我们可以一起看看有什么可以优化的地方" 123 | 124 | PUA:你看看人家小张,周末都在加班... 125 | 回应: 126 | 127 | - "我更注重效率,周内我都会提前规划好工作" 128 | - "我的工作量和产出都达到了要求,有问题吗?" 129 | - "我们是按产出评估,还是按加班时间评估?" 130 | 131 | ### 4. 准备后路 132 | - 保持技术更新 133 | - 扩展人脉网络 134 | - 关注市场机会 135 | 136 | ## 一些特别提醒 137 | 138 | ### 1. 不要期待PUA者改变 139 | 他们不会改变,因为PUA对他们来说是有效的管理工具,他们可能也是被PUA出来的,他们觉得这样做没问题。 140 | 141 | ### 2. 保护好自己 142 | 自己的身体健康最重要,重视自己的心理健康,规划自己的职业发展,该走的时候要走。 143 | 144 | ### 3. 警惕自己变成PUA者 145 | - 当了领导不要学这套 146 | - 带新人要以理服人 147 | - 评审代码要就事论事 148 | - 工作沟通要讲道理 149 | 150 | ## 结语 151 | 152 | 最后的叮嘱: 153 | 154 | - 工作只是一份工作 155 | - 公司只是一家公司 156 | - 领导只是一个领导 157 | - 你的人生不该被PUA毁掉 158 | 159 | 职场PUA就像代码里的死循环:发现得早跳出来还来得及,发现得晚可能整个系统都崩溃。 -------------------------------------------------------------------------------- /docs/chapter2/section6.md: -------------------------------------------------------------------------------- 1 | # 2.6 内耗,是从拒绝沟通开始的 2 | 3 | ![自我内耗](../assets/images/chapter2/self-friction.jpg) 4 | 5 | "凭什么又是我改bug?" 6 | "天天加班到这么晚,他们怎么都走了?" 7 | "这个需求改了八百遍了..." 8 | "我的付出怎么没人看到?" 9 | 10 | 你是不是也经常这样,一个人生闷气? 11 | 憋着一肚子情绪,但就是不说。 12 | 别人该干嘛干嘛,你自己越想越气。 13 | 14 | ## 一个人的内耗现场 15 | 16 | 早上: 17 | 18 | - 看到测试提了十个bug,默默打开电脑 19 | - 产品经理又改需求了,默默接受 20 | - 同事代码又出问题了,默默帮忙改 21 | - 自己的任务堆积如山,默默加班 22 | 23 | 晚上: 24 | 25 | - 躺在床上开始翻来覆去 26 | - 越想越气,越气越想 27 | - 第二天顶着黑眼圈继续 28 | - 周而复始,循环往复 29 | 30 | ## 为什么我们喜欢憋着? 31 | 32 | ### 1. 觉得说了也没用 33 | - "反正说了他也不会改" 34 | - "说出来显得我很计较" 35 | - "忍忍就过去了吧" 36 | - "大家都这样,我说什么呢" 37 | 38 | ### 2. 不知道怎么说 39 | - 怕说得太直接伤害关系 40 | - 怕说得不够专业没人信 41 | - 怕说出来自己承担不起后果 42 | - 怕说了之后更加尴尬 43 | 44 | ### 3. 习惯性忍让 45 | - "我脾气好,我能忍" 46 | - "得饶人处且饶人" 47 | - "大不了我多干点" 48 | - "反正我都习惯了" 49 | 50 | ## 不说出来的代价 51 | 52 | ### 1. 情绪滚雪球 53 | 今天: 54 | "这需求改得也太随便了..." 55 | 明天: 56 | "又是这样,真是受够了!" 57 | 后天: 58 | "我干脆离职算了!" 59 | 60 | ### 2. 别人还蒙在鼓里 61 | - 你气得要死,别人还在快乐摸鱼 62 | - 你熬夜改bug,别人还在追剧 63 | - 你怨气冲天,别人还觉得你挺好说话 64 | - 你快崩溃了,别人觉得一切正常 65 | 66 | ### 3. 问题永远解决不了 67 | - 你不说,别人不知道 68 | - 别人不知道,问题依旧 69 | - 问题依旧,你更生气 70 | - 你更生气,更不想说 71 | - 更不想说,问题更多... 72 | 73 | ## 如何走出自我内耗? 74 | 75 | ### 1. 承认自己的情绪 76 | - 生气是正常的 77 | - 委屈是应该的 78 | - 不爽要表达 79 | - 难受要说出来 80 | 81 | ### 2. 学会表达 82 | 不好的表达: 83 | "你们天天改需求烦不烦啊!" 84 | "谁写的代码这么烂!" 85 | 86 | 好的表达: 87 | "这个需求改动比较大,能不能先确定下具体方案?" 88 | "这段代码可能需要优化,我们一起看看?" 89 | 90 | ### 3. 寻找合适的方式 91 | - 对于一些敏感问题,约个1v1沟通 92 | - 对于一些公开问题,在周会上提出来 93 | - 对于一些复杂问题,写个文档说明问题 94 | - 对于一些情绪问题,找个合适的人倾诉 95 | 96 | ## 一些小建议 97 | 98 | 遇到问题先问问自己,我为什么不开心?我期望的是什么?怎么说对方才能听进去?有什么更好的解决方案? 99 | 100 | 然后:深呼吸,整理思路,选个合适的时机,好好说出来。 101 | 102 | ## 最后说点啥 103 | 104 | 作为一个成熟的程序员,我们表面上云淡风轻地说着"没事",内心却像一个即将超载的服务器;以为自己的不爽写在了脸上,结果大家都忙着赶自己的需求;看似风平浪静地坐在工位上,其实心里已经演完了十八集职场大戏。 105 | 106 | 这样,真的好吗? 107 | 108 | 与其内耗自己,不如责怪他人,哈哈,开玩笑的,与其一个人在工位上生闷气,不如约个奶茶,聊聊天? 109 | 110 | (诶,说完感觉舒服多了,今天的代码都写得动了...) 111 | 112 | -------------------------------------------------------------------------------- /docs/chapter2/section7.md: -------------------------------------------------------------------------------- 1 | # 2.7 不喜欢编程,还要坚守程序员这个岗位吗 2 | 3 | ![厌倦编程](../assets/images/chapter2/tired-of-coding.jpg) 4 | 5 | "我好像不喜欢编程了..." 6 | "每天写代码好痛苦..." 7 | "看到IDE就头疼..." 8 | "要不要转行呢?" 9 | 10 | 最近在程序员群里,经常看到这样的声音。 11 | 但是等等,真的是不喜欢编程吗? 12 | 13 | ## 先问问自己:真的是不喜欢编程? 14 | 15 | 还记得当年为什么选择做程序员吗: 16 | 17 | - 第一次写出Hello World的兴奋 18 | - 第一次解决bug的成就感 19 | - 第一次上线项目的激动 20 | - 第一次被用户夸赞的自豪 21 | 22 | 那个时候,我们不也是在写代码吗? 23 | 24 | ## 让我们挖深一点 25 | 26 | ### 1. 是不喜欢编程,还是不喜欢: 27 | 28 | - 天天改不完的bug 29 | - 永远改不完的需求 30 | - 说不清的加班 31 | - 解释不完的进度 32 | 33 | 就像我一个朋友说的: 34 | "我喜欢写代码,但我讨厌天天被追着问进度" 35 | "我喜欢编程,但我受够了半夜三更的线上问题" 36 | 37 | ### 2. 是不喜欢编程,还是因为: 38 | 39 | - 写了三年CRUD没成长 40 | - 技术栈还停留在入职时 41 | - 天天被业务压得喘不过气 42 | - 从来没有获得过正面反馈 43 | 44 | 一个同事跟我吐槽: 45 | "代码写得好不好没人关心,bug修得快不快所有人都盯着" 46 | "系统不出事,没人会觉得你有多重要,系统出事了,所有人都会骂你" 47 | 48 | ### 3. 是不喜欢编程,还是因为: 49 | 50 | - 团队氛围太压抑 51 | - 技术氛围太浮躁 52 | - 同事关系太复杂 53 | - 领导风格太操蛋 54 | 55 | ## 为什么会失去对编程的热情? 56 | 57 | ### 1. 没有正反馈 58 | 记得有个同事说: 59 | "我优化了整个系统的性能, 60 | 领导说:这不是应该的吗? 61 | 62 | 我加班改了一个小bug, 63 | 领导说:这么简单的问题,至于加班?" 64 | 65 | 日复一日,谁还会热情得起来? 66 | 67 | ### 2. 看不到成长 68 | - 业务代码写了一万行 69 | - 技术深度还是那么深 70 | - 职级还在原地踏步 71 | - 薪资涨幅赶不上物价 72 | 73 | ### 3. 迷失在日常中 74 | - 早上改bug 75 | - 中午改bug 76 | - 下午改bug 77 | - 晚上还在改bug 78 | 79 | 每天像个修电工, 80 | 哪里漏电补哪里。 81 | 82 | ## 如何找回对编程的热情? 83 | 84 | ### 1. 重新定义你和编程的关系 85 | 不要把编程仅仅当作: 86 | 87 | - 完成任务的工具 88 | - 赚钱的手段 89 | - 应付老板的工作 90 | 91 | 试着把它当作: 92 | 93 | - 解决问题的能力 94 | - 创造价值的技能 95 | - 实现想法的途径 96 | 97 | ### 2. 主动制造正反馈 98 | - 写个自己感兴趣的小项目 99 | - 参与开源社区 100 | - 记录技术博客 101 | - 分享技术心得 102 | 103 | ### 3. 找到成长的方向 104 | 与其抱怨: 105 | 106 | - 天天写CRUD没技术含量 107 | - 业务代码没什么营养 108 | - 工作内容太单调 109 | 110 | 不如: 111 | 112 | - 从CRUD中抽取通用组件 113 | - 在业务中挖掘技术价值 114 | - 把重复的工作自动化 115 | 116 | ### 4. 创造属于自己的空间 117 | - 每天留点时间学习 118 | - 每周抽空看看技术文章 119 | - 每月完成一个小目标 120 | - 每季度总结一下成长 121 | 122 | ## 那么,要不要继续做程序员? 123 | 124 | 其实,选择权一直在你手上: 125 | 126 | 如果你发现: 127 | 128 | - 真的对编程没有一点兴趣 129 | - 写代码让你痛不欲生 130 | - 看到电脑就想摔键盘 131 | - 对技术完全提不起劲 132 | 133 | 那么,转行也未尝不可。 134 | 135 | 但如果你发现: 136 | 137 | - 解决问题时还会有成就感 138 | - 写出好代码时还会有快感 139 | - 学到新技术时还会有兴奋感 140 | - 只是被一些外部因素影响了 141 | 142 | 那么,也许你需要的只是换个环境,换个方向,或者换个心态。 143 | 144 | ## 最后的碎碎念 145 | 146 | 其实程序员这个职业有人把它当成事业,有人把它当成工作,有人把它当成跳板,有人把它当成爱好。 147 | 148 | 没有对错,只有选择。 149 | 150 | 重要的不是你选择继续还是放弃, 151 | 而是你要搞清楚, 152 | 到底是不喜欢编程本身, 153 | 还是不喜欢编程之外的那些东西。 154 | 155 | (写完这篇文章,我好像又找到了一点写代码的动力...) -------------------------------------------------------------------------------- /docs/chapter2/section8.md: -------------------------------------------------------------------------------- 1 | # 2.8 工作倦怠了吗,试试三叶草模型 2 | 3 | ![工作倦怠](../assets/images/chapter2/burnout.jpg) 4 | 5 | "最近上班好累,上班如上坟.." 6 | "不是身体累,就是...提不起劲" 7 | "天天就想摸鱼,对工作提不起一点兴趣" 8 | 9 | 如果你也有这种感觉,不妨用三叶草模型来给自己做个诊断。 10 | 11 | ## 什么是三叶草模型? 12 | 13 | 三叶草模型是一个职业生涯规划模型,它把工作动力分成三片叶子: 14 | 15 | - 兴趣叶:对工作的热情和喜爱程度 16 | - 能力叶:解决问题的技术和才干 17 | - 价值叶:工作带来的回报和意义 18 | 19 | 这三片叶子相互影响,缺一不可: 20 | 21 | - 有兴趣,学习能力才会提升 22 | - 有能力,才能创造更多价值 23 | - 有价值,才能持续保持兴趣 24 | 25 | ## 三种倦怠类型 26 | 27 | ### 1. 厌倦型(兴趣叶枯萎) 28 | 表现: 29 | 30 | - 天天盼着下班 31 | - 看到代码就烦 32 | - 对什么都提不起劲 33 | - 工作完全是为了完成任务 34 | 35 | 就像我一个同事说的: 36 | "以前看到新技术就兴奋,现在看到新框架就头大" 37 | "记得刚工作那会儿,周末还会自己写代码,现在连IDE都不想打开" 38 | 39 | ### 2. 焦虑型(能力叶不足) 40 | 表现: 41 | 42 | - 总觉得跟不上节奏 43 | - 害怕接到新需求 44 | - 看不懂同事的代码 45 | - 技术分享时坐立难安 46 | 47 | 一个典型场景: 48 | "产品经理说这个很简单,可我看了半天也没头绪..." 49 | "同事两天就能写完的功能,我要写一周..." 50 | 51 | ### 3. 失落型(价值叶缺失) 52 | 表现: 53 | 54 | - 付出没有回报 55 | - 努力得不到认可 56 | - 看不到职业发展 57 | - 觉得自己是工具人 58 | 59 | 常见的抱怨: 60 | "我优化了整个系统性能,领导说'这不是应该的吗?'" 61 | "加班做完的方案,第二天被一句'需求变了'否定" 62 | 63 | ## 如何治愈倦怠? 64 | 65 | ### 1. 厌倦型的治疗方案 66 | 67 | 第一步:找回兴趣的源头 68 | - 回忆当初为什么选择编程 69 | - 列出曾经让你兴奋的技术点 70 | - 想想最有成就感的项目 71 | 72 | 第二步:重新培养兴趣 73 | - 尝试一个自己感兴趣的side project 74 | - 研究一下新技术或者开源项目 75 | - 和志同道合的同事一起做点东西 76 | 77 | 第三步:转化兴趣 78 | - 把枯燥的工作游戏化 79 | - 在日常工作中设立小目标 80 | - 给自己设定技术挑战 81 | 82 | ### 2. 焦虑型的治疗方案 83 | 84 | 第一步:正视能力差距 85 | - 列出具体的技能短板 86 | - 设定合理的学习目标 87 | - 制定可执行的计划 88 | 89 | 第二步:系统提升 90 | - 每天抽固定时间学习 91 | - 参与有挑战性的项目 92 | - 向高手请教和学习 93 | 94 | 第三步:发挥优势 95 | - 专注于自己擅长的领域 96 | - 把已有技能做到极致 97 | - 找到适合自己的位置 98 | 99 | ### 3. 失落型的治疗方案 100 | 101 | 第一步:重新定义价值 102 | - 不只看外在回报 103 | - 关注个人成长 104 | - 寻找工作的其他意义 105 | 106 | 第二步:创造价值 107 | - 主动承担重要任务 108 | - 解决团队痛点问题 109 | - 提升工作的可见度 110 | 111 | 第三步:寻找平台 112 | - 选择更适合的团队 113 | - 找到欣赏自己的领导 114 | - 寻找价值观一致的环境 115 | 116 | ## 一些特别提醒 117 | 118 | 1. 三片叶子是相互影响的,找回兴趣,能力自然会提升,提升能力,价值自然显现,获得价值,兴趣会更浓 119 | 120 | 2. 治愈倦怠需要时间,不要期待立竿见影,给自己一个缓冲期,保持耐心和信心。 121 | 122 | 3. 记住选择权在你,可以换个团队,可以转换方向,可以寻找新机会。 123 | 124 | 就像调试代码一样:先定位问题(哪片叶子出问题了),再分析原因(为什么会这样),最后解决问题(对症下药)。 125 | 126 | 程序员嘛,修bug的时候都那么执着, 127 | 修复自己的倦怠,也要这么认真才行。 -------------------------------------------------------------------------------- /docs/chapter2/section9.md: -------------------------------------------------------------------------------- 1 | # 2.9 天天用AI,以后自己不会写代码怎么办 2 | 3 | ![AI编程](../assets/images/chapter2/ai-coding.jpg) 4 | 5 | "用AI写代码,会不会显得我很菜?" 6 | "天天用AI,以后自己不会写代码怎么办?" 7 | "依赖AI工具,会不会显得我不专业?" 8 | 9 | 最近在程序员群里,有时会看到这样的焦虑。 10 | 11 | 且慢,让我们先问个问题: 12 | 当年从汇编转到高级语言时,前辈们是不是也这么焦虑? 13 | 当年从手写SQL转到ORM时,大家是不是也这么担心? 14 | 15 | ## 我们在担心什么? 16 | 17 | ### 1. "不会写代码了" 18 | 真的吗? 19 | - 用了IDE的自动补全,你忘记怎么写for循环了吗? 20 | - 用了Lombok,你忘记怎么写getter/setter了吗? 21 | - 用了Spring Boot,你忘记怎么写XML配置了吗? 22 | 23 | (好吧,最后一个确实有点忘了...) 24 | 25 | ### 2. "显得我很菜" 26 | 等等,你的竞争力真的在于: 27 | 28 | - 手写一个快速排序? 29 | - 背诵设计模式的定义? 30 | - 记住所有API的参数? 31 | 32 | 还是在于: 33 | 34 | - 理解业务需求的能力 35 | - 解决实际问题的思路 36 | - 架构设计的水平 37 | - 技术选型的判断 38 | 39 | ### 3. "不够专业" 40 | 那么问题来了: 41 | 42 | - 用搜索引擎查资料算不算专业? 43 | - 用Stack Overflow找答案算不算专业? 44 | - 用GitHub Copilot写代码算不算专业? 45 | 46 | 专业的定义是: 47 | 48 | - 解决问题的效率 49 | - 输出结果的质量 50 | - 维护代码的可靠性 51 | 52 | ## AI是工具,不是敌人 53 | 54 | ### 1. AI的优势 55 | - 帮你写重复的模板代码 56 | - 帮你找到常见的解决方案 57 | - 帮你优化代码结构 58 | - 帮你提高编码效率 59 | 60 | 就像: 61 | 62 | - IDE帮你自动补全 63 | - Git帮你管理代码 64 | - Maven帮你管理依赖 65 | - Docker帮你部署服务 66 | 67 | ### 2. 你的优势 68 | - 理解业务场景 69 | - 设计系统架构 70 | - 权衡技术选型 71 | - 把控代码质量 72 | - 解决复杂问题 73 | 74 | AI写不了的是: 75 | 76 | - 产品经理的脑回路 77 | - 老板的临时需求 78 | - 客户的特殊要求 79 | - 遗留系统的坑 80 | 81 | ## 如何正确使用AI? 82 | 83 | ### 1. 用AI提高效率 84 | - 生成样板代码 85 | - 编写单元测试 86 | - 重构老代码 87 | - 优化代码结构 88 | 89 | 解放双手, 90 | 专注于真正需要思考的问题。 91 | 92 | ### 2. 用AI学习成长 93 | - 让AI解释复杂代码 94 | - 让AI提供最佳实践 95 | - 让AI推荐设计方案 96 | - 让AI分析性能问题 97 | 98 | 站在巨人的肩膀上, 99 | 看得更远,学得更快。 100 | 101 | ### 3. 用AI激发创意 102 | - 讨论技术方案 103 | - 探索解决思路 104 | - 寻找新的可能 105 | - 突破思维定式 106 | 107 | AI不是你的替代品, 108 | 而是你的助手和老师。 109 | 110 | ## 一些建议 111 | 112 | ### 1. 建立正确认知 113 | 不要把AI当作写代码的黑盒,解决问题的万能钥匙,或者逃避思考的借口,而要把AI当作提高效率的工具,辅助思考的伙伴,激发创意的助手。 114 | 115 | ### 2. 掌握使用技巧 116 | 学会提出好问题,学会验证AI的答案,学会结合实际场景,学会举一反三。 117 | 118 | ### 3. 保持学习心态 119 | 理解AI给出的方案,思考背后的原理,总结经验教训,持续提升自己。 120 | 121 | ## 最后说点啥 122 | 123 | 其实,程序员最核心的能力是: 124 | 125 | - 解决问题的思维 126 | - 学习成长的能力 127 | - 工程化的素养 128 | - 技术的洞察力 129 | 130 | 代码只是表达这些能力的载体, 131 | 工具只是实现这些能力的手段。 132 | 133 | 与其纠结要不要用AI, 134 | 不如想想怎么用好AI。 135 | 136 | 就像当年: 137 | "不用IDE,手写代码才是真本事!" 138 | "不用框架,从零开始才是硬核!" 139 | "不用云服务,自己搭建才够专业!" 140 | 141 | 现在想想,还挺逗的。 -------------------------------------------------------------------------------- /docs/chapter3/index.md: -------------------------------------------------------------------------------- 1 | # 第三章 职场中的人际关系 2 | 3 | 在职场中,人际关系就像是一个看不见但却无处不在的"操作系统",它在默默影响着我们的工作效率、职业发展和个人成长。很多人觉得"能力才是硬道理",但现实往往是:能力决定你能做什么,而人际关系决定你能走多远。 4 | 5 | ## 为什么人际关系这么重要? 6 | 7 | 首先,没有人是孤岛。在现代企业中,几乎所有工作都需要协作才能完成。一个项目从需求到上线,需要产品经理的规划、设计师的设计、开发的实现、测试的验证、运维的部署,缺一不可。好的人际关系能让这个过程更顺畅,遇到问题时更容易得到支持和理解。 8 | 9 | 其次,机会往往来自人际网络。很多好的机会,比如重要项目、晋升机会、职位空缺,往往在正式发布之前就通过非正式渠道传播了。良好的人际关系能让你更早获取这些信息,获得更多选择的机会。 10 | 11 | 再次,个人成长需要他人的帮助。无论是技术指导、经验分享,还是职业建议,都需要他人的支持。一个好的人际网络,就像给自己配备了一个强大的"智囊团"。 12 | 13 | 但需要注意的是,好的职场人际关系不是靠巴结、奉承或者刻意讨好来维系的。真正持久的职场关系,是建立在专业、真诚和互相尊重的基础上的。它需要我们: 14 | 15 | - 在工作中展现专业能力 16 | - 在协作时互相理解和支持 17 | - 在交往中保持真诚和诚信 18 | - 在合作中创造共赢价值 19 | 20 | 这一章,我们将深入探讨职场中的人际关系:如何建立、如何维护、如何在工作中更好地发挥人际关系的价值,让我们的职业发展之路走得更稳、更远。 21 | 22 | 在职场中,能力或许能让你赢得比赛,但好的人际关系却能让你赢得整个赛季。 23 | 24 | -------------------------------------------------------------------------------- /docs/chapter3/section1.md: -------------------------------------------------------------------------------- 1 | # 3.1 领导一对一(1on1)聊什么 2 | 3 | ![1on1沟通](../assets/images/chapter3/1on1-meeting.jpg) 4 | 5 | "下周一对一,又不知道聊什么..." 6 | "每次都是领导问,我就答,感觉好被动" 7 | "一对一好尴尬,就像相亲..." 8 | 9 | 很多人都有这种困扰。 10 | 其实1on1是个难得的机会, 11 | 就看你会不会用。 12 | 13 | ## 为什么要重视1on1? 14 | 15 | ### 1. 这是你的专属时间 16 | - 不是日常晨会 17 | - 不是项目周会 18 | - 不是绩效面谈 19 | - 而是属于你的30分钟 20 | 21 | ### 2. 这是双向沟通的机会 22 | - 不是领导训话 23 | - 不是工作汇报 24 | - 不是被动答问 25 | - 而是平等的对话 26 | 27 | ### 3. 这是建立信任的时刻 28 | - 不是表面客套 29 | - 不是应付了事 30 | - 不是互相防备 31 | - 而是真诚交流 32 | 33 | ## 聊什么? 34 | 35 | ### 1. 工作进展 36 | 不要只说: 37 | "项目都按计划进行..." 38 | "没什么特别的问题..." 39 | 40 | 要说: 41 | 42 | - 遇到了什么挑战 43 | - 如何解决的 44 | - 学到了什么 45 | - 还需要什么支持 46 | 47 | ### 2. 个人成长 48 | 主动分享: 49 | 50 | - 最近在学什么 51 | - 遇到什么瓶颈 52 | - 有什么困惑 53 | - 未来想往哪个方向发展 54 | 55 | ### 3. 团队建设 56 | 可以聊: 57 | 58 | - 团队氛围如何 59 | - 和同事协作情况 60 | - 流程上有什么建议 61 | - 团队还缺什么 62 | 63 | ### 4. 对公司的想法 64 | 可以谈: 65 | 66 | - 对公司战略的理解 67 | - 对产品的建议 68 | - 对流程的改进想法 69 | - 对团队发展的建议 70 | 71 | ## 怎么聊? 72 | 73 | ### 1. 会前准备 74 | - 列个提纲 75 | - 记录关键点 76 | - 准备具体例子 77 | - 想好你的诉求 78 | 79 | 比如: 80 | "最近在做性能优化,遇到几个难点,想和您讨论下..." 81 | "对未来的职业发展有些困惑,想听听您的建议..." 82 | 83 | ### 2. 会中技巧 84 | - 先说重要的 85 | - 用数据说话 86 | - 多提建设性意见 87 | - 注意倾听反馈 88 | 89 | ### 3. 会后跟进 90 | - 记录关键点 91 | - 落实行动项 92 | - 跟进解决方案 93 | - 下次汇报进展 94 | 95 | ## 几个常见场景 96 | 97 | ### 1. 遇到困难时 98 | 不要说: 99 | "这个问题好难,搞不定..." 100 | 101 | 要说: 102 | "我遇到这个问题, 103 | 已经尝试了这些方案, 104 | 但效果不理想, 105 | 想听听您的建议..." 106 | 107 | ### 2. 有想法建议时 108 | 不要说: 109 | "我觉得我们团队应该怎样怎样..." 110 | 111 | 要说: 112 | "我观察到这个问题, 113 | 分析原因可能是... 114 | 建议我们可以... 115 | 您觉得这个思路如何?" 116 | 117 | ### 3. 谈成长规划时 118 | 不要说: 119 | "我想往高级工程师发展..." 120 | 121 | 要说: 122 | "根据团队需要和个人兴趣, 123 | 我想在系统架构方面深入, 124 | 已经在学习相关知识, 125 | 希望能得到一些实践机会..." 126 | 127 | ## 注意事项 128 | 129 | ### 1. 要诚恳不要抱怨 130 | - 多谈解决方案 131 | - 少说牢骚 132 | - 保持建设性 133 | - 态度要积极 134 | 135 | ### 2. 要具体不要空泛 136 | - 多举实例 137 | - 少说空话 138 | - 有数据支撑 139 | - 重结果导向 140 | 141 | ### 3. 要主动不要被动 142 | - 提前准备话题 143 | - 主动分享想法 144 | - 争取有效反馈 145 | - 及时跟进行动 146 | 147 | ## 关于1on1的一些特别提醒 148 | 149 | ### 1. 不是吐槽大会 150 | 不要一味抱怨,不要传播负能量,不要说同事坏话,要保持专业性。 151 | 152 | ### 2. 不是表演时间 153 | 不要过分包装,不要避重就轻,不要夸大成绩,要保持真诚。 154 | 155 | ### 3. 不是单向汇报 156 | 不要只说成绩,不要只报进度,不要只答不问,要互动交流。 157 | 158 | ## 最后的建议 159 | 160 | 把1on1当作:自我提升的机会,建立信任的渠道,解决问题的平台,职业发展的助推器。 161 | 162 | 好的1on1不在于时间长短,而在于沟通的质量;不在于说了多少,而在于解决了什么。 163 | -------------------------------------------------------------------------------- /docs/chapter3/section2.md: -------------------------------------------------------------------------------- 1 | # 3.2 领导让我提意见,我该怎么提 2 | 3 | ![提建议](../assets/images/chapter3/give-advice.jpg) 4 | 5 | "小王,你觉得咱们团队有什么问题不?" 6 | 7 | 这种时候,脑子里第一反应是不是: 8 | "完了完了,这是道送命题啊..." 9 | "要说没问题吧,显得我没见识," 10 | "要说有问题吧,万一说错了怎么办?" 11 | "要不...先说'挺好的'保命要紧?" 12 | 13 | 别慌,这其实是个好机会, 14 | 就像产品经理难得让你提需求一样, 15 | 机会难得,且(pian)行且珍惜。 16 | 17 | ## 从哪些角度切入? 18 | 19 | ### 1. 团队士气 20 | 就是看看大家"精气神": 21 | 22 | - 最近大家是不是像霜打的茄子 23 | - 周五下班冲刺速度是不是创新高 24 | - 团建时候是不是都在看手机 25 | - 每天的群聊是不是只剩工作汇报 26 | 27 | (要是发现群里连表情包都没人发了,那问题可就大了) 28 | 29 | ### 2. 工作效率 30 | 观察下是不是有这种情况: 31 | 32 | - 改个bug要三个部门盖章 33 | - 一个需求开了五个会还没定 34 | - 线上环境比测试环境还不稳定 35 | - 每天光开会就能开饱 36 | 37 | (如果发现自己一天的日历像彩虹一样绚丽,那就要考虑提提建议了) 38 | 39 | ### 3. 技术发展 40 | 看看团队是不是有这些征兆: 41 | 42 | - 系统像补丁贴补丁 43 | - 新技术永远在计划中 44 | - 代码像考古现场 45 | - 文档比代码还老 46 | 47 | (如果发现自己天天在写"历史遗留代码",那真得说点什么了) 48 | 49 | ### 4. 人才培养 50 | 注意这些现象: 51 | 52 | - 新人培训全靠"自己悟" 53 | - 技术分享变成了没几个人参与的"鸡汤分享" 54 | - 晋升通道像迷宫一样 55 | - 老员工都在准备简历 56 | 57 | (如果发现新人入职三个月还在问"git怎么用",那可能真要考虑培训体系的问题了) 58 | 59 | ### 5. 业务发展 60 | 关注这些信号: 61 | 62 | - 产品方向像风向标 63 | - 竞品都出3.0了我们还1.5 64 | - 创新项目永远在PPT里 65 | - 用户反馈像石沉大海 66 | 67 | (如果发现竞品的产品经理都换了一茬了,我们的需求还在讨论,那就得说道说道了) 68 | 69 | ## 怎么说才不会翻车? 70 | 71 | ### 1. 做好功课 72 | 不要像背书一样照本宣科, 73 | 也不要像说相声一样东扯西扯。 74 | 准备点数据,举几个例子, 75 | 让领导知道你是真懂行,不是在瞎操心。 76 | 77 | ### 2. 态度要诚恳 78 | 不是来吐槽的, 79 | 不是来表现的, 80 | 是真心想把事情搞好, 81 | 是真的对团队有感情。 82 | 83 | ### 3. 建议要实在 84 | 不要说"我觉得应该全面提升一下"这种空话, 85 | 也不要说"咱们把技术栈全换了吧"这种大话。 86 | 说具体的,说能做的, 87 | 让领导听完能点头,而不是摇头。 88 | 89 | ## 最后的叮嘱 90 | 91 | 提意见不是找茬,是帮助团队发现问题、解决问题。 92 | 93 | 就像给代码提PR:不是为了显示自己多厉害,而是为了让代码变得更好。 94 | -------------------------------------------------------------------------------- /docs/chapter3/section3.md: -------------------------------------------------------------------------------- 1 | # 3.3 同事太优秀怎么办? 2 | 3 | ![职场压力](../assets/images/chapter3/workplace-pressure.jpg) 4 | 5 | "隔壁小王又升职了..." 6 | "老李的项目又被表扬了..." 7 | "新来的应届生居然比我还厉害..." 8 | 9 | 每次看到这些消息, 10 | 心里就像被扎了一刀。 11 | 觉得自己怎么这么没用, 12 | 产生了严重的自我怀疑。 13 | 14 | ## 先说点实在的 15 | 16 | ### 1. 你不是一个人 17 | - 每个人都会有这种感受 18 | - 那些看起来很优秀的人也会 19 | - 甚至他们可能也在羡慕你 20 | - 这是再正常不过的情绪 21 | 22 | ### 2. 这其实是好事 23 | - 说明你还在乎 24 | - 说明你有上进心 25 | - 说明你没有躺平 26 | - 这种压力可以转化为动力 27 | 28 | ### 3. 换个角度想 29 | - 有优秀的同事是你的福气 30 | - 这是学习的好机会 31 | - 这是提升的好环境 32 | - 这比在一个混日子的团队强 33 | 34 | ## 如何调整心态? 35 | 36 | ### 1. 停止无意义的比较 37 | 记住: 38 | 39 | - 你看到的是别人的highlight 40 | - 而你只看到自己的behind the scenes 41 | - 你不知道他们付出了什么 42 | - 也不知道他们经历了什么 43 | 44 | 就像社交媒体一样: 45 | 别人都在发朋友圈晒成功, 46 | 谁会发自己熬夜改bug的照片? 47 | 48 | ### 2. 找到自己的节奏 49 | 每个人都有自己的路: 50 | 51 | - 有人是短跑选手,早早就冲出去了 52 | - 有人是马拉松选手,慢慢在追赶 53 | - 有人是跨栏选手,一步一个台阶 54 | - 重要的是找到适合自己的节奏 55 | 56 | ### 3. 转化压力为动力 57 | 与其羡慕别人: 58 | 59 | - 不如向他们学习 60 | - 不如请教他们经验 61 | - 不如和他们合作 62 | - 不如把他们当成自己的标杆 63 | 64 | ## 具体怎么做? 65 | 66 | ### 1. 给自己定个小目标 67 | 不要想着一下子赶超别人: 68 | 69 | - 先学会他们的一个技能 70 | - 先完成一个小项目 71 | - 先提升一个方面 72 | - 一步一步来 73 | 74 | ### 2. 主动靠近优秀的人 75 | - 和他们一起吃午饭 76 | - 请教技术问题 77 | - 参与他们的项目 78 | - 多交流多学习 79 | 80 | ### 3. 关注自己的进步 81 | - 记录每天的收获 82 | - 总结每周的进步 83 | - 积累每月的成长 84 | - 看见自己的变化 85 | 86 | ## 特别提醒 87 | 88 | ### 1. 永远不要因为这个伤害自己 89 | 90 | 工作只是生活的一部分,职场成就不代表人生价值,每个人都有自己的精彩,保持健康最重要。 91 | 92 | ### 2. 需要帮助时及时求助 93 | 94 | 和家人朋友倾诉,和信任的同事交流,寻求心理咨询,不要一个人扛着。 95 | 96 | ### 3. 给自己一些奖励 97 | 98 | 完成一个目标就犒劳自己,学会庆祝小进步,享受成长的过程,善待自己很重要。 99 | 100 | ## 最后的话 101 | 102 | 人生不是竞赛,是一场属于自己的旅程。 103 | 104 | 优秀的同事就像路标,指引你可以走多远,但不是要你变成他们,而是成为更好的自己。 105 | 106 | 107 | (今天又看到老王升职了,不过这次我决定请他吃饭,好好请教一下经验...) 108 | -------------------------------------------------------------------------------- /docs/chapter3/section4.md: -------------------------------------------------------------------------------- 1 | # 3.4 同事是傻逼,我有厌蠢症,实在受不了了,想杀人 2 | 3 | ![同事相处](../assets/images/chapter3/colleague-relationship.png) 4 | 5 | "这么简单的bug,他怎么改了三天还没改好?" 6 | "这个需求都讲了八百遍了,他怎么还不懂?" 7 | "我的天呐,这代码是人写的吗?" 8 | 9 | 如果你经常这样吐槽, 10 | 那么恭喜你, 11 | 你可能也是个"厌蠢症"患者,这个时候,就是考验你“向下兼容”的能力了。 12 | 13 | ## 先冷静一下 14 | 15 | ### 1. 每个人都是别人眼中的"傻子" 16 | - 产品经理觉得程序员不懂需求 17 | - 程序员觉得测试不懂开发 18 | - 测试觉得运维不懂测试 19 | - 运维觉得所有人都不懂运维 20 | (好像哪里不对...) 21 | 22 | ### 2. "聪明"是个相对概念 23 | - 你觉得他笨, 24 | - 可能别人觉得你更笨 25 | - 就像你写的代码, 26 | - 说不定被别人在群里吐槽呢 27 | (想想还有点小紧张) 28 | 29 | ### 3. 每个人都有自己的长处 30 | - 他虽然代码写得慢,但bug少 31 | - 他虽然理解需求慢,但做得稳 32 | - 他虽然技术一般,但人缘好 33 | - 他虽然不太聪明,但很努力 34 | (好像也没那么糟?) 35 | 36 | ## 如何应对? 37 | 38 | ### 1. 换个角度想 39 | - 也许他是新手 40 | - 也许他是转行的 41 | - 也许他正在学习 42 | - 也许他有特殊困难 43 | (谁还没个新手的时候?) 44 | 45 | ### 2. 调整心态 46 | - 与其生气,不如帮助 47 | - 与其抱怨,不如指导 48 | - 与其嫌弃,不如包容 49 | - 与其逃避,不如沟通 50 | (好像有点道理) 51 | 52 | ### 3. 具体行动 53 | - 写详细的文档 54 | - 画清晰的流程图 55 | - 做耐心的解释 56 | - 给出具体的例子 57 | (感觉自己变得更专业了) 58 | 59 | ## 特别提醒 60 | 61 | ### 1. 不要人身攻击 62 | - 不要说"你怎么这么笨" 63 | - 不要说"这都不懂" 64 | - 不要说"谁招的你" 65 | - 不要说"你是不是脑子有问题" 66 | (说出来显得自己更low) 67 | 68 | ### 2. 不要过度包揽 69 | - 不是所有人都需要你救 70 | - 不是所有事都要你管 71 | - 给他成长的空间 72 | - 给自己喘息的机会 73 | (累死自己可不值得) 74 | 75 | ### 3. 该放手时放手 76 | 如果真的无法沟通: 77 | 78 | - 和领导反馈 79 | - 调整分工方式 80 | - 换个协作方式 81 | - 实在不行就换组 82 | (及时止损很重要) 83 | 84 | ## 最后的话 85 | 86 | 其实, 87 | 所谓的"厌蠢症", 88 | 往往是我们对他人的不理解, 89 | 和对自己的过度自信。 90 | 91 | 记住:每个人都在自己的节奏里成长,你对别人的包容,也是对自己的善待。 92 | 93 | (诶,好像最近那个"笨蛋"同事进步不少...) 94 | 95 | --- 96 | PS: 如果你真的想"杀"了他, 97 | 建议: 98 | 1. 用耐心"杀"死他的无知 99 | 2. 用帮助"杀"死他的迷茫 100 | 3. 用专业"杀"死他的混乱 101 | 4. 实在不行,"杀"死自己的偏见 -------------------------------------------------------------------------------- /docs/chapter3/section5.md: -------------------------------------------------------------------------------- 1 | # 3.5 卷王太凶残,我要不要'反卷'? 2 | 3 | ![职场内卷](../assets/images/chapter3/involution.jpg) 4 | 5 | "他早上6点就来公司了..." 6 | "他周末还在写代码..." 7 | "他又在群里发学习笔记了..." 8 | "他连厕所都带着笔记本..." 9 | 10 | 每当看到这些, 11 | 你是不是也想把键盘砸他脸上? 12 | (冷静,这样会把键盘弄脏的) 13 | 14 | ## 让我们先看看卷王的日常 15 | 16 | > 💡 **观察卷王,不是为了模仿,而是为了找到更聪明的方式** 17 | 18 | ### 1. 早卷 19 | - 早上6点到公司 20 | - 7点开始写代码 21 | - 8点发朋友圈打卡 22 | - 9点在群里分享心得 23 | (我8点才起床...) 24 | 25 | ### 2. 午卷 26 | - 午饭带便当边吃边学 27 | - 用纸巾擦手继续敲代码 28 | - 休息时间刷技术视频 29 | - 上厕所都带着Kindle 30 | (我中午只想睡觉...) 31 | 32 | ### 3. 晚卷 33 | - 晚上9点还在写代码 34 | - 10点开始写技术博客 35 | - 11点还在群里讨论问题 36 | - 12点发朋友圈总结今天 37 | (我7点就想回家...) 38 | 39 | ## 🤔 面对卷王,我们有什么选择? 40 | 41 | ### 1. 跟着一起卷? 42 | 优点: 43 | 44 | - 能力提升快 45 | - 可能升职加薪 46 | - 简历好看 47 | 48 | 缺点: 49 | 50 | - 头发掉得快 51 | - 黑眼圈明显 52 | - 可能猝死 53 | (好像有点不值得?) 54 | 55 | ### 2. 躺平不卷? 56 | 优点: 57 | 58 | - 生活质量好 59 | - 压力小 60 | - 头发浓密 61 | 62 | 缺点: 63 | 64 | - 可能被淘汰 65 | - 可能没竞争力 66 | - 可能加薪困难 67 | (这也不是办法啊) 68 | 69 | ### 3. ⭐️ 智慧反卷! 70 | 重点来了,这才是正确的打开方式: 71 | 72 | #### a) **提升效率而不是时间** 73 | > 核心:用2小时完成别人4小时的工作 74 | - 善用工具和自动化 75 | - 专注高价值的事情 76 | (工作要智商,不要时长) 77 | 78 | #### b) **建立个人壁垒** 79 | > 核心:成为领域专家,而不是万金油 80 | - 找到自己的专业领域 81 | - 深耕某个技术方向 82 | - 打造不可替代性 83 | 84 | #### c) **差异化竞争** 85 | > 核心:比成果,不比时间 86 | - 不要和卷王比加班 87 | - 要和他比成果 88 | - 要和他比思路 89 | - 要和他比效率 90 | 91 | ## 📝 具体怎么操作? 92 | 93 | ### 1. **工作效率篇** 94 | 关键词:`自动化` `工具` `流程` 95 | - 写自动化脚本 96 | - 整理代码模板 97 | - 建立知识库 98 | - 优化工作流程 99 | 100 | ### 2. **专业能力篇** 101 | 关键词:`深度` `积累` `方法论` 102 | - 聚焦核心技术 103 | - 研究系统设计 104 | - 积累实战经验 105 | - 形成方法论 106 | 107 | ### 3. **生活质量篇** 108 | 关键词:`平衡` `健康` `可持续` 109 | - 规律作息 110 | - 适度运动 111 | - 保持兴趣爱好 112 | - 维系社交生活 113 | 114 | ## ❗️ 特别提醒 115 | 116 | ### 1. **不要被表象迷惑** 117 | > 重要的是真实产出,而不是表面功夫 118 | - 早到不代表效率高 119 | - 加班不等于产出好 120 | - 学习时间长不等于进步快 121 | 122 | ### 2. **保持自己的节奏** 123 | > 人生不是百米冲刺,是马拉松 124 | - 每个人都有自己的路 125 | - 不要被别人的焦虑影响 126 | - 找到适合自己的方式 127 | 128 | ### 3. **该卷的时候还是要卷** 129 | > 关键是有度,有效率 130 | - 关键项目冲刺 131 | - 重要技术攻关 132 | - 核心业务突破 133 | 134 | ## 🎯 最后的话 135 | 136 | **记住三点:** 137 | 1. 卷王会一直存在 138 | 2. 但你不必成为卷王 139 | 3. 也不用怕卷王 140 | 141 | **最重要的是:** 142 | > 与其担心被卷死,不如提升自己的"含金量"。 143 | > 用脑子工作,而不是用时间堆积。 144 | 145 | (诶,好像最近那个卷王...头发掉得有点厉害...) -------------------------------------------------------------------------------- /docs/chapter3/section6.md: -------------------------------------------------------------------------------- 1 | # 3.6 我没有晋升不重要,但是他的晋升让我不爽 2 | 3 | ![职场晋升](../assets/images/chapter3/promotion.jpg) 4 | 5 | "听说小王要升P7了..." 6 | "啥?就他?开玩笑吧!" 7 | "那货代码写得还没我好呢!" 8 | "他进来的时候我都已经干了两年了!" 9 | 10 | ## 🤔 为什么这么不爽? 11 | 12 | ### 1. **常见的心理活动** 13 | > 其实我们都经历过这些想法 14 | - "凭什么是他不是我?" 15 | - "我技术明明比他好" 16 | - "他就会讨好领导" 17 | - "这个世界太不公平了" 18 | (承认吧,你一定也这么想过) 19 | 20 | ### 2. **真实的心理根源** 21 | > 不是嫉妒他的晋升,而是质疑自己的价值 22 | - 自我怀疑 23 | - 成就感缺失 24 | - 职业焦虑 25 | - 价值认同感动摇 26 | 27 | ## 💡 换个角度想想 28 | 29 | ### 1. **为什么是他?** 30 | > 技术只是晋升的一个维度 31 | - 也许他更懂业务 32 | - 也许他更会带团队 33 | - 也许他解决问题的方式更高效 34 | - 也许他确实付出了你没看到的努力 35 | 36 | ### 2. **我们经常忽略的事实** 37 | > 职场不只是比技术 38 | - 技术好 ≠ 一定要晋升 39 | - 晋升 ≠ 能力的全部证明 40 | - 职级 ≠ 个人价值 41 | - 当前位置 ≠ 未来成就 42 | 43 | ## ⭐️ 如何调整心态? 44 | 45 | ### 1. **正视自己的情绪** 46 | > 情绪是正常的,但不要被情绪控制 47 | - 承认自己的不爽 48 | - 允许自己难过一下 49 | - 但不要停留在负面情绪里 50 | - 把情绪转化为动力 51 | 52 | ### 2. **复盘自己的状态** 53 | 关键词:`自省` `成长` `改变` 54 | - 最近的工作重心是什么 55 | - 在哪些方面有提升 56 | - 哪些地方需要加强 57 | - 晋升需要的能力是否具备 58 | 59 | ### 3. **制定行动计划** 60 | > 与其羡慕别人,不如提升自己 61 | - 明确自己的目标 62 | - 找到差距在哪里 63 | - 制定具体计划 64 | - 付诸实际行动 65 | 66 | ## 📝 具体怎么做? 67 | 68 | ### 1. **技术维度** 69 | - 深耕技术领域 70 | - 解决关键问题 71 | - 输出技术方案 72 | - 分享技术心得 73 | 74 | ### 2. **业务维度** 75 | - 理解业务价值 76 | - 主动承担责任 77 | - 推动业务增长 78 | - 建立业务影响力 79 | 80 | ### 3. **软实力维度** 81 | - 提升沟通能力 82 | - 加强团队协作 83 | - 培养领导力 84 | - 锻炼项目管理能力 85 | 86 | ## ❗️ 特别提醒 87 | 88 | ### 1. **不要做这些事** 89 | > 这些行为只会让情况变得更糟 90 | - 在背后说同事坏话 91 | - 消极怠工 92 | - 散布负能量 93 | - 过度对比抱怨 94 | 95 | ### 2. **该做的事** 96 | > 把注意力放在建设性的行动上 97 | - 和领导做职业规划 98 | - 向优秀同事学习 99 | - 补齐自己的短板 100 | - 积累更多实战经验 101 | 102 | ## 🎯 最后的话 103 | 104 | **人的常见错误归因方式** 105 | 高估自己的努力,低估别人的努力。 106 | 高估自己的能力,低估自己的运气。 107 | 高估自己的能力,低估事情的难度。 108 | 109 | > 与其纠结他人的晋升, 110 | > 不如专注自己的成长。 111 | > 也许当你不再执着于晋升的时候, 112 | > 晋升反而会主动来找你。 113 | 114 | (诶,好像最近那个升职的同事天天加班,黑眼圈都快掉到下巴了...) 115 | 116 | --- 117 | **PS:如果还是很不爽,建议:** 118 | - 打开 IDE 写会代码 119 | - 去健身房举举铁 120 | - 约上三五好友吃顿饭 121 | - 人生啊,远比职级更精彩 -------------------------------------------------------------------------------- /docs/chapter3/section7.md: -------------------------------------------------------------------------------- 1 | # 社恐人混职场是真难啊 2 | 3 | > 作为一个社恐程序员,每天去上班就像是去打仗。站会发言时紧张得像第一次表白,组内讨论时安静得像隔壁组的背景板,领导找谈话时心跳快得像在跑马拉松...但是,且慢,让我们聊聊这个让无数程序员头疼的问题。 4 | 5 | ## 🎭 社恐人的日常修罗场 6 | 7 | 你说社恐程序员的日常是什么样的?让我给你还原一下现场: 8 | 9 | 早上到公司,看到电梯里有同事,果断选择等下一班。进了办公室,发现最喜欢的角落位置被占了,整个人都不好了。站会的时候,轮到自己发言,明明昨天写了一个超牛的功能,但是嘴里只能蹦出来"我...我昨天改了个bug..." 10 | 11 | 中午吃饭,看到一群同事叽叽喳喳地在食堂热聊,自己抱着饭盒默默地躲到了楼梯间,一边吃一边刷手机。这时候最怕的就是有同事推门进来,那场面比谍战片还要紧张。 12 | 13 | 下午开组内讨论会,脑子里明明有一堆绝妙的想法,但就是说不出口。看着同事们激烈讨论,自己就像个透明人,默默地点头,仿佛在演默片。这种感觉,大概就和相亲时被父母逼着说"介绍一下自己"是一个级别的。 14 | 15 | ## 💡 其实社恐也有社恐的优势 16 | 17 | 很多人只看到了社恐的劣势,其实社恐的特质也带来了一些独特的优势: 18 | 19 | ### 1. 专注力更强 20 | - 不爱社交 = 更少的打扰 21 | - 独处时间多 = 更深入的思考 22 | - 不爱说话 = 更多的倾听和观察 23 | 24 | ### 2. 更细腻的思维 25 | - 会提前思考各种可能性 26 | - 对细节更敏感 27 | - 能察觉他人容易忽略的问题 28 | 29 | ### 3. 更可靠的执行力 30 | - 答应的事情一定会做到 31 | - 不会随意承诺 32 | - 做事更加严谨 33 | 34 | ### 4. 更强的同理心 35 | - 容易理解他人的处境 36 | - 不会轻易打断别人 37 | - 更愿意帮助同样处境的人 38 | 39 | ## 🌟 社恐人的职场生存指南 40 | 41 | ### 1. 利用文字代替口头表达 42 | - 提前准备会议发言稿 43 | - 多用邮件和文档沟通 44 | - 善用异步沟通工具 45 | - 把想法写成文档再分享 46 | 47 | ### 2. 找到自己的"安全区" 48 | - 选择合适的工位(比如靠窗或者角落) 49 | - 戴上耳机创造私人空间 50 | - 找到能让自己放松的休息区 51 | - 和关系好的同事建立"联盟" 52 | 53 | ### 3. 把社恐转化为优势 54 | - 利用独处时间提升技能 55 | - 把细腻用在代码review上 56 | - 用文档完整地表达想法 57 | - 做好会前准备工作 58 | 59 | ### 4. 循序渐进地突破 60 | - 从小范围会议开始练习发言 61 | - 先和熟悉的同事多交流 62 | - 参与线上讨论培养信心 63 | - 给自己设定小目标 64 | 65 | ## 🎯 改变从小事做起 66 | 67 | 1. **站会发言的小技巧** 68 | - 提前写好要说的三点 69 | - 按照"昨天做了什么-今天要做什么-有什么问题"的顺序 70 | - 语速放慢,不要急着说完 71 | 72 | 2. **与同事交流的策略** 73 | - 从工作相关的话题开始 74 | - 多问问题,让对方多说 75 | - 记住一些通用的开场白,比如说"我最近在看一本书,里面提到...","我最近在学一门新技能,感觉很有意思","我最近在看一个电影,里面有..." 76 | 77 | 3. **应对社交压力的方法** 78 | - 给自己准备"逃生通道" 79 | - 事先了解活动流程 80 | - 找到"盟友"结伴参加 81 | 82 | ## 💪 写在最后 83 | 84 | 社恐并不是缺陷,而是一种特质。在职场中,不是所有岗位都需要你像销售一样能说会道。很多时候,**社恐人的细心、专注和可靠**,反而是非常难得的优势。 85 | 86 | 重要的是找到适合自己的相处方式: 87 | - 不擅长即兴发言,就提前准备 88 | - 不擅长面对面沟通,就多用文字 89 | - 不擅长大场合,就从小范围开始 90 | 91 | 最后,请记住:**这个社会需要各种性格的人**。社恐不是问题,问题是你是否找到了合适的方式来展现自己的价值。 -------------------------------------------------------------------------------- /docs/chapter4/index.md: -------------------------------------------------------------------------------- 1 | # 第四章 工作与家庭 2 | 3 | > 工作与家庭从来都不是非黑即白的选择题,而是一道需要用心经营的辩证题。 4 | 5 | ## 🌟 工作与家庭:相辅相成的关系 6 | 7 | ### 1. **打破对立思维** 8 | 生活中,我们常常听到这样的说法: 9 | 10 | - "工作和家庭只能二选一" 11 | - "要么成功,要么幸福" 12 | - "付出时间给工作,就是亏欠了家庭" 13 | 14 | 但实际上,这种非此即彼的思维方式本身就值得商榷。 15 | 16 | ### 2. **良性循环的真相** 17 | 事实上,我们常常发现: 18 | 19 | - 工作上靠谱的人,在家庭中往往也很靠谱 20 | - 能把工作做好的人,经营家庭也往往有章法 21 | - 职场上情商高的人,家庭关系通常也处理得不错 22 | 23 | 这不是巧合,而是能力的迁移和品质的统一。 24 | 25 | ## 💡 为什么会相互促进? 26 | 27 | ### 1. **能力的迁移** 28 | - 工作中培养的沟通能力,同样适用于家庭交流 29 | - 职场中锻炼的情绪管理,有助于家庭和谐 30 | - 项目管理的方法,可以用于家庭生活的规划 31 | - 解决问题的思维,能助力家庭难题的处理 32 | 33 | ### 2. **品质的统一** 34 | - 靠谱的人,在哪里都靠谱 35 | - 负责任的态度,不会因场合而改变 36 | - 善于合作的特质,在工作和家庭中都很重要 37 | - 同理心和包容心,是双向的 38 | 39 | ## 🎯 如何实现双赢? 40 | 41 | ### 1. **建立正确认知** 42 | - 工作和家庭不是零和博弈 43 | - 两者的关系是相互滋养而非相互消耗 44 | - 平衡不是时间的均分,而是价值的整合 45 | 46 | ### 2. **寻找协同效应** 47 | - 把工作中学到的好方法用于家庭 48 | - 将家庭的温暖带入工作的状态 49 | - 让两个领域相互借鉴、共同提升 50 | 51 | ### 3. **智慧的分配之道** 52 | - 关注质量胜于数量 53 | - 注重效率而非时长 54 | - 把握关键时刻的存在 55 | - 善用碎片时间的价值 56 | 57 | ## ⭐️ 本章要点 58 | 59 | 在接下来的内容中,我们将具体探讨: 60 | 1. 如何让伴侣成为工作的支持而非负担 61 | 2. 维系亲密关系的核心要素 62 | 3. 处理工作以及家庭中情绪的智慧方式 63 | 64 | 让我们一起探索如何让工作和家庭真正实现相辅相成、互相成就。 65 | 66 | -------------------------------------------------------------------------------- /docs/chapter4/section1.md: -------------------------------------------------------------------------------- 1 | # 4.1 好的伴侣可以帮你消化工作上的负面情绪 2 | 3 | ![家庭支持](../assets/images/chapter4/family-support.png) 4 | 5 | "今天不谈工作!" 6 | "回家就忘记公司的事!" 7 | "工作的事不要带回家!" 8 | 9 | 这些话听起来很有道理, 10 | 但真的合适吗? 11 | 12 | ## 🤔 为什么要和伴侣分享工作情绪? 13 | 14 | ### 1. **压抑不等于解决** 15 | > 情绪就像气球,憋得太久总会爆炸 16 | 17 | - 刻意回避反而加重压力 18 | - 负面情绪会在潜意识中积累 19 | - 可能导致更严重的心理问题 20 | - 影响工作和生活的质量 21 | 22 | - 负面情绪需要适当宣泄 23 | - 找到合适的倾诉对象 24 | - 选择恰当的表达方式 25 | - 保持情绪的健康流动 26 | 27 | - 伴侣是最好的倾诉对象 28 | - 最了解你的生活状态 29 | - 最容易产生情感共鸣 30 | - 最愿意倾听你的心声 31 | 32 | ### 2. **伴侣的独特价值** 33 | > 为什么伴侣比闺蜜/基友更适合倾诉? 34 | 35 | - 更了解你的性格特点 36 | - 知道你的处事方式 37 | - 理解你的情绪变化 38 | - 懂得如何安慰你 39 | 40 | - 更深度的情感联结 41 | - 共同的生活目标 42 | - 相互的责任担当 43 | - 长期的情感投入 44 | 45 | - 更安全的倾诉环境 46 | - 不用担心信息泄露 47 | - 不用顾虑面子问题 48 | - 可以完全地展示脆弱 49 | 50 | ## 💡 怎样和伴侣分享工作情绪? 51 | 52 | ### 1. **选择合适的时机** 53 | > 时机比内容更重要 54 | 55 | - 不要在这些时候分享: 56 | - 刚到家的疲惫时刻 57 | - 对方工作压力大时 58 | - 正在享受美食时 59 | - 准备休息入睡时 60 | 61 | - 推荐的分享时机: 62 | - 晚饭后的散步时光 63 | - 周末早晨的咖啡时间 64 | - 假期出游的轻松时刻 65 | - 双方都有精力倾听的场合 66 | 67 | ### 2. **注意分享的方式** 68 | > 态度决定效果 69 | 70 | - 语气的选择 71 | - 平和而不激动 72 | - 理性而不情绪化 73 | - 讨论而不是抱怨 74 | - 分享而不是发泄 75 | 76 | - 内容的把控 77 | - 重点突出 78 | - 条理清晰 79 | - 适可而止 80 | 81 | - 互动的技巧 82 | - 注意对方的反应 83 | - 给对方表达的机会 84 | - 接纳不同的观点 85 | - 感谢对方的倾听 86 | 87 | ## 📝 如何开启工作话题? 88 | 89 | ### 1. **选择合适的开场白** 90 | 91 | 🔴 不恰当的方式: 92 | 93 | - "今天那个产品经理又犯傻了!" 94 | - "我们老板真是太过分了!" 95 | - "我受够这个工作了!" 96 | - "你知道今天发生了什么吗?气死我了!" 97 | 98 | ✅ 推荐的方式: 99 | 100 | - "亲爱的,能听我说说今天遇到的事吗?" 101 | - "最近工作上有点困惑,想听听你的想法。" 102 | - "你在工作中遇到过类似的情况吗?" 103 | - "能和你分享个工作中的小故事吗?" 104 | 105 | ### 2. **不同场景的沟通话术** 106 | 107 | > 遇到工作挫折时: 108 | "今天项目上遇到点困难,能听我说说吗?我想理清楚自己的思路。" 109 | 110 | > 面对职场压力时: 111 | "最近工作压力有点大,能陪我散散步聊聊天吗?感觉和你说说话会好很多。" 112 | 113 | > 经历职场冲突时: 114 | "遇到个让我很困扰的情况,想听听你的看法,你在工作中遇到过类似的事吗?" 115 | 116 | ### 3. **营造轻松的分享氛围** 117 | - 晚饭后:"今天遇到个有意思的事,我们边走边聊?" 118 | - 周末早晨:"一起喝杯咖啡,听我说个小故事?" 119 | - 休息时光:"能借用你几分钟,帮我参考个问题吗?" 120 | 121 | ## ⭐️ 如何建立长期的分享机制? 122 | 123 | ### 1. **固定的分享时刻** 124 | - 建立例行的交流习惯 125 | - 创造专属的分享场景 126 | - 保持适度的分享频率 127 | - 注意互动的质量 128 | 129 | ### 2. **健康的互动模式** 130 | - 双向的信息流动 131 | - 平等的对话关系 132 | - 积极的反馈机制 133 | - 持续的情感投入 134 | 135 | ### 3. **良性的成长循环** 136 | - 共同进步 137 | - 互相支持 138 | - 价值认同 139 | - 感情升温 140 | 141 | ## ❗️ 特别提醒 142 | 143 | ### 1. **保持边界感** 144 | > 分享不等于全盘托出 145 | 146 | - 注意保护公司机密 147 | - 不涉及具体业务数据 148 | - 不透露商业机密 149 | - 不谈论具体人名 150 | - 重点是情绪而不是细节 151 | 152 | - 把握分享的度 153 | - 不要变成抱怨大会 154 | - 不要沉浸在负能量中 155 | - 不要期待对方解决所有问题 156 | - 保持适度的分享量 157 | 158 | ### 2. **关注正向反馈** 159 | > 不只分享困难,也要分享快乐 160 | 161 | - 分享工作中的成就 162 | - 项目完成的喜悦 163 | - 能力提升的欣慰 164 | - 同事认可的自豪 165 | - 工作进展的满意 166 | 167 | - 讨论职业发展 168 | - 分享职业规划 169 | - 探讨发展方向 170 | - 憧憬美好未来 171 | - 共同规划人生 172 | 173 | ## 🎯 最后的话 174 | 175 | **记住:** 176 | > 好的伴侣关系, 177 | > 不是形式上的两个人住在一起, 178 | > 而是灵魂上的相互理解和支持。 179 | 180 | 工作是生活的重要部分, 181 | 而不是需要隐藏的秘密。 182 | 适度分享不仅能帮助消化负面情绪, 183 | 更能增进彼此的理解和信任。 184 | 185 | 分享工作中的酸甜苦辣, 186 | 也是让感情升温的催化剂。 187 | 在互相理解和支持中, 188 | 两个人都能获得成长。 189 | 190 | (今天又被产品经理改需求了,回家得跟对象好好吐槽...啊不是,是"理性探讨"一下~) 191 | 192 | --- 193 | **PS:给还没有伴侣的打工人:** 194 | - 找个好伴侣真的很重要 195 | - 不是因为需要人分担房贷 196 | - 而是需要一个懂你的人 197 | - 在你累的时候递上一杯温水 198 | - 说一句:"来,给我讲讲。" -------------------------------------------------------------------------------- /docs/chapter4/section2.md: -------------------------------------------------------------------------------- 1 | # 4.2 维系亲密关系最重要的一点:接纳胜过改变 2 | 3 | ![亲密关系](../assets/images/chapter4/relationship.jpg) 4 | 5 | "你为什么不能像他/她一样..." 6 | "你要是能改改这个习惯就好了..." 7 | "你什么时候才能懂我的心意..." 8 | 9 | 等一等, 10 | 维系一段亲密关系最重要的, 11 | 不是轰轰烈烈的爱, 12 | 不是无限量的付出, 13 | 而是——**接纳对方本来的样子**。 14 | 15 | ## 🤔 为什么是接纳? 16 | 17 | ### 1. **爱是如你所是,而非如我所愿** 18 | > 真正的爱不是把对方变成自己想要的样子 19 | 20 | - 接纳意味着: 21 | - 允许对方保持本真 22 | - 尊重个体的差异 23 | - 给予成长的空间 24 | - 包容不完美 25 | 26 | - 强求改变往往导致: 27 | - 压抑真实的自我 28 | - 产生抵触情绪 29 | - 累积负面感受 30 | - 关系渐行渐远 31 | 32 | ### 2. **稳定关系的密码** 33 | > 长久的感情建立在相互理解和包容之上 34 | 35 | ✅ 健康关系的特征: 36 | 37 | - 很少的攻击 38 | - 很少的对抗 39 | - 很少的强人所难 40 | - 很多的理解和接纳 41 | 42 | 🔴 不健康关系的特征: 43 | 44 | - 频繁的批评指责 45 | - 持续的争吵对抗 46 | - 试图改变对方 47 | - 过度的期待要求 48 | 49 | ## 💡 如何做到真正的接纳? 50 | 51 | ### 1. **允许不完美** 52 | > 完美的关系不存在,但快乐的关系存在 53 | 54 | - 接受对方的小缺点: 55 | - 偶尔的健忘 56 | - 某些小习惯 57 | - 性格的特点 58 | - 处事的方式 59 | 60 | - 明白一个道理: 61 | - 没有十全十美的人 62 | - 差异造就独特 63 | - 不完美才真实 64 | - 包容创造和谐 65 | 66 | ### 2. **给予成长的空间** 67 | > 爱是成全,而不是束缚 68 | 69 | ✅ 应该这样: 70 | 71 | - 支持对方的兴趣爱好 72 | - 理解对方的职业选择 73 | - 尊重对方的社交圈 74 | - 给予独立思考的空间 75 | 76 | 🔴 避免这样: 77 | 78 | - 过度干预对方生活 79 | - 强制改变对方习惯 80 | - 限制对方的社交 81 | - 要求对方事事顺从 82 | 83 | ## ⭐️ 具体的行动指南 84 | 85 | ### 1. **日常相处中的接纳** 86 | > 从小事做起,在细节中体现 87 | 88 | ✅ 这样做: 89 | 90 | - "你喜欢就好,我支持你" 91 | - "这是你的选择,我理解" 92 | - "需要帮忙随时说" 93 | - "你有自己的想法很好" 94 | 95 | 🔴 避免说: 96 | 97 | - "你怎么总是这样..." 98 | - "你什么时候才能改改..." 99 | - "你必须要听我的..." 100 | - "要是你能像谁谁谁..." 101 | 102 | ### 2. **面对分歧时的态度** 103 | > 不同不代表错误,理解胜过改变 104 | 105 | ✅ 建设性的回应: 106 | 107 | - "我们想法不同,这很正常" 108 | - "让我试着理解你的观点" 109 | - "也许我们可以各自保留意见" 110 | - "重要的是互相尊重" 111 | 112 | ## ❗️ 特别提醒 113 | 114 | ### 1. **接纳的边界** 115 | - 不是放纵伤害行为 116 | - 不是默许原则问题 117 | - 不是忽视重要分歧 118 | - 不是牺牲自我价值 119 | 120 | ### 2. **需要警惕的情况** 121 | - 单方面的付出 122 | - 过度的忍让 123 | - 原则性的让步 124 | - 价值观的冲突 125 | 126 | ## 🎯 最后的话 127 | 128 | 稳定的关系,不在于爱得多热烈,而在于伤得多少。 129 | 130 | 真正的爱,是让对方做自己,而不是变成你想要的样子。 131 | 132 | 每一次的包容,都是给感情加分。每一次的接纳,都是给关系加温。 133 | 134 | (诶,好像该去陪对象打游戏了...虽然我不太懂,但看着也挺开心的~) 135 | 136 | --- 137 | **PS:给正在相处的你:** 138 | - 爱不是改变对方 139 | - 而是欣赏差异 140 | - 包容不完美 141 | - 给予自由 142 | - 相信时间 -------------------------------------------------------------------------------- /docs/chapter4/section3.md: -------------------------------------------------------------------------------- 1 | # 情绪稳定是个伪命题 2 | 3 | ![情绪稳定](../assets/images/chapter4/emotion.png) 4 | 5 | > "情绪稳定"这个词,听起来很美好,但真的存在吗? 6 | 7 | ## 为什么说情绪稳定是伪命题? 8 | 9 | 情绪波动是人类的天性,这是几千年进化的结果。喜怒哀乐,那是老祖宗刻在DNA里的代码,想改?不好意思,这个bug改不了,因为上帝这个产品经理说这是feature不是bug。 10 | 11 | 这些情绪反应都深深植根于我们的生理机制中,是大脑、内分泌系统和神经系统共同作用的结果。追求"零情绪波动",就像我们追求头发永不掉落一样不切实际。相反,压抑情绪可能会带来更多问题:身体的压力激素升高,免疫系统受损,心理负担加重,甚至影响人际关系。 12 | 13 | ## 我们真正该关注什么? 14 | 15 | ### 情绪调节能力 16 | 重点不是没有情绪,而是如何管理情绪。健康的情绪管理包括觉察情绪的存在,接纳情绪的产生,理解情绪的原因,以及找到合适的调节方式。很多人误以为"情绪稳定"就是不能有负面情绪,用"你要情绪稳定"来要求自己,这恰恰是不健康的。 17 | 18 | ### 建立情绪韧性 19 | 情绪韧性就像程序员的发际线,虽然每天都在后退,但只要还在战斗就永远有希望。就像橡皮筋一样,可以被压缩,但终能回弹。这包括我们承受压力的能力,从低谷恢复的速度,适应变化的弹性,以及自我调节的方法。这也是传说中的反脆弱。 20 | 21 | ## 如何与情绪和谐相处? 22 | 23 | 首先要接纳情绪的存在。情绪本身没有好坏,它们都是生命给我们的信号。当我们感到愤怒时,也许是边界被侵犯;当我们感到焦虑时,可能是对未来的担忧;当我们感到沮丧时,或许是某些需求没有被满足。重点是要找到情绪背后的原因并解决,而不是压抑情绪。 24 | 25 | 其次是提升情绪管理能力。这不是一蹴而就的事情,需要我们持续观察和练习。可以尝试一些具体的方法:深呼吸和冥想可以帮助我们平静下来,运动和户外活动能让身心放松,写日记能帮助我们梳理思绪,与信任的人倾诉也是很好的方式。 26 | 27 | ## 给自己合理的期待 28 | 29 | 不要期待自己永远平静如水,毕竟我们是程序员不是神仙(虽然有时候都会被当成万能的)。重要的是在波动时能够觉察,在起伏时懂得调节,在低谷时知道自救,在恢复时总结经验。 30 | 31 | 当然,如果发现情绪持续低落,波动极其剧烈,影响到日常生活,或者难以自行调节时,及时寻求专业帮助也是明智的选择。 32 | 33 | ## 最后的话 34 | 35 | 情绪稳定不是没有波动,而是在波动中保持掌控;不是压抑真实感受,而是学会与情绪共处。就像大海,表面有波澜,但深处依然沉稳。 36 | 37 | (写完这篇文章,突然觉得,接纳情绪的存在,本身就是一种智慧...) 38 | -------------------------------------------------------------------------------- /docs/chapter4/section4.md: -------------------------------------------------------------------------------- 1 | # 伴侣老是抱怨,我该怎么办 2 | 3 | > 每个人都希望下班回到家能得到温暖和理解,但现实往往是:刚进门就听到一连串的抱怨。工作已经够累了,回家还要面对这些,该怎么办? 4 | 5 | ## 🤔 为什么会有这么多抱怨? 6 | 7 | 在谈如何应对之前,我们先要理解:为什么会有这么多抱怨? 8 | 9 | ### 1. 抱怨的本质 10 | 抱怨背后往往隐藏着更深层的诉求: 11 | - "今天又加班" = 我很想你/我觉得被忽视了 12 | - "工资太低" = 我担心我们的未来 13 | - "你都不陪我" = 我需要更多的关注和陪伴 14 | - "你总是玩手机" = 我想要更多的互动 15 | 16 | ### 2. 抱怨的积累 17 | 很多抱怨不是突然产生的,而是长期积累的结果: 18 | - 小事情没有及时沟通 19 | - 情绪没有得到及时疏导 20 | - 期望没有被及时调整 21 | - 问题没有被真正解决 22 | 23 | ## 💡 换个角度看抱怨 24 | 25 | 其实,抱怨也不全是坏事: 26 | 27 | 1. **抱怨是一种信任** 28 | - 敢对你抱怨,说明还在乎这段关系 29 | - 愿意表达不满,总比憋在心里强 30 | - 抱怨是在寻求改变,而不是放弃 31 | 32 | 2. **抱怨是沟通的开始** 33 | - 至少ta愿意和你说话 34 | - 这是一个了解对方需求的机会 35 | - 可以借此深入交流 36 | 37 | ## 🎯 如何应对伴侣的抱怨 38 | 39 | ### 1. 倾听的艺术 40 | - 不要急着打断或反驳 41 | - 用身体语言表示你在认真听 42 | - 适时地复述对方的话,确保理解准确 43 | - 不要边听边玩手机 44 | 45 | ### 2. 情绪先行,解决其次 46 | - 先认可对方的感受:"我理解你会这么想" 47 | - 表达共情:"换做是我可能也会很烦" 48 | - 等情绪平复后再讨论解决方案 49 | - 不要一上来就讲道理 50 | 51 | ### 3. 寻找根源 52 | 抱怨往往只是表象,要找到真正的原因: 53 | - 是工作压力太大? 54 | - 是对未来感到焦虑? 55 | - 是感情需要被关注? 56 | - 是生活缺乏期待? 57 | 58 | ### 4. 共同制定计划 59 | 不要停留在抱怨本身,而是要: 60 | - 一起讨论可行的解决方案 61 | - 设定清晰的改进目标 62 | - 约定检查的时间点 63 | - 互相监督和鼓励 64 | 65 | ## 🌟 预防胜于应对 66 | 67 | ### 1. 建立日常沟通机制 68 | - 固定时间交流今天的经历 69 | - 每周进行一次深度对话 70 | - 重要决定一起商量 71 | - 及时分享喜怒哀乐 72 | 73 | ### 2. 创造美好时刻 74 | - 一起规划周末活动 75 | - 制造小惊喜 76 | - 保持适度的仪式感 77 | - 创造共同的回忆 78 | 79 | ### 3. 维护个人边界 80 | - 保留各自的独处时间 81 | - 尊重对方的兴趣爱好 82 | - 给彼此成长的空间 83 | - 不要过度依赖或控制 84 | 85 | ## 💪 写在最后 86 | 87 | 没有人喜欢一直抱怨,如果伴侣经常抱怨,与其抱怨"ta总是抱怨",不如: 88 | - 主动去了解背后的原因 89 | - 真诚地面对问题 90 | - 一起寻找解决方案 91 | 92 | 最重要的是:**不要把抱怨当作攻击,而要把它看作改善关系的机会**。 93 | 94 | 因为在亲密关系中,重要的不是谁对谁错,而是我们能否一起把事情变得更好。就像调试代码一样,找到bug不是结束,修复它才是目的。 -------------------------------------------------------------------------------- /docs/chapter4/section5.md: -------------------------------------------------------------------------------- 1 | --- 2 | comments: true 3 | --- 4 | 5 | # 婆媳关系真是男人的噩梦啊 6 | 7 | > 作为程序员,我们擅长解决各种复杂的技术问题。但面对婆媳关系这个千古难题时,却常常感觉比解 Bug 还要头疼。今天,让我们用程序员的思维来看看这个问题。 8 | 9 | ## 🤔 为什么婆媳关系这么难处理? 10 | 11 | ### 1. 系统冲突 12 | 就像两个不同的操作系统要共享同一个资源: 13 | - 都想要儿子/老公的关注和时间 14 | - 都认为自己对他最好 15 | - 都觉得自己的方式是对的 16 | - 都在争夺家庭"管理员权限" 17 | 18 | ### 2. 角色转换的不适应 19 | 就像系统升级带来的兼容性问题: 20 | - 婆婆从"独占"儿子到"共享"的转变 21 | - 媳妇从"独立个体"到"家庭成员"的转变 22 | - 儿子从"儿子"到"丈夫"的角色切换 23 | - 家庭权力结构的重新分配 24 | 25 | ### 3. 代际差异 26 | 这就像新旧版本的冲突: 27 | - 生活方式的差异 28 | - 教育理念的差异 29 | - 价值观的差异 30 | - 沟通方式的差异 31 | 32 | ## 💡 核心原则:以小家庭为重 33 | 34 | 在处理婆媳关系时,要记住一个核心原则:**以核心家庭(你和妻子)为重**。就像系统架构一样,必须有明确的优先级: 35 | 36 | ### 1. 为什么要以小家庭为重? 37 | - 这是你未来生活的主要系统 38 | - 妻子是你最亲密的伙伴 39 | - 家庭和睦是孩子成长的基础 40 | - 只有小家稳定,才能更好地照顾大家 41 | 42 | ### 2. 如何平衡和妈妈的关系? 43 | - 保持经常性的关心和联系 44 | - 在重要决定上征询意见 45 | - 适时表达感谢和孝心 46 | - 让她感受到被尊重和重视 47 | 48 | ## 🎯 具体的处理策略 49 | 50 | ### 1. 对待妻子(重中之重) 51 | - 在公开场合要明确支持妻子 52 | - 家庭重大决定以妻子意见为主 53 | - 及时和妻子沟通,不让她觉得被忽视 54 | - 在妻子受委屈时要及时表态 55 | 56 | ### 2. 对待妈妈(柔性处理) 57 | - 私下多和妈妈沟通 58 | - 让妈妈感受到你的关心没有减少 59 | - 适度满足妈妈的合理需求 60 | - 委婉表达而不是直接对抗 61 | 62 | ### 3. 处理冲突时 63 | - 先安抚妻子情绪,获得她的理解和支持 64 | - 再私下和妈妈沟通,解释现代家庭的相处之道 65 | - 寻找双方都能接受的解决方案 66 | - 建立长期的沟通机制 67 | 68 | ## 🌟 日常相处的智慧 69 | 70 | ### 1. 与妻子的默契 71 | - 达成对待父母的共识 72 | - 互相理解和支持 73 | - 有矛盾先私下沟通 74 | - 在孩子教育等重大问题上统一战线 75 | 76 | ### 2. 与妈妈的沟通 77 | - 多表达感谢和理解 78 | - 让她感受到被需要 79 | - 创造和孙辈的互动机会 80 | - 适度保持距离,但不疏远 81 | 82 | ### 3. 建立长期机制 83 | - 固定的探访频率 84 | - 清晰的界限感 85 | - 独立的生活空间 86 | - 合理的期望管理 87 | 88 | ## 💪 写在最后 89 | 90 | 处理婆媳关系,最重要的是要认清一个事实:**妻子是你的人生伴侣,是和你一起构建未来的人**。就像系统架构一样,主系统的稳定性是首要考虑的因素。 91 | 92 | 同时,我们也要善待父母这个"上一代系统",毕竟他们付出了一生的心血,而且他们也在努力适应角色的转变,同样需要被理解和尊重。 93 | 94 | 最终的目标是:让核心系统(小家庭)稳定运行,同时保持与"上一代系统"(父母)的良好兼容。这确实比处理分布式系统还要复杂,但这是每个男人都必须面对和解决的课题。 95 | 96 | **修复婆媳关系的最好方式,就是先搞定自己的伴侣,再平衡与父母的关系,摒着宁可委屈自己,也要大家开心的原则**。毕竟,一个幸福的小家,才是让父母真正安心的最好方式。 97 | 98 | 哎,虽然笔者小嘴巴巴的说了这么多,但是真到了事上,笔者也是满脑袋包啊。 99 | 100 | 婆媳关系,真的是男人的噩梦啊!!! -------------------------------------------------------------------------------- /docs/chapter5/index.md: -------------------------------------------------------------------------------- 1 | # 第五章 程序员副业 2 | 3 | 在当今的职场环境中,越来越多的程序员开始尝试副业。这不仅仅是为了增加收入,更重要的是为了寻找工作之外的意义和成就感。本章,我们将深入探讨程序员为什么要做副业,以及如何更好地经营副业。 4 | 5 | ## 为什么要做副业? 6 | 7 | ### 寻找失落的意义感 8 | 在现代企业中,工作异化已经成为一个普遍现象。我们花费大量时间在工作上,却常常感觉不到工作的意义。这种意义感的缺失很大一部分源于工作中自主权的缺失: 9 | - 项目的选择权不在你手中 10 | - 技术方案往往需要妥协 11 | - 工作节奏被他人掌控 12 | - 成果的归属感较弱 13 | 14 | 而副业则完全不同。当你经营自己的副业时,你拥有完全的自主权: 15 | - 可以自主选择想做的项目 16 | - 技术方案由你做主 17 | - 工作节奏自己把控 18 | - 成果完全属于自己 19 | 20 | 这种高度的自主性会带来更强的成就感和意义感。心理学的一些研究表明,自主性(Autonomy)是人类基本心理需求之一,它直接影响着我们的幸福感和工作满意度。 21 | 22 | ### 潜意识里,把副业当主业,把主业当副业。 23 | 要做好副业,首先要调整心态。不要把它仅仅当作工作之外的零碎时间消遣,而是要: 24 | - 在时间投入上,给予足够重视 25 | - 在心理定位上,视其为未来的主业 26 | - 在规划上,制定长期发展策略 27 | 28 | 也就是说,潜意识里,你要把副业当作未来的主业来经营。当然,时间分配上,副业肯定要少于主业,只要你还在上班,这就是一个无法改变的事实。但我想强调的是,不要被工作上的情绪牵着鼻子走,目前的工作只是当前你谋生的手段,你的真正价值在于你未来副业能创造的价值。 29 | 30 | ## 副业的意义超越收入 31 | 32 | 虽然额外收入是副业的一个明显好处,但其真正的价值在于: 33 | 1. **自我实现**:通过副业,你可以实现工作中无法实现的想法 34 | 2. **能力提升**:经营副业需要全方位能力,这些能力反过来也会帮助你的主业 35 | 3. **职业保障**:副业可以成为职业生涯的"备用伞" 36 | 4. **心理健康**:不再把全部希望寄托在单一工作上,心理压力会显著降低 37 | 38 | ## 本章内容 39 | 40 | 在接下来的章节中,我们将具体探讨: 41 | - 当下最适合程序员的副业方向 42 | - 如何平衡主业与副业 43 | - 我身边做副业成功的人的关键要素 44 | 45 | 记住,副业不仅仅是一个创收的渠道,更是一个找回工作意义感、实现自我价值的途径。在这个意义上,副业的价值远超过其带来的实际收入。 46 | -------------------------------------------------------------------------------- /docs/chapter5/section1.md: -------------------------------------------------------------------------------- 1 | # 5.1 打工人做副业,要先学会转换思维模式 2 | 3 | ![思维模式转换](../assets/images/chapter5/mindset.jpeg) 4 | 5 | > 很多程序员在尝试副业时,总是习惯性地想着"我要做一个什么产品"。这其实是一个误区,是工作思维模式在作祟。要做好副业,首先要学会转换思维模式。 6 | 7 | ## 职场中的三种角色 8 | 9 | 在职场中,我们通常可以看到三种不同的角色: 10 | 11 | ### 1. Executor(执行者) 12 | - 负责具体任务的执行 13 | - 关注点在于"怎么做" 14 | - 精力集中在听从并执行 15 | - 大多数打工人都属于这个角色 16 | 17 | 就像一个熟练的木匠,他们擅长按图施工,将设计图变成实物。他们可能技术很强,但往往局限于执行层面。 18 | 19 | ### 2. Builder(建造者) 20 | - 负责系统的设计和架构 21 | - 关注点在于"做什么" 22 | - 精力集中在规划和构建 23 | - 这通常是打工人的天花板 24 | 25 | 类似于建筑师,他们能设计出整个建筑的框架,但仍然是在"建造"这个框架内思考问题。在程序员群体中,这往往就是架构师的角色。 26 | 27 | ### 3. Problem Solver(问题解决者) 28 | - 专注于发现和解决问题 29 | - 关注点在于"为什么做" 30 | - 精力集中在观察和思考 31 | - 这是副业成功的关键角色 32 | 33 | 他们更像是一个咨询顾问,首要任务是发现真正的问题所在,而不是急于提供解决方案。 34 | 35 | ## 为什么要转换思维模式? 36 | 37 | ### 工作思维的局限性 38 | 在工作中,我们习惯了这样的思维方式: 39 | 1. 接收需求 40 | 2. 分析可行性 41 | 3. 设计方案 42 | 4. 执行落地 43 | 44 | 这种思维模式让我们成为了优秀的Executor或Builder,但却可能限制了我们在副业上的发展。 45 | 46 | ### 拿着锤子找钉子的误区 47 | 很多程序员在做副业时,常常陷入这样的误区: 48 | - "我要开发一个类似xxx的产品" 49 | - "我要做一个更好的xxx工具" 50 | - "我要用新技术重写xxx项目" 51 | 52 | 这本质上还是Builder的思维方式,是在"拿着锤子找钉子"。结果往往是: 53 | - 做出来的产品无人问津 54 | - 找不到真正的用户痛点 55 | - 解决了并不存在的问题 56 | 57 | ## 如何转换为Problem Solver思维? 58 | 59 | ### 1. 从观察开始 60 | - 留意身边人的抱怨 61 | - 关注行业的痛点 62 | - 记录生活中的不便 63 | - 收集用户的反馈 64 | 65 | ### 2. 学会提问 66 | - 这个问题为什么存在? 67 | - 现有解决方案的缺陷是什么? 68 | - 用户真正需要的是什么? 69 | - 为什么现有方案解决不了? 70 | 71 | ### 3. 深入理解 72 | - 不要急于给出解决方案 73 | - 多和潜在用户交流 74 | - 理解问题背后的本质 75 | - 找到问题的关键节点 76 | 77 | ### 4. 验证假设 78 | - 用最小成本验证想法 79 | - 快速获取市场反馈 80 | - 及时调整方向 81 | - 不要过度投入 82 | 83 | ## 具体行动建议 84 | 85 | ### 1. 改变日常习惯 86 | - 每天记录3个观察到的问题 87 | - 定期和不同领域的人交流 88 | - 参加行业交流活动 89 | - 建立问题收集清单 90 | 91 | ### 2. 培养市场嗅觉 92 | - 关注行业新闻 93 | - 分析成功案例 94 | - 研究失败教训 95 | - 理解市场变化 96 | 97 | ### 3. 建立反馈机制 98 | - 找到目标用户群 99 | - 建立沟通渠道 100 | - 持续收集反馈 101 | - 快速迭代改进 102 | 103 | ## 最后的建议 104 | 105 | 记住,做副业最重要的不是你会什么,而是你能解决什么问题。转换思维模式不是一蹴而就的,需要持续练习和调整: 106 | 107 | 1. **保持开放心态**:不要被自己的技术栈限制思维 108 | 109 | 2. **关注价值**:不是技术有多先进,而是能解决多大的问题 110 | 111 | 3. **耐心观察**:好的机会往往来自于长期的观察和积累 112 | 113 | 4. **快速验证**:有了想法要及时验证,但不要过度投入 114 | 115 | 最重要的是,要始终记住:**找到真正的问题比解决问题更重要**。当你发现了一个真正值得解决的问题,解决方案往往会水到渠成。 116 | 117 | -------------------------------------------------------------------------------- /docs/chapter5/section2.md: -------------------------------------------------------------------------------- 1 | # 5.2 2025年程序员最值得做的副业 2 | 3 | > 2025年最值得做的副业当然还是跟AI相关,2023年大家卷模型预训练,2024年卷RAG和微调,2025年必定是Agent年。随着AI技术的逐渐成熟,2025年将是AI真正大规模落地的元年。对程序员来说,这是一个千载难逢的机会。 4 | 5 | ## AI浪潮下的机会 6 | 7 | ### 为什么是2025年? 8 | - 2023:GPT掀起AI热潮,大模型百花齐放 9 | - 2024:RAG和微调技术成熟,AI应用初具规模 10 | - 2025:Agent技术突破,AI真正走向落地 11 | - 🤔 **关键洞察**:技术成熟度、成本、效果三者将在2025年达到一个完美的平衡点 12 | 13 | ### 为什么是AI+? 14 | - 💡 **降本增效**:AI显著降低了创业门槛,真正实现了只要有一个想法,就可以快速验证,快速迭代。 15 | - 🚀 **技术优势**:程序员的技术背景完美匹配 16 | - 🎯 **蓝海市场**:大量细分领域尚待开发 17 | - 🌟 **长期价值**:AI革命才刚刚开始,不要迷信大厂和专家,大家都是摸着石头过河。 18 | 19 | ## 最值得投入的几个方向 20 | 21 | ### 1. AI + 自媒体 22 | 这个方向适合有写作能力,有内容创作能力的程序员,主要有两种玩法: 23 | 24 | #### 用AI产出内容 25 | - 文章生成(公众号,知乎,博客) 26 | - 视频制作(视频号,B站) 27 | - 图片创作(小红书,Instagram) 28 | - 音频合成(播客,有声书) 29 | 30 | > 小张的经历:从一个普通程序员到月入3万的自媒体博主。他利用AI工具每周生产3-5篇高质量视频,半年粉丝突破10万。关键是他找到了一个很好的赛道跟定位:最早的AI绘本视频。 31 | 32 | #### 产出AI相关内容 33 | - AI工具评测 34 | - AI使用教程 35 | - AI发展动态 36 | - AI应用案例 37 | 38 | > 老王的故事:他开了个AI工具测评的视频号,专门测评新出的AI工具,加上程序员视角的深度分析,短短3个月就有了5万粉丝,光deepseek的测评就带来了50万+的播放量以及10万+的点赞。接下来还打算出AI工具的教程视频,以及AI工具的开发教程。源源不断的AI模型,以及AI工具的更新,让他的内容创作可以持续进行。 39 | 40 | ### 2. AI工具站 41 | 特别适合出海,因为: 42 | - 英文市场更成熟 43 | - 付费意愿更强 44 | - 竞争相对较小 45 | - 变现周期更短 46 | 47 | 几个具体方向: 48 | - 🎮 追最新的AI模型并第一时间上站,抓新词周期。 49 | - 🎯 垂直细分领域的AI工具集成 50 | - 🔧 特定场景的AI解决方案 51 | - 🎨 AI创意工具 52 | - 📊 AI数据分析工具 53 | 54 | 55 | ### 3. AI游戏站 56 | 这是一个非常有想象空间的方向: 57 | - AI生成游戏内容 58 | - AI对话式游戏 59 | - AI角色扮演 60 | - AI游戏辅助工具 61 | 62 | ## 如何选择适合自己的方向? 63 | 64 | ### 1. 评估自己的优势 65 | - 技术栈匹配度 66 | - 时间投入能力 67 | - 兴趣持久度 68 | - 资金储备情况 69 | 70 | ### 2. 市场调研 71 | - 竞品分析 72 | - 用户需求 73 | - 变现模式 74 | - 增长潜力 75 | 76 | ### 3. 快速验证 77 | - MVP测试 78 | - 用户反馈 79 | - 数据分析 80 | - 及时调整 81 | 82 | ## 实操建议 83 | 84 | ### 1. 从小切入 85 | - 先选一个小场景 86 | - 解决一个具体问题 87 | - 积累实战经验 88 | - 逐步扩大规模 89 | 90 | ### 2. 持续学习 91 | - 跟进AI最新发展 92 | - 研究成功案例 93 | - 参与技术社区 94 | - 建立知识体系 95 | 96 | ### 3. 注意避坑 97 | - 不要一味追热点 98 | - 不要过度依赖单一平台 99 | - 不要忽视用户体验 100 | - 不要期望一夜暴富 101 | 102 | ## 最后的建议 103 | 104 | 记住,做副业最重要的是持续性。选择AI相关方向的好处是: 105 | 1. 技术门槛相对较低(对程序员来说) 106 | 2. 市场需求持续增长 107 | 3. 变现模式相对清晰 108 | 4. 可以边学边做 109 | 110 | > 与其在未来感叹"我要是早点开始就好了",不如现在就行动起来。2025年的AI浪潮,不会等待任何人。 111 | -------------------------------------------------------------------------------- /docs/chapter5/section3.md: -------------------------------------------------------------------------------- 1 | # 5.3 做副业,最重要的一点 2 | 3 | > "种一棵树最好的时间是十年前,其次是现在。" 做副业也是如此,最重要的不是完美的开始,而是持续的坚持。 4 | 5 | ## 为什么要持续坚持三个月? 6 | 7 | ### 1. 找到正确的方向需要时间 8 | - 🎯 没有人一开始就能找准方向 9 | - 💡 需要在实践中不断调整 10 | - 📈 通过数据反馈逐步优化 11 | - 🔄 这个过程至少需要三个月 12 | 13 | > 就像学开车,刚开始的时候手忙脚乱,但开过100次之后,很多动作就变成了肌肉记忆。 14 | 15 | ### 2. 建立基本的认知框架 16 | - 了解行业规则 17 | - 掌握基础技能 18 | - 建立工作流程 19 | - 形成个人节奏 20 | 21 | ## YouTube大神Mr Beast的启示 22 | 23 | Mr Beast(吉米·多纳尔森)可能是YouTube上最成功的创作者之一,但很少人知道他的起步历程: 24 | 25 | - 14岁开始做视频 26 | - 前期无人问津 27 | - 坚持上传了数百个视频 28 | - 在失败中不断学习和改进 29 | 30 | 他给新手的建议很简单:**先上传100个视频再说**。 31 | 32 | ### 为什么是100个视频? 33 | - 🎥 克服对镜头的恐惧 34 | - 🎬 熟悉制作流程 35 | - 📊 了解数据分析 36 | - 🎯 找到内容定位 37 | 38 | ## 副业成长的三个阶段 39 | 40 | ### 第一个月:适应期 41 | - 熟悉工具和流程 42 | - 建立基本习惯 43 | - 克服初期焦虑 44 | - 保持持续输出 45 | 46 | > 这个阶段最重要的是:不要纠结于完美,先把事情做起来。 47 | 48 | ### 第二个月:摸索期 49 | - 开始数据分析 50 | - 尝试不同方向 51 | - 收集用户反馈 52 | - 调整工作方法 53 | 54 | > 这个阶段要学会观察和思考:什么有效,什么无效? 55 | 56 | ### 第三个月:成长期 57 | - 找到适合的节奏 58 | - 建立内容体系 59 | - 形成个人特色 60 | - 开始小规模收益 61 | 62 | > 坚持到这个阶段的人,往往已经超过80%的尝试者。 63 | 64 | ## 持续行动的重要性 65 | 66 | ### 1. 行动中学习 67 | - 实践出真知 68 | - 错误也是财富 69 | - 反馈促进成长 70 | - 经验需要积累 71 | 72 | ### 2. 不断迭代 73 | - 收集数据 74 | - 分析问题 75 | - 优化方案 76 | - 再次验证 77 | 78 | ### 3. 保持节奏 79 | - 制定可行计划 80 | - 坚持日更/周更 81 | - 建立复盘习惯 82 | - 保持学习心态 83 | 84 | ## 如何坚持下去? 85 | 86 | ### 1. 设定合理目标 87 | - 不要期待立即回报 88 | - 把重心放在学习上 89 | - 制定阶段性目标 90 | - 关注过程而非结果 91 | 92 | ### 2. 建立反馈系统 93 | - 记录每日进展 94 | - 分析关键数据 95 | - 收集用户反馈 96 | - 定期总结复盘 97 | 98 | ### 3. 找到同路人 99 | - 加入学习社群 100 | - 分享经验心得 101 | - 互相督促鼓励 102 | - 共同成长进步 103 | 104 | ## 最后的建议 105 | 106 | 副业成功的关键不在于天赋,而在于持续投入的时间和精力。就像 Mr Beast 说的: 107 | 108 | > "很多人问我怎样才能在YouTube上成功。答案很简单:先上传100个视频,在这个过程中你自然就知道该怎么做了。" 109 | 110 | 不要等待完美的开始,重要的是: 111 | 1. **先开始做** 112 | 2. **持续做** 113 | 3. **做中学习** 114 | 4. **学中改进** 115 | 116 | 三个月后,你会发现自己已经比90%的人走得更远。因为大多数人连坚持三个月都做不到。 117 | 118 | > 与其在一年后后悔没有开始,不如现在就开始行动。记住,时间会证明一切。 119 | -------------------------------------------------------------------------------- /docs/chapter5/section4.md: -------------------------------------------------------------------------------- 1 | # 5.4 副业中的畏难情绪:从完美主义到微习惯 2 | 3 | > "完美是优秀的敌人"。在副业探索中,最大的敌人往往不是外部困难,而是自己的畏难情绪。如何克服这种情绪?关键在于降低行动门槛。 4 | 5 | ## 为什么会产生畏难情绪? 6 | 7 | ### 1. 完美主义陷阱 8 | - 期望一次做到最好 9 | - 过度关注细节 10 | - 害怕失败和批评 11 | - 计划过于宏大 12 | 13 | > 就像你想写一个完美的开源项目,结果光是想架构就想了三个月,最后什么都没做。 14 | 15 | ### 2. 能力焦虑 16 | - 技术栈不够全 17 | - 担心竞争太强 18 | - 害怕不够专业 19 | - 觉得准备不足 20 | 21 | ## 微习惯理论的启示 22 | 23 | 《微习惯》这本书提到:要养成一个新习惯,最重要的是**降低开始的门槛**。 24 | 25 | ### 降低行动成本的方法 26 | 27 | #### 1. 把大目标变成小行动 28 | ❌ 错误示范: 29 | - "我要做一个全功能的SaaS平台" 30 | - "我要做一个爆款视频" 31 | - "我要写一个完整的开源框架" 32 | 33 | ✅ 正确示范: 34 | - "今天先写一个最简单的API" 35 | - "先录制3分钟的内容" 36 | - "实现一个小功能" 37 | 38 | #### 2. 设定"傻瓜式"小目标 39 | - 写一行代码 40 | - 录制30秒视频 41 | - 写100字文章 42 | - 画一个页面原型 43 | 44 | > 目标要小到让你觉得"这也太简单了吧"的程度 45 | 46 | ## 实践案例 47 | 48 | ### 案例1:开发类副业 49 | 🔴 完美主义思维: 50 | - 要用最新技术栈 51 | - 要考虑高并发 52 | - 要做完整的测试 53 | - 要写详细文档 54 | 55 | ✅ 微习惯思维: 56 | - 先用最熟悉的技术 57 | - 先实现核心功能 58 | - 先解决一个小问题 59 | - 边做边完善文档 60 | 61 | ### 案例2:内容创作 62 | 🔴 完美主义思维: 63 | - 要买专业设备 64 | - 要学习剪辑 65 | - 要设计完整内容框架 66 | - 要准备完美的稿子 67 | 68 | ✅ 微习惯思维: 69 | - 用手机先开始录 70 | - 用简单剪辑软件 71 | - 先做一个话题 72 | - 用最简单的文稿 73 | 74 | ## 具体行动建议 75 | 76 | ### 1. 设定微小起点 77 | - 每天写15分钟代码 78 | - 每天录制1分钟视频 79 | - 每天写300字文章 80 | - 每天画一个界面 81 | 82 | ### 2. 关注过程而非结果 83 | - 记录每天的行动 84 | - 不要过分在意质量 85 | - 培养行动习惯 86 | - 享受进步过程 87 | 88 | ### 3. 建立正向反馈 89 | - 记录每个小进步 90 | - 分享阶段性成果 91 | - 肯定每次尝试 92 | - 庆祝小胜利 93 | 94 | ## 如何保持持续性? 95 | 96 | ### 1. 降低环境门槛 97 | - 把开发环境装好 98 | - 准备好录制设备 99 | - 建立写作模板 100 | - 设置快捷方式 101 | 102 | ### 2. 固定时间和场所 103 | - 选择固定时段 104 | - 找到专门场所 105 | - 减少环境干扰 106 | - 形成条件反射 107 | 108 | ### 3. 建立奖励机制 109 | - 完成一个小目标就奖励自己 110 | - 与朋友分享进展 111 | - 记录每天的成就 112 | - 可视化进步过程 113 | 114 | ## 最后的建议 115 | 116 | 记住,克服畏难情绪的关键不是一次性战胜它,而是通过持续的小行动逐步瓦解它: 117 | 118 | 1. **降低预期**:不要期待一次就做好 119 | 2. **简化行动**:把复杂的事情变简单 120 | 3. **持续积累**:小胜利累积大成功 121 | 4. **享受过程**:关注进步而非完美 122 | 123 | > 就像爬山,与其纠结怎么一次爬到顶,不如先迈出第一步。重要的是开始,然后保持前进。 124 | 125 | 记住:今天做不好没关系,重要的是明天继续做。慢慢来,比较快。 126 | -------------------------------------------------------------------------------- /docs/chapter5/section5.md: -------------------------------------------------------------------------------- 1 | # 5.5 如何平衡主业和副业 2 | 3 | ### 抱歉,还没开始写,也可以关注我公众号,第一时间获取更新。 -------------------------------------------------------------------------------- /docs/chapter6/index.md: -------------------------------------------------------------------------------- 1 | # 第五章 只工作不上班 2 | 3 | > 在这个快速变化的时代,工作的定义正在被重新书写。 4 | > AI 的发展让"只工作不上班"从理想照进了现实。 5 | 6 | ## 工作方式的革新 7 | 8 | 曾经,我们习惯了朝九晚五的上班模式,仿佛这就是工作的全部定义。但现在,技术的进步给了我们更多的选择 —— **我们可以只工作,不上班**。 9 | 10 | 这不是在说我们可以不工作,而是工作的方式可以**更灵活,更智能**。 11 | 12 | ## AI:你的得力助手 13 | 14 | 想想看,当我们有了 AI 这样高效的助手,很多过去需要团队才能完成的工作,现在一个人也能搞定: 15 | 16 | 🤖 **AI 工具箱:** 17 | 18 | 现如今,写文案你可以用 ChatGPT,做设计你可以用 Midjourney,写代码你可以用 Copilot/Cursor。 19 | 20 | ## 一人公司的崛起 21 | 22 | 一人公司正在成为一种新的趋势。AI 正在成为我们最得力的助手: 23 | - ⏰ 不会喊累 24 | - 📅 不用休假 25 | - 💰 不会和你抢年终奖(开个玩笑) 26 | 27 | > 这让我们能够以更低的成本,更高的效率来工作。 28 | 29 | ## 新的挑战 30 | 31 | 当然,选择只工作不上班,并不意味着生活会变得更轻松。相反,这需要: 32 | 33 | ⚠️ **更高的要求:** 34 | - 更强的自律能力 35 | - 更强的学习能力 36 | - 更强的洞察业务需求能力 37 | - 更好的时间管理 38 | - 更大的责任担当 39 | 40 | 就像从单纯前端开发转向了全栈开发,还是一个身兼运营,产品,技术的全栈开发,**自由度更大,责任也更大**。 41 | 42 | ## 本章探讨内容 43 | 44 | 在这一章中,我们会深入探讨: 45 | 46 | 📚 **核心内容:** 47 | 1. 程序员的副业探索 48 | 2. 对工作 Gap 的看法 49 | 3. 如何找到属于自己的 pathless path 50 | 51 | > 因为笔者目前也是在这条路上探索,所以这一章节会持续更新自己的探索和思考,欢迎关注。 52 | 53 | ## 重要提醒 54 | 55 | 💡 **笔者想强调:** 56 | 选择只工作不上班,不是为了逃避,不是为了躺平,而是为了以更适合自己的方式建立跟这个社会的链接。 57 | 58 | 也许有一天,当我们回顾2025年,会发现这正是一个时代的转折点。 59 | -------------------------------------------------------------------------------- /docs/chapter6/section1.md: -------------------------------------------------------------------------------- 1 | # 5.1 我所接触到的程序员副业 2 | 3 | ![程序员副业](../assets/images/chapter5/programmer-side-job.png) 4 | 5 | > 最近经常被问到:"程序员适合做什么副业?" 6 | > 与其泛泛而谈,不如聊聊我这些年真实接触到的案例。 7 | 8 | ## 为什么程序员特别适合搞副业? 9 | 10 | 说实话,程序员可能是最适合搞副业的群体之一。想想看:我们有编程技能,有互联网思维,还有一台电脑就能开始干活。这简直就是副业的最佳选手啊!(虽然我们经常加班,但这是另一个故事了...) 11 | 12 | 不过有一点特别重要:**副业要在不影响主业的前提下进行**。就像写代码一样,先实现一个最小可用版本(MVP),验证可行性后再逐步迭代。千万别一上来就想着全职做副业,步子迈大了,那样容易扯着蛋。 13 | 14 | 本文主要聚焦于一些笔者见过的主流的副业,还有一些野路子因为没有普适性就不分享了。 15 | 16 | ## 我所见过的程序员副业 17 | 18 | ### 1. 接外包项目 19 | 20 | 这可能是最直接的变现方式了。我有个同事就经常在一些平台接单: 21 | 22 | - Upwork(国外项目,报酬不错,但需要英语能力,而且近两年国内用户越来越难接到单子) 23 | - 程序员客栈(国内项目,竞争较大) 24 | - 码市(适合个人接单) 25 | 26 | **优势:** 27 | 28 | - 直接利用现有技能 29 | - 收入可观 30 | - 积累项目经验 31 | 32 | **需要注意:** 33 | 34 | - 时间估算要留余地 35 | - 合同和收款要谨慎 36 | - 不要接超出能力的单子(我见过有人因为高估自己能力,结果一个项目拖了半年,赔了时间还没赚到钱...) 37 | 38 | ### 2. 做技术自媒体 39 | 40 | 这条路我也在尝试。关键是要找到好的选题,有"网感"。 41 | 42 | **成功案例:** 43 | 44 | - 一位做Java的朋友,专注写"面试八股文"系列,月入过万 45 | - 另一位做算法的,把LeetCode题目讲解得特别生动,粉丝量很大 46 | 47 | **重点关注:** 48 | 49 | - 选题要有差异化 50 | - 保持更新频率 51 | - 注意知识产权问题 52 | - 培养自己的写作风格 53 | 54 | ### 3. 技术咨询服务 55 | 56 | 这是个很有意思的方向。我发现很多程序员在闲鱼上做: 57 | 58 | - 简历修改 59 | - 面试辅导 60 | - 职业规划咨询 61 | - 技术选型建议 62 | 63 | 其实很多人不缺技术,缺的是前前人的经验和建议,尤其是碰到一些职场的重要选择时,这些经验往往能起到关键作用,这也是这个市场需求存在的原因。 64 | 做这个要有很强的沟通能力,同时需要积累口碑,有足够的耐心,才能慢慢积累客户。 65 | 66 | ### 4. 独立开发者 67 | 68 | 这条路有点难,但很有意思。我见过两种类型: 69 | 70 | - 做小程序:门槛低,变现快,但竞争激烈 71 | - 开发独立App:投入大,风险高,但一旦成功,收入可观 72 | 73 | 身边有朋友开发了一个时间管理小程序,虽然用户不多,但每个月能有个几千块的被动收入。关键是找到一个刚需但还没被巨头垄断的细分领域。 74 | 75 | 做独立开发成功的案例就太多了,比如开发 胃之书/极简时钟 的作者,已经全职做独立开发者了。 76 | 77 | ### 5. AI工具出海 78 | 79 | 这是最近特别火的方向。身边几个朋友在做,我也在学习做相关的尝试: 80 | 81 | - 用ChatGPT API开发各种工具 82 | - 针对海外市场的AI应用 83 | - 垂直领域的AI助手 84 | 85 | 不过要注意:这个领域变化太快,要做好持续学习和迭代的准备。 86 | 87 | ### 6. 运营付费社群 88 | 89 | 这也是近年来程序员副业的一个新趋势。做社群不是简单地建个群收钱,而是要能持续提供价值。 90 | 91 | 我有个朋友就在运营一个"前端进阶"社群: 92 | 93 | - 每周组织算法打卡 94 | - 定期做简历优化 95 | - 分享面试经验 96 | - 组织线上 workshop 97 | 98 | 他的经验是:**"真正的社群运营,是把自己的经验变成别人的捷径。不过最难的是持续输出,很多社群三分钟热度后就凉了。"** 99 | 100 | **要关注的重点:** 101 | 102 | - 找准目标群体 103 | - 设计清晰的收费模式 104 | - 保证内容的持续输出 105 | - 建立良性互动机制 106 | - 控制社群规模和氛围 107 | 108 | ### 7. 出版技术书籍 109 | 110 | 这是一条周期较长但很有成就感的路。写书不是为了发财,更重要的事把自己的知识体系整理清楚。 111 | 112 | **出书的几种方式:** 113 | 114 | - 和传统出版社合作 115 | - 在电子书平台发布 116 | - 自出版(比如 GitBook) 117 | 118 | **经验分享:** 119 | 120 | - 写作周期通常在6-12个月 121 | - 版税收入其实不高 122 | - 但对个人品牌很有帮助 123 | - 能倒逼自己深入学习 124 | 125 | 有趣的是,我一个写书的朋友告诉我:**"写技术书最大的收获不是稿费,而是写作过程中发现自己的很多知识盲点。而且写完书后,面试时的底气都足了不少。"** 126 | 127 | 不过他也提醒说:**"千万别以为技术好就能写好书,技术写作和技术本身是两种完全不同的能力。"** 128 | 129 | ## 一些实用建议 130 | 131 | 1. **从小目标开始** 132 | 别一上来就想着做个"中国版XX",先解决一个小问题,做出一个最小原型。 133 | 134 | 2. **注意时间管理** 135 | 我的经验是:先用周末时间试水,看看是否真的感兴趣,再考虑加大投入。 136 | 137 | 3. **选择适合自己的方向** 138 | 不要盲目跟风。就像我一个同事说的:**"与其做一个自己不懂的热门项目,不如做一个自己擅长的冷门项目。"** 139 | 140 | 4. **做好长期准备** 141 | 副业跟写代码一样,不会一蹴而就,需要持续迭代优化。 142 | 143 | ## 写在最后 144 | 145 | 本文列举了一些副业的可能性,但这些都只是一个方向,一个引子。真正的价值不在于看完这篇文章,而在于你愿意迈出第一步,把手弄脏,去真正的尝试与探索。 146 | 147 | 副业的意义,不仅仅在于赚钱。当你没有公司的光环加持,没有现成的资源可用,一切都要从零开始时,你才会真正面对市场,接触社会。这个过程中的每一次尝试,每一次碰壁,都是真实的成长。 148 | -------------------------------------------------------------------------------- /docs/chapter6/section2.md: -------------------------------------------------------------------------------- 1 | # 5.2 2025年程序员最值得做的副业 2 | 3 | ![Gap](../assets/images/chapter5/gap.png) 4 | 5 | > 笔者按部就班的工作了8年,终于,在35岁前夕被裁的那一天,我问自己:“这真的是我想要的生活吗?" 6 | 7 | 关于作者的更多感触,可以看我之前发的视频:[《35岁,我被裁了》](https://www.bilibili.com/video/BV1tg69YTEvm/?spm_id_from=333.337.search-card.all.click&vd_source=f45ec78216863e8a227317224db68392) 8 | 9 | ## 为什么我们需要 Gap? 10 | 11 | 说实话,在中国谈 gap,总会被贴上"不求上进"的标签。但其实,gap 不是放弃,而是为了更好地前进。就像代码里需要断点调试一样,人生偶尔也需要暂停下来,看看自己到底在哪里。 12 | 13 | 工作久了,很多人会发现一个有趣的现象:明明工资在涨,技能在增长,但内心的倦怠感却越来越强。这不是你的问题,而是工作异化的结果。我们把自己变成了一台高效的编码机器,忘记了自己还是个需要思考和成长的人。 14 | 15 | ## Default Path vs Pathless Path 16 | 17 | ### 默认路径(Default Path) 18 | 这是我们最熟悉的路: 19 | - 好好学习 20 | - 找份稳定工作 21 | - 努力晋升 22 | - 买房结婚 23 | - 养老退休 24 | 25 | 这条路没有错,但问题是:这真的是你想要的吗?还是仅仅因为"大家都这样"? 26 | 27 | ### 无径之径(Pathless Path) 28 | 这是一条需要自己探索的路。没有现成的地图,没有标准答案,但可能更适合你。 29 | 30 | 我有个朋友,工作第六年时决定 gap 了三个月。他说:**"刚开始特别慌,感觉自己浪费时间。但慢慢地,我开始思考什么是真正重要的。"** 31 | 32 | 后来他没有回到原来的大厂,而是选择了一家小公司,工资低了不少,但他能主导产品方向,贡献感更强。**"虽然收入少了,但我终于找回了写代码的乐趣。"** 33 | 34 | ## 为什么要 Gap? 35 | 36 | ### 1. 找回自我 37 | 当我们停下来,才能听到内心真实的声音。很多时候,我们忙得连自己想要什么都忘了。 38 | 39 | ### 2. 跳出思维定式 40 | 就像重构代码一样,有时候需要完全推翻重来,才能写出更好的实现。人生也是如此。 41 | 42 | ### 3. 充电升级 43 | 这不是在浪费时间,而是在给自己一次版本升级的机会。(程序员永远喜欢用版本号类比人生) 44 | 45 | ## 如何优雅地 Gap? 46 | 47 | 1. **做好准备金储备** 48 | 至少要有6个月的生活费。毕竟重启人生不是请假,需要足够的缓冲时间。 49 | 50 | 2. **设定探索方向** 51 | gap 不是无所事事,而是有目的的探索。可以: 52 | - 学习新技能 53 | - 环球旅行 54 | - 尝试创业 55 | - 写写技术博客 56 | - 研究自己真正感兴趣的领域 57 | 58 | 3. **保持开放心态** 59 | 也许最后你会回到原来的轨道,也许会找到全新的方向,这都是正常的。重要的是这段探索的过程。 60 | 61 | ## 关于焦虑 62 | 63 | 说实话,gap 期间最大的敌人是焦虑。看着前同事们继续在职场上升,而自己似乎在"浪费时间",这种感觉不好受。 64 | 65 | 但要记住:**人生不是竞赛,是探索。** 66 | 67 | 就像一个资深程序员说的(其实就是臭不要脸的我):**"与其在一条注定会后悔的路上一直走下去,不如勇敢地按下暂停键,去寻找真正属于自己的路。"** 68 | 69 | ## 写在最后 70 | 71 | Gap 不是逃避,而是为了更好地前进。 72 | 就像代码重构一样,看似是在推倒重来,实际是在为更好的架构打基础。 73 | 74 | 记住,选择 gap 的人不是失败者,而是有勇气探索自己人生的勇者。 -------------------------------------------------------------------------------- /docs/chapter6/section3.md: -------------------------------------------------------------------------------- 1 | # 6.3 其实,没工作,也能活的很好 2 | 3 | ![不干了](../assets/images/chapter5/not-work.png) 4 | 5 | > "为什么我们总觉得失去工作就是天塌了?" 6 | > 也许是时候重新思考:工作对我们来说,究竟意味着什么? 7 | 8 | ## 工作中的异化 9 | 10 | 很多程序员,包括我在内,都经历过这样的困惑:为什么在公司工作总觉得别扭? 11 | 12 | 就像一个圆形的积木,硬要被塞进方形的孔里: 13 | 14 | - 公司要求你 9 点到岗,哪怕你是夜猫子 15 | - 产品让你写一堆不认可的代码 16 | - 领导要你参加毫无意义的会议 17 | - KPI 迫使你做不想做的项目 18 | 19 | 这就是马克思说的"异化":**我们在工作中逐渐失去了自我,变成了公司机器上的一个零件。** 20 | 21 | 22 | ## 困在自己的思维里 23 | 24 | 我们总觉得: 25 | 26 | - 没有工作就没有收入 27 | - 没有收入就无法生存 28 | - 无法生存就会活不下去 29 | 30 | 但是,真的是这样吗? 31 | 32 | > 我们是不是把"工作"这个概念想得太狭隘了? 33 | > 我们是不是被困在了自己给自己设定的牢笼里? 34 | 35 | ## 打开思维的牢笼 36 | 37 | 其实,工作的本质是:**用你的能力为这个世界创造价值,然后获得回报。** 38 | 39 | 而实现这个目标的方式有很多种: 40 | 41 | - 🎯 接单做自由职业者 42 | - 🌱 经营自己的小生意 43 | - 💻 开发独立产品 44 | - 📚 做知识付费 45 | - 🎨 发展创意副业 46 | 47 | ## 真实的例子 48 | 49 | 我认识一位程序员,他辞职后开始做独立开发: 50 | > "刚开始确实害怕,但后来发现,当你不用再为公司的KPI发愁,不用强迫自己融入不喜欢的环境,反而能做出更好的产品。" 51 | 52 | 现在他的小产品每月有稳定收入,虽然比不上大厂工资,但他说:**"生活质量反而更好了,因为我终于能按照自己的节奏来生活,这种对生活的掌控感,是以前上班时无法体会到的。"** 53 | 54 | ## 如何开始改变 55 | 56 | 1. **认识自我** 57 | 你真正热爱什么?你的核心能力是什么?你想要什么样的生活? 58 | 59 | 2. **降低生活成本** 60 | 真正必需的开支是多少?哪些是可以优化的?如何建立应急储备? 61 | 62 | 3. **尝试新的可能** 63 | 先从副业开始,积累一些经验,建立自己的节奏 64 | 65 | ## 重要的提醒 66 | 67 | ⚠️ **在开始之前:** 68 | 69 | 确保有足够的储蓄,做好心理准备,给自己足够的缓冲期,保持开放和学习的心态 70 | 71 | ## 写在最后 72 | 73 | > 生活不是非黑即白, 74 | > 工作也不是非公司不可。 75 | > 76 | > 重要的是找到属于自己的方式, 77 | > 用自己的方式和这个世界建立连接。 78 | 79 | 既然我们是个圆形,为什么不去这个社会中主动找寻需要圆形的地方呢? 80 | 也许,当我们不再把自己局限在"必须找到工作"的思维里, 81 | 会发现人生其实有更多的可能性。 -------------------------------------------------------------------------------- /docs/cookies.md: -------------------------------------------------------------------------------- 1 | # Cookie 政策 2 | 3 | *最后更新: 2024年3月19日* 4 | 5 | 本 Cookie 政策解释了"自洽的程序员"网站如何使用 Cookie 和类似技术。阅读本政策可以帮助您了解我们使用哪些 Cookie、为什么使用它们,以及如何控制它们。 6 | 7 | ## 什么是 Cookie? 8 | 9 | Cookie 是网站在您的计算机或移动设备上保存的小文本文件。它们被广泛用于使网站运行或更高效地运行,并提供网站所有者的信息。 10 | 11 | ## 我们使用的 Cookie 类型 12 | 13 | 我们使用以下类型的 Cookie: 14 | 15 | ### 1. 必要 Cookie 16 | 这些 Cookie 对于网站的运行至关重要,无法在我们的系统中关闭。它们通常只是为了响应您的操作而设置,这些操作相当于服务请求,如设置您的隐私偏好、登录或填写表格。 17 | 18 | ### 2. 分析 Cookie 19 | 这些 Cookie 允许我们统计访问量并了解流量来源,以便我们可以测量和改进我们网站的性能。它们帮助我们了解哪些页面最受欢迎和最不受欢迎,以及访问者如何在网站上移动。 20 | 21 | 我们使用 Google Analytics 分析服务,它使用 Cookie 来帮助我们分析访问者如何使用我们的网站。 22 | 23 | ### 3. 功能 Cookie 24 | 这些 Cookie 使网站能够提供增强的功能和个性化。它们可能由我们或我们放置在网站上的第三方服务提供商设置。 25 | 26 | ### 4. 广告 Cookie 27 | 这些 Cookie 用于在我们的网站上为您提供更相关的广告。我们使用 Google AdSense 服务,它可能会设置 Cookie 来提供个性化广告。 28 | 29 | ## 第三方 Cookie 30 | 31 | 除了我们设置的 Cookie 外,当您访问我们的网站时,某些第三方也可能会设置 Cookie。这些包括: 32 | 33 | - **Google Analytics**:用于分析网站流量和用户行为 34 | - **Google AdSense**:用于提供个性化广告 35 | - **社交媒体平台**:如果您使用社交媒体功能或分享我们的内容,这些平台可能会设置 Cookie 36 | 37 | ## 管理 Cookie 38 | 39 | 大多数网络浏览器允许您控制 Cookie 的使用情况。您可以: 40 | 41 | - 删除现有的 Cookie 42 | - 阻止网站设置 Cookie 43 | - 设置浏览器在接收新 Cookie 时通知您 44 | - 关闭所有 Cookie 45 | 46 | 请注意,限制 Cookie 可能会影响我们网站的功能和您的用户体验。 47 | 48 | 以下是如何在不同浏览器中管理 Cookie 的链接: 49 | 50 | - [Google Chrome](https://support.google.com/chrome/answer/95647) 51 | - [Mozilla Firefox](https://support.mozilla.org/en-US/kb/enable-and-disable-cookies-website-preferences) 52 | - [Safari](https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac) 53 | - [Microsoft Edge](https://support.microsoft.com/en-us/microsoft-edge/delete-cookies-in-microsoft-edge-63947406-40ac-c3b8-57b9-2a946a29ae09) 54 | 55 | ## Google Analytics 选择退出 56 | 57 | 您可以通过安装 [Google Analytics 选择退出浏览器插件](https://tools.google.com/dlpage/gaoptout) 来阻止 Google Analytics 收集有关您访问的数据。 58 | 59 | ## Google AdSense 个性化广告 60 | 61 | 您可以通过访问 [Google 广告设置](https://adssettings.google.com) 来管理 Google 的个性化广告设置或选择退出。 62 | 63 | ## Cookie 政策的变更 64 | 65 | 我们可能会不时更新本 Cookie 政策。任何变更将在本页面上公布,并在顶部注明最新更新日期。我们鼓励您定期查看本政策以了解任何变更。 66 | 67 | ## 联系我们 68 | 69 | 如果您对我们的 Cookie 政策有任何疑问,请通过以下方式联系我们: 70 | 71 | - 电子邮件:[contact@dev-life.site](mailto:contact@dev-life.site) 72 | - 公众号:辣条加辣 -------------------------------------------------------------------------------- /docs/epilogue.md: -------------------------------------------------------------------------------- 1 | # 结语:成为一个自洽的程序员 2 | 3 | ![自洽的程序员](./assets/images/self-consistent-programmer.png) 4 | 5 | 最近和一个程序员老友聊天,他说:"写了十年代码,我终于明白,最难的不是技术,而是如何保持一个自洽的心态,才能走得更好更远。" 6 | 7 | 这句话让我想起了很多。在这个行业里,我们见过太多故事:有人在大厂累倒,有人在创业路上迷失,有人在技术与管理的转折点徘徊,也有人在35岁的门槛前焦虑。似乎每个程序员都在寻找一个答案:如何在这条路上走得更好? 8 | 9 | > 其实答案可能一直都在,只是我们看得太远,反而忽略了最近的风景。 10 | 11 | 编程教会我们逻辑,但生活不只是逻辑。当我们把目光从代码中移开,会发现生活还有更多的可能性。就像一个优秀的系统,不仅要有强大的功能,更要有坚实的基础架构。而一个自洽的程序员,也应该在技术和生活之间找到平衡。 12 | 13 | 记得刚入行时,总觉得写代码就是全部,拼命地学习新框架,追逐最新技术,生怕落后一步就会被淘汰。但慢慢地,我发现那些在这个行业走得最远的人,往往不是技术最强的,而是最懂得平衡的。他们既能钻研技术,也能享受生活;既能在工作中全力以赴,也能为自己保留成长的空间。 14 | 15 | 在我踏入社会的过程中,我遇到了很多程序员,听到了很多故事。有人选择了管理岗,有人坚持在技术路上深耕,有人去创业了,也有人选择了"只工作不上班"的生活方式。他们的选择不同,但都找到了属于自己的节奏。这让我明白,所谓"自洽",不是要符合某个标准,而是要找到适合自己的方式。 16 | 17 | 就像代码里没有银弹,人生也没有标准答案。重要的是,我们能否在这个快速变化的时代,既保持技术的专业性,又不失生活的温度;既能跟上时代的节奏,又能守住内心的平静。 18 | 19 | 也许,这就是一个自洽的程序员: 20 | 21 | - 💡 他们明白技术很重要,但技术不是全部 22 | - 🎯 他们追求卓越,但不盲目追逐 23 | - 🌱 他们在代码中寻找答案,也在生活中寻找意义 24 | 25 | 写到这里,我想起了那个经典的"Hello, World!"。每个程序员都是从这里开始的,但不应该在这里结束。愿我们都能在编程的世界里找到快乐,在生活的长河中寻得自我,最终成为一个真正自洽的程序员。 26 | 27 | --- 28 | 29 | ## 关于作者 30 | 31 | 🎓 2013-2016 毕业于北大软件与微电子学院 32 | 33 | 💻 2016-2024 编码八年,混迹于国企,大厂,外企 34 | 35 | 🚀 2025-至今 独立开发/一人公司/只工作不上班(其实就是社会闲散人员) 36 | 37 | ## 关注公众号:辣条加辣 38 | 39 | 更多职场、个人成长、程序员副业的探索和思考 40 | 41 | ![公众号:辣条加辣](./assets/images/qrcode.jpg) 42 | 43 | 44 | —— 写于2025年1月12日 -------------------------------------------------------------------------------- /docs/hooks.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | def on_env(env, config, files): 4 | """在所有页面启用评论""" 5 | def enable_comments(url): 6 | # 为所有页面启用评论,除了首页 7 | if url.endswith('index.html') or url == '': 8 | return False 9 | return True 10 | 11 | env.filters['enable_comments'] = enable_comments 12 | return env -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # 自洽的程序员 2 | 3 | ## 简介 4 | 5 | ### 这不是一本技术书 6 | 首先,这**不是**一本程序员的技术书籍,整本书不会提及任何一个技术词汇,这也不是一本教你如何规划职业生涯,如何在职场走个更远的书,虽然我相信大部分内容确实有助于在职场的发展。 7 | 8 | 但这本书的真正用意是想解决工作过程中碰到的**焦虑、倦怠、迷茫、抑郁**等情绪,聚焦于解决具体问题,通过改变认知将我们从负面情绪的泥淖中走出来,做到更坦然,真诚的面对自己的内心,成为一个自洽的程序员。 9 | 10 | 总而言之,这不是一本成功学的书,它不会教你如何赢,笔者本身也不是一个世俗意义上成功的人,而是一本帮你**梳理情绪,转变心境**的书。 11 | 12 | ### 关于情绪 13 | 为什么要从情绪这个角度出发呢?笔者相信,这个世界就是你自己内心的投射,而情绪,是一个人自洽程度的晴雨表。 14 | 15 | 我想再花点篇幅聊一下情绪: 16 | > 情绪并非是理智的对立面,他在人类进化几万年的时间里起到了非常重要的作用,但是在强调价值理性的现代工业社会里,情绪被大家当成了害群之马,仿佛有情绪就是不成熟,这种认知是很偏狭的。 17 | 18 | 即便是负面情绪,也并不全是负面的,他也有其正面积极的意义,负面情绪是**清醒剂**,他让你认清现实,提醒你是时候接受现实,或者做出改变。 19 | 20 | 不过现实中,当我们有负面情绪时,往往陷入其中忽略了客观现实,关于这点无需自责,这是人性的弱点,每个人都会有这样的脆弱时刻,这时候,需要有一些外界的善意提醒或者建议,帮助我们理清负面情绪背后的逻辑,我希望,这本书在这个方向上能能发挥一点点这样的作用。 21 | 22 | 23 | ### 笔者的简单声明 24 | 因为个人的局限性,这本书难免有其偏颇狭隘的地方,同时,笔者本身是一个**乐观的悲观主义者**,认为这个世界上有太多我们没法真正认清,没法改变的事情,个人力量在整个时代面前是非常渺小的。我们能做的就是尽量保持清醒,调整自己的心态,把幸福的定义从别人的期望里转到自己的内心感受上。 25 | 26 | > 就像那本著名的祷告词一样:上帝,请赐予我平静,去接受我无法改变的,给予我勇气,去改变我能改变的,赐我智慧,分辨两者的区别。 27 | 28 | 因为笔者是程序员,所以这本基于作者经验的书起名叫做《自洽的程序员》,但我相信书里面提到的很多问题都是有共性的,绝大部分打工人都可以从书里面找到共鸣。 29 | 30 | 31 | ---------------------------------------------------------------- 32 | -------------------------------------------------------------------------------- /docs/overrides/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block extrahead %} 4 | 5 | 6 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 57 | {% endblock %} 58 | 59 | {% block content %} 60 | {{ super() }} 61 | 62 | 63 |
64 |
65 |

👨‍💻 关于作者

66 |
67 |
68 | 🎓 69 | 2013-2016 70 |

毕业于北大软件与微电子学院

71 |
72 |
73 | 💻 74 | 2016-2024 75 |

编码八年,混迹于国企,大厂,外企

76 |
77 |
78 | 🚀 79 | 2025-至今 80 |

独立开发/一人公司/只工作不上班(其实就是社会闲散人员)

81 |
82 |
83 |
84 | 85 |
86 | 87 |
88 |

📱 公众号: 辣条加辣

89 |

更多职场、个人成长、程序员副业的探索和思考

90 | 辣条加辣公众号二维码 - 分享程序员职场和成长经验 95 | 109 |
110 |
111 | 112 | 113 |
114 |
115 |
116 | 117 | 118 | 127 | {% endblock %} 128 | 129 | {% block header %} 130 | {{ super() }} 131 | {% endblock %} -------------------------------------------------------------------------------- /docs/overrides/partials/comments.html: -------------------------------------------------------------------------------- 1 | {% if page.meta.comments or page.url | enable_comments %} 2 |

💬 评论

3 | 19 | {% endif %} -------------------------------------------------------------------------------- /docs/pdf_template/footer.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/preface/index.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | ## 为什么要写这本书 4 | 5 | 作为一名工作了**八年**的程序员,我经历了: 6 | - 国企 7 | - 大厂 8 | - 外企 9 | 10 | 在这些不同的环境中,每次转换都带来新的历练: 11 | - 新的项目 12 | - 新的人际关系 13 | - 新的企业文化 14 | 15 | 当我因为工作困境陷入情绪泥泞时,我很难找到一本能真正契合我的情绪并提出建设性意见的书籍。 16 | 17 | ### 现有书籍的局限 18 | 19 | **职场类书籍**的问题: 20 | > 市面上关于工作的书很大一部分都是职场成功人士在做到高层后输出的职场进阶指南,字里行间充满了高屋建瓴的爹味说教,即便有些道理,也很难从中共情。 21 | 22 | **经典书籍**的局限: 23 | > 比如《高效能人士的七个习惯》这类书的问题在于他年纪太大了,并没有那么适合这个时代。这类书的屁股还是坐在资产阶级统治者的位置上,强调如何高效的生产,鲜少顾及人的复杂性与多样性。 24 | 25 | ### 寻找解决之道 26 | 好在笔者从一些**心理学、社科、哲学**书籍里找到了一些慰藉以及解决之道,在踩了一次次坑,一次次自我认知的迭代之后,我也逐渐找到了适合自己的自洽的工作哲学。 27 | 28 | 这本书分享的是一个**普通人**在工作中遇到的一些普通的烦心事,以及如何解决了这些烦心事,没有宏大叙事,没有大段的说教。就是在解决这些烦心事的过程中,有一些思考和感悟,写下来,分享出去,就这么简单。 29 | 30 | 本书的写成借助了AI的力量,感谢AI 的协助。 31 | 32 | ## 本书适合谁阅读 33 | 34 | 虽然笔者是程序员,但书中提到的很多问题都具有**普遍性**,绝大部分打工人都可以从书里面找到共鸣。 35 | 36 | ## 如何阅读本书 37 | 38 | ### 带着问题读 39 | 如果你是带着具体问题读这本书,那最好不过了: 40 | - 通过副标题找到感兴趣的内容 41 | - 这是最有效率的获取信息的方法 42 | - 如果问题得到解决,你可以: 43 | - 合上本书,去喝杯咖啡,享受生活 44 | - 或继续探索其他章节 45 | 46 | ### 随性阅读 47 | 如果你是出于好奇翻开这本书: 48 | - **不建议** 按顺序一页页读下去 49 | - **建议**: 50 | 1. 打开目录 51 | 2. 找到最感兴趣的副标题 52 | 3. 从感兴趣的章节开始读 53 | 4. 继续寻找下一个感兴趣的主题 54 | 5. 随时可以合上书本,去做其他事情 -------------------------------------------------------------------------------- /docs/privacy.md: -------------------------------------------------------------------------------- 1 | # 隐私政策 2 | 3 | *最后更新: 2024年3月19日* 4 | 5 | 本隐私政策描述了"自洽的程序员"网站(以下简称"我们"、"本网站")如何收集、使用和保护您的个人信息。我们重视您的隐私,请仔细阅读以下内容。 6 | 7 | ## 1. 信息收集 8 | 9 | ### 1.1 自动收集的信息 10 | 当您访问本网站时,我们可能会自动收集以下信息: 11 | - IP地址 12 | - 浏览器类型和版本 13 | - 操作系统 14 | - 访问日期和时间 15 | - 您在本网站上的浏览活动 16 | - 引荐网站(如果适用) 17 | 18 | ### 1.2 Google Analytics 19 | 本网站使用 Google Analytics 来分析网站流量和用户行为。Google Analytics 可能会使用 cookies 和其他技术来收集关于您使用本网站的信息。这些信息用于评估您对网站的使用情况,编制关于网站活动的报告,以及提供其他与网站活动和互联网使用相关的服务。 20 | 21 | ### 1.3 Google AdSense 22 | 本网站使用 Google AdSense 投放广告。Google AdSense 使用 cookies 来根据您的兴趣显示相关广告。您可以访问 [Google 广告设置](https://adssettings.google.com) 了解更多信息或选择退出个性化广告。 23 | 24 | ### 1.4 您提供的信息 25 | 当您通过电子邮件、评论系统或其他方式与我们联系时,我们可能会收集您自愿提供的个人信息,如姓名和电子邮件地址。 26 | 27 | ## 2. 信息使用 28 | 29 | 我们收集的信息可能用于: 30 | - 提供、维护和改进本网站 31 | - 分析用户行为,优化用户体验 32 | - 回应您的咨询或请求 33 | - 发送您可能感兴趣的更新或通知(如您订阅) 34 | - 防止欺诈和确保网站安全 35 | 36 | ## 3. 信息共享 37 | 38 | 除以下情况外,我们不会出售、交易或转让您的个人信息给外部第三方: 39 | - 经您同意 40 | - 与我们的服务提供商共享以完成您请求的任务或交易 41 | - 当法律要求或为保护我们的权利、财产或安全而必须披露时 42 | - 如果我们参与合并、收购或资产出售,您的信息可能作为转让资产的一部分被转移 43 | 44 | ## 4. Cookie 使用 45 | 46 | 本网站使用 cookies 来提升用户体验。Cookie 是存储在您浏览器中的小型文本文件,使网站能够记住您的偏好和活动。 47 | 48 | 您可以通过修改浏览器设置来拒绝 cookies,但这可能会影响您使用本网站某些功能的能力。 49 | 50 | ## 5. 数据安全 51 | 52 | 我们采取合理的安全措施来保护您的个人信息不被未经授权的访问、使用或披露。然而,请注意互联网传输和电子存储不可能完全安全,我们无法保证信息的绝对安全。 53 | 54 | ## 6. 第三方网站 55 | 56 | 本网站可能包含指向第三方网站的链接。这些网站有其独立的隐私政策,我们对其内容和做法不负责任。我们建议您查看您访问的任何网站的隐私政策。 57 | 58 | ## 7. 儿童隐私 59 | 60 | 本网站不针对13岁以下儿童,我们不会故意收集儿童的个人信息。如果您是父母或监护人,并相信我们可能收集了您孩子的信息,请联系我们,我们将采取措施删除这些信息。 61 | 62 | ## 8. 您的权利 63 | 64 | 根据适用法律,您可能有权: 65 | - 访问我们持有的关于您的个人信息 66 | - 更正不准确的个人信息 67 | - 删除您的个人信息 68 | - 反对我们处理您的个人信息 69 | - 限制我们处理您的个人信息 70 | - 数据可携性 71 | 72 | 如需行使这些权利,请通过以下方式联系我们。 73 | 74 | ## 9. 隐私政策变更 75 | 76 | 我们可能会不时更新本隐私政策。任何变更将在本页面上公布,并在顶部注明最新更新日期。我们鼓励您定期查看本政策以了解任何变更。 77 | 78 | ## 10. 联系我们 79 | 80 | 如果您对本隐私政策有任何疑问或关切,请通过以下方式联系我们: 81 | 82 | - 电子邮件:[pekingzcc@gmail.com](mailto:pekingzcc@gmail.com) 83 | - 公众号:辣条加辣 -------------------------------------------------------------------------------- /docs/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | Sitemap: https://www.dev-life.site/sitemap.xml -------------------------------------------------------------------------------- /docs/stylesheets/extra.css: -------------------------------------------------------------------------------- 1 | /* 链接样式 */ 2 | .md-content a { 3 | color: #546e7a; /* 蓝灰色 */ 4 | text-decoration: none; 5 | border-bottom: 1px solid transparent; 6 | transition: border-color 0.2s; 7 | } 8 | 9 | .md-content a:hover { 10 | border-bottom-color: #546e7a; /* hover 时下划线显示 */ 11 | color: #546e7a; /* 保持相同颜色,不改变 */ 12 | } 13 | 14 | /* 导航链接样式 */ 15 | .md-nav__link { 16 | color: #616161 !important; /* 深灰色 */ 17 | transition: color 0.2s; /* 添加颜色过渡效果 */ 18 | } 19 | 20 | .md-nav__link:hover { 21 | color: #455a64 !important; /* 稍深的蓝灰色 */ 22 | } 23 | 24 | /* 当前选中的导航项样式 */ 25 | .md-nav__link--active { 26 | color: #2c3e50 !important; /* 更深的颜色 */ 27 | font-weight: 600; /* 加粗 */ 28 | padding-left: 0.6rem; /* 左侧缩进 */ 29 | border-left: 2px solid #455a64; /* 左侧边框 */ 30 | background-color: rgba(0, 0, 0, 0.03); /* 轻微的背景色 */ 31 | } 32 | 33 | /* 当前选中项的父级导航 */ 34 | .md-nav__item--active > .md-nav__link { 35 | color: #2c3e50 !important; 36 | font-weight: 500; 37 | } 38 | 39 | /* 优化导航项的间距 */ 40 | .md-nav__item { 41 | padding: 2px 0; 42 | } 43 | 44 | /* 去除链接的下划线 */ 45 | .md-content a:focus, 46 | .md-content a:active { 47 | outline: none; 48 | color: #455a64; 49 | } 50 | 51 | /* 代码块样式优化 */ 52 | .highlight { 53 | background-color: #f5f5f5; 54 | border-radius: 4px; 55 | } 56 | 57 | /* 标题样式优化 */ 58 | .md-content h1, .md-content h2 { 59 | color: #37474f; /* 深蓝灰色 */ 60 | font-weight: 400; 61 | } 62 | 63 | /* 暗色模式下的标题样式 */ 64 | [data-md-color-scheme="slate"] .md-content h1, 65 | [data-md-color-scheme="slate"] .md-content h2 { 66 | color: #e0e0e0; /* 更亮的灰白色 */ 67 | font-weight: 400; 68 | } 69 | 70 | /* 暗色模式下的链接样式 */ 71 | [data-md-color-scheme="slate"] .md-content a { 72 | color: #90caf9; /* 浅蓝色 */ 73 | } 74 | 75 | [data-md-color-scheme="slate"] .md-content a:hover { 76 | border-bottom-color: #90caf9; 77 | color: #90caf9; 78 | } 79 | 80 | /* 暗色模式下的导航链接样式 */ 81 | [data-md-color-scheme="slate"] .md-nav__link { 82 | color: #b0bec5 !important; /* 浅蓝灰色 */ 83 | } 84 | 85 | [data-md-color-scheme="slate"] .md-nav__link:hover { 86 | color: #e0e0e0 !important; /* 更亮的灰白色 */ 87 | } 88 | 89 | /* 暗色模式下当前选中的导航项样式 */ 90 | [data-md-color-scheme="slate"] .md-nav__link--active { 91 | color: #fff !important; 92 | border-left: 2px solid #90caf9; 93 | background-color: rgba(255, 255, 255, 0.05); 94 | } 95 | 96 | /* 暗色模式下当前选中项的父级导航 */ 97 | [data-md-color-scheme="slate"] .md-nav__item--active > .md-nav__link { 98 | color: #fff !important; 99 | } 100 | 101 | /* 暗色模式下代码块样式 */ 102 | [data-md-color-scheme="slate"] .highlight { 103 | background-color: rgba(255, 255, 255, 0.05); 104 | } 105 | 106 | /* 作者信息和公众号卡片样式 */ 107 | .wechat-card { 108 | margin-top: 4rem; 109 | padding: 2.5rem; 110 | border-top: 1px solid #eee; 111 | border-radius: 8px; 112 | background: #fafafa; 113 | } 114 | 115 | /* 作者信息区域 */ 116 | .author-info { 117 | margin-bottom: 2.5rem; 118 | } 119 | 120 | .author-info h2, .wechat-card h2 { 121 | font-size: 1.4rem; 122 | color: #2c3e50; 123 | margin-bottom: 1.5rem; 124 | font-weight: 500; 125 | text-align: center; 126 | } 127 | 128 | .timeline { 129 | max-width: 600px; 130 | margin: 0 auto; 131 | } 132 | 133 | .timeline-item { 134 | display: flex; 135 | align-items: center; 136 | margin-bottom: 1.2rem; 137 | padding: 0.8rem 1rem; 138 | background: rgba(255, 255, 255, 0.7); 139 | border-radius: 6px; 140 | transition: transform 0.2s ease; 141 | } 142 | 143 | .timeline-item:hover { 144 | transform: translateX(5px); 145 | } 146 | 147 | .timeline-item .emoji { 148 | margin-right: 1.2rem; 149 | font-size: 1.4rem; 150 | } 151 | 152 | .timeline-item strong { 153 | min-width: 100px; 154 | margin-right: 1.2rem; 155 | color: #455a64; 156 | font-weight: 500; 157 | } 158 | 159 | .timeline-item p { 160 | margin: 0; 161 | color: #666; 162 | line-height: 1.6; 163 | } 164 | 165 | /* 分隔线 */ 166 | .divider { 167 | height: 1px; 168 | background: #e0e0e0; 169 | margin: 2.5rem auto; 170 | width: 80%; 171 | max-width: 500px; 172 | } 173 | 174 | /* 公众号区域 */ 175 | .wechat-subscribe { 176 | text-align: center; 177 | max-width: 500px; 178 | margin: 0 auto; 179 | } 180 | 181 | .wechat-subscribe p { 182 | color: #666; 183 | margin: 1rem 0 1.5rem; 184 | font-size: 0.95rem; 185 | } 186 | 187 | .wechat-subscribe img { 188 | max-width: 180px; 189 | height: auto; 190 | border-radius: 4px; 191 | box-shadow: 0 2px 8px rgba(0,0,0,0.1); 192 | transition: transform 0.3s ease; 193 | } 194 | 195 | .wechat-subscribe img:hover { 196 | transform: scale(1.02); 197 | } 198 | 199 | /* 暗色模式适配 */ 200 | [data-md-color-scheme="slate"] .wechat-card { 201 | background: rgba(255, 255, 255, 0.05); 202 | border-top: 1px solid rgba(255, 255, 255, 0.1); 203 | } 204 | 205 | [data-md-color-scheme="slate"] .author-info h2, 206 | [data-md-color-scheme="slate"] .wechat-card h2 { 207 | color: #e0e0e0; 208 | } 209 | 210 | [data-md-color-scheme="slate"] .timeline-item { 211 | background: rgba(255, 255, 255, 0.03); 212 | } 213 | 214 | [data-md-color-scheme="slate"] .timeline-item strong { 215 | color: #90caf9; 216 | } 217 | 218 | [data-md-color-scheme="slate"] .timeline-item p { 219 | color: #b0bec5; 220 | } 221 | 222 | [data-md-color-scheme="slate"] .divider { 223 | background: rgba(255, 255, 255, 0.1); 224 | } 225 | 226 | [data-md-color-scheme="slate"] .wechat-subscribe p { 227 | color: #b0bec5; 228 | } 229 | 230 | /* 下载按钮样式 */ 231 | .download-button { 232 | text-align: center; 233 | margin: 2rem 0; 234 | } 235 | 236 | .download-button .md-button { 237 | margin: 0 0.5rem; 238 | transition: all 0.2s ease; 239 | } 240 | 241 | .download-button .md-button:hover { 242 | transform: translateY(-2px); 243 | box-shadow: 0 4px 8px rgba(0,0,0,0.1); 244 | } 245 | 246 | /* 打印样式优化 */ 247 | @media print { 248 | .md-header, 249 | .md-tabs, 250 | .md-sidebar, 251 | .download-button, 252 | .wechat-card { 253 | display: none !important; 254 | } 255 | 256 | .md-content { 257 | margin: 0 !important; 258 | padding: 0 !important; 259 | } 260 | } 261 | 262 | /* 搜索框样式调整 */ 263 | .md-search__form { 264 | max-width: 18rem; /* 限制搜索框最大宽度 */ 265 | margin-right: 1rem; /* 与下载按钮保持间距 */ 266 | } 267 | 268 | /* 右上角下载按钮样式 */ 269 | .download-corner { 270 | position: fixed; /* 改为 fixed 定位 */ 271 | top: 0.4rem; 272 | right: 4.8rem; 273 | z-index: 31; 274 | transition: transform .4s cubic-bezier(.1,.7,.1,1), opacity .25s; /* 添加过渡效果 */ 275 | } 276 | 277 | /* 响应头部隐藏 */ 278 | [data-md-toggle="header"]:checked ~ .md-header .download-corner { 279 | transform: translateY(-2.4rem); 280 | opacity: 0; 281 | } 282 | 283 | /* 响应头部显示 */ 284 | [data-md-toggle="header"]:not(:checked) ~ .md-header .download-corner { 285 | transform: translateY(0); 286 | opacity: 1; 287 | } 288 | 289 | .download-corner .md-button { 290 | margin: 0; 291 | padding: 0.3rem 0.8rem; 292 | font-size: 0.75rem; 293 | font-weight: 400; 294 | color: #fff; 295 | background-color: var(--md-primary-fg-color); 296 | border: none; 297 | border-radius: 3px; 298 | transition: all 0.2s ease; 299 | box-shadow: 0 1px 2px rgba(0,0,0,0.1); 300 | line-height: 1.6; 301 | height: 1.8rem; 302 | display: flex; 303 | align-items: center; 304 | } 305 | 306 | .download-corner .md-button:hover { 307 | transform: translateY(-1px); 308 | box-shadow: 0 2px 4px rgba(0,0,0,0.15); 309 | background-color: var(--md-accent-fg-color); 310 | color: #fff; 311 | } 312 | 313 | /* 暗色模式适配 */ 314 | [data-md-color-scheme="slate"] .download-corner .md-button { 315 | background-color: var(--md-primary-fg-color); 316 | color: #fff; 317 | } 318 | 319 | [data-md-color-scheme="slate"] .download-corner .md-button:hover { 320 | background-color: var(--md-accent-fg-color); 321 | } 322 | 323 | /* 移动端适配 */ 324 | @media screen and (max-width: 76.1875em) { 325 | .md-search__form { 326 | max-width: 14rem; /* 移动端下减小搜索框宽度 */ 327 | } 328 | .download-corner { 329 | right: 5.6rem; 330 | } 331 | } 332 | 333 | /* 小屏幕适配 */ 334 | @media screen and (max-width: 60em) { 335 | .md-search__form { 336 | max-width: 12rem; /* 更小屏幕下进一步减小搜索框宽度 */ 337 | } 338 | .download-corner { 339 | right: 6.4rem; 340 | } 341 | } 342 | 343 | .giscus-wrapper { 344 | margin-top: 2rem; 345 | padding-top: 2rem; 346 | border-top: 1px solid var(--md-default-fg-color--lightest); 347 | } 348 | 349 | .giscus-wrapper h2 { 350 | margin-bottom: 1rem; 351 | font-size: 1.5rem; 352 | font-weight: 600; 353 | } 354 | 355 | .giscus-wrapper p { 356 | margin-bottom: 1.5rem; 357 | color: var(--md-default-fg-color--light); 358 | } 359 | 360 | /* 适配深色模式 */ 361 | [data-md-color-scheme="slate"] .giscus-wrapper { 362 | border-top-color: var(--md-default-fg-color--lighter); 363 | } 364 | 365 | .button-group { 366 | display: flex; 367 | justify-content: center; 368 | gap: 1rem; 369 | margin-top: 1rem; 370 | } 371 | 372 | .button-group .md-button { 373 | display: inline-flex; 374 | align-items: center; 375 | gap: 0.5rem; 376 | } 377 | 378 | .button-group .twemoji { 379 | width: 1.2rem; 380 | height: 1.2rem; 381 | } 382 | 383 | .wechat-subscribe img { 384 | max-width: 200px; 385 | margin: 1rem auto; 386 | display: block; 387 | } 388 | 389 | /* Native Banner 容器样式 */ 390 | .native-ad-container { 391 | margin: 2rem 0; 392 | padding: 1rem; 393 | border-top: 1px solid #eee; 394 | max-width: 100%; 395 | text-align: center; 396 | } 397 | 398 | /* 暗色模式适配 */ 399 | [data-md-color-scheme="slate"] .native-ad-container { 400 | border-top-color: var(--md-default-fg-color--lighter); 401 | } 402 | 403 | /* 移动端适配 */ 404 | @media screen and (max-width: 76.1875em) { 405 | .native-ad-container { 406 | margin: 1rem 0; 407 | } 408 | } 409 | 410 | /* In-Page Push 容器样式 */ 411 | .ipp-container { 412 | position: fixed; 413 | bottom: 20px; 414 | right: 20px; 415 | z-index: 1000; 416 | } 417 | 418 | /* Ad Container 样式 */ 419 | .ad-container { 420 | margin: 2rem 0; 421 | padding: 1rem 0; 422 | border-top: 1px solid var(--md-default-fg-color--lightest); 423 | border-bottom: 1px solid var(--md-default-fg-color--lightest); 424 | text-align: center; 425 | } 426 | 427 | /* 暗色模式适配 */ 428 | [data-md-color-scheme="slate"] .ad-container { 429 | border-color: var(--md-default-fg-color--lighter); 430 | } 431 | 432 | /* 移动端适配 */ 433 | @media screen and (max-width: 76.1875em) { 434 | .ad-container { 435 | margin: 1.5rem 0; 436 | padding: 0.8rem 0; 437 | } 438 | } 439 | 440 | /* 页脚法律链接样式 */ 441 | .footer-legal-links { 442 | text-align: center; 443 | margin: 3rem 0 1rem; 444 | padding-top: 1.5rem; 445 | border-top: 1px solid var(--md-default-fg-color--lightest); 446 | font-size: 0.8rem; 447 | color: var(--md-default-fg-color--light); 448 | } 449 | 450 | .footer-legal-links a { 451 | color: var(--md-default-fg-color--light); 452 | text-decoration: none; 453 | transition: color 0.2s; 454 | padding: 0 0.5rem; 455 | } 456 | 457 | .footer-legal-links a:hover { 458 | color: var(--md-accent-fg-color); 459 | text-decoration: underline; 460 | } 461 | 462 | .footer-legal-links .separator { 463 | color: var(--md-default-fg-color--lighter); 464 | } 465 | 466 | /* 暗色模式下的页脚链接样式 */ 467 | [data-md-color-scheme="slate"] .footer-legal-links { 468 | border-top-color: var(--md-default-fg-color--lighter); 469 | } 470 | 471 | [data-md-color-scheme="slate"] .footer-legal-links a { 472 | color: var(--md-default-fg-color--light); 473 | } 474 | 475 | [data-md-color-scheme="slate"] .footer-legal-links a:hover { 476 | color: var(--md-accent-fg-color); 477 | } 478 | 479 | /* 相关项目样式 */ 480 | .related-projects { 481 | text-align: center; 482 | margin: 2rem 0 1rem; 483 | padding-top: 1.5rem; 484 | border-top: 1px solid var(--md-default-fg-color--lightest); 485 | } 486 | 487 | .related-projects h3 { 488 | font-size: 1rem; 489 | margin-bottom: 1rem; 490 | color: var(--md-default-fg-color); 491 | } 492 | 493 | .related-links { 494 | margin-bottom: 1.5rem; 495 | } 496 | 497 | .related-links a { 498 | color: var(--md-accent-fg-color); 499 | text-decoration: none; 500 | transition: color 0.2s; 501 | padding: 0 0.5rem; 502 | } 503 | 504 | .related-links a:hover { 505 | text-decoration: underline; 506 | } 507 | 508 | .related-links .separator { 509 | color: var(--md-default-fg-color--lighter); 510 | } 511 | 512 | /* 暗色模式下的相关项目样式 */ 513 | [data-md-color-scheme="slate"] .related-projects { 514 | border-top-color: var(--md-default-fg-color--lighter); 515 | } 516 | 517 | [data-md-color-scheme="slate"] .related-projects h3 { 518 | color: var(--md-default-fg-color--light); 519 | } -------------------------------------------------------------------------------- /docs/stylesheets/pdf.css: -------------------------------------------------------------------------------- 1 | /* PDF 样式 */ 2 | body { 3 | font-family: "WenQuanYi Micro Hei", "Microsoft YaHei", sans-serif; 4 | -pdf-word-wrap: CJK; 5 | } 6 | 7 | .pdf-footer { 8 | margin-top: 4rem; 9 | padding-top: 2rem; 10 | border-top: 1px solid #eee; 11 | page-break-before: always; /* 确保在新页开始 */ 12 | } 13 | 14 | .pdf-author-info { 15 | margin: 2rem 0; 16 | text-align: left; 17 | } 18 | 19 | .pdf-author-info h2 { 20 | font-size: 1.5rem; 21 | margin-bottom: 1rem; 22 | color: #2c3e50; 23 | } 24 | 25 | .pdf-author-info p { 26 | margin: 0.5rem 0; 27 | line-height: 1.6; 28 | color: #666; 29 | } 30 | 31 | .pdf-wechat { 32 | text-align: center; 33 | margin: 3rem 0; 34 | } 35 | 36 | .pdf-wechat h2 { 37 | font-size: 1.5rem; 38 | margin-bottom: 1rem; 39 | color: #2c3e50; 40 | } 41 | 42 | .pdf-wechat p { 43 | margin: 1rem 0; 44 | color: #666; 45 | } 46 | 47 | .pdf-wechat img { 48 | max-width: 180px; 49 | height: auto; 50 | margin: 1rem auto; 51 | } -------------------------------------------------------------------------------- /docs/terms.md: -------------------------------------------------------------------------------- 1 | # 服务条款 2 | 3 | *最后更新: 2024年3月19日* 4 | 5 | 感谢您访问"自洽的程序员"网站。通过访问和使用本网站,您同意遵守以下服务条款。请仔细阅读。 6 | 7 | ## 1. 接受条款 8 | 9 | 通过访问或使用本网站,您确认您已阅读、理解并同意受这些条款的约束。如果您不同意这些条款,请停止使用本网站。 10 | 11 | ## 2. 内容使用许可 12 | 13 | 除非另有说明,本网站上的所有内容(包括但不限于文本、图像、代码示例、视频)均受版权保护,归"辣条加辣"所有。 14 | 15 | 您可以: 16 | - 阅读网站内容 17 | - 分享网站链接 18 | - 引用网站内容(需注明出处) 19 | 20 | 您不得: 21 | - 未经许可复制、修改或分发网站内容用于商业目的 22 | - 尝试破解、逆向工程或以其他方式获取网站源代码 23 | - 使用自动程序大量抓取网站内容 24 | 25 | ## 3. 用户行为准则 26 | 27 | 使用本网站时,您同意不会: 28 | - 发布侵犯他人知识产权或隐私权的内容 29 | - 发布骚扰、威胁、诽谤或其他违法内容 30 | - 传播恶意软件或进行其他破坏性活动 31 | - 干扰网站正常运行或未经授权访问网站系统 32 | 33 | ## 4. 免责声明 34 | 35 | 本网站提供的内容仅供参考和教育目的。我们努力确保信息准确,但不保证内容的准确性、完整性或及时性。 36 | 37 | 本网站内容不构成专业建议。在采取任何可能影响您职业或个人生活的行动前,请咨询相关专业人士。 38 | 39 | ## 5. 责任限制 40 | 41 | 在任何情况下,本网站及其创建者对使用或无法使用本网站或其内容而导致的任何损失或损害不承担责任,包括直接、间接、附带、惩罚性或后果性损害。 42 | 43 | ## 6. 外部链接 44 | 45 | 本网站可能包含指向第三方网站的链接。这些链接仅为方便读者提供,不代表我们认可这些网站或对其内容负责。访问任何外部链接的风险由您自行承担。 46 | 47 | ## 7. 条款变更 48 | 49 | 我们保留随时修改这些服务条款的权利。修改后的条款将在本页面上发布,并自发布之日起生效。继续使用本网站即表示您接受修改后的条款。 50 | 51 | ## 8. 联系方式 52 | 53 | 如果您对这些服务条款有任何疑问,请通过以下方式联系我们: 54 | 55 | - 电子邮件:[contact@dev-life.site](mailto:pekingzcc@gmail.com) 56 | - 公众号:辣条加辣 57 | 58 | ## 9. 适用法律 59 | 60 | 这些服务条款受中华人民共和国法律管辖。 -------------------------------------------------------------------------------- /docs/urls.txt: -------------------------------------------------------------------------------- 1 | https://www.dev-life.site/ 2 | https://www.dev-life.site/preface/ 3 | https://www.dev-life.site/chapter1/ 4 | https://www.dev-life.site/chapter1/section1/ 5 | https://www.dev-life.site/chapter1/section2/ 6 | https://www.dev-life.site/chapter1/section3/ 7 | https://www.dev-life.site/chapter1/section4/ 8 | https://www.dev-life.site/chapter2/ 9 | https://www.dev-life.site/chapter2/section1/ 10 | https://www.dev-life.site/chapter2/section2/ 11 | https://www.dev-life.site/chapter2/section3/ 12 | https://www.dev-life.site/chapter2/section4/ 13 | https://www.dev-life.site/chapter2/section5/ 14 | https://www.dev-life.site/chapter2/section6/ 15 | https://www.dev-life.site/chapter2/section7/ 16 | https://www.dev-life.site/chapter2/section8/ 17 | https://www.dev-life.site/chapter2/section9/ 18 | https://www.dev-life.site/chapter2/section10/ 19 | https://www.dev-life.site/chapter2/section11/ 20 | https://www.dev-life.site/chapter2/section12/ 21 | https://www.dev-life.site/chapter2/section13/ 22 | https://www.dev-life.site/chapter3/ 23 | https://www.dev-life.site/chapter3/section1/ 24 | https://www.dev-life.site/chapter3/section2/ 25 | https://www.dev-life.site/chapter3/section3/ 26 | https://www.dev-life.site/chapter3/section4/ 27 | https://www.dev-life.site/chapter3/section5/ 28 | https://www.dev-life.site/chapter3/section6/ 29 | https://www.dev-life.site/chapter3/section7/ 30 | https://www.dev-life.site/chapter4/ 31 | https://www.dev-life.site/chapter4/section1/ 32 | https://www.dev-life.site/chapter4/section2/ 33 | https://www.dev-life.site/chapter4/section3/ 34 | https://www.dev-life.site/chapter4/section4/ 35 | https://www.dev-life.site/chapter4/section5/ 36 | https://www.dev-life.site/chapter5/ 37 | https://www.dev-life.site/chapter5/section1/ 38 | https://www.dev-life.site/chapter5/section2/ 39 | https://www.dev-life.site/chapter5/section3/ 40 | https://www.dev-life.site/epilogue/ -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | # 基础配置 2 | site_name: 自洽的程序员 3 | site_url: https://www.dev-life.site/ 4 | site_author: 辣条加辣 5 | site_description: >- 6 | 一本帮助程序员应对职场焦虑、倦怠、迷茫的指南。探讨程序员的工作哲学、方法论、人际关系和生活平衡。 7 | docs_dir: docs 8 | site_dir: site 9 | use_directory_urls: true 10 | 11 | # 主题配置 12 | theme: 13 | name: material 14 | language: zh 15 | logo: assets/images/icon.png 16 | favicon: assets/images/favicon.png 17 | custom_dir: docs/overrides 18 | 19 | # 功能特性 20 | features: 21 | - navigation.footer 22 | - navigation.top 23 | - navigation.tracking 24 | - search.highlight 25 | - content.code.copy 26 | - content.action.download 27 | - content.action.view 28 | - content.action.edit 29 | - navigation.instant 30 | - search.share 31 | - search.suggest 32 | - content.tabs.link 33 | 34 | # 配色方案 35 | palette: 36 | # 深色模式 37 | - scheme: slate 38 | primary: blue grey # 深色模式下的蓝灰色 39 | accent: grey # 保持简约的灰色 40 | toggle: 41 | icon: material/weather-sunny 42 | name: 切换至浅色模式 43 | # 亮色模式 44 | - scheme: default 45 | primary: grey # 优雅的灰色 46 | accent: blue grey # 蓝灰色作为强调色 47 | toggle: 48 | icon: material/weather-night 49 | name: 切换至深色模式 50 | 51 | 52 | # 字体配置 53 | font: 54 | text: Roboto 55 | code: Roboto Mono 56 | 57 | # 图标配置 58 | icon: 59 | repo: fontawesome/brands/github 60 | repo_url: https://github.com/zhangchenchen/self-consistent-coder 61 | repo_name: self-consistent-coder 62 | edit_uri: edit/main/docs/ 63 | 64 | # 插件配置 65 | plugins: 66 | - search # 搜索插件 67 | # 本地开发时注释掉整个 with-pdf 插件配置 68 | - with-pdf: 69 | author: 辣条加辣 70 | cover: true 71 | cover_title: 自洽的程序员 72 | cover_subtitle: 关于程序员职场和生活的思考 73 | toc_level: 2 74 | output_path: pdf/book.pdf 75 | stylesheets: 76 | - docs/stylesheets/pdf.css 77 | exclude_pages: 78 | - 'index.md' 79 | custom_template_path: docs/pdf_template 80 | debug_html: false 81 | show_anchors: false 82 | font_family: "WenQuanYi Micro Hei" 83 | language: zh 84 | compress: true 85 | encoding: UTF-8 86 | - mkdocs-simple-hooks: 87 | hooks: 88 | on_env: "docs.hooks:on_env" 89 | 90 | # 扩展配置 91 | extra: 92 | social: 93 | - icon: fontawesome/brands/github 94 | link: https://github.com/zhangchenchen 95 | - icon: fontawesome/brands/twitter 96 | link: https://twitter.com/GeorgePekingzcc 97 | generator: false 98 | consent: 99 | title: Cookie consent 100 | description: >- 101 | 我们使用 cookies 来识别您的重复访问和偏好,以及衡量我们文档的有效性和改进我们的网站。 102 | assets_version: '1.0' 103 | keywords: >- 104 | 程序员,职场,焦虑,工作方法论,职业发展,程序员成长,工作与生活平衡,职场人际关系 105 | og_title: 自洽的程序员 - 程序员的职场生存指南 106 | og_description: 一本帮助程序员应对职场焦虑、倦怠、迷茫的指南 107 | og_image: assets/images/og-image.jpg 108 | og_type: website 109 | twitter_card: summary_large_image 110 | twitter_site: "@GeorgePekingzcc" 111 | twitter_creator: "@GeorgePekingzcc" 112 | sitemap: 113 | enabled: true 114 | url: https://www.dev-life.site/ 115 | 116 | # PWA 配置 117 | pwa: 118 | enabled: true 119 | name: 自洽的程序员 120 | short_name: 自洽程序员 121 | description: 关于程序员职场和生活的思考 122 | theme_color: "#2196f3" 123 | background_color: "#ffffff" 124 | icon: 125 | path: assets/images/icon.png 126 | prefer_related_applications: false 127 | 128 | # 资源文件 129 | extra_javascript: 130 | - assets/js/analytics.js 131 | - assets/js/adsense.js 132 | 133 | extra_css: 134 | - stylesheets/extra.css 135 | 136 | # 版权信息 137 | copyright: Copyright © 2024 辣条加辣. 138 | 139 | # 导航配置 140 | nav: 141 | - 首页: index.md 142 | - 前言: preface/index.md 143 | - 第一章:建立你的工作哲学: 144 | - 概述: chapter1/index.md 145 | - 1.1 第一性原理思考工作: chapter1/section1.md 146 | - 1.2 工作挣扎是常态: chapter1/section2.md 147 | - 1.3 工作承载不了太多意义,但也不要陷入工作虚无主义: chapter1/section3.md 148 | - 1.4 人,要过得自私且坦荡: chapter1/section4.md 149 | - 第二章 工作方法论: 150 | - 概述: chapter2/index.md 151 | - 2.1 心态开放,你的职场第一课: chapter2/section1.md 152 | - 2.2 下场去做,你的职场第二课: chapter2/section2.md 153 | - 2.3 寻求帮助是项高级技能: chapter2/section3.md 154 | - 2.4 害怕直面冲突,怎样才能支棱起来: chapter2/section4.md 155 | - 2.5 如何面对职场PUA: chapter2/section5.md 156 | - 2.6 内耗,是从拒绝沟通开始的: chapter2/section6.md 157 | - 2.7 不喜欢编程,还要坚守程序员这个岗位吗: chapter2/section7.md 158 | - 2.8 工作倦怠了吗,试试三叶草模型: chapter2/section8.md 159 | - 2.9 天天用AI,以后自己不会写代码怎么办: chapter2/section9.md 160 | - 2.10 职场中如何做选择: chapter2/section10.md 161 | - 2.11 职场中最实用的三个思维模型: chapter2/section11.md 162 | - 2.12 不会吹牛逼,述职/晋升总是吃亏怎么办: chapter2/section12.md 163 | - 2.13 程序员容易最忽略的几件重要的事: chapter2/section13.md 164 | - 第三章 工作中的人际关系: 165 | - 概述: chapter3/index.md 166 | - 3.1 领导一对一(1on1)聊什么: chapter3/section1.md 167 | - 3.2 领导让我提意见,我该怎么提: chapter3/section2.md 168 | - 3.3 同事太优秀了,我嫉妒到想退休养猪: chapter3/section3.md 169 | - 3.4 同事是傻逼,我有厌蠢症,实在受不了了: chapter3/section4.md 170 | - 3.5 卷王太凶残,我要不要'反卷'?: chapter3/section5.md 171 | - 3.6 我没有晋升不重要,但是他的晋升让我不爽: chapter3/section6.md 172 | - 3.7 社恐人混职场是真难啊: chapter3/section7.md 173 | - 第四章 工作与家庭: 174 | - 概述: chapter4/index.md 175 | - 4.1 好的伴侣可以帮你消化工作上的负面情绪: chapter4/section1.md 176 | - 4.2 维系亲密关系最重要的一点: chapter4/section2.md 177 | - 4.3 情绪稳定是个伪命题: chapter4/section3.md 178 | - 4.4 伴侣老是抱怨,我该怎么办: chapter4/section4.md 179 | - 4.5 婆媳关系真是男人的噩梦啊: chapter4/section5.md 180 | - 第五章 程序员副业: 181 | - 概述: chapter5/index.md 182 | - 5.1 打工人做副业,要先学会转换思维模式: chapter5/section1.md 183 | - 5.2 2025年程序员最值得做的副业: chapter5/section2.md 184 | - 5.3 副业跑起来最重要的一点: chapter5/section3.md 185 | - 5.4 副业中,如何克服畏难情绪: chapter5/section4.md 186 | - 5.5 如何平衡主业和副业: chapter5/section5.md 187 | - 第六章 只工作不上班: 188 | - 概述: chapter6/index.md 189 | - 6.1 我所接触到的程序员副业: chapter6/section1.md 190 | - 6.2 gap 无罪,寻找属于你自己的pathless path: chapter6/section2.md 191 | - 6.3 其实,不工作,也能活得很好: chapter6/section3.md 192 | - 结语:成为一个自洽的程序员: epilogue.md 193 | - 法律条款: 194 | - 服务条款: terms.md 195 | - 隐私政策: privacy.md 196 | - Cookie 政策: cookies.md 197 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "self-consistent-coder", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "self-consistent-coder", 9 | "version": "1.0.0" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "self-consistent-coder", 3 | "version": "1.0.0", 4 | "scripts": { 5 | "build": "python3 -m pip install --upgrade pip && python3 -m pip install -r requirements.txt && python3 -m mkdocs build" 6 | } 7 | } -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | mkdocs>=1.4.0 2 | mkdocs-material>=9.0.0 3 | mkdocs-with-pdf>=0.9.0 4 | weasyprint==52.5 5 | pyyaml>=5.1 6 | fonttools>=4.0.0 7 | mkdocs-simple-hooks==0.1.5 8 | -------------------------------------------------------------------------------- /runtime.txt: -------------------------------------------------------------------------------- 1 | 3.9 -------------------------------------------------------------------------------- /vercel-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | python -m pip install --upgrade pip 3 | pip install -r requirements.txt 4 | python -m mkdocs build -f mkdocs.yml -d site -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "builds": [ 4 | { 5 | "src": "package.json", 6 | "use": "@vercel/static-build", 7 | "config": { 8 | "distDir": "site", 9 | "buildCommand": "pip install -r requirements.txt && python -m mkdocs build -f mkdocs.yml -d site" 10 | } 11 | } 12 | ] 13 | } --------------------------------------------------------------------------------