it-swarm.cn

什么时候可以将某人视为坏程序员?

您如何看待程序员对自己所做的事情不好?

如果可能...他/她应该如何改善?

57
Tamara Wijsman

当他们无法从自己的错误和同行评议中吸取教训时。

在某个时候,我们都是绿色的。但是,如果您没有进步或试图变得更好,那么您就是一个糟糕的程序员。

134
ist_lion

一个不知道自己不知道并且根本不感兴趣的程序员。

125
Graviton

一个很大的警告信号是他们是否是“货运狂热”程序员-意味着他们在做事情但不知道why他们在做那些事情(这只是“魔术”)。埃里克·利珀特(Eric Lippert)的精彩文章 这里 .

从文章:

理解代码功能但不了解代码功能的程序员。
75
Marcel Lamothe

对我来说,一个很大的提示是,当他们问您或其他程序员的开发问题时,这些问题清楚地表明,他们自己花了绝对零的精力来解决这个问题。

一个必然的结果是,当他们多次问相同的编程问题时,表明他们没有对信息进行内部化。

45
JohnFx

当他们花很长时间解决FizzBu​​zz问题时。

21
EpsilonVector

拒绝学习新技术/新语言的程序员,坚持坚持自己已经知道的知识。


附录:(添加注释下面的破折号)

对此的扩展是那些知道某些技术功能的子集但不表示希望了解任何更多信息的人。编程语言,编辑器,其他工具...

21
missingfaktor

当团队成员是 负生产者 时。

|# Lines Written| - |# Lines of bugs introduced| - |# Lines of rework required| < 0

