软件工程职位描述中缺少的部分?

软件工程职位描述中缺少的部分?

一位优秀的软件工程师是一位富有创造力的问题解决者

全球大约有1,820万软件开发人员 ,到2019年,这个数字有望增长到2,640万。要从这个人才库中寻找一名好的工程师并不容易,尤其是当我们没有适当的指标时。 在访谈中,我们最终会询问有关线程池,算法,难题和系统设计的问题,而且很少有两次访谈能得出相同的结果。 那么,软件工程师职位描述中缺少的部分是什么?

我觉得有一个误解,认为软件工程师的职责只是编写代码:您流失的卡越多,您就越好。 有时,这与您学习和记忆算法的能力有关。 如果守门员的工作是停止进球,谁是更好的守门员,谁阻挡了50个进球却输掉了球队,还是谁停止了3个进球又赢得了球队?

优秀的软件工程师可以解决客户的问题。 他或她通过与人们合作并提供可靠且可维护的软件来做到这一点。

我指的是任何试图解决软件问题的客户。 当我问一些开发人员为什么要使用卡或功能时,他们说:“我的经理/产品/客户要求我进行此工作,”或“我必须学习机器学习。” 由于开发人员(而不是客户)构建软件,因此构建的是工程师的理解。 您如何解决不了解的问题?

因此,第一不可协商的质量是为客户提供协作式问题解决方案 这并不意味着您仅提供所需的内容。 下面是一个示例:客户可能会假设为100,000个用户使用的软件将为1000万人无缝地使用。 我相信要了解甚至50%的客户需求并不是一件容易的事。 协作更多是关于质疑和消除假设并很好地理解问题。 最终,它可以为客户提供创造性的解决方案

客户受时间和成本的限制。 因此,下一个重要的事情是设定期望值 当有人告诉我他或她超出了期望时,我会向他们进行钻探,以检查他们是否对期望有所了解。

当您无法理解期望时,您如何超出期望?

期望会随着时间而改变。 首先,您应该豁达接受变更。 然后,保持正确的通信 交流不是要召开更多或更长的会议,也不是在谈论行话。 为了使客户和团队保持一致,这是一种持续的努力。 它的舒适性问题的假设,NO说的东西,无法传递, 主动召唤出的东西,得到延迟,大胆地说,你不知道寻求帮助给予和接受反馈 ,推背功能,为客户不会有用,创建一个安全的讨论场所,注意细节并提出问题以做出明智的决定

不断交付 ,获取反馈并不断改进 随着时间的流逝,任何项目的复杂性都会增加。 保留了较旧的服务并添加了新功能,从而使软件在生产中的可预测性降低。 使用高峰,软件腐烂,旧许可证到期,而新许可证需要升级。 发生生产事件,尤其是在计划的个人时间内。 拥有问题并在管理交流的同时解决了问题

使事情保持简单是最困难的,尤其是随着时间的推移。

您拥有的服务相对较容易调试,并且更容易修复,而不会破坏其他系统。 因此,优秀的工程师努力降低复杂性 ,重构现有代码并编写可维护的软件 所有这些都是在管理新功能交付压力的同时完成的。 采用好的做法来交付可靠且易于维护的软件。

好奇心是关键 如果人们说他们对技术充满热情,我会询问他们的学习情况,并且基于答案,我知道他们是否充满激情。 不断的学习和实验有助于做出正确的决策并构建更好的软件。 此外, 谦虚地表现自己的能力有助于协作和权衡取舍

随着时间的流逝,系统变得越来越复杂,很少有人能完全理解它。 您可以通过组建团队和共享知识来减轻负担。 而且,您喜欢与很棒的人一起工作,因为尽管有他们的经验,但您还是要向他们学习。 您负责建立团队。 好的工程师花时间在招聘上 在招聘期间,您花时间了解一个人的优点和缺点。 自定义新团队成员的入职时,了解现有系统和团队动态将有所帮助。

仅编写任何人都不会使用的代码,您如何才能成为一名优秀的工程师? 完美是进步的敌人。 就像30分钟的锻炼和均衡的饮食可以使您的健康看起来简单,但这并不罕见,优秀的软件工程师并不常见。

至少,一名优秀的工程师可以共同理解问题并使用技术来提供创造性的,可维护的解决方案。

From: https://hackernoon.com/the-missing-part-of-the-software-engineering-job-description-d905725db84d