不被PIP,SDE打工人如何保持知识库的更新度?

不被PIP,SDE打工人如何保持知识库的更新度?

软件工程这一职业生涯为人们的成长提供了绝佳的机会。每年,全球有成千上万的杰出人才加入其中,这也使得软件行业的竞争非常激烈。

在这样一个竞争激烈的环境中,软件开发人员如何才能脱颖而出?怎样才能比他们能力相同的同行发展得更好呢?“知识”是这些问题的答案。你拥有的知识越多,你就越有可能比别人成长得更快。

不过,你可能会觉得软件相关的工作强度很大。交付时间表,升级,缺陷和不断累积的技术债务等带来的持续压力,让我们在一天内几乎没有时间学习新东西。在这种情况下,开发人员如何花费时间来增加他们的知识呢?这里有一些简单而有效的方法可以让你在工作之外不花太多精力就能增加知识。这些技巧在我十多年的软件职业生涯中帮助了我,我相信它也会对你有所帮助。因此,让我们深入研究最有效的五种方法,增加你作为程序员的知识。如果你想了解更多软件工程相关内容,可以阅读以下这些文章:

练了500道Leetcode题后,我学到这五件事
天花板?PIP?一文看懂美国公司技术岗位职场晋升(潜)规则
听说程序员和数据分析马上就要失业了?

1.做一个积极的倾听者

“我每天早上都提醒自己:我今天说的话不会教会我任何东西。所以如果我要学习,必须通过倾听来完成。”

—电视节目主持人Larry King

倾听是极大地提高你知识的有效方法。在软件开发中,我们相当一部分时间都会用在参加会议和讨论上。如果你注意了对话内容,就可以了解到很多话题。

我知道很多会议或讨论可能并不会带来什么价值,具体得看环境,而且很多时候你又不得不参与。这个时候我建议,如果有可能的话,你应该拒绝参与这样的会议,或者干脆直接跳过。

你可以充分利用你计划参与的讨论,在整个对话过程中耐心聆听,你会发现这些会议里随意的讨论中,包含着大量有意义的细节。可能你觉得你已经知道了这个话题,但我相信当你听到不同的观点时,你会遇到一些非常有价值的新东西。在讨论时,还要同时注意技术和功能上的细节。开发人员通常更看重技术部分。但是,如果你不能理解功能上的需求,那么技术技能就毫无用处。因此,这两者对你的职业发展是同等重要的。此外,不要在会议期间一心多用,这样做没有任何价值,还会适得其反,如果不注意的话,你可能会错过讨论的重要细节。

2. 编程之前先了解需求

增加程序员知识的最好、也是最简便的方法之一,就是确保你了解自己写的代码。

这里不是说你只要知道你编写的某段代码,而是为什么需要写这段代码,它将为用户带来哪些好处,代码将如何影响现有功能等,这些你都要非常清楚。

通常,开发人员一分到任务就急于实现某个功能,他们会忘了先分析代码的影响,也不会分析最佳实现代码的方法。因此,他们没法学到端到端功能的知识。同时,他们也会失去学习新的API或技术的机会,而这些知识在未来很可能对他们有所帮助。

每当我开始处理某个功能时,都要先确保自己了解端到端的业务案例。这样,我总是能找出在我的项目中已经实施了的相关用例。这有助于我全面的了解它的功能和生产过程中的现状。这些知识可以帮助我提供最佳的解决方案。

因此,花时间分析分配的任务有双重好处。你无需花费额外的时间即可获得功能和技术知识。同时,你可以为任务提供最佳的实施方案。对于你和项目来说,这将是一个双赢的局面。

3. 阅读书籍和技术文章

我们都知道书籍和技术文章可以帮助我们增加知识。但是你可能在想:“我都没有足够时间完成分配给我的任务,我怎么有空去看书或读文章呢?”我同意,这份工作强度很高,而且很累人。但是,如果我告诉你,你可以阅读它但不必度过不眠之夜呢!

这是真的,其实在工作以外你并不需要花很多时间阅读书籍或技术文章。利用工作时间阅读的一个方法是努力的把它列入你的日程中。如果你想利用工作时间学习新的技术细节,请把时间集中在你想学习的部分。如果你想了解端到端功能,那么在安排日程的时候也要算上这个时间。

我用的另一个技巧是把我觉得有趣的文章加到我的收藏书签里。我会在等朋友或排队吃午饭时读它们。阅读一篇文章可能都用不了五到十分钟。有时,当我想在工作中休息时,我也会打开其中一篇文章阅读。