意味着由于开发人员不佳,您团队的其他成员必须做更多的工作。 [〜#〜] nnpp [〜#〜]

18
danivovich

当他们定期产生 The Daily WTF 上的东西时。

18
Billy ONeal

当他们知道有更好的做事方法时,即使时间允许,他们仍然拒绝这样做。

15
JeffO

我个人认为,任何可以查看自己前一段时间编写的代码但没有发现错误的程序员都不是好人。 “一会儿”可以随着经验而扩展……我想说的是从几周到一年左右。

15
Daenyth

那些忽略代码警告的人,只关心错误。

15
Reigel

当我在一家小商店里担任团队负责人时,我不得不重新任命几个人(我或我的直接主管都没有大量的解雇能力。 繁文缛节 以及一堆文件。)或在当前合同结束时没有续签合同。列举的某些类型也适用于其他团队负责人,他们几乎持相同观点。在我的书中,将人们带入“不良程序员”类别的事情:

  1. 过去无法训练或僵化
    当“程序员”似乎无法吸收新系统,新工具或任何正在部署的东西时,无论如何进行培训/教育。必须经常重复上述训练。
    当“程序员”只知道他们10或15年前使用的技术或编码范例时。那已经足够好了,那么为什么要改变它们呢?
  2. 牛仔编码器
    最先编码的人,没有计划。 “程序员”对生产代码和/或数据进行未经测试的更改,“因为我们必须立即对其进行修复”,然后当“修复”失败时会感到惊讶。
    牛仔绝对不是团队合作者。不需要臭气熏天的团队。
  3. 风向标
    这个“程序员”着迷于“技术du jour”,并且看到了每个新的框架,语言,方法论或新事物, 作为
  4. “大脑子”
    这位“程序员”非常确定自己的才华和能力,以致于完成的工作对项目没有多大意义。 例如重写标准库“因为它对我们的系统效率不高”,或者引入了不适合当前问题的工具和技术。 例如在大型机环境中引入LISP或Forth。
  5. LOC 一个。 沙堡
    此“程序员”使用混淆和错误定向来增加 一个。 LOC:获得付款的代码行。在这种情况下,我看到的代码是一页又一页,一个又一个屏幕又一个结构和逻辑重复的屏幕,只有段落或控件变量名被更改以增加行数。
  6. 必不可少的专家
    “程序员”,他具有领域知识来解决手头的问题,但是他们“知道”有关它的一切。事实上,如果要乘公共汽车撞他们,那么整个组织就会崩溃。 {观察:通常认为自己不可或缺的人。 (有人知道这种格言的出处吗?)}
  7. 面食厨师
    这个“程序员”专门研究意大利面条代码,加上没有语法实现的IDE很难遵循的标识符。 例如IndexI1O0,Index1I0O等.
  8. 暑期实习生-特别是步行灾难的亚型
    我的老店过去雇用了许多高中或大学时代的实习生。有一次,一个部门需要一个小的数据库来跟踪某些设备的使用情况(现在已经过去了,它正在使用dBase III)。这个家伙整个夏天都在编码,但是秋天上大学时并没有完成。他延长了一个星期,然后延长了第二个星期。在第二个星期结束时,我被派去接管了他的项目,并将其带回系统开发部完成。他向我展示了他所做的事情,然后是未完成的部分。奏效的东西不错,但是应用 原为 不完整。当我打开新盒格式化的软盘以获取副本时,他说:“请稍等一会,让我删除测试文件...”,在我无话可说之前,他已删除了一堆文件。
    由于可疑,当我回到店里时,发现他的申请简直就是眼花candy乱,我回到部门并撤回诺顿,并删除了他删除的文件,试图查找一些其他逻辑,即使不完整。
    我发现不是逻辑不好,而是行为不好。连接到他正在使用的PC上的打印机是菊花轮打印机。通常安装的字符集是瑞士的变体。删除程序的输出将显示名称,地址,DOB,一些字母代码和某种类型的ID号。格式和布局困扰我。多个人的所有出生日期都只有法定饮酒年龄。当我在纵横交错的目录中查找它们时,大多数地址都不在那里。当我向主管展示打印输出时,他看着我,说:“驾驶执照,你不觉得吗?”我说我是这样做的。他说,这就是为什么他在Xerox旁边的垃圾桶中发现所有透明胶片都被切掉的原因。我们的坏男孩做了覆盖物,以调整他和他的朋友的驾驶执照年龄。我们已向当局报告。他过去两个星期的工资not

这些只是我不得不使用的一些坏角色。

/ s/BezantSoft

14
BezantSoft

除了明显的知识/能力不足之外,如果程序员的代码难以阅读和/或维护,那么它就是一个不好的程序员。

10
Chinmay Kanchi

无法适应即将到来的技术

10
Gopi

当没有其他人可以阅读他的代码时。你有多亮都没关系。没有程序员是孤岛。

10
stevenvh

对我来说,程序员分为两类-独奏和团队。

糟糕的独奏程序员是

  • 那些花费太长时间无法完成简单任务的人。
  • 那些无法自己研究自己所做的事情的人。
  • 那些会在几天之内忘记今天的代码并且不能很好地维护自己的代码库的人。
  • 那些不能适应需求变化的人。

糟糕的团队程序员是属于糟糕的单独程序员类别的人员,包括

  • 那些无法与其他团队成员协调的人。
  • 那些不欢迎批评的人。
  • 那些不知道如何对他人有用,以及如何从其他团队成员中受益的人。
  • 那些不会写可读代码的人。
  • 那些为了便于阅读而不发表评论的人。
7
tia

一个不关注细节的人,总是在“它起作用,所以我就不理会了。日志中的所有异常都无关紧要”模式。

7
talonx

在我的经历中,一个重要的警告信号是他们没有评论自己的黑客行为时..。

您知道我的意思:当您因为没有更好的方法而被迫做一些非常棘手的事情时。

优秀的程序员会讨厌这样做,并在行内发表评论,说他们讨厌这种黑客,但是别无选择。糟糕的程序员只会加入骇客,而不会发表评论。

4
Bobby Tables

不愿意承认他们不知道答案和/或不愿意查找事物。

如果您不知道,请不要放弃-弄清楚并完成它。

4
Dean Higginbotham

可笑的是显示了right的实现方式,并且反复地只是简单的方法。

3
DaveDev

当程序员编写大量代码时,显然很安静。非常大的功能,可能是复制/粘贴行或代码块,如果需要,则使用更多的方式,等等。这可能是因为程序员不知道一个标准函数来执行他想要的事情,但是在很多时候却不是。

3
user2528

我将答案从一个封闭的重复主题移到这里,该主题是 您能识别出您是否是一个糟糕的程序员吗? 在撰写响应时,另一个主题正在关闭。我的回答更直接地解决了另一个问询者提出的问题,如果您理解的话,它将读起来更好。

叹!我的一部分不想添加到这个已经很忙的话题,但是我的另一部分赢了!为什么赢了?为什么我还要在这个特定的多日志中添加更多的单词呢?好吧,因为在某种程度上,我对此的看法可能与以前的许多评论员略有不同。

二进制在计算机上的效果很好:它是“ 1”或“ 0”,“开”或“关”。我们可以使用那两个著名的状态来抽象和编码很多信息。但是,对于人类而言,它往往不太适用:“好”或“坏”,“理智”或“疯狂”,“好”或“邪恶”,“聪明”或“愚蠢”,“肥胖”还是“瘦”,“活着”或“死了?”这些两极分化的评价总是使我这个充满爱心的人感到非常不满意。无论采用哪种测量方案,我通常都会发现,这种鲜明对比的答案实际上位于一个极点与另一个极点之间的连续区域中,而不是在任何一端。

现在,我已经朝着这种两极分化的趋势进行了斗争,而我个人的解决方案是,我发现将三个词应用于任何这样的评估要有用得多:“到什么程度! “

因此,我对您的问题的回答是建议您重新表述并问自己:“我在多大程度上是一个糟糕的程序员?”或者,甚至更好的是,从另一个方向问:“我在多大程度上是一个好的程序员?”如果您追求真理,那么您可能会成为“坏”程序员和“好”程序员之间的连续体。然后,一旦您设法找到沿着这条路径的大致位置,就可以确定一个稍微接近“好”端的点,即您希望在不久的将来找到自己的点。

如果您没有将该点设置得太远,则可能会使齿轮的后端开始朝该方向移动。如果您设法多次迭代这个相当简单的启发式算法,您可能很快就会发现自己太忙于编程而无需再次提出这个问题!哦,如果您尽可能快地,经常地开始敲打键盘上的代码,则可能会取得更快的进步。并且,如果您不时休息一下,请阅读同行编写的一些高质量代码!在当今动态的开源开发中,您可以免费学习精美的免费代码!

因此,我强烈建议您尝试用我的三个小词,“达到什么程度”,看看他们可以带您走多远!

3
John Tobler

那些不了解诸如SOLID,DRY,OOP等)之类的原理的人。重要的是要对编程原理和基础有充分的了解,而不是了解特定的技术。能够轻松学习新主题,并将产生更好的代码。

