“软件工程师”心态

什么是软件工程师? 什么是高级软件工程师? 许多公司将“高级软件工程师”定义为一个已经花费超过6年的程序员时间的人。 这并不总是正确的。

几天前,有人问我是否建议成为“普通主义者”或“专家”。 是应该只专注于一种特定技术并真正精通该技术,还是应做一点事情。 我曾经写过, 如果您做一点点的事情,您根本就不会成为专家 。 尽管我仍然部分保留该观点,但需要对其进行阐述。

软件工程师的心态永远不会导致狭窄的专家。 但这并不意味着您不会“钻研”特定技术。 实际上,您深入了许多特定的技术/框架/抽象级别。 您会精通它们,然后继续进行下一个。 可能与辅助项目一起使用 ,可能是从一项工作过渡到另一项工作,在该项目中 ,一些不熟悉的项目与已知项目一起使用。 随着时间的流逝,您会积累足够的经验,以至于每种新技术都是熟悉的,并且很快就会投入使用。 另一方面,长时间专注于一种特定技术并不能使您看到问题的所有可能解决方案。 因此,不行,主要从事jQuery / Rails / Spring / Android /…长达15年的工作并没有使您成为“高级软件工程师”。

软件工程师的心态与解决问题有关。 您越高级,就可以更快地找到更简单的解决方案。 您所熟悉的技术越多,您就能产生越多的非本地化解决方案–在一个多技术项目(例如Web,Android和iOS前端,带有Java后端,例如一个公共API)中,看起来在一种特定的技术上还可以,其余的可能是骇客。

软件工程师的想法不是说“我不知道,另一位同事正在这样做”。 我在面试中一直得到这样的答案-人们甚至一直在执行JSR规范,并且只知道他们在过去两年中从事的工作。 它与其余部分如何匹配是软件工程师应关注的问题。

有些人可能会问,这不是建筑师的角色吗? 但是架构师是角色,而不是工作 。 每个具有正确思维方式和知识的软件工程师都是架构师,应该如此。 也许有人会在委员会前代表团队(如果根本需要的话),但是自上而下的架构师方法被打破了。 主要是因为只有架构师的职位无法编写代码,并且很快就失去了对现实的掌握。

也许我正在尝试将自己喜欢做的​​事情(进入应用程序的各个部分,从高层架构到底层细节)标记为“软件工程思维方式”。 也许我只是为“全栈开发人员”陈词滥调添加了另一个同义词。 无论如何,我认为鼓励人们看到更广泛的技术前景是很好的,鼓励人们花时间专注于特定问题和技术也同样重要。 否则,他们可能会成为那些懂得很多知识的建筑师和前辈之一,但实际上并没有看到这些复杂的细节。 魔鬼在细节上。 软件工程师兼有。

翻译自: https://www.javacodegeeks.com/2015/09/the-software-engineer-mindset.html