在等待的过程中,你总是可以挤出很多时间。如果你需要更多的时间,那就把文章分成多个阅读部分。你也可以用同样的技巧来阅读书籍。我通常利用周末和清晨的时间看书。

关键是要找时间学习新东西,不管是技术上的还是功能上的。我并不是建议你为了提高自己的知识而去放弃自己的社交生活。但还是要在你方便的时候阅读。只有你才能找到最合适你的时间。但是要永远记住——你的事业归根结底是你自己应付的责任。

4. 处理缺陷

如果可以选择,许多程序员都不愿意从事处理缺陷的工作。但是软件项目中的缺陷是不可避免的。它们是你学习新东西的好机会。除了修复生产缺陷之外,只有少数其他活动可以教给你更多东西。我喜欢处理缺陷的原因有很多,它为我提供了一个机会,可以查看编程时错过的内容。一旦问题解决了,我就会重新考虑我在最初编程中所做的假设,也会分析为什么我忽略了这个缺陷出现的情况,对我来说,这就像是为我未来的任务上的一课。

如果我修复的是别人的代码中缺陷,我会试着理解它的功能。它可以帮助我学习一个本来我不会详细了解的新功能。不管是谁的代码造成了这个缺陷,解决它总是可以帮助我学习。

当你处理一个缺陷时,不要急着去修复,你总是可以设置一个调试点,或者查看特定的执行日志,去找到问题所在。稍加努力,你就可以修复项目中的任何缺陷,但这可能无法帮助你学到任何的新知识。

因此,无论代码在哪里出错,都要分析整个流程,了解缺陷相关的业务流程和技术流程, 看看你能不能用新发现的信息做些什么。它可能会帮助你学到功能和技术知识,且无需在工作时间以外花费时间。

5. 帮助别人和寻求帮助

如果你不了解某事,就去问可能对此有所了解的人。但实际工作中,很多开发人员会羞于寻求帮助。他们会把这件事藏在心里,保持无知,而不是去找人来消除他们的疑虑。

通常这种行为可能是团队中其他人的不太欢迎的态度造成的。还有的时候,是程序员的害羞或自负造成。但也有可能是他们的团队文化把寻求帮助视为一种弱点。

无论是什么原因,不寻求帮助的开发人员都会失去获得知识的最有效技巧。因此,请尽一切努力寻求帮助。如果你的团队不支持你,那就和你的经理谈谈,看看他们能否改善团队的文化。

另一方面,帮助他人也有助于获得知识。当有人寻求帮助时,我总是尽力做到最好。随后进行的讨论能让我扩展对某一特性的理解。

如果我不知道答案,我会联系可能知道答案的人。这样一来,我也受益匪浅,因为我现在知道了我以前不知道的新信息。如你所见,这个技巧不需要你在工作时间外努力,但最终会大大提高你的知识。

我还注意到,当你帮助他人时,他们也会回报你。因此,即使你周围的人对你帮助不大,也要在他们需要时尽最大努力帮助他们,同样的,这也将会帮助到你自己。同时,当你下次需要他们的支持时,他们也会更乐意帮你,最终这也会大大提高你的知识水平。

最终想法

现在,你知道了提高你知识最有效的一些方法。对于一个成功的程序员,无论是功能还是技术方面的专业知识都很重要。开始规划你自己的课程,并根据个人的方便程度去实施上面提到的方法。

你的事业就是你的责任,你需要尽一切努力让自己跟上时代的步伐。在你忙碌的工作日之外抽出时间来可能会很有挑战性。然而,如果不能不断地提高自己的知识,那么你将无法在你的软件职业生涯中取得长足的进步。

如果你不能花很多时间学习,也不要灰心。尽你所能,在不累垮的情况下尽量多做些事情。一旦这成为了你的习惯,它就不再是一种负担了。同时,在你多年的职业生涯中,定期的小习惯会大大提高你的知识水平,你自己就能感受到其中的不同。

感谢你阅读这篇文章。你还可以订阅我们的YouTube频道,观看大量数据科学相关公开课:https://www.youtube.com/channel/UCa8NLpvi70mHVsW4J_x9OeQ;在LinkedIn上关注我们,扩展你的人际网络!https://www.linkedin.com/company/dataapplab/

原文作者:Lokajit Tikayatray
翻译作者:Lea
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://levelup.gitconnected.com/5-most-effective-techniques-to-boost-your-knowledge-as-a-programmer-259780ed4a6