2
Giorgi

让优秀程序员与新手程序员区别开来的一件事是,他们顽固地坚持以他们使用的任何语言和API来实现自己喜欢的系统。

我曾经继承过一个系统,以前的开发人员在Java中重新实现了在自定义dbf访问库之上分层的大量Ashton Tate DBase III + API。没有使用Java集合框架。

这样一来,他就可以编写外观和行为类似于DBase III +(或可能是Clipper)应用程序的Java/Swing应用程序。

他在此系统中编写的应用具有lite-bar菜单,当您将lite-bar导航到该选项时,它将打开一个完整的窗口窗体,底部带有一行按钮。就像回到1980年代的时间机器。

这个人显然是一个熟练的开发商。他非常了解自己能够在该项目的时间框架内编写整个系统。他还能够在其他一些内部系统上重用它。

但是他是一个糟糕的程序员,因为他的代码滥用了他工作的系统的功能。他比学习Java/Swing/SQL更愿意花3个月的时间来定制一个可疑收益库。

2
sal

有人说“这不可能完成”。

我认为这全都与解决问题有关,该工具的实用性应远低于实际完成工作。如果我必须使用MS-Access或汇编语言来解决它,那是时间和金钱的问题,而不是“这无法完成”的问题

警告标志过于注重学术性和“正确”的做事方式,而对完成工作的关注不足。

2
Dan Williams

如果他只知道一种语言的语法却不知道算法的基本概念。

2
Chankey Pathak

当他们做很多事时却很少产生。

2
Gratzy

一个不了解中断的嵌入式程序员或执行多任务处理。另外,需要使用位域但不掌握其逻辑运算和移位的程序员。

2
tcrosley

有人立即说:“我不明白为什么它不起作用。我做对了所有事情。”

2
Robert Rossney

!(聪明地把事情做好)

2
Nick Pierpoint

如今,许多程序员认为,通过在程序中仅使用少量易于理解的技术,可以最好地管理这种复杂性。他们对程序应该具有的表单制定了严格的规则,其中更热心的人会谴责破坏这些规则的人是不良的程序员。

1
Pir Abdul

只是从其他地方复制和粘贴代码而又不了解代码实际工作方式的程序员,被称为坏程序员!我通常用javascript看到它。

1
Pir Abdul

我认为程序员可能不擅长编程的唯一方法是停止听别人说的话。

编程与信息有关。需要保持耳朵和眼睛睁大。

程序员只能通过努力学习和努力来提高自己。但是,您还应该专注于学习新事物,而不是一遍又一遍地学习(寻找特定领域/行业内的新体验)。

祝好运。

0
Pablo