程序员自我思考

589 阅读8分钟

程序员自我修养

最近阅读了《程序员自我修养》这本书,其中对程序员需要掌握的内容阐述了一个全面的内容,值得一看。 不管是前端,后端,app等不同的岗位首先你得是一个程序员,然后才是一个具体的岗位。计算机的一些内容许多是通用的,只有掌握了这些通用的,不变的知识。才能对那些“变”的东西做到游刃有余!

基础知识

  • 语义化版本
  • 命名规范
  • 书写文档
  • 正则表达式
  • 平凡之路

(计算机是一个庞大的体系,涵盖了许多知识,我们不必焦虑,摆正心态,找到自己的方式,摆正心态, 技术是需要打磨的。越是高手,与他们接触的时候就会感觉到,他们处理问题的时候越是能柔和的冷静分析,他们 能够像一个老师一样,教你一步一步分析问题。能做到胸有惊雷而面不改色)

数据结构与算法

不解释

设计模式

就我自身情况而言,其实在大多数情况下,业务代码写起来是很快,简单的。写代码之前我们更加应该关注代码的设计思路,代码的逻辑,怎么样出你代码的耦合,扩展性,健壮,是否有重复代码,逻辑是否清晰等等。 其实写代码就是一个翻译的过程,将需求翻译成代码,无异于将外语翻译成中文是一样的。但是翻译以前一定要将设计方案 想清楚。如果你翻译出来的东西别人看不懂那还要你来翻译干嘛!

代码评审

  1. 如何量化代码

    商人关注的是量化,他们想从你哪里通道你做了什么,带来了什么价值,而不是你做了多少。 教授可以轻松地量化出他们的工作,销售人员可以计算出他们的收益。其他的领域也可以通过一些方式算出他们的贡献。 但是从事软件开发以及技术相关的人员,量化工作确实一个困难的事情。量化这件事情,不是在求职,更是一个技术人员生涯的一部分。绩效评估,有效的了解沟通,高效的和非技术人员合作,确保你再团队或组织中的价值。 看到用情况,行动和结果去描述工作成果, 技术人员需要解决的问题是什么?采用什么样的行动去解决和提升这个问题。" 现实世界中是怎样的呢?你试着问自己一些关键的问题:你有在更新你的代码的时候去监控和测试...这就是量化的目标。如果你在日程表前六周就完成了一个app,你肯定会去炫耀一下。但是你有考虑公司的战略目标吗,如果没有,请思考一下。... 你是不是感受到一些不同的感觉,这不是你一个人的问题,技术人员的通病。如果技术人员做好了量化这一块,那么他们也许就去从事销售了。

  2. 程序员必备的代码审查(Code Review)清单

常规项

  • 代码能够工作么?它有没有实现预期的功能,逻辑是否正确等。
  • 所有的代码是否简单易懂?
  • 代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注释。
  • 是否存在多余的或是重复的代码?
  • 代码是否尽可能的模块化了?
  • 是否有可以被替换的全局变量?
  • 是否有被注释掉的代码?
  • 循环是否设置了长度和正确的终止条件?
  • 是否有可以被库函数替代的代码?
  • 是否有可以删除的日志或调试代码?

安全

  • 所有的数据输入是否都进行了检查(检测正确的类型,长度,格式和范围)并且进行了编码?
  • 在哪里使用了第三方工具,返回的错误是否被捕获?
  • 输出的值是否进行了检查并且编码?
  • 无效的参数值是否能够处理?

文档

  • 是否有注释,并且描述了代码的意图?
  • 所有的函数都有注释吗?
  • 对非常规行为和边界情况处理是否有描述?
  • 第三方库的使用和函数是否有文档?
  • 数据结构和计量单位是否进行了解释?
  • 是否有未完成的代码?如果是的话,是不是应该移除,或者用合适的标记进行标记比如‘TODO’?

测试

  • 代码是否可以测试?比如,不要添加太多的或是隐藏的依赖关系,不能够初始化对象,测试框架可以使用方法等。
  • 是否存在测试,它们是否可以被理解?比如,至少达到你满意的代码覆盖(code coverage)。
  • 单元测试是否真正的测试了代码是否可以完成预期的功能?
  • 是否检查了数组的“越界“错误?
  • 是否有可以被已经存在的API所替代的测试代码?

合格的PM

写代码的时候要想着这个需求为什么要做,做出来之后的成果是什么,能给用户带来什么!

  • 定義清楚這個產品
  • 建立良好的溝通管道
  • 不要告訴工程團隊怎麼做,告訴他們要做什麼
  • 相信工程師專業

最头疼的产品经理便是对技术一无所知,并且对技术有着极大的见解 -- 黑客与画家

关注健康

  • 睡眠
  • 锻炼身体(对绝大多数人来说最重要的不是优先考虑以何种方式健身,而是开始并且能够坚持下去)

每一个人的智商是有限的,有的人天赋极高,有的人平平无奇。但是我们不要将关注点放在这里,天赋纵然改变不了 但是我们要让自己的头脑时刻保持最佳的思考状态,健康的身体可以帮我们做到这些。

效率

  • 学会阅读
  • 学会提问
  • 善用搜索(后续单独写文章收集资料)
  • 如何写作
  • 时间管理

Hacker

如何保护隐私

工作

为什么辞职

先想想自己在当前的发展环境下发展遇阻的原因。多从自己的内因上找,不要带着抱怨情绪。不能勇于面对自己的不足,迟早还会因为自己能力不足而离开。对上一家公司的抱怨什么的不建议和hr说,因为你面试的下一家,以后也可能成为你的上一家。

真正离职的理由主要是:

  • 家庭: 买了房,结了婚, 家庭开支增大,个人压力增加

  • 个人能力的成长低于行业平均水平,通常说的天花板。

  • 以及公司与团队与行业相比缺少变化和生命力。

  • 一个人在同一岗位两年,胜任并已进入了舒适区,此时一般都会转岗或升职以迎接更大的挑战。

  • 价值: 当前环境中无法发挥价值,并持续一段时间,换工作属于止损。

  • 薪资: 不解释。

现在的我

我觉得在找工作的时候,认清自我是很关键的一点。不然过分的以为自己的能力超群,往往会给自己带来挫败感。

“知己知彼,百战不殆”,我们不仅要了解自己,也还需要对外面的市场进行一下了解,比如问问其他公司的朋友,大概工作年限和水平的人待遇如何,也是为自己定价的一个方式。

出去找工作,也以为着你要放弃现在的工作条件和人脉,到一个新的环境中成长,我们的心态也很重要。谦逊有礼会给你未来的工作之路带来好处。

追求什么,如何规划

  • 平时的工作之余,不要忘了对自己技术的追求, 多理解多写一些代码
  • 没有不加班的IT公司,摆在心态,主要看你觉得这种加班值不值得

离职不是解决问题的办法,真正应该做的是修炼自己的通用素养,技术过硬,每个公司都有不同点,以不变的 知识应万变。

思考

前端,后端 -> 程序员 -> 角色(儿子,父母) -> 人 -> 动物

我们每天都是一个人生的修炼的过程,探索自身也是一种能力。我们不只是一个程序员,往后说我们就是一个普普通通的人,我们 掌握更多的技能,感兴趣的事。从生活层面提升自己。试想某一天你不再从事这个行业了能去干嘛?放好心态,感受生活。

关于写作

这是第一篇文章,我不知道自己能坚持多久,但是就好像健身一样,最重要的不是优先考虑做的多好,而是 开始做并能够坚持下去。


参考: www.kancloud.cn/kancloud/a-…