知己知彼,方能百战不殆
关于优秀的工程师,高级的开发者的特质,或者一些美好的事物,已经有很多讨论了。让我们转换一下目光,挖掘一下作为一个优秀的工程师不应该做的事情。那些不好的品质,那些会阻碍你进步的习惯,以及那些会阻止你成为一个更好的工程师的心态。
开始奏乐,开始舞。
保速丢质
张三是一个喜欢快速开发和交付需求的开发者。他经常在最后期限的时候才交付需求,每当他卡住时,他都会在谷歌上快速的搜索,并且应用他找到的第一个解决方案。
这里的问题并不在于从 Stack Overflow 或其他任何地方拿起第一个解决方案。问题是在不了解后果的情况下机械地应用它。在没有充分了解背景的情况下应用一些东西,会导致将来出现更多的问题。
很多时候,我看到人们会认为,快速的完成任务会帮助他们远超他人。或许短期内可以给人留下深刻印象,但是以长期来看,他们最终会惨遭失败,因为他们对自己所解决的问题没有深刻的理解。
测试
李四是一个出色的开发者,他非常喜欢编程,但他很不喜欢写测试。据他说,这降低了开发的速度,而反正有 QA 来测试代码,何必这么麻烦。
编写测试有时是很麻烦的,但随着复杂性的增加和需求的不断变化,如果你没有一个安全网,那么维护代码就会变得更加困难。或许是缺乏建立测试环境的兴趣,又或许是缺乏连贯的测试知识。
代码会比你在上面工作的时间要长。你应该确保它做了它应该做的事情,不多也不少。或许下次你估计一个功能时,你会考虑到编写测试。
过载开发
我们都想写出高质量的代码,写出对终端用户有影响的功能,写出可维护的软件。但有时开发人员试图创建远远超出需求的解决方案。试图解决那些可能根本不会发生的问题。比如在没有了解系统边界或是否需要多个服务的情况下就直接进入微服务架构,甚至在得到第一个客户之前就考虑到规模问题,试图使一切都可配置,甚至在看到延迟的迹象之前就考虑性能优化,等等。
每当陷入这样的情况时,总是要遵循 YAGNI 和 KISS 原则。它的基本意思是,你应该保持事情的简单性,逐步建立,如果你认为不需要什么,就跳过它。
孤独的游侠
学校让我们学会合作。很多的的运动都教我们为什么做一个团队成员是很重要的。在一个团队中,你要为他人着想,在决定一个方法之前要咨询他人,你要给队友提供建议。
有的开发者只喜欢戴上带有降噪功能的耳机进行编码。他们不想与你互动,对你所做的事情也不感兴趣。他们在编码和完成任务方面非常高效。但他们同样不善于与人交流和向他人解释自己的工作。
文档
有些人认为,作为一个开发人员,代码文档不是他们完成工作的一部分。嗯,事实并非如此。编写代码的文档与编写代码一样重要。如果你买了一台新的电视,但没有安装电视和正确操作的手册,你会有什么感觉。你会立刻诅咒制造电视的公司。
编写代码和编写关于代码的文档是两件独立的、非常不同的事情。一个开发者可以在一个方面非常出色,而在另一个方面则非常糟糕。一般来说是这样的。当你不知道如何去做的时候,写文档是很无聊的。对于许多不喜欢写代码的开发者来说就是这样,因为他们不知道如何写代码。学习写文档要走很长的路。
一个文件做事
王五写的方法和函数有好几页长。这实在是无可厚非。他从不考虑分解问题,使各个方法更容易被其他类或方法重用。没有缩进。没有一致的编码惯例或风格。全局变量写的到处都是,等等。
这对我个人来说是最讨厌的事情。写代码并不难,但写好代码却很难。而大多数人甚至都不去尝试。你写的代码能说明你的个性。如果你写的是笨拙的代码,可能你在其他方面也是笨拙的。但是,如果你开始采取较小的步骤来写好代码,这将成为一种习惯,而且你会享受这个过程。看着写得很好的代码,感觉非常好。
短期投资人
吃➞睡➞编码➞部署
许多开发者的座右铭。他们只想写代码。他们不想学习,不想尝试一些新的框架/库,对这个领域没有兴趣,他们不关心他们所做的功能是否真的被客户使用。
这就是为什么有那么多的开发者会感到疲惫和厌烦。有时,你要变得自私,从给你的任务中学会学习,这很重要。花一些时间来阅读有关技术或领域的知识。表现出一些兴趣,了解为什么客户不喜欢某些功能。向产品经理提出问题,以了解即将到来的任务和功能。采取额外的步骤,积极主动。
独断专行
我的方式或者路线是他们的座右铭。他们非常固执主见。几乎对所有事情都有意见。这是他们的想法与你的想法。这是他们的解决方案与你的解决方案。我打赌肯定会有争论。不知何故,他们会一直回到你所实施的代码的某个部分。这让他们感到不舒服,即使它工作、测试和看起来都很好。
这个人是生产力的一个大瓶颈,会是第一个在压力下崩溃并开始指责的人。这种人对团队不利,无论他/她是多么有经验/优秀的开发者。
这不是我的风格
他们写代码。他们不写文档。他们不做图形设计。他们不完成文书工作。如果这不是代码,那就是别人的问题。他们不会做,即使有最后期限。
Java开发者就是不做任何非Java的工作。他们会在得知注册表中的某些内容需要改变时感到恐慌。他们会因为要在数据库中输入东西而感到害怕。为了避免走出他们的舒适区,他们会做任何事情。
我从个人经验中了解到,这种现象在新的开发者中很常见。而这正是一个新的开发者应该避免的事情。要准备好跳进去。你只有在做事情的时候才会学到东西。优秀的开发者在探索中表现出缓慢/平稳地走出舒适区的倾向。
最后的总结
从别人的错误中学习是一种成长的很好的方式。我希望这篇文章能帮助你认识到你应该避免的事情,并通过否定而不是增加新的东西,帮助你成为一个更好的开发者。
或许我们并不能改变我们的天赋上限,但我我们可以尝试改变自己的下限,来提高自己的平均分数。