【读书笔记】程序员的自我修养
[封面图]
谈职业生涯
写给年轻程序员的10点启示
正确的认识自己
码农、程序猿、软件工程师、张江男、屌丝程序员,等等
其实这些称呼对你来说并不重要,关键是你自己内心中用了哪一个词汇来形容自己。
程序员应该是那些不断追求更高技术,并有着自己产品梦的工匠。
比一般人更加努力
漫画描述1: 一个普通人每天都很努力,他头顶上显示的能量槽也在慢慢地增长。而图中另外一个天才,整天不务正业,当然,他头上的能量槽几乎没有增长。
漫画描述2: 经过长时间的努力,普通人头顶上的能量槽慢慢接近满格,此时那个天才醒悟并开始了努力。
漫画描述3: 又过了一段时间,普通人头顶上的能量槽终于满格了,但此时天才头顶上的能量槽却早已爆表,高出了那个普通人一大截,那个努力的普通人只要无奈的抬头仰望着那位天才。
漫画描述4: 但当普通人回过头看时,却惊讶的发现有更多的人正同样充满敬意地仰望着他,因为此时的他也早成为了大多数人眼中的那个佼佼者。
你周围所看的那些天才只是在你没看到的时候花了更多时间工作或者学习而已,当你也坚持这么做时,你也会变得和他们一样优秀。
适时建立个人权威
我经常听到一些程序员抱怨自己的职业生涯毫无起色,或者在工作了几年之后就担忧自己遇到了瓶颈。其实,造成这些的原因往往是他们呢已经习惯了听命于人,而缺少自己的观点和主张,久而久之变成了那个在他人眼中可有可无的平庸之人。
选择合适的时机去表现自己,建立个人权威,这能让其他人看到你的不同之处,并为你在公司或团队内部建起良好的影响力。
遵循最佳实践
理解设计的本质和原则。
如GOF经典设计原则,SOA或是最新的微服务架构,理解DEVOPS这种新的运维文化和理念。
理解网络安全、性能调优、代码优化等各个方面的最佳实践,以使你写出更高质量的代码、做出更优秀的产品。
这些最佳实践或衍生出来的框架、工具都是那些拥有丰富经验的程序员通过大量实践,总结出来的最优秀的软件开发思想。通过理解和对它们的有效实践,能够让你站在前人的肩膀之上,对软件开发本身活得更深入的理解和认识。
保持好奇心并乐于探索新的事物
好奇心可能是那些优秀程序员与普通程序员之间最显著的区别之一。
优秀的程序员往往不会满足于对手头工作的认识和理解,他们有很强的意愿去研究公司的框架(甚至是更底层的框架)源代码,去了解它们具体的实现原理和设计思想。这对提升程序员的技术深度是非常有帮助的。
优秀的程序员们也往往非常乐于探索那些看似与工作无关的技术。
抛开代码与人沟通
你需要与人沟通来获得他人的帮助,你需要与人沟通来建立良好的工作关系,当你的能力不断提升,被赋予更多职责时,你更需要与人沟通来管理好自己的团队,以及与老板或客户进行有效的沟通等。
要为优秀的人工作
环境对一个人的影响是巨大的,而最可怕的是当你身处其中时,很难意识到你正在变得越来越糟。
其实,我并不鼓励程序员满目跳槽,但当你发现所在的环境和周围的人已经无法让你获得提升时,不妨选一个更好的环境,尽可能与那些优秀的人一起工作。
–2023-03-09 23:15
生活、睡眠、旅行
程序员不懂生活。
希望每个程序员都能明白工作、技术、写代码这些并不是你们存在的意义,而生活才是,你需要懂得生活,并且学会生活。
- 生活:常识有节制和有规律的生活,程序员生涯绝不是一次冲刺跑,而更像是一场马拉松。你需要合理规划自己的时间分配(学习、阅读、写代码)并持之以恒地去做。
- 睡眠:熬夜,使工作效率变得更低,恶性循环。
- 旅行:发现和感受心得东西,而这些是你从电脑屏幕上无法获得的。
相信自己的天赋和创造力
- 阅读优秀的书籍:好的想法绝不是凭空产生的,尝试从书中寻找那些能激发你创意和灵感的优秀内容。
- 记录和收集:尝试用一个小本子,将你转瞬即逝的好想法记录下来,它们可能并不直接有效,但下一个更好的想法可能就是从这些你记录下来的想法中产生的。
- 尝试动手:亲自动手尝试和实践
那些程序员们后知后觉的职业生涯经验
一心关注技术,而对所谓的职场法则后知后觉。
你的薪酬与工作量无关
你的薪酬其实取决于很多因素,技术能力、经验资历、工作量等,但最本质的却是,你对公司是否重要,换句 话说你是否容易被取代。公司很容易找到一个和你差不多的应届毕业生,而那些对公司产品非常熟悉,并且祈祷关键作用的老员工,要想替代他们,公司所需要付出的代价及需要承担的风险就会搞得多。
正确认识到自己在公司中的位置,努力修炼内功,让自己变得越来越重要,相信你的薪资也会随之提升的。
尽可能持续做一件事
既指技术上的积累,也是指能完整或较长时间参与同一个项目或开发一个产品。
既要去学习更多不同的东西,也要关注技术深度以及完整项目经验的重要性。
唯一不变的是变化本身
10000小时定律–要成为一个领域的专家一定要花费10000小时以上的时间。
而对程序员来说,所谓的100小时定律同样重要–花100小时学习或修炼一门新的技术,往往就能超过一般人很多。
你的声誉非常重要
严谨。往往是判断一名程序员是否具备优秀潜质的重要因素。严谨的程序员对于分配给自己的人误会认真理解,对于自己的产出会自己检查,这些都能大大减少工作中的出错概率,给团队或公司中的其他人留下良好的印象。
养成严谨的习惯,将使你终身受益。
理解沟通的意义
缺乏必要的沟通,往往会导致项目经常返工。
改变源于我对沟通意义的重新认识。
你的右脑将是你成功的关键
编写文档、做PPT的能力、演讲的能力、说服他人的能力…
这些技能总在你看不见的地方互相作用和促进的。
–2023-03-10 18:09
不要轻易说简单或不可能
不应该轻易做出过于绝对的判断,应尽可能去使用科学的方法进行分析和论证,然后用不易于被人误解的方式进行有效的表达,这样你提出的观点才能让大家感到信服。
你不应该总是单打独斗
如果你真的希望做出一些具有影响力的东西,那么光靠个人是很难实现的。你需要和团队中不同角色的人进行合作,有时候你需要说服别人,有时候你则会被别人说服。在这期间,你可能会因为被否定,而受到挫折,这种感受容易让程序员们产生挫败感,但这确实你成长的机会。不要总是单打独斗,要学会在团队中协作,并尽可能让优秀的人围绕在你身边,这将扩展你的能力范围,让你变得更加强大。
你的能力显而易见
程序员的能力来自于大量的编码实践,以及持续学习的能力和勤于思考的习惯,任何自作聪明,不懂装懂,以及投机取巧在明眼人看来都只会是东施效颦,显得如此微不足道。
如何招到一名靠谱的程序员
简历看人
过滤那些包含错别字,文句不通或没有逻辑性的简历,因为如果一名程序员连自己的简历都不愿意去仔细检查并完善的话,很难想象他写出来的代码质量会如何。
简历中的项目经验,看到面试者的开发经验,技术栈。
需要用尽可能简练的文字来描述项目的背景,你在项目中承担的角色、参与项目的时长,用到的技术,以及你在项目中的亮点。
优秀的程序员们往往善于归纳,并能够一针见血地发现问题或把一个问题说清楚。
关注的一些编程相关的社会化活动,如Github开源项目、知乎、V2EX给他人解答,以及个人技术博客等。
给面试者10分钟介绍自己最擅长的
介绍自己最擅长和最感兴趣的领域。
- 这个人对他所做的事情是否充满激情。
- 你是否能在自己的团队中有效地进行沟通。
- 你是否在自己的专业领域足够擅长。
- 你的团队是否会乐于和这个人一起工作。