重新获得高级程序员的信心


21

我的老板发现我不像他想的那样聪明。

以我的经验为例:

我是一名初级程序员,并且由两个人(老板(高级程序员)和我自己)组成。

我的任务是为我们工作的公司开发内部Web应用程序。我将后端写到了前端(数据库设计已经到位,服务器技术已经被选择)。他会通过观察Web应用程序的运行情况来定期检查我的进度,并对它的出现感到高兴。当我完成网络应用程序时,他对最终产品的性能感到满意。

几天前,他对代码产生了兴趣,所以我告诉他我使用了哪些技术(用于前端),这就是它的发展方向。对于Web应用程序的前端,我使用了Javascript框架(Backbone.js)。当被问到为什么我会做这样的事情。我的回答是因为我觉得该框架非常适合该应用程序,并且比起我从头开始编写代码,它可以帮助我更好地构建代码。

因此,给出此示例,我的问题是:

如果您是一名高级程序员,并且对初级程序员的能力失去了信心,那么您希望从初级中看到什么以重新获得信心?

编辑:谢谢大家的出色回答和支持性反馈!


4
我不知道该应用程序,但是一个合适的框架似乎通常比自己编写一个更好的决定,特别是如果您是新手。不要让自己对这些评论感到沮丧。也就是说,您绝对应该尝试从头开始编写代码,作为一个宠物项目的练习。
sebastiangeiger

50
有没有考虑过您的前辈不像您想象的那样聪明?a)如果他是您的主管并且不知道您使用的是哪个框架,那么他的监督作用将失败。b)如果他看不到值得使用的框架的价值,那么他在那也失败了。
GrandmasterB

5
@ jmort253,不,但他为不得不学习新知识而感到沮丧。
fbynite

17
红旗!® ...他为必须学习新知识而感到沮丧。自1973年以来,我一直从事这项游戏,我认为我平均每个月必须学习一种新技术和/或工具。我基本上是服务器人员,但是在过去的3个月中,由于诸如Bootstrap,Enyo和“单页应用”框架之类的项目,我不得不完全重新考虑我如何处理JS前端,这影响了我如何思考服务器支持它们。
彼得·罗威尔

3
您在这里做的很好,但是只需要增加一个“ Backbone.js”即可。不再关心某些“高级”程序员的想法。
卡兹(Kaz)

Answers:


27

如果他喜欢您构建的产品,但在使用Backbone时却陷于困境,那么您都需要就所需的技术堆栈进行对话。

作为开发人员,我们应该使用易于使用的工具,从而顺畅地移动工作流程。如果他希望您从头开始构建前端,那么他应该很明确并且有充分的理由。

他最初喜欢该产品的事实足以证明您做得不错,并且足够“聪明”。

tl; dr你做得很好。与您的上级交谈,看看他对您的期望。


15

对我来说,他做出这样的快速判断电话似乎不太“高级”。我总是倾向于使用适当的框架来代替“重塑方形轮子”反模式。如果他是真正的资深人士,他会理解并知道一个好的框架的价值。最好的情况是,我希望他对Backbone.js是否选择另一个MVC JavaScript框架提出质疑,而且要早得多。他在初级阶段未能正确地指导和检查您,并没有帮助您沿着正确的发展道路(在他看来)。

听起来您在开发项目时做出了正确的选择,这是因为他缺乏指导(假设),并且正在努力成为一名更有能力的开发人员。我认为向他解释您对框架的选择,为什么您认为框架合适是有价值的,并指出该项目已完成并且令他满意,部分原因是使用了有据可查并受支持的框架。如果您无法取得进步,那么在他眼中看起来更好就没有任何价值。只有你能回答。


5

大多数答案和评论的想法都正确,因为您和上级将需要进行某种讨论,即使您的上级不同意您的选择,也可能对您加强和捍卫您的决定很重要。 。

要回答您关于我想成为大四学生的问题:

我想看看我的初级开发人员能否站起来捍卫他的决定,即使有些失望。如果我对产品感到满意,而不对实现感到满意,那么我希望初级人员指出,在给他们产品时,我应该在规格上更加具体。我希望他们能够坚持自己的立场,但也要承认,在这种情况下,他们可能没有做出正确的选择。

