杰出,优秀,一般的前端开发者之间的区别

原文链接 : The Difference Between Excellent, Good and Bad JavaScript Developers

杰出,优秀,一般的前端开发者之间到底有什么区别?

杰出从来都不是偶然的,高度的热情,真挚的努力和聪明的执行;相当于在很多选择中选择一个最睿智的,—选择决定了你的命运,而不是机会。

​ —亚里士多德

我们都想做做一些卓越的事情,但是很少人投入间和精力使之变为现实,卓越是一件很难的事情,任何职业都是这样。

很难衡量一个前端工程师的优秀程度。

如何成为一个卓越的前端工程师?

还是有一些标准来做到这些的。

代码质量,按时提交代码,越来越快的速度只是一些方面,帮助团队的其他成员也是一方面。

我想没人可以提供一个精确的衡量方法,写出杰出的代码但是要推迟项目两个月,因为你不得不重新写那些对他人无用的东西。我们都知道,这并不意味着什么。

有很多考虑的因素,我相信如果要问10个人卓越的工程师需要什么,会得到10个不同的答案。

我相信你的定义也是一样。

我有时会对这些标准很困惑,所以,我决定试着弄明白它们。

糟糕透了的代码

我想找到所有程序员都会做的一些东西,然后我可以通过程序员的“反应”来给他们分类。

只用一个行为来衡量职位上是否卓越看起来过于单一化了,但我还是想这么做。

好,现在就开始。

我想保证我选的这个方法是最好的,就是需要每个开发者都要做的,但是可以从中区分出好的还有普通的。

所有的程序员都会写垃圾代码

确实是这样,我们都知道有时我们在最后会写一些确实很垃圾的代码,很羞愧的代码。希望别人都不会再看到的代码。

对于写这些糟糕的代码,我们都有自己的原因。我也不想争论什么才是写糟糕代码的正当原因,只是想说确实有这样一个事情。

在我们展现一些代码暴行的时候,我们回顾下这些原因。然后屏住呼吸不去闻这些糟糕代码的味道,然后感受它。

写糟糕代码的一些普遍原因

1.需要准时完成

写糟糕代码的一个普遍原因就是“没有足够的时间”。快速的提交给客户,紧凑的时间规划或者过于关注提交都是造成时间过紧的原因。

2.跌落痛苦之海

已经存在的代码写的过于糟糕让你根本就不想做任何努力使之变得优雅些。这些已经存在的代码会在某一时刻突然崩溃,而对此,你并不能做出什么。

3.写好,能跑即可

作为程序员,我们会发现有时我们在一些陌生的领域编程,想象你需要在一个不同的项目中写几行代码。真的没必要打扰到其他人。

了解这个项目的人请假了,别人的codereview不是很有效,提交代码并祈祷有足够的单元测试保证你的代码安全。

现实点

所以我们都写糟糕的代码,那意味着我们就是糟糕的开发者了吗?

当然不是,任何人都会偶尔这么做,这个行为本身并不能说明什么。

然而几年后,我发现一个关于开发者的惊人现实。

写完糟糕代码后,我们是如何表现的,这是对于开发者水平的最后测试。

很奇怪,但确实是这样。意识到你现在写的代码很糟糕,采取一些行动防止以后再写一些糟糕的代码,总的来说就是说你是如何写这些糟糕代码的,还有你是如何对待它们的。

写糟糕代码和衡量一个开发者的优秀程度有什么关系

有很大关系

让我们拿Ron举个例子。Ron今天写了糟糕代码,他很不高兴,一个令人讨厌的五级Backbone 模型继承链让他无法在不搞砸所有事情的前提下改变一行代码。

Ron通过写很糟糕的代码来忽略了报出的错误,但因为Ron按时交付所以每个人都很高兴,除了Ron自己。

他和他的团队主管说了发生了什么,他们一起开始着手如何解决出现的这个问题,他认为将继承链拆分成扁平的组件模块是最好的解决方案。

Ron然后关于和他的主管谈了关于重构要分配给自己的时间。

Ron直到今天还在写糟糕的代码。他告诉的他的开发朋友他是如何使用不可思议的Hack来忽略恐怖的五级深的Backbone模型继承链。他只是想忽略这整个结构,让他的代码可以按时交付。

Roger自己很高兴,但是并没有更多的改进行动。

四类前端开发者

你可以根据根据开发者对写糟糕代码的态度分成四类,从一般到杰出。

告诉我你没有一次性遇见所有4类的开发者。

Barney — 糟糕的前端开发者

Barney不关心他写的糟糕代码。他唯一关心的事情就是按时完成工作,代码能跑就行,别的什么都不关心。

Barney有时写糟糕代码有时会影响整个项目的进度。但是代码是能跑的,他把项目设置回来的时候会带来很多麻烦,但Barney不觉得他需要学习新的东西。

他已经知道前端要学的就是完成任务。

Bill — 普通的前端开发者

Bill没有意识到他自己写的烂代码。跟着团队的惯例和规则走,他觉得自己做的还可以。但是他没有花时间弄明白整个项目的结构和不同组件之间的交互。

结果就是,很不幸,一团乱麻。

Bill在做重大决策的时候并没有询问任何人,就这么混过来,所有决策的依据就是一年读的三篇技术博客。

我总是说在Bill代码上开发就像踩地雷,一不下心就炸你一脸。

Roger — 优秀的前端开发者

我们前边已经谈过Roger了,也知道他也是写烂代码的。他知道如果自己写好代码的话会是什么样子。他拍了拍自己的背并写下了一些烂代码。

Roger的主要问题就是他没有尝试去改变这些。别人安排的任务自己也做了,也做的很好。但是Roger更多的是就这样了而不是花时间付出努力改变它们。

Ron — 杰出的前端开发者

Ron是一个杰出的程序员。但是他也会写烂代码。

但能和别人区分开来的是他写糟糕代码的时候,他会思考怎么避免这种情况。对自己和别人来说,都不再出现类似的情况。Ron指出需要什么样的重构方式,什么样的方法可以改善这种情况。

Ron然后付之行动,来改变现状。

残酷的现实

我必须承认。

我就是Roger。

但也是Ron。

我也确定自己也是Bill并且不止一次的这么想。

诚实的说,我不认为自己是糟糕Barney,但谁知道呢。

我们都在追求极致的路上走走停停。有时一般,有时挺好,但我们都不想变得更糟的。

正是这些不同的时间所占的比例定义了我们是怎样的开发者。

说实话,从一般到优秀的过度需要你获得更多的知识和实操,除此之外,从优秀到杰出的跳跃需要你改变一件事。

态度。

记着,在你很厉害之前,你必须要经历厉害,在你厉害之前,你必须要经历糟糕,在你糟糕之前,你必须要尝试。

​ — 阿尔特·威廉斯