• 《程序员的七堂课》读书笔记2


    1.什么才是好工作

    • 提供好的项目:评价一家公司,可以看它的规模、利润率甚至社会贡献、企业文化,但站在个人发展角度,就要看它能不能提供“好项目”。好项目不是指多劳多得,也不是项目提成高、福利待遇好,而是这个项目用到了新技术,让你能解决更多问题。
    • 提供好的平台:程序员靠技术吃饭。好平台,一定有足够的技术沉淀,像阿里巴巴这样的一线互联网公司,都有自己的“技术藏经阁”。这些公司里的人,处理的很多问题没必要从零开始研究,因为已经有了成熟的解决方案。进来的人站在巨人的肩膀上,在照着做的基础上创新就行。然而外边的人连听都没听过这样的技术,这种差距在时间的作用下,不是每个月多几千元的工资能弥补的。
    • 提供好的环境:学具体的技术,看视频就行,想了解深层次的计算机思维和做事的逻辑,“大活人”才是最宝贵的教科书。有些理念,光靠代码太难传达;操作的时候有具体问题,代码和视频也没办法跳出来给予指导,人很容易一卡卡好几天。除此之外,一个人如果接触不到优秀的同行,就很容易坐在一口破井里仰望天空,看着身边的人安慰自己:“他们水平也就这样,我还行……”

    2.什么才是好简历

    • 提供大量有用的信息:待过几家公司,分别就任什么岗位;曾经解决过什么问题,取得过什么成绩;能力怎么通过之前的经历证明
    • 注重工作经历的表现形式:当确定工作经历写什么,哪些是重点之后,还有一点非常关键,就是表现形式。写简历必须以一种低调又恰当的方式,把自己的价值尽可能地表达出来。第一点是通过数据来表达价值,第二点是在表达上留白,不要说太多自己的观点,只摆事实,不讲道理,这才是高明的做法。否则在简历中一直说“我很厉害、我特别厉害”,没什么用,就算你是真有水平,这么做也会让别人反感。
    • 表达出确定性、靠谱性:过往的经历、自己做过的开源项目、做出过的成绩,甚至你的学历等。

    3.专业和学历往往是借口

    确实很多大公司在招人的时候,对学历有限制,对专业有要求,但真正在意这两点的公司,根本不会给不达标的应聘者面试的机会。毕竟简历上白纸黑字地写着客观条件呢。都到了面试环节了,再说是因为这些条件不达标而被刷掉,只能说明学历和专业是个借口。
    面试时,不管是什么原因,哪怕是因为你说话让人家感到不舒服,都有可能被淘汰。但是既然问起了原因,总不能告诉你:“不好意思,我就是看不惯你。”这个时候,学历和专业就成了最好的挡箭牌:“不好意思,我们公司对学历这一块有要求……”
    作为公司领导,最关心的是下面的人能不能按时交付任务结果,除此之外的一切,都不重要——这“一切”当中,自然包括学历和专业。

    4.如何应对专业和学历问题

    涉及人才的选拔,HR所有的重心都逃不出以下两点。

    • 确定应聘者是不是人才。
    • 用最低的成本,让应聘者为公司创造价值。
      有的HR会在确定招你进来的时候,用学历和专业当谈判的筹码,尽量压低工资。这是在和你谈判,不是对你本人有意见。俗话说得好,“想买的人才会去砍价”,没有看透这一点,就免不了有对抗的情绪。
      除了压低成本的想法,HR也有可能是借机观察你对自己的技术和能力究竟有多自信。
      所以不要在事实上做过多的纠缠,学历不高就是不高,专业不对口就是不对口,这时候应对的焦点,应该放在证明自己的价值上,面试官也肯定希望你这么做。

    5.关于换工作

    • 判断自身需不需要跳槽:换工作的第一步,最根本的一步,是判断自己要不要换工作。在实际工作当中,有的人是觉得工资太低、活太多或者没什么发展前景,要换一份工作。这时候需要谨慎,因为太多问题不是换一份工作就能解决的。况且从准备到实施,再到最后完事儿,需要付出一个月到几个月的时间,至少还影响未来1~3年的职业发展。
    • 自身问题和平台问题:很多程序员,容易把主观的自身问题看成客观的平台问题。比如有些人说身边没有“大牛”,感觉在现在这个平台学不到东西;甚至是公司制度不合理,老板没有提拔自己,然后开始感慨怀才不遇、人际关系复杂等。他们本来指望通过跳槽换一家公司,结果过了新鲜劲之后才发现,老问题还是没能解决,然后就开始迷茫,把问题扩大,“我是不是不适合做这一行”等问题就冒出来了。所以,准备跳槽的第一步,就是要想好这件事要不要做。如果这件事从根上就是错的,那么付出的越多摔得越狠;如果不是平台的问题,就要老老实实从自己身上挑毛病。
    • 考虑招聘环境及周期:做事是要讲究时机的,跳槽也一样。作为一名程序员,要知道一年中的求职旺季是什么时候,跳槽高发期是哪一段时间。如果打算跳槽,不妨问问自己:现在是人才的“熊市”还是“牛市”?
    • 多了解市场需求及同行水平:某个行业、某项技术被淘汰,也不是一两天的事情,很多征兆都能体现出来,比如招的人一天比一天少,待遇越来越糟糕。稍微用点心,人就不至于走到“死胡同”里。除了招聘网站,还有什么别的方法了解行业信息吗?有,比如同行圈子。要多了解市面上的行情,了解自身的价值换算成数字该是多少,以及行业趋势、人才市场的走向,才能更好地去做出判断和选择。

    6.真正必备的能力:学习能力

    • 应该要学什么:员工都是公司机器里的一个部件。很多时候,因为公司的流水线太长了,就看不见自己的努力跟最终产品有什么关系,看不清自己在整条价值链里的位置,自然就不知道自己怎么做才能提供更大的价值;缺了这个目标,自然不知道该“学点儿什么”。想知道该“学什么”,要站在整个公司的高度,从本职工作入手,这样路才能清晰一些。
    • 应该如何学:很多程序员在业余时间不能有效地给自己“充电”,这不是终点没选对,而是“跑步”的姿势错了。学习时需要:学会实战思维,学习要抱有目的,对自身的业务带来帮助;要合理掌握学习节奏,要注重效率和时间;要搜集高质量的学习内容及及时进行反馈应用;要进行复盘,总结所学和积累知识体系。

    7.如何在疲劳的代码世界保持兴趣和精进

    学习的东西能够给自身带来成就感,比如应用在自身业务中或小项目中,其次是通过分享来保持成就感。

    8.不要有畏难心理

    作为一名程序员,接到任务的时候,不要动不动就跟自己的主管讲“这个我不会”,而应问清楚具体要求,说“这个东西我可以学”。每天都有那么多的技术产生,如果你在一家处于上升期的公司,每周遇到的内容,至少有一半是之前从来没见过的。
    虽然互联网发展很快,作为一名程序员也别总说“这个我不会”,这容易被人看不起。可以说自己查了多少资料,做过什么尝试,遇到了什么问题,想怎么解决,千万别摆出一副“我不会我骄傲”的心态,这样在格局上就输了。

    9.选择的是中长期事业

    聪明点的程序员,不会让短期的工作影响自己长远的事业。公司、岗位、薪资待遇或福利年假,这些东西都是工作的附属品,也都是可以变化的,但是发展事业需要持续地努力。很多程序员因为工作上受了点委屈,错过了一次提拔的机会,就开始质疑自己“适不适合这个行业” “要不要换行”,就得不偿失了。
    着重于能力的提升,剩下的交给时间,事业的发展就不会走太大的弯路。

    10.不要抱有过客心态

    很多程序员心想:反正我在这儿也干不长,差不多就得了。一两次临时应付倒也不打紧,要命的是这种“过客心态”,会让自己养成“马马虎虎”的工作习惯。
    所以抱着“我干不长,没必要太认真”的想法,做起事来,肯定不会全力以赴,这其实就是精明过头,反而丢掉了最宝贵的东西。

    11.学会提问

    • 具体到能提高获得帮助的概率
    • 具体到不给别人添麻烦
    • 具体到能体现你的诚意、主动性和智商

    12.提高解决问题的能力

    很多程序员自嘲是“插件的搬运工”,偶尔也给自己辩护:“不都说了嘛,不要重复造轮子。”
    问题的关键,不在于是否用了开源项目,而是自己解决问题的能力有没有提高。初级的程序员(月薪2万元以下),只求在最短时间内把活干完,口头禅是“凑合能用就行”。想要突破,就要从“凑合能用”到“独立解决”,再到“用好几个方案独立解决”,最终比较不同方案之间的优劣,选一个最好的。对于同一个问题,能拿出多少个解决方案,是程序员水平的衡量标准之一。并不是背了很多知识点,解决问题的能力就上去了。

    13.提高复盘和学习能力

    同样工作3年的程序员,能力会有天壤之别,很关键的一个因素,就是复盘能力不同。
    有些东西,确实要靠行业经验积累,短时间学不来。但是高手的思维模式,要尽量去理解,再问问自己:“我能不能做到?”
    工作中,总会遇到麻烦的事情,花点儿心思,总结一下,下次遇到类似的问题,就轻车熟路了。要是更有心,系统地总结一下,一个好的开源项目就出来了,捎带着还能树立个人品牌。
    出了校门,在工作时间内不太会有大块的时间能用来学东西。而职业初期,一天中的大部分时间又都是工作时间。那么除了在工作中学会复盘,精进自己之外,还要学会用碎片时间来提升。如果人在职场,心态还留在学校,妄想着一天中能有两节自习课,结果就是“永远没时间学”。

    14.资深的程序员和新人的区别

    • 很多才华横溢的程序员,痴迷于炫技术。把编程当爱好的话,自然无可非议,但站在事业的角度,编程是要解决实际问题的。与别人怎么配合,项目怎么推进,甚至在冲刺过程中团队成员出现了心理问题该怎么应付,这都是项目经验,都需要去经历,单纯地学是学不来的。好好做每一个项目,它们都决定着你的身价。
    • 做事的层级,分为攻略、战术和战略。最初级的程序员,给一份攻略照着做就行,就像打游戏有一关过不去,上网查查就行。而作为经验丰富的老程序员,必须从战略、战术上去思考,首先要确保方向正确。作为老程序员,你需要确保的是大方向是对的,要是工作了小十年,还经常在纠结某一个具体功能该怎么实现,只能说之前的成长还不够。
    • 作为经验丰富的老程序员,在其他人没有解决方案的时候,要能提出方案;当其他人有方案的时候,要能提出来更好的方案;当其他人有好几个方案的时候,要能挑出来最合适的方案。就像没有最好的计算机语言一样,方案也没有最好的,只有合适不合适一说。具体到某个项目,老程序员体现解决问题水平的地方,就在于快速选出最适合的方案,给团队节省大量的时间。想要做到这一点,就需要在年轻时打好基础,工作的时候多问问自己:“这个需求,是不是只有一种办法来满足?”“这个功能,是不是只有这一种办法来实现?”“这几个方案中,哪个方案最适合?它们的优缺点各是什么?”

    15.技术视角到价值视角的突破

    • 技术是实现价值的一种方法,除此之外,实现价值还需要优化流程、合理安排进度、科学管理团队等。苹果公司的很多技术,也不是它自己原创的,但人家能够通过创造性地应用,做出来全世界流行的产品,某种程度上,这种方式的价值创造更有意义。很多程序员相信“技多不压身”,但职场是讲究效率的,如果把思考怎么创造价值的时间,用来学一堆没有实际价值的技术,那就是浪费。有些人会想:管它有什么用呢,先学,万一以后有用呢?
    • 技术产生不了核心竞争力,你能搜到,别人也可以,但是你能用这些技术优化产品、创造价值,从而培养解决问题的能力。
    • 这一切的前提,需要你从全新的角度思考——我用技术怎么提高效率?如何创造价值?我看到一些程序员,用各种炫酷的技术,做了很多好看的网页,仅仅是因为好玩。而现实中的企业,大概也不会用这种类型,因为企业是要用网页实现价值的。所以想要突破,永远要提醒自己,是价值优先,并非技术优先。
    • 互联网公司也是一样,一个人能取得的成就,跟他有多主动直接成正比。如果非得要一个衡量一个人主动性的指标,那就是看他对多少结果负责。初级程序员,只要把该切的图切好,按时交工,能保证这个结果就行;而主管,需要把几个人组织好,对团队提交的项目结果负责,出了问题,就是他的事儿;总监需要负责的更多,只要是出现问题,都是他的事儿。
    • 看一个人靠不靠谱,就看他能不能做到“凡事有着落、进展有反馈、衡量有标准、结果有回音”。这

    16.从手边的事情开始突围

    • 程序员的价值,在于能满足多少实际需求,单纯的知识点,解决不了问题,互联网行业,说到底还是个动手的行业,是一个解决问题的行业。
    • 最好的突围就在手边:既然程序员的价值在于满足市场需求,而非脑子中的前景幻想,那么最真实的需求,莫过于工作要求。非要别人安排给你才去做,也就只能打杂了,只要公司的产品还有一丁点可以优化的空间,那就是你提高自己的机会。与其幻想着学完某种技术会怎么样,它能解决什么问题,倒不如在工作中遇到了实际问题,去找对应的技术来解决。感觉技术不够用了,再去学。程序员遇到的瓶颈,有相当一部分,可以靠手边的事情来解决。
  • 相关阅读:
    Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?
    如何在idea里git提交代码时,能有emoji表情图片?emoji表情大全给大家奉上
    文心一言 VS 讯飞星火 VS chatgpt (242)-- 算法导论17.4 1题
    【每日一题】—— B. Arrays Sum (Grakn Forces 2020)
    自学Python第二十六天- Tornado 框架
    LabVIEW性能和内存管理 3
    net基于asp.net的警院学生奖励管理系统-计算机毕业设计
    贪心算法java实现
    和想象中完全不一样?巡课在线就能进行
    【深度学习基础课程】单一神经元
  • 原文地址:https://blog.csdn.net/pbrlovejava/article/details/127134901