PS:我必须提一下,我是一名资深人士,喜欢在专业水平上证明自己是错误的,因为这使我有机会学习新知识。而且我喜欢知道团队中其他人的工作方式,以便在Sprint /任务结束时没有/减少惊喜。


很好的答案,但是您没有提到他未能带领开发工作(没有代码审查?)
BЈови1313年

@BЈовић-谢谢。-我不是因为我相信只有大四并不能使你成为唯一的人。如果大三学生期望在发展中有一些“领导力”,或者注意到缺乏这种“领导力”,那么他们应该提请老年人注意。如果上级决定不提供“领导力”,那么他们就不配得到的职位和薪水。:P
大卫“秃头姜”

3

首先,我认为这应被视为机会,而不是失败。期望显然不匹配,并且不清楚来自何处,需要做什么以使一切恢复正常等等。

其次,如果您将此视为当前的失败,或者您不像您认为的那样聪明,那么就不需要建立电源关系。因此,如果您做出决定,则认为自己是可以辩护的,那么您就必须愿意为自己辩护。

尽管我同意您的要求,但这还不够。您必须准备好进入,讨论您的设计思想,解释为什么要做自己的事情,并为推理辩护。您还需要接受的答案是,不仅只有一个正确的答案,而且高级程序员可能有充分的理由偏爱其他设计,因此您想听这些理由而又不承认自己的决定是错误的。关于你所知道的(除非你决定你应该更了解,那是另一回事)。

请记住,设计通常是权衡问题。您想乐于讨论什么是折衷方案,并希望看到两者都可以做以确保将来可以讨论设计折衷方案。也许你们两个只是期望自己在同一页面上的数量超过您?也许您的老板是个白痴(有时可能会发生)?考虑到您对需求的了解,也许您确实做出了错误的决定?开阔的胸怀和自信去吧,并且愿意真正谈论这个。

编辑:我想添加一些关于变得聪明。我认识的最聪明的人是那些认为他们可以向所有人学习的东西的人。被封闭并相信只有正确的方法的人最终不会在设计等领域做出富有想象力的好决定,他们无法以愿意向所有人学习的人们的方式将事物联系在一起。进来并乐意来回分享甚至反弹想法,既表明了自己又聪明又自信。设计上的差异并不一定成为一个要比另一个更好的问题。假设有能力的设计师,将对不同的设计进行不同的优化。


3

我的一般观点是,您没有做错任何事情。作为高级开发人员,他应该对您如何开发应用程序以及结果感兴趣。在一个项目完成之后进来并说他不喜欢它的完成方式对他而言不是很专业。

但是,要回答您的主要问题:在失去长者的意见后,您如何获得他的意见?首先,请问他们觉得您应该怎么做。如果您不了解并记笔记,请提问。表明你想学习。

其次,在您的下一个任务中,如果描述中遗漏了某些内容,请提出您的想法,然后由高级开发人员来运行它们。不要直截了当地问问怎么做,因为这不会帮助他们对你的看法。但是,如果您提出自己的想法和解决方案,然后问他们是否走上了正确的道路,这将向他们表明您正在尝试并且确实具有完成工作的技能。这就像一封简短的电子邮件那样简单:“嘿,我打算在做y时使用x。有什么想法吗?”

第三,当他们抬起头来看看你的状况如何时,不要让他们在不看你的代码的情况下离开。

基本上,打开沟通渠道。您的高级开发人员似乎并不是您或您的代码上的那种类型,因此您需要加强并成为交流的人。最好让所有参与调查的人早早发现并非最初想到的东西。


2

您需要立即发现的一件事是,他是否因为无法对选择的框架进行全面辩护而灰心,还是因为使用了框架。

在前一种情况下,重要的是您学习如何评估和选择要包含在项目中的第三方代码,并且知道如何向上级明确表达该决定并准备有理由支持该决定。这是一个棘手的学习技能,但它具有经验。这也是一种很好的学习技巧,因为一旦您将第三方库包含到项目中,便会引入一个组件,而其他开发人员可能无法完全理解该组件,因为他们无法完全控制并且可能包含错误,安全漏洞和其他需要注意的事项。

