如果996是福报,希望你有所收获

前言

相信每位开发者在自己开发的过程中,都会反思一些问题,比如怎样提高编程能力、如何保持心态不砍产品经理、996 之后怎样恢复精力……

小编最近阅读了两位开发者的文章,他们分别分享了自己开发生涯中学习到的一些东西,其中一位开发者刚工作 1 年,另一位则有 7 年的开发经验。

他们都信奉“终身学习”,同时也乐于向他人分享自己的想法,那处于不同阶段的这两位开发者的感想有些什么不同呢?下边把二者的文章一起分享出来,希望不管编程了几年的你都能受到一些启发。

开发 1 年,我学到了什么?

作者 Pachev Joseph 是 Agile SDE 公司的一名软件工程师,根据其在 LinkedIn 上的简历,在他撰写本文时,刚好正式入行「软件开发」一年。

他在文章中分享了对入行一年来的思考和总结,我们不妨看看有哪些值得学习的地方。

学会倾听和学习

这不是什么重大的启发,只是十分基本的常识。但我注意到许多开发者,包括我自己都存在一个这样的问题:倾向于一听到问题就开始考虑如何用最好的方案解决它。更糟糕的是,经常是条件发射般地在听完问题之前就给出了答案。

另外,我发现自己虽然也有在倾听,但并不会从听到的内容中学到任何东西。常见的情况是,在听的时候我就开始思考该如何回应,而不是关注问题本身。

对此,我从前辈那里学到经验是:听完再回应。刚开始我并没有总是这样做,但日复一日,我在这方面做得越来越好。我学会了倾听、思考,然后才回答的方式。

限制自己的期望

这里想表达的是,你所听到和看到别人正在做的事情不一定是你将要做的事情,也不是你应该做的事情。不要仅因为你的朋友在使用 Kafka、Kubernetes 等框架,或者使用 IronChefer 进行监控,就意味着你也需要这样做。

我本人有一系列的业余项目,同时热衷于追求新技术。但我发现自己推荐的工具并不是大家都需要的,所以我很乐意有其他人帮助我看到它真正的陷阱。

保持好奇心和享受乐趣

个人认为,我们必须时刻保持好奇心,它是让我们在这个领域不断成长的最大动力。所有我们持续学习的知识、深入研究帮助我们解决问题的主题都是出于好奇心的驱使。这也能够帮助我们保持学习的习惯。

拥有好奇心并同时享受我们所做的事情,两者自然会齐头并进。即使在我坐下来在写这篇文章的时候,我也觉得自己十分幸运 —— 工作就是自己的爱好,并能以此谋生。

不要给出确切的日期

这个经验可以说是血泪之谈。除非你是“包工头”,否则千万不要迫于压力之下就提供一个确切的日期。我因此吃过一次大亏,不过正是因为那次的吃亏,我很早就学会了这个行业的基本求生技能。

国际惯例,如果非要提供一个准确的时间,根据互联网行业的经验是将你预计的时间x2。

不要用主观的意见去审查代码

我觉得自己还算比较友善,不过每当我看到自己不同意的注释时,我也总会问自己“为什么被选中的是我?”。

但后来我意识到不应带着太主观的想法去审查代码,诸如“为什么要用这个变量名”的评论以前会很容易就惹恼我,但现在我学会了无视这些。我已经意识到,同样的表达如果面对面交流会有更好的效果,但用文字表达却会产生误会。

所以当我在审查代码过程中进行评论时,我会提醒自己总会有人对自己的看法持反对意见。所以如果大家都能这样想,一切自然会更好。更重要的是,我不仅学会了不要把别人的评论放在心上,更认识到大多数开发者并不擅长沟通。

我只是一名员工

我总是很容易陷入试图给别人留下深刻印象的陷阱 —— 天性如此。但事实是,无论你的代码和职业素养多么令人印象深刻,你都只是公司的员工。即使你喜欢在工作之外创造软件,也应该在业余时间做些事。

刚入行六个月时,我总感觉自己需要证明一些事情,但后来我不再执着于此了。曾经我甚至不敢使用带薪休假的机会,但是正如每个人都会告诉你的那样,休息非常重要。

所以不要害怕使用所有这些福利(带薪休假等)来享受工作和生活。毕竟工作与生活的平衡对我们的心理健康至关重要。

记录工作日记

如果我能给你一个小建议,那就是记录一份工作日记。在工作中写下你能做的或计划做的任何事情。这样就可以:

  • 利用好自己的时间额度

  • 跟踪自己的进度和决策

