《程序员的自我修养》学习笔记

程序员的自我修养

第一章 谈职业生涯

1.程序员应该是那些不断追求更高技术,并有着自己产品梦的工匠。当你通过对自己技术不断打磨,一次又一次做出那些优秀产品的时候,你会发现自己不再是他人口中的码农或是屌丝,而更多被称为了大师、大神,而受到大家的尊重

2.你周围所看到的那些天才(身边的优秀程序员)只是在你没看到的时候花了更多时间工作或者学习而已,当你也坚持这么做时,你也会变得和他们一样优秀。造成这些的原因往往是他们已经习惯了听命于人,而缺少自己的观点和主张,久而久之便成了那个在他人眼中可有可无的平庸之人。

3.作为一名程序员,你也需要尝试去理解那些软件领域最本质的东西,而我的建议就是学习那些最佳实践。我很支持那些年轻的程序员们坚持去走技术路线,但这不应该成为你排斥与人沟通的理由。你需要与人沟通来获得他人的帮助;你需要与人沟通来建立良好的工作关系;当你的能力不断提升,被赋予更多职责时,你更需要与人沟通来管理好自己的团队,以及与老板或客户进行有效的沟通等;一个人光有好的想法是不够的,你需要成为一个有工匠精神的人,通过亲自动手去尝试和实践,你会不断从中得到新的创造力。如果上面提到的其他建议都对你无效的话,那么就请坚持第2点建议吧“比一般人更加努力”,因为它将成为你最大的竞争优势。

4.旅行:去任何一个新的地方都可以称之为旅行,旅行不是为了放松,因为你需要坐飞机、开车、走路,这些都会使你产生压力,但你仍需要去旅行,因为这能让你发现和感受新的东西,而这些是从电脑屏幕上无法获得。

二、那些程序员们后知后觉的职涯经验

5.对于程序员来说,所谓的100小时定律同样重要——花100小时学习或修炼一门新的技术,往往就能超过别人*;不应该轻易做出那些过于绝对的判断,应尽可能去使用科学的方法进行分析和论证,然后用不易被人误解的方式进行有效的表达,这样你提出的观点才能让大家感到信服。程序员的能力来自于大量的编码实践,以及持续学习的能力和勤于思考的习惯。任何自作聪明,不懂装懂,以及投机取巧在明眼人看来都只会是东施效颦,显得如此微不足道。

三、如何招到一名靠谱的程序员

6.你需要用尽可能简练的文字来描述项目的背景,你在项目中承担的角色、参与项目的时长,你用到的技术,以及你在项目中
亮点等信息。优秀的程序员们往往善于归纳,并能够一针见血地发现问题或把一个问题说清楚。

7.GitHub上的开源项目,在知乎、V2EX中给他人的解答,以及你的个人技术博客等都会给你加分,面试者是否有良好的编码习惯,异常处理是否规范,代码逻辑是否缜密高效,以及他的开发效率是否足够高。

8.你的目标不应该是简单地获得一份工作或者雇佣某个人,而应该以获得更多的工作乐趣和建立更良好的工作关系为目的去看待招聘这件事,切忌不要急于求成,就像谈恋爱一样,当双方都有感觉时,一切就水到渠成了。

四、每个程序员都应该了解的一件事

9.自我营销对程序员来说也非常重要,自我营销往往能够有效地放大你所做的努力,并且在你成功的道路上起到催化剂的作用。尽早地获得成功对于我们这一代程序员来说异常关键,因为这个世界上有许多与你一样努力的人,但有些人在最佳的时间点获得了成功,而另一些人虽然也通过努力达到了相同的能力,但错过了那个正确的时间点,从而走上了一条完全不同的道路。一名程序员如果能够尽早意识到自我营销的重要性,并有意识地锻炼和运用这种能力,那将对你的事业产生有益的帮助。

10.程序员不善于自我营销,其中一个重要原因是他们自身所掌握的知识体系太过于单一,很难跳出技术范畴与人交流,并引起别人的兴趣和认同。你可以读任何历史、经济、人文、艺术类的书籍,它们都能够帮助你丰富自己的知识和思想,使你变得更加全面和完善,而这反过来,又能帮助你建立信心。

11.通过这些社会化的活动能够使你的想法和技能更加完善。•能够使你建立权威,你的技术博客,在一些社区上的技术问题解答,以及你的开源项目等都会使人认为你是这方面的专家。如果,你并不想仅仅是一名程序员,那么你只需要在潜意识中埋下一颗“自我营销”的种子,让它跟随着你慢慢成长,相信我,你的未来将会因此产生很大的不同。

五、程序员的烦恼

12.你不应该总是陷入在那些处理杂事的循环往复之中,跳出来,创造更好的方式去解决它们才是应对之策。技术是需要深耕的,深入学习一门主流的开发技术,并不断提升编程思维,比对很多技术栈都浅尝辄止要好很多;努力成为某一领域的专家,或者建立个人影响力。尝试问问自己除了学历之外还有什么让你能够脱颖而出的东西?是否有自己的个人项目?是否为知名的开源项目贡献过代码,甚至只是参与编写文档?是否通过写博客阐述过自己的独到观点,并得到大家的认可?在哪家公司实习过?

