0%

成为一名出色的软件工程师需要什么?(译文)

作为一名软件工程师,除了知道如何通过白板编码面试或在履历上有几个项目外,还有很多其他事情。

文章作者认为理解一下5个概念,能够帮助在短时间内成为一名“优秀”软件工程师。

物体闪光面

作为软件工程师,我们发现学习新技术的最佳方法是跳入大型框架或从上而下的方法进入不同的编程范例。秉承“ MVP(最低可行产品),稍后修复错误”的思路,我们把所有不同框架和API连接在一起,产生我们能够想象得到的功能最强大的应用程序。

但是,这产生了一个问题。我们被技术所消耗,忘记了开发应用程序时需要考虑的所有不同变量。

问自己以下问题:
- 这真的是您应该做的吗?
- 什么是最高优先级?
- 您的项目如何影响他人?
- 您想达到什么目的?

这被称为”闪光物体综合症”,因为新想法的涌现使我们无法考虑上述问题。要成为一名出色的软件工程师,您必须从大局上退后一步来考虑这些问题。

复杂度

技术

很多时候,我们写的代码比算法比实际需要的要复杂,这是我们要注意避免的。

处理任何问题,并将其分解为无法进一步分解的部分。然后,单独解决这些问题,并将它们整合为整体的一部分。

技术复杂性在软件中很普遍,快速找到简单的解决方案是我们的工作。下次编写大型函数时,请考虑重构,以期将来扩展。所有的问题都可以分解为简单的解决方案。

组织架构

人与代码同等重要。

该项目或实施可能不太困难,但是,在许多跨职能团队之间进行导航将是一个问题。 这引入了组织的复杂性,因为必须使团队中的每个人都在同一页面上。 是的,这涉及到大量的交流,但从长远来看,它将节省所有人的精力,最重要的是,可以节省时间。

您需要定期与其他工程师交流您的方向,想法和进度,以实现正确的构建结构和项目集成所需的对齐。

最后,请记住以协作,建设性的方式进行此操作。 除了坐在电脑旁简单地编写代码,你还需要做更多的其他事情。 您需要成为一个促进者。

模糊问题

很多时候,人们不知道该怎么办。问题和解决方案可能还不清楚。 这个想法可能已经进行了数周或数月,几乎没有牵引力。 它甚至不需要很复杂。 这是模棱两可造成的问题。

为了解决这个问题,您需要积极主动。 写需求分析相关的文档、创建原型、 召集一些会议,帮助推动项目前进,帮助巩固和制定路线图,以实现项目集成。 关键是要采取行动:测试,分析,评估和创建。

领导力

大多数人都对领导力理解有误区,认为这只是在告诉别人该做什么,控制别人,假装你有信心,等等。

领导力与主动性有关。

主动性很难,主动性是指采取行动的态度。您可以将一群精明的程序员聚集在一个房间里,执行一些模棱两可的任务,然后发现什么也做不了。这主要是由于缺少某人担任领导职务。成为那个人,推动项目完成,推进,制定会议,创建路线图,并包容周围的人。

这样做的目的是找出可以为每个相关人员创造机会和潜在晋升的问题。一个好的领导者会发现这些机会,并将使所有人参与其中以解决问题。

影响力

影响力不仅仅是您投入项目的精力或时间。这与项目的结果有关,比如增加Web应用的用户数量,为公司创造更多收入或结束项目之类的事情。

您可能需要克服无聊的事情,例如清除障碍,处理歧义,与人交谈和采取主动行动。它可能是枯燥的,但最终会带来更多收益。

大多数程序员都在不断创造事物,也许是为了学习一种新的框架或语言,而不考虑结果。例如,假设您要将代码库从Java转换为Scala。好的,太好了。有什么影响?除了满足您学习新技术的愿望之外,它对任何人都无济于事。

这就是为什么您必须关注事物的业务方面的原因。出色的软件工程师能够做到这一点,摆脱自己的欲望,考虑您的情况,手头的任务以及您的行动如何为您的团队带来最大的收益。

执行力

要成为一名优秀的程序员,您必须每天执行前面提到的概念。

避免物理闪光综合征, 以非复杂的方式处理复杂性, 成为领导者,并专注于项目的影响。

如果您坐在那里,并觉得自己没有得到充分利用,那么您需要浏览这些要点。 您可以处理技术复杂性吗? 也许您需要处理组织的复杂性。 找出公司中存在的问题,有远见,并使其产生影响。

——
原文:What does it take to be a great software engineer?