-
27 这个程序员有什么经验? 如果是初级开发人员,他可能只是需要了解现实世界和教科书是不同的。 如果它是一个更高级的开发人员,它可能会是一个不同的方法。 – 科西卡 评论 2015年6月2日19:48 -
112 我注意到您说过,最差的代码运行速度要快五倍,这是一件好事。 谁在乎它是否跑得快五倍? 据我所知,运行时间为0.01秒的脚本和运行时间为1.0秒的脚本在相同的时间内运行,但其中一个比另一个快一百倍。 您应该使用的指标是 脚本是否满足记录的性能要求? ,不是 哪个更快 .可能是这样 也不 足够快了。 – 利珀特 评论 2015年6月2日20:11 -
4 请在链接的聊天室进行讨论。 这些评论稍后将被删除。 – 莫妮卡·塞利奥 评论 2015年6月2日21:41 -
9 由于系统出现故障,我无法发布答案,我将在此处添加。 另一个开发人员谈论代码质量。 根据我的经验,漂亮的代码总是能产生高质量的系统。 然而,在这种情况下,代码并不是在每个级别都很优雅。 ORM无法为所需问题生成优雅的SQL代码,从而导致性能问题。 我建议您向开发人员解释一下,如果他想纯粹地使用他的解决方案,那么他就会明白ORM有其局限性,并且不是最优雅的解决方案。 如果他担心可维护性,那么添加单元测试 – 高拉夫·阿加瓦尔 评论 2015年6月4日9:48 -
15 你愿意为每一个百分比的加速花费多少美元? 当然,速度越快越好,但价格越便宜,功能越多越好。 这些东西都是要花钱的,如果你没有在它们之间做出明智的权衡,那么可能有人超支了。 – 利珀特 评论 2015年6月5日4:21
19个答案
-
48 我喜欢把它交给他挑战的想法。 没有一个好的程序员能够抵抗挑战。 “找到一种方法,让这段跑步时间不超过60秒,你可以让它看起来像你想要的那样漂亮,只要它能在60秒内跑完,就可以遵循你想要的任何最佳实践。” – 布拉德利·乌夫纳 评论 2015年6月2日17:29 -
4 @我认为发展挑战和智力挑战是有区别的。 避免发展挑战是一个智力挑战。 如果你做得好,乐趣来自智力挑战。 听起来这家伙对自己没有智力挑战感到自满,这实际上使他成为了一个糟糕的程序员,尽管他声称自己掌握了风格和最佳实践。 – thanby公司 评论 2015年6月4日11:48 -
4 -
2 @然后我们只能同意不同意。 根据我们所读到的内容,他似乎是一个糟糕的程序员,但我不会说他寻找智力挑战的野心就是其中之一。 我不认为擅长编程需要你在任何层面上享受它。 – 科尔西卡 评论 2015年6月4日16:24 -
4 米开朗基罗创作的作品至今仍为人们所铭记,那些希望他更快完成,或使用更便宜的颜料,更少人力等的人叫什么名字? 当然,更有可能的是,这个人只是一个糟糕的装饰师。 – 乔德雷尔 评论 2015年6月8日7:20
-
2 是的,在我能找到一本书或一篇权威博客文章来描述我想实现的解决方案的罕见情况下,他愿意这样做——我认为他的反对意见是,他不想使用任何代码模式或框架,除非他在别处见过描述。 – 贝努比德 评论 2015年6月2日12:33 -
5 特定的4小时查询本可以以不同的方式进行优化,这样他会很乐意使用它,但这将增加超过一周的工作(可能两周)的开发时间。 考虑到除了那个查询之外的整个任务花费了不到一周的时间,我认为时间开销是不合理的。 – 贝努比德 评论 2015年6月2日12:33 -
2 @在这两种情况下,我都会说“是吗?”如果你知道如何让他明白原因,你应该这样做。但也许不那么具体。 找到一种全面的方法,让他更快地关注好的代码。 敏捷有一系列方法来帮助实现这一点。 而且,适当的编程有时会提前花费更多的时间,这总是可以通过以后的生产力改进来证明。 – 戴夫·约翰逊 评论 2015年6月2日12:52 -
6
-
4 希望我能投20次赞成票。 我看到太多人把他们在学校学习的任何方法都视为“唯一正确的方法”——尽管也许我不应该抱怨,因为当我从他们的代码中获得几个数量级的性能改进时,这让我看起来很好:) – 詹姆斯基夫 评论 2015年6月2日19:01 -
+虽然我确实遇到了不少人,他们既有能力,又完全是生意人。 到目前为止,他们在实践中的能力取决于经理/团队领导——学会利用自己的优势,限制自己的弱点。 这是成为一名领导者的重要组成部分。 当然,他也可能只是一个笨蛋——但这真的不是OP可以自己决定的事情。 但最终,您的目标是为公司和客户创造最佳价值——这通常意味着在良好的可维护性和性能/实现速度之间进行某种程度的折衷。 – 六安 评论 2015年6月3日14:31 -
10 +1个用于 “他可能执着于模式和格式,如此顽强地伪装,以至于他实际上不知道什么时候使用哪些模式和实践的细微差别。” 没有所谓的“最佳实践”。最佳技术和编码模式各不相同 戏剧性地 在不同的问题之间。 为工作使用最佳工具; 不要为了适应工具而改变工作。 这是OP需要让程序员理解的关键。 有时10000倍的加速并不重要,有时1%的加速非常重要。 优秀的工程师知道区别 – 雷拉布 评论 2015年6月3日19:38 -
1 @卢安——我不确定我们这里所说的是“商业盲目性”。 根据我的经验,编程技能和灵活性以及管理/业务组织之间的相关性知之甚少。 他们的技能完全不同。 事实上,让程序员担任经理是一个相对较新的发展。 在90年代初,大多数自己管理程序员的人都没有编码经验,因为还没有足够的人参与其中。 我不认为这个人对商业视而不见,他对编程视而不见,或者至少有狭隘的眼光。 评论 2015年6月5日22:02 -
三 @韦恩沃纳(WayneWerner)——我在大学里对我的一位教授说,这似乎是“无论你做什么,都是一种权衡。”在我年轻时的理想主义中,我不认为应该是这样,但我的教授说,“是的,热力学第二定律是一个比奇定律。”他说得对。 它最终归结为第二定律的实际物理。 如果你把精力放在一个特性或其他特性上,你就必须从另一个特性上窃取它。 没有免费的午餐 评论 2015年6月5日22:05
如何向程序员解释业务优先级?
我和一个程序员在代码质量方面经常发生分歧。
不要让他主导对话,谈论“代码质量”。 不要告诉他他做错了,也不要浪费时间。 不要相信他行为不专业,即使你很清楚他是这样。 接受他“那不是我的工作”的解释并进行沟通 要求 给他。 现在,所有未来的任务请求都需要以书面形式提出(电子邮件可以),并进行后续讨论。 所有任务请求都有严格、客观的时间限制,限制了他在任务上的花费,以及任务的性能。
描述:
我们需要在6月3日星期五之前实现、测试和部署功能X。
要求:
必须包括一个捕获越界的测试用例和正确的操作。 在生产数据库SOME_database上执行的时间不得超过180秒 必须通过公司编码标准的LINT/etc测试。
-
7 -
1 当情况需要时,不编写SQL是最糟糕的做法。他太无知了,不知道这一点。 在编写SQL代码时,任何人都不应该在没有全面背景知识的情况下接触ORM,因为如果你不了解数据库需要什么,那么你就是无知的,你会对系统造成伤害。 数据从来都不是你不需要理解的黑盒子。 数据的含义及其结构对获得正确答案至关重要。 ORM在一个知道自己在做什么的人手中是一个好习惯,在一个新手手中是一场等待发生的灾难,。 – HLGEM公司 评论 2015年8月24日17:14 -
为什么任何程序员都想使用运行4小时的ORM? 测试需要4个小时。 仅此一项就得到了我的投票。 如果程序员说风格可以节省维护代码的时间来维护自己的立场,那么关于效率如何能够减少维护成本的争论比任何“效率优于风格”的争论都要好得多。 总是以对方已经承认的方式提出论点是很重要的。 – 法尔奎德领主 评论 2017年7月31日21:00
他坚持认为,他的所有代码都是按照最高标准编写的(即,它看起来就像编码风格教科书中的示例),而不管这对功能有何影响。 I、 另一方面,更重要的是,编写的代码要满足业务的需求,即它工作效率高,开发时间不长,并且可以合理地维护。
-
三 -
1 @Zibbobz-你怎么想的? 很明显,程序员在说“代码整洁对我很重要”。 他们可能无法表达 为什么? 好吧,但接下来要由经理来深入研究&他们应该是这个角色的熟练沟通者。 我并不是说让他们发号施令,但强迫他们按照你的方式做事(微观管理)同样糟糕。 – 特拉斯坦 评论 2015年6月2日13:40 -
2 @Telastyn——你认为“代码整洁对我来说很重要”,但在我看来,这是我做的代码的结构,我拒绝使用不同的设计模式,因为我喜欢我正在使用的模式。 尽管程序员使用的模式对于分配给他的任务来说效率低下。 评论 2015年6月2日18:13 -
1 -
1 @Telastyn:我假设这里的“最佳实践”是指OP所说的编码风格的教科书、设计模式、各种流行的方法(敏捷在脑海中浮现)等等。 所有人都声称自己的信徒是“最好的”,而没有AFAIK的客观证据。 – 詹姆斯基夫 评论 2015年6月3日19:23
现在,他拒绝参与该项目的这一部分。
但他只是说“不,不是这样”,然后继续写他时髦、低效的代码,有时我不得不重写得很糟糕才能使用。
-
不幸的是,这不是一个修饰——今天早上我正试图向他解释这件事,他戴上耳机,在我说话的时候转过身去。 他说(引用)“我是一名程序员。我的报酬是为了编程,而不是为了考虑业务”。 问题是,他的大部分代码都很好,我们真的支付不起招聘人员寻找新员工的费用,也支付不起培训他们所需的数周时间。 – 贝努比德 评论 2015年6月2日14:16 -
4 那么,你要做出一个艰难的决定:那种态度是完全错误的。 纪律处分很可能不会让他进一步憎恨你,这也不好。 你必须决定是只想和他打交道,还是经历寻找新人并训练他们的痛苦。 很明显,从长远来看什么是最好的。。。 贵公司是否使用激励措施? 也许你可以将某种奖励/惩罚直接与企业目标挂钩。 – Drew约旦 评论 2015年6月2日15:04 -
三 -
你可能不喜欢这样,但简短的回答是“不”(但要注意,这个答案是针对实践者的,而不是理论家。)
成熟的软件设计师根据业务标准(时间、金钱和风险)以及技术标准(例如某个东西是否是“良好的OO”或“良好的类设计”)来评估情况 这要困难得多,因为它涉及到业务问题(日程安排、人员技能、找出公司想要去哪里,以便我们知道在软件中设计灵活性的位置、是否愿意考虑未来变化的可能性——可能发生的变化,而不仅仅是理论上可能发生的改变,等等) 除了技术问题。 然而,它导致的决策更有可能带来良好的业务结果。
作为一名开发商,你对雇主负有受托责任,只以合理预期投资回报的方式进行投资。 如果除了技术问题之外,你不去问业务问题,那么你的决策将产生随机且不可预测的业务后果。
不管你喜不喜欢,实际上这意味着你最好还是不定义“好的类设计”和“好的OO”之类的术语。 事实上,我认为对这些术语的精确、纯粹的技术定义可能是危险的,可能会让公司蒙受损失,最终甚至可能会让人们失去工作。 这听起来很奇怪,但有一个很好的理由:如果这些术语是用精确的纯技术术语定义的,那么善意的开发人员在实现这些纯技术定义的“好”时往往会忽略业务考虑
“好”的任何纯粹技术定义,例如“好OO”或“好设计”,或任何其他可以评估的内容,而不考虑时间表、业务目标(以便我们知道投资方向)、预期的未来变化、关于未来投资意愿的企业文化, 进行维护等工作的团队的技能水平是危险的。 这是危险的,因为它欺骗程序员,使他们认为自己正在做出“正确”的决策,而实际上他们可能正在做出具有可怕后果的决策。 或者,这些决策可能不会产生可怕的业务后果,但关键是:当您在决策时忽略业务考虑因素时,业务后果将是随机的,并且有点不可预测。 那太糟糕了。
一个简单的事实是,业务问题支配着技术问题,任何对“好”的定义如果不承认这一事实,都是不好的。
作为一名程序员,创建合理高效的代码是你工作的一部分,就像打字员的工作是打字速度相当快一样。
-
2 -
三
-
-
-
@Benubird——我建议你不要再挑战“最佳实践”,相反,我建议他需要找到一种方法,以商业上合理的方式应用这些最佳实践。 评论 2015年6月2日13:52 -
1 @Zibbobz-我同意。 但是,当你挑战某人坚定的信仰时,他们会立即感到需要捍卫自己的信仰,因此,任何对该信仰的挑战都是需要捍卫的,而任何其他观点都会被忽视。 因此,与其直接挑战这些信念,不如让程序员自己决定还有其他的方法来做事情。 如果效率低得多,那么程序员很可能会滥用最佳实践。 评论 2015年6月2日13:59 -
1 @Zibbobz-如果问题是“我应该除掉这个程序员吗”,那么这将是一个有效的答案。 OP问他如何与程序员沟通。 就像OP希望程序员有效率一样,OP也在问他如何才能成为更有效率的管理者。 因此,与其建议他以不同的方式撞墙,不如建议他绕开墙。 (你的比喻不是我的) 评论 2015年6月2日14:24
它必须在可接受的时间内工作 可接受可能意味着至少95%或永远不低于100%——这是你的定义
它不能在其他代码/系统中产生副作用(参见第一点) 它必须是可维护的 格式良好的代码比格式不良的代码更容易维护
它必须在截止日期前交付(无论何时交付,并记住截止日期可以根据业务需求重新设置) 必须负担得起 可能还有很多其他方面
-
4 -
2
-
5 -
-
1 -
1 -
2 嗨,彼得,虽然你可能会在第一句话中提到这一点,但OP正在寻找 怎样 来处理这种情况。 一句话告诉他做某事而不解释OP应该如何做,这对他们来说并不是很有用——正如其他人所说的那样,问题是“我如何解释业务优先级?” – 恩德兰 评论 2015年6月4日10:32