来源 : 公众号CSDN
人们常说:“软件工程师的经验与他在该行业内打拼的年限成正比”,这句话在一定程度上是正确的。但是,从业时间久并不代表一定能获得正确的经验。
作者曾见过一些人即使在工作了很多年之后,仍然表现得像个业余的门外汉。他们不注重软件开发基础知识的学习,专业技能在最初几年略有成长后便持续停滞不前,但他们却不知道自己错在了哪里。
与此同时,作者也曾与一些只有几年经验的开发人员共事,他们都显现出了惊人的发展潜力。他们具备正确的工作态度,也知道如何避免不专业的行为。
根据开发人员在工作中表现出的某些特征,我们可以很容易地分辨出他有没有丰富的从业经验。下面,我们将一起来深入研究一下缺乏经验的菜鸟程序员的7个标志。各位软件工程师,打起精神来!千万别让类似的错误阻碍自己的职业发展!
创建大型拉取请求(pull requests)
你是否曾遇到过这样的情况:收到了一个代码审核请求,但是里面的改动非常多,以至于你完全不想进行审核。是的,这正是没有经验的开发人员会做的事情。他们会把大量的更改捆绑在一起放在一个拉取请求中。最重要的是,他们还会希望你能优先审核他的代码。
我发现,在很多资深开发者身上也有这种创建大型拉取请求的习惯。他们会在没有任何反馈交流的情况下一连编码好几天。当你最终审核他们的代码时,他们可能已经围绕代码构建好了完整的功能。因此,无论你给出任何审核意见,都需要进行“牵一发而动全身”的重大修改。
每当我收到这样的拉取请求时,我的第一反应是将其退回给开发人员,并要求他们将其分解为更小的、有逻辑划分的PR。我通常只会在发现的第一个问题中标加注释,然后把它发回给开发人员。如果我有时间的话,就会打通电话,并当面审核代码。
正确的做法是:
- 创建较小的拉取请求。养成良好的工作习惯,永远不要把工作搁置在一旁,一整天都不检查一下。
- 永远不要提交不能编译或破坏整体构建的代码。
写面条式代码
没有经验的开发人员写的代码往往和“漂亮”二字不沾边。他们的代码会乱成一团,散落在代码库的各个地方。
如果你曾读过面条式代码的话就会知道,它会让人迷失其中。你会忘记自己从哪里开始、要寻找什么、以及代码究竟要完成什么任务。
有经验的开发人员应该知道如何规划自己的编码。除非是要编写十分简单、直白的功能,否则都会先把自己的理解和任务流程写在纸上。在脑海中把它从头到尾演练一遍。在理清了其中的变化之后,再开始着手实现。
如果你不遵循上述流程来做的话,就等着痛苦地阅读自己的代码吧。你自己,乃至整个团队都将很难对你编写的代码进行故障排查或提升。
正确的做法是:
- 在开始实现之前,要对所需功能有一个清晰的认识。你可以多提一些问题,加深对功能需求的了解。
- 保持代码简单且合理的结构。确保其他团队成员能阅读代码,并理解其预期用途。
试图同时完成很多任务
缺乏经验的菜鸟程序员往往不知道从哪里开始一项任务、如何进行、以及完成到何种程度。他们会试图同时解决很多问题。他们不知道如何将一个大任务分割成多个有序的小任务,从而简化实现步骤。
他们在收到任务之后,会直接跳到编码,并不会与你核实自己是否已经完全理解了任务要求。在编码过程中也不会和你一起回顾他们的进展,确保自己还在正确的轨道上。他们只有在自己认为任务完全结束之后,才会回复你。但到那个时候,一切都晚了,我们就只能祈祷结果能精准满足任务要求了。
经验不足的另一个标志是,这类开发人员总妄想能同时处理多件事务。他们会接下完全不相关的多个任务,自告奋勇地充当生产问题的故障检修员,并且大包大揽地承诺会帮助团队中的其他人。
但最后,这些开发人员往往都无法完整地交付自己揽下的任何一个任务。绝大多数时候,他们都是出于好意,但对于整个团队而言,这种行为会导致灾难性的结果。最终,团队由于已经损失了大量宝贵时间,而不得不彻夜加班,以战时状态匆忙完成所有任务。
正确的做法是:
- 专注于眼前的小任务。把任务有逻辑地分成多个小块,一个个理顺清楚,然后再进行交付。
- 每次只接受一项任务,并做到善始善终。只有在按要求完成了前一项任务后,才投入到新任务中去。
自以为是
傲慢是不成熟程序员的致命弱点。他们总是自以为是,不知道自己做错了什么。他们会把你针对其代码或演示的反馈当作对他个人能力的评价。
应届生在工作中展现出的傲慢往往是因为他们的无知。他们刚从大学毕业,还不明白职场工作和校园生活是完全不同的两回事。聪明人一般都会保持安静,善于并乐于学习企业文化。
当然,不仅仅是应届生——一些在软件行业已经干了很多年的人依然学不会谦逊。这可能是因为他们曾取得过一些专业成就,也可能是因为他们从未与比自己更聪明、更有才华的人共事过。
但无论是哪种情况,傲慢这种行为都清楚地表明,这些开发人员缺乏正确的经验态度。他们被自负蒙蔽了双眼,看不清正确的职业道路。最终,没有人会喜欢和一个目中无人的团队成员一起工作。一旦任务进展缓慢,这些人就会把自己的失败归咎于他人。
正确的做法是:
- 工作态度要谦虚。谦逊有礼可以极大地为你在软件开发领域建功立业提供助力。
- 尊重每一个人,无论其身份地位如何。不要因为意见不合而争论。
不能从错误中吸取教训
我一直认为反馈机制是软件开发人员最有效的工具之一。反馈可以帮助我们了解自己的不足,并帮助我们改进。资深开发人员都知道如何利用反馈来提高自己的工作效率。
根据一个人对建设性反馈的反应,我们很容易就可以分辨出他是否经验丰富。缺乏经验的菜鸟往往不会接受任何关于其表现的改进意见。他们甚至会把针对代码的审核批注当成针对自己的人身攻击。
许多年前,有一个当时的团队成员给我写了一封很长的电子邮件,教我应该如何审核代码。他对我给出的PR审核意见感到十分不满。他告诉我不要操心编码标准和质量,因为他知道如何编码,我只要审查代码是否满足功能需求就好了。
如果开发人员因为别人给出的审核意见而觉得受到了侮辱,那么他一定不会从经验中吸取任何教训。他们会带着无能的态度继续年复一年地工作,并且奇怪为什么没有人重视他们的贡献。
正确的做法是:
- 对每一次反馈都保持积极的态度。你可以选择接受或者放弃,但在你决定放弃它之前,请给出一个公正的评价。
- 保持开放的心态,从错误中学习。没有人是永远正确的,要懂得利用学习来提高自己的表现。
用工作时间处理私事
总有一些团队成员会利用办公时间来处理自己的私事。他们会浏览社交媒体、逛购物网站、或者玩游戏。
曾经,我的一个团队成员就常常会在上班时间内交易股票。由于他总要分心关注股票的涨跌情况,这对他工作任务的完成造成了不利影响。其他成员也对他的这种行为表示了不满,毕竟因为他,大家需要付出额外的努力才能在截止日期前完成项目任务。
后来,经理找到了他并对其行为进行了警告。刚开始,他确实有所收敛,但没几天就又犯了老毛病。最终,公司不得不因此而解雇了他。
这种行为非常不道德,而且也是开发者缺乏经验的明显表现。希望大家都能真诚地对待这个助你谋生的职业。
正确的做法是:
- 尽量减少自己在办公时间内处理私事的时间。如果遇到急事,必须请几个小时的假去处理一些私事的话,我想经理也一定会理解并且批准的。
- 可以利用休息时间查看社交媒体,也可以把午餐带到办公桌上,利用午餐时间做股票交易。
疲于追赶最新潮流技术
经验不足的开发人员往往会跟在大热的技术后面跑。他们总是爱谈论下一件大事。一旦市场上出现了新的潮流,他们就会抛弃“旧爱”,去追求“新欢”。
即使是菜鸟,也都懂得如何利用教程。毫无疑问,教程是非常有用的学习工具。但如果只是跟着教程一遍遍地看,而脱离了实际应用的话,则纯属浪费时间。学习新的教程或许会给人以虚假的成就感,但真正考验知识的是如何将其与实际相结合加以利用。
我们很少会看到开发人员利用大肆宣传的技术或从教程中获得的知识来实现任何新东西。他们追赶技术潮流、刷海量教程只是为了满足自己的自尊心。此外,许多缺乏经验的开发人员也会因为害怕错过,而落入这个陷阱。
正确的做法是:
- 把时间和精力花在可以在工作场景或个人项目中实际使用的技术上。
- 利用从教程中学到的知识进行实际操作。相较于一味跟着教程跑,我们往往能从自己实现东西的过程中学到更多有用的经验。
结语
经验不足的程序员往往会由于自身效率低下而拉垮整个团队的生产力。他们对待工作的错误态度也让他们错失了在高回报的软件行业中成长的机会。
在职业生涯初期,就要了解并避免这些自我毁灭式的工作态度。越是养成上述行为习惯,在职业生涯的后期就越难摆脱这些坏习惯。
希望大家都能避免陷阱,早日实现自己想要的职业发展目标。