本文转载自公众号“读芯术”(ID:AI_Discovery)
只要工作足够长的时间,就会积累足够多的经验,这句话在某种程度上来看是正确的。然而,在另一些情况下,工作年限不会保证获得对应的经验。我见过一些人,他们已经工作了数年,可还像个业余者一样。他们几乎不学习软件开发的基本原理。几年过后,他们没有进步、停滞不前,却又找不到问题的症结所在。
同时,我与一些有着几年的工作经验的开发者共事过,他们有着难以置信的发展潜力、恰当的态度和技巧,这能帮助他们避免做无用功。
基于某些特征,你可以容易地发现谁有经验、谁缺乏经验。犯错会阻碍程序员的职业发展,为了避免这种情况,每个软件工程师都应该明确缺少经验的程序员有哪些特点,现在我们来深度分析缺少经验的程序员具有的7个特点。
1.创造大拉请求
你收到过代码评审请求吗?里面改动的地方很多,多到你不想评审,是的,这就是缺少经验的开发者会做的事。他们会在一个拉请求中把大量的更改捆绑在一起。最重要的是,他们会希望你为他们的代码审查设定优先级。
我也见过许多资深的开发者,他们习惯于开发大拉请求,连续几天做编码,不收反馈。你为他们的代码评估时,他们可能已经围绕代码构建了整个功能。因此,你给的任何评审都需要重大改动。
我若收到这种拉请求,第一反应是把他返回给开发者,让他们把代码分成小块,有逻辑地分解性能要求(PRs)。通常,我只评论发现的第一个问题,然后把它返给开发者。有时我很慷慨,会请他们建立一个调用,并现场检查代码。
你可以:
- 开发较小的拉请求,要想做好就要核对每天的工作。
- 永远不要签入不能编译或破坏构建的代码。
2.编写意大利面条式的代码
缺少经验的开发者写不出好看的代码。他们编写的代码缠在一起,散布在代码库的各个地方。每次读意大利面条式的代码,我都会感到迷惑,会忘记起始点、自己要找的东西以及代码的含义。
有经验以后,开发者就知道了如何规划代码。首先把自己的理解和流程写在纸上,具有直接的功能性除外。做一个演练,把它从头到尾想象一下。
若不遵循以上步骤,读代码就会很痛苦。自己和团队都难以解决编写代码时遇到的困难和困惑。你可以:
- 实施前明确理解特点。想问多少问题都可以,这样才能理解要求。
- 代码简洁、结构清晰。队员应能看懂代码,知道预期用途。
3.尝试同时从事多种任务
缺少经验的开发者不知道从哪入手、如何继续、何时停止。他们没有线索,不知道怎么把大块代码分解成有逻辑的小块来易于实施。
你若给他们分配任务,他们会立即编码,而不来找你核实自己不理解任务,也不会和你回顾自己的进步来确保自己步入正轨,只在完成后和你联系。到那时,你只能祈祷要求得到了满足。
另一种缺少经验的标志是开发者同时着手多件事,他们会从不相关的特性中挑选任务,自愿排除生产问题,并承诺帮助团队中的其他人。
最后,这些开发者没有完整地完成一件任务,他们的态度大多是好意的,但最后的结果对团队来说是场灾难。最后导致团队丧失了很多时间,必须以备战状态完成所有任务。
你可以:
- 专注于小块。把任务分成更小的逻辑块。把它弄清楚,然后交付尽可能小的工作功能块。
- 一次彻底完成一个任务。按要求提交一份任务之后再做下一个任务。
4.傲慢
缺少经验的开发者有着显而易见的傲慢态度。他们眼里只有自己,犯错的时候毫无察觉。若对他们的代码和任务给予反馈,他们会视其为对自身能力的个人评论。
许多新手开发者炫耀自己的傲慢,这多半是因为无知。他们刚刚走出校园,不知道职场完全不同于在学校学的内容。实际上,聪明的开发者会保持安静。
傲慢的不仅仅是新手开发者,还包括在软件行业有着数年工作经验的开发者。可能因为他们有些职业成就,也可能是他们没遇到比自己聪明、有天赋的人。
不管是哪种情况,具有傲慢行为的开发者缺少相应的经验。自负妨碍了他们学习正确的职业中的方法。最终,没人愿意与傲慢的人共事,一旦发展受限,傲慢的开发者会把失败归咎于他人。
你可以:
- 保持谦卑。在软件开发领域,礼貌对于建立成功的职业生涯大有帮助。
- 不管别人有什么指示,都要尊敬别人。不要因为意见不合而争论。
5.不吸取教训
我一直认为反馈机制对于软件开发者来说是最有效的方式之一。通过反馈能得知自己的缺点以及得知如何改进,聪明的开发者知道如何通过反馈提高自己的效率。
通过观察开发者对富有建设性的反馈所作出的反应,很容易识别出谁是缺少经验的开发者。对于别人提出关于他们软件性能的改进意见,他们从不接受。他们甚至把代码评审注释当成是针对个人的意见。
多年前,有个队员给我写了一封长邮件,上面告诉我如何评审代码。我对他的性能要求给出评审建议,他对此大为愤怒。他的主要目的是让我别担心编码标准,因为他自己知道怎么编码。他只想让我评审代码符不符合功能要求。
如果开发者因评审意见而感到受到了侮辱,这表明他们没从经验中学到东西。他们年复一年地工作,却缺少端正的态度,还想知道为什么没人重视他们所做的贡献。
你可以:
- 积极地对待每个反馈。学会取舍,在舍弃某个反馈前做出公正的评价。
- 以开放的心态从错误中汲取教训,人皆有错,利用知识改善性能要求。
6.在工作时间做私事
总有一些队员,他们在工作时间做私事:浏览社交媒体、扫描购物网址或打游戏。我们有一个团队成员过去经常在办公时间在股票市场交易。其他团队成员对这种行为表示担忧,因为为了按时完成任务,他们必须加倍努力。
当经理警告了这个开发者后,他改正了,但几天过后又故态复萌。最终,由于这种行为,公司不得不解雇他。这种行为既不道德,也体现了开发者缺少经验。我们通过职业谋生,尽忠职守则是最好不过的。
你可以:
- 办公时间把私事限制到最小程度。如果不得不处理一些私事,可以向经理请几个小时的假。
- 利用休息时间使用社交媒体。在办公桌上吃午饭,要是想的话,午饭时间做股票贸易。
7.追赶时髦的技术
缺少经验的开发者的明显特征是追赶时髦的技术。他们总是谈论即将发生的大事。一旦市场上出现了新的潮流,开发商就会放弃之前的潮流,追赶最新的潮流。
没有经验的开发人员也掌握了制作教程的艺术。毫无疑问,教程是非常有用的学习工具。但是仅仅遵循教程而没有任何实际应用是浪费时间的。这会使人产生一种虚假成就感,但真正考验知识的是如何将其用于现实世界。
几乎没有开发者使用时髦的技术或从教程获得的知识来实施新的东西。他们这么做仅仅是为了满足自我,许多缺少经验的开发者因害怕错过时髦技术而落入陷阱。
你可以:
- 把时间和精力花在学习可以在工作场所或个人项目中实际使用的技术上。
- 利用从教程中学到的知识并进行实际操作。亲身实践比看教程的收获更多。
缺乏经验的程序员效率低下,降低了整个团队的生产力。他们对待工作的方法不正确,使他们错过了在高回报的软件职业中成长的机会。
聪明的做法是在职业中尽早发现对自己不利的态度,并避免这些态度。当你养成了上述的习惯,在职业生涯中会很难摆脱。愿你避免陷阱,实现想要的职业发展。