>最近在看《程序员的自我修养》这本书,很不错的一本书。
作者是有十几年IT开发和管理经验的大佬,看完书给了我很多启发。
>作者的网站 [技匠社](http://jijiangshe.com/)。可以去看看,里面挺多资源的。
# 谈职业生涯
## 给年轻程序员的启示
1.正确地认识自己
2.**比一般人更加努力**
>**你只有十分努力,才能看起来毫不费力。**
3.适时建立个人权威
4.遵循最佳实践
5.**保持好奇心并乐于探索新的事物**
>保持好奇心,不仅要知其然,也要知其所以然。
6.抛开代码与人沟通
7.要为优秀的人工作
8.**生活、睡眠、旅行**
>睡眠真的很重要!
9.相信自己的天赋和创造力
- 阅读优秀的书籍:好的想法绝不是凭空产生的,尝试从书中寻找那些能激发你创意和灵感的优秀内容。
- 记录和收集:尝试用一个小本子,将你转瞬即逝的好想法记录下来,它们可能并不直接有效,但下一个更好的想法可能就是从这些你记录下来的想法中产生的。
- 尝试动手:光有好的想法是不够的,你需要成为一个有工匠精神的人,通过亲自动手去尝试和实践,你会不断从中得到新的创造力。
## 职涯经验
1.你的薪酬与工作量无关
不妨摆正心态,正确认识到自己在公司中的位置,努力修炼内功,让自己变得越来越重要,相信你的薪资也会随之提升的。
2.尽可能持续做一件事
持续做一件事是要你把每一件事做透、做好,而不是蜻蜓点水,浅尝辄止。
3.唯一不变的就是变化本身
4.你的声誉非常重要
>关于口碑
5.理解沟通的意义
6.你的右脑将是你成功的关键
作为一名程序员,我该如何锻炼我的右脑呢?是不是一定要学习设计或者一门乐器之类呢?
完全不需要,在工作中你就可以找到很多途径来提升你运用右脑的能力。比如,在你编写一个文档或PPT时,除了内容之外,能否再多考虑一下字体和排版,让人读起来更加舒服呢?在你与用户讨论需求时,能否尝试着从程序员思维转换到用户的角度来看待问题呢?在团队内部开会时,是否能提前做些准备,多争取在大家面前进行讲演的机会呢?当你持续这么去做以后,你会发现自己在各个方面都会变得越来越好,这其中也包括了你的编程能力。因为,这些技能总是在你看不见的地方互相作用和促进的。
7.不要轻易说简单或不可能
不应该轻易做出那些过于绝对的判断,应尽可能去使用科学的方法进行分析和论证,然后用不易被人误解的方式进行有效的表达,这样你提出的观点才能让大家感到信服。
8.你不应该总是单打独斗
如果你真的希望做出一些具有影响力的东西,那么光靠个人是很难实现的。你需要和团队中不同角色的人进行合作,有时候你需要说服别人,有时候你则会被别人说服。在这期间,你可能会因为被否定,而受到挫折,这种感受容易让程序员们产生挫败感,但这却是你成长的机会。不要总是单打独斗,要学会在团队中协作,并尽可能让优秀的人围绕在你身边,这将扩展你的能力范围,让你变得更加强大。
9.你的能力显而易见
`程序员的能力来自于大量的编码实践,以及持续学习的能力和勤于思考的习惯。任何自作聪明,不懂装懂,以及投机取巧在明眼人看来都只会是东施效颦,显得如此微不足道。`
## 每个程序员都应该了解的一件事
那么对于程序员们来说,又有哪些能够提升自我营销能力的方法呢?下面便是我的一些建议。
1.读与技术无关的书
2.会写文档
优秀的文档能够让人们对你产生信任和好感,相反,质量差的文档则会使你的声誉受损。
3.学会包装
4.尝试多讲
5.建立社会化联系
## 提给年轻程序员的职涯建议
1.尽早确定你想做的事情
2.10000小时定律
**无论你在哪个领域,只要能坚持为同一目标持续不断地努力,花费超过10000小时进行练习和钻研,那么你也一定能够成为该领域的杰出人才,并成为他人眼中的异类。**
>10000小时成为专家!
5.PKSS与持续学习
6.学会控制情绪
职场中的很多事情并不完全取决于你的个人能力,而更需要你有一个比较好的情商,善于控制情绪与人相处。
如何才能提高自己的情绪控制能力呢?一个简单的方法就是**做到对事不对人**。当你对某一件事非常气愤时,首先,你需要问问自己发火有没有用,如果答案是否定的,那么为什么不静下心来想想怎样去解决问题呢,其次,你需要有同理心,多站在对方的角度和立场考虑问题,即我们常说的换位思考,你会发现很多时候对方不是故意为难你和与你作对,而是也有他的考量和存在的现实问题;最后,你也应该有一些自己的情绪宣泄方式,比如,与朋友聊天、练习书法、看电影等,都是不错的释放方式。
7.让最优秀的人围绕在你身边
8.善于归纳与表达
9.掌握英语
10.睡眠使你更加强大
>充足的睡眠很重要
# 谈实践与认知
## 突破程序员思维
什么是程序员思维
- 长期不间断地编程实践。
- 持续地学习与借鉴(参考)。
- 学会反思,并像专家一样思考。
`程序员思维对程序员来说是一把双刃剑,它既能帮助程序员写出优秀的代码,去解决一个又一个复杂的问题,但有时候它也会阻碍程序员们的发展,成为进阶路上过不去的一道坎。`
如何突破程序员思维?
1. 透过技术发现问题的本质
解决问题的关键,往往不是如何通过技术手段禁止用户这样做,而是理解用户这样操作的原因,从而从根本上找出解决的办法。
真正优秀的程序员一定善于透过技术发现问题的本质。我想这就是我们突破程序员思维的第一步,也是最容易实现的一步吧。
2. 像专家一样给出意见
如果你对一个问题有充分的理解,并具有足够的信心,那么你就应该站出来像专家一样给出自己的意见,这会让你显得与众不同。如果你每次提出的意见都被证明是正确的,那么不需要多久,你也会被大家认同为是一位真正的专家了。
3. 杂学并从中获得不同的视角
要做到看清问题的本质并像专家一样给出意见,其实并不简单,这不仅需要你具备极强的技术功底,更需要你对问题所涉及的相关领域有足够的认识。你必须通过大量地学习编程之外的各种知识来完善自己的知识体系,并从中获得不同的视角。
4. 找回创造力
虽然编程是一项脑力活动,但程序员们可能都知道,在大多数情况下这并不需要我们发挥创造力。也就是说,我们在按部就班地完成那些开发工作的同时,也正在失去我们的创造力。
**创造性地解决问题是优秀程序员所需要具备的能力。**
有很多方法都能让我们找回创造力,关键是你是否愿意坚持那样去做。而我的方法也很简单,**每天进行阅读,每周写一篇博客记录自己想到的东西**。另外,我也有一本小本子用来**记录那些转瞬即逝的想法**,虽然有些看起来是那么不切实际,但我都会把它们记录下来,没事的时候就去翻翻,这个过程中我可能会得到一些不错又可行的新点子,然后,我再尝试着花些时间把它做出来。虽然,它们中的大部分都不会产生什么实际价值,但我知道下一个优秀的创意或想法,可能就来自于它们。
**突破程序员思维并不是要摒弃它,恰恰相反,突破正是建立在成熟的程序员思维之上的,这将帮助程序员以更全面的视角去思考和解决问题,同时也能为程序员这个职业创造出更多可能。**
## 编程的意义是什么
1.编程是一项技能
2.编程是去解决问题
3.编程是在表达,也是在创作
4.编程是为了留下痕迹
# 谈个人发展
## 那些优秀程序员身上的共同特质
1. 至少深入理解一门编程语言
2. 看上去有些“傻”
3. 他们都是现实主义者
4. 从自己的失败中学习
5. 很懒却又很高效
6. 善于发现并改造轮子
7. 并行学习,有效利用时间
8. 具备不错的软技能
9. 身边有一些优秀的伙伴
10. 对生活充满热情
`有很多因素会使一名程序员走向平庸,而最最直接的便是失去对编程的热情和兴趣。当一名程序员不再能够感受编程所能带来的乐趣时,编程对他来说,只是一项不得不去完成的工作,而他也将失去继续学习的动力,无法再与优秀沾边了。`
## 关于写个人技术博客
先从模仿和重写开始。
步骤可以参考如下:
1. 确定一个要写的主题。
2. 在网上寻找到那些能够帮助你完善观点的参考资料。
3. 列出文章的提纲。
4. 根据提纲完善内容。
5. 反复修改,直到文章通顺易读(有时我也会找人试读,并听取他们的意见)。
6. 给文章配一个好的标题。
7. 发布你的文章。
# End
2021.6.5 算是看完了吧,后面两章讲的是如何教导孩子学编程和作者学习设计的经历,对此不太有兴趣,粗略跳过了。
读一本好书,确实能让人激起很多共鸣。
读一个知识阅历比你丰富的人写的书,能让你少走很多弯路。
愿我们都能成为自己想成为的人。

关于"程序员的自我修养"