六、提给年轻程序员的职涯建议

13.我们会发现那些成功的人,往往是那些有着坚定目标,并持续努力的人。一个简单的方法就是做到对事不对人,这也是著名的李鸿章的做事法则,真正能做到的人其实少之又少,但是我们也要尽可能养成这样的习惯,最终做到这点。

第二章 谈实践与认知

14.程序员们其实是依靠他们所特有的程序员思维在进行编程,而他们中的佼佼者正是那些有着更高思维成熟度的优秀程序员们。我所体会的程序员思维更像是一种感觉,它是由常人的思维+编程思维,在长期相互作用下产生的一种思维模式。它能够帮助程序员快速找到以程序方式解决现实问题的最优解。

  • **长期不间断地编程实践。
  • 持续地学习与借鉴(参考)
  • 学会反思,并像专家一样思考**。

15.新一代的程序员不仅需要具备很强的编程能力,同时还需要具备从设计、运营、测试等各种不同角度去进行分析和判断的能力。随着编程时间的增加,他们会越来越不善与人沟通,甚至排斥与人交流。因此我们要学会调整自己,在提高自己编程能力的同时尽可能地多和别人沟通,这样不仅可以提高团队的效率,而且在沟通的同时也许会有思想的碰撞。多年的开发工作,使程序员们不自觉地首先想到如何用技术手段去解决问题,然而,真正优秀的程序员一定善于透过技术发现问题的本质,并进行解决的。

三、如何成为一名优秀的全栈工程师

16.全栈工程师定义为对性能影响有着深入理解的技术通才。全栈工程师应该同时是一位资深开发工程师、架构师,以及具有敏捷开发技能的程序员。全栈工程师往往是某一方面的专家,同时通晓并善于在正确的场合运用其他语言、工具和技术

17.降低沟通成本——我经常听到有设计师抱怨前端工程师无法百分之百地还原他们的设计,而前端工程师又在抱怨后端工程师从接口返回的数据根本无法直接使用,后端工程师也在抱怨产品经理所提的需求根本无法完成。随着团队人数的上升,由于各自技能栈的不同,沟通成本必然会随之上升。全栈工程师除了能够独立完成前后端的开发(甚至包括设计)外,如果能够在项目初期提前介入,便能很好地规避技术风险,过滤不合理的需求,从而显著降低因不同技术差异导致的沟通问题,显著降低项目风险。

18.问题解决能力——全栈工程师首先是一名工程师,他必须掌握用工程化的方法来解决遇到的各种问题。好奇心——对任何工作都抱有好奇心,并愿意不断学习和改善是那些优秀工程师的共同特性。软件开发领域汇集了世界上最聪明的人,各种类型的技术、产品、框架更是日新月异,层出不穷。

19.努力成为一个管理者吧,他会使你更加睿智、可靠和值得他人信赖。开发技能是你的硬实力,而附加技能则可以看作是你的软实力,只有同时具备这两方面技能,才能成为一名优秀的全栈工程师。作为一个全栈工程师,要多参加技术大会——InfoQ、CSDN、GITC、优设、TED等网站都会定期举办各类技术大会。

20.作为一个全栈工程师,要敢于做公开演讲——全栈工程师作为团队的核心成员,他一定需要在团队内部做技术、管理等方面的演讲。如果你是一个乐于分享的技术达人,那么也可以尝试录制个人课程(视频或音频),并在慕课、网易课堂、优酷,或荔枝、喜马拉雅等各种媒体上分享自己的技能和知识。不要因为自己并不是专家就不愿尝试,相信我,你用心制作的内容,会获得大家认可的,并收获一大批粉丝的。个人博客——每天进步一点点,一年以后你便会获得质的飞跃。
学习笔记转载来自陈逸鹤的《程序员的自我修养》

谈点自己的感悟:总体来说,读这本书给我的启发很大,从一开始我对程序员的认识就是一个所谓的“码农”,到看了这本书后,发现程序员是一个伟大的艺术家,好的程序员不是一个只会套用框架,复制代码的人,而是一个充满激情,不断的思维碰撞所写出的一行行代码;之前看雷总说写代码就好像写诗一样,当时感觉有点不可思议,现在看来真的有人可以做到,虽然我离这一步很远,但是相信我经过自己勤奋踏实的态度去学习,总有一天会写出这样美妙的代码,我坚信,到时写代码就会成为成为一种享受,渴望有一天这种事会成为现实;另外,我虽然这本书才看了不到二分之一,但是已经完全刷新了我的认知,程序员不仅仅是把自己的工作做好,更要学会沟通,学会自我营销,一定要让自己的才华早日得以展示;另外,不仅仅是全栈工程师,每一个程序员都要学会分享,乐于分享,不仅仅是找工作的问题,保持这种Open的态度,乐于分享自己总结的东西,我坚信不仅对你个人的成长有好处,而且也会推进中国软件乃至人工智能行业的飞速发展。

本人不才,写的不好还请多多指教。

猜你喜欢

转载自blog.csdn.net/Fredric18/article/details/90417161