如果他因为没有从头开始写而感到失望,那完全是另外一个问题。可能是他有充分的理由不鼓励使用框架(例如我在上文中描述的框架),或者可能有公司针对它们的政策或限制了您可以选择的框架的选择。无论哪种方式,他都应该向您传达,以及他没有表明自己失败的事实。另一方面,他可能只是对框架存有偏见,因为尽管框架可能导致问题,但我敢肯定,它们也有很多好处。他可能只是认为您应该自己做所有事情,即使这意味着要重做由于“此处未发明综合征”而已经完成并公开发布的工作。

他没有解释为什么他对使用框架感到失望,这肯定是他无法有效沟通的原因。当答案很可能是“无”时,他让您想知道自己做错了什么。他还使您对自己提出质疑,这势必使您在将来不再倾向于使用自己的主动权。如果优秀的程序员无法承担一个特质,那就是缺乏主动性。而且,尽管我确定这不是故意的,但他的态度正在损害士气,因为他突然因为对完成任务的一个小细节的出色表现而失去了表扬。

仅仅因为他是高级程序员,就不会使他犯错。


2

您的后续评论说老板很沮丧,他必须学习新知识。

除非您没有提到更多,否则HIM会让我很烦。

学习新技术是我们工作的重要组成部分,每个团队都应拥护学习和自我完善。

但是,管理层还有其他需要担心的事情。他们有截止日期,培训预算有限或没有预算。

从人员管理的角度来看,可能是其他人在项目的第二阶段工作,而不是您。您的老板可能有其他人标记要从事这项工作,他知道这个人现在对新事物有了学习的弯路。

现在是以前的BUT上的BUT。。。这是您老板的错。如果您是初学者,他应该至少提供了一些指导。在较小的程度上,您可能还要求使用技术的指导。


2

如果您是一名高级程序员,并且对初级程序员的能力失去了信心,那么您希望从初级中看到什么以重新获得信心?

考虑到您已经说过他不想学习如何使用所使用的框架,我认为问题应该是:“ 如果您是一名高级程序员,并且已经失去了向自己的学习能力,初级程序员,您应该如何解决呢?

作为专业开发人员,您不会停止学习。曾经 如果这样做,您将停滞不前。在某些领域这可能很好。银行业务中有许多需要维护的遗留系统,因此对运行缓慢的旧系统的了解很好。我的一个朋友正在为一家银行编辑COBOL,以发现他所修复的源代码大约30年没有被使用过(原始作者是我们大学的COBOL讲师)...也就是说,他仍然必须学习新东西,因为旧系统必须集成到新系统中。

回到您的高级开发人员。您说过“ 他为不得不学习新知识而感到沮丧 ”,我认为那是一些响亮的警钟。

我一直在学习。虽然我真的很希望我的雇主每年拿起我的教育账单,但很少有人会花接近我真正需要的钱,但是我知道我必须保持工作能力,所以我要花2000英镑左右每年我自己受教育的费用为GBP(约$ 3000 USD)。

如果您的上级不学习新事物,那么他们将开始做出错误的决定(也许已经是错误的决定),并且您正在处理的代码的质量将下降,因为它们陷入了困境,并且感觉不到需要发疯了。

我曾经合作过的最好的开发人员之一是一个初级开发人员,他知道我从来没有机会看过的所有东西。他给桌上带来了很多,我常常不知所措。但是我感谢他的努力,我从未对任何努力感到沮丧。我很高兴他花时间欣赏所有可能性并将其呈现给团队。他现在领导一个团队,并且一直在告诉我有关将东西带到桌面的开发人员以及他从中学习的内容。

您的高级开发人员需要学习东西。他们需要学会不要使用情绪化的词语(例如“令人沮丧的”)来掩饰自己的不足之处,因为这会打击他人的信心。他们需要学习新的框架(即使他们不能学习整个事物,也不能学习它的作用以及如何解决问题,如果他们将来需要它,那么他们可以花时间在更深入的学习上)。他们需要了解自己从事的工作必须一直保持学习。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.