开发 7 年,我学到了什么?

开发者 Tomasz Łakomy 将他 7 年的开发生涯中学习到的一些经验分享了出来。

Tomasz 讲到了以下 6 个要点:

编程中最重要的语言

对于中国开发者来说,这个问题的答案多半是“英语”,然而 Tomasz 却说:是英语,或者西班牙语、中文、波兰语,或者其它任何你在工作中与他人交流所用的语言。

It's English.Or Spanish.Or Chinese.Or Polish.Or whatever you use to communicate with other people at work.

作者指出“与人交谈比与机器交谈更重要”。编程是一项团队运动,虽然存在极少数案例,个人可以从零开发出很出色的产品,但是在绝大多数情况下,编程工作需要一个团队。

沟通技巧可以决定项目的成败,甚至 NASA 也因为这个问题而困扰。项目想要获得成功,整体的专业技能比纯技术技能更为重要,举个例子,如果你聘用了世界上最好的五位数据库专家,但是他们之间拒绝交流,没有协同工作,那最后交付给你的可能是 MySQL、Aurora 与 MongoDB 的五个不同实例,那又有什么意义?

深入了解你正在开发什么?为什么开发它?

大多数人在有目标感时会更开心,这也适用于工作。作为软件开发人员,你的目标不是用 JavaScript 实现 JIRA,或者用 C# 重写 Trello,你的目标应该是解决代码问题。

如果你对正在开发或者维护的系统有深入的了解,那么就可以在纯技术之外做出决策。这个功能是必要的吗?它解决了什么问题?我们能以其它方式解决这个问题吗?这个问题的优先级这么高合理吗?

这种思路有时被称为“业务上下文”,但如果你想做好自己的工作,你不仅应该了解这些上下文,还要能够塑造和影响它。这不是说你必须在组织中拥有某个高级职位才能这么去做,你至少要先去了解这些内容。

代码审查

不要背地里审查别人的代码,并且公开指出其中的问题,你在初级开发者的代码 PR 下以不好听的言论挑出了一些问题,这样并不能证明你有多厉害,相反,这只是说明你不是一个友善的人。

但是如果真的发现别人实现的功能完全无效,那么怎么办呢?合适的做法是私下去联系代码的编写者,与他们交流,找出他们为什么会以这样的方式实现该功能。

大多数人都不会想着说要写出不好的代码,如果他们的代码你觉得不行,那可能是他们在处理一些你没注意到的限制问题;或者他们确实编程能力还不够强,那这个时候就是你展现实力,帮助他们解决问题的时候了。

有些事情会出错,做好准备

“任何可能出错的事最终都会出错”,墨菲定律很可怕,你要始终假设在设计系统时可能会出现问题。

如果你正在构建登录表单,需要假设用户会将整本书复制并粘贴到密码字段中;如果你正在写一个 WYSIWYG(所见即所得)窗口,要假设有人会试图破坏它,并且他们很可能会成功;如果你有一个数据库,假设它会在某个时候出现故障;如果你还没有测试从 backup 中恢复数据库,那么这就不是一个 backup;如果你正在观众面前进行现场演示,需要确保 demo 在线上或者离线等情况下都能正常展示。

不要害怕说“我不知道”

刚开始当程序员的时候,可能你会害怕别人发现你不懂某一个问题,所以别人问你而你真的不懂的时候,你不会直接回答说你不知道,并且会给出一些不能确定的答案,但是本身没有底气,所以会害怕别人知道真相后觉得你是个骗子。

但是作为开发者几年之后,你可能会觉得如果一个东西你还不知道,那可能它是无关紧要的,或者这是你需要现在去学习的另一项新技术。终身学习不是软件开发的流行语,它是现实。

保持这样的心态,这个时候,当别人问了一个你不懂的问题时,你就可以大胆地说:我不知道,我还没有试过,我先看看,然后回复你。

分享学习成果

当你从“我不知道”的状态中学习到某项新技术的时候,这时候可以去与他人分享你的学习成果。比如写自己的博客、录制视频教程、在公司的分享活动中演讲,或者只是简单地把知识点告诉另一个人。

二次教学是考验你是否真正理解你所学的东西的极其有效的手段,而且一般来说,即使是最资深的专家也可以从初学者那里学习到新东西,这样对于你和其他人来说是双赢。

同样作为开发者,如果 996 是你的福报,那希望你在享受福报的过程中真的有在思考:如何成长?

你可能感兴趣的:(如果996是福报,希望你有所收获)