工程师毕业之前的注意事项

2020-11-29 16:23:50

我于2018年毕业于EPITA,这是法国计算机科学专业的工程学“ GrandeÉcole”。我在那里处理的主题非常技术性:从ISO文件阅读器的实现到Tiger编译器。

在我的工程学校等技术课程中讲授的技术重点使我在进入商业世界的第一步中有些意外。以下列表概述了我希望在毕业之前学到的东西。这篇文章显然受到计算机科学的影响,这是我学校的专业。尽管如此,我希望学生无论他们针对的技术领域是什么,都可以从中找到一些教学内容。

来自一所学校的口号是“技术越多越好”的学校,我不得不迅速适应这样一种观念,即从学校出来的新技术主要是人为的。不要误会我的意思:拥有技术知识是企业界所期望的必要。但是,如果我们中的许多人接受了应对技术挑战的培训,那么我们对人类行为的陌生性的准备就更少了。

叔本华在《做对的艺术》中说:“一个人可能客观上是对的,尽管如此,在旁观者的眼中,有时在他本人的眼中,他可能会变得更糟”,在我们的情况下,可以完美地翻译为“在技​​术上是正确的,但不会得到其他人的支持。”有时,基于非技术性的论据来做出具有吸引力的技术决策,例如:

您的经理曾经在XYZ工作,因此该项目选择了XYZ技术;

尽管实际上需要付出很少的努力,但您更改设计的野心使团队的其他成员感到恐惧;

您的同事X不喜欢您,因此不喜欢您的设计;

列表是无止境的。请记住,如果您希望接受技术决策,则必须使用超越技术的技能来武装自己,例如从谈判开始。

这所学校不仅为工程师培训语言或工具,它还建立了一种文化和一种学科,这种文化和学科通过加入公司而变得越来越强大。根据业务部门,公司,项目或团队的不同,并非每个人都对软件工程给予同样的关注。这门学科不可能成为您公司的核心业务,甚至也不可能是您同事的学术背景。被认为是理所当然的良好做法可能会遭到严重破坏:没有代码审查,没有单元测试,有时甚至没有版本控制工具。

一位年轻工程师的直观反应是带来一种纯粹的技术解决方案:没有版本控制工具?让我们安装git!没有代码审查?保护主分支!没有单元测试?安装正确的测试库!等等,但在这里,问题不是技术上的,主要是人的问题,尤其是文化上的问题。改变企业文化,或更适度地改变团队文化比任何工具都困难得多。

我将永远记得为旧项目获得GitLab的艰苦努力。对于软件工程师来说,这是必不可少的工作工具。这场斗争之所以漫长,不是因为该工具不存在(只需下载并安装该工具),而是因为尚未准备好所需的工具。

改变文化需要花费时间和精力,但是值得付出努力。总是可以删除工具,总是可以强制执行git push,但是训练有素的团队很难被骗。因此,在装备精良的团队和纪律严明的团队之间进行选择时,请毫不犹豫地选择纪律!

在大学里,天才得到了很多荣誉,他们一个晚上就能完成几千行复杂代码的编译。当我进入商业世界时,我的眼光从这种轮廓上发生了很大变化,能够在创纪录的时间内完成很多工作。他们的自信(或傲慢)导致额外的承诺,这使得他们难以按时交货。而且由于天才了解复杂的事物,因此他们设计了没人能理解的复杂系统。他们的孤独使他们成为学科的独特主人,从而培养了自尊心。知识掌握在他们的头脑中,他们的存在对于每个决定都是必要的。

但是,天才也有24小时工作制,很快就会成为一切的瓶颈,拖慢其他所有人的步伐。您无需成为软件架构专家即可同意,不要过度承诺和低估单个资源:除了无法扩展之外,该资源是单点故障。单点故障的设计是不可原谅的。一旦工程师生病,休假或离开公司,整个团队将不得不偿还数月甚至数年的不专业精神。

我在这里画的是一张黑色的夸张肖像。不过,我敢打赌,您会在职业生涯中遇到这种情况,这种情况除了会对整个项目(以及人们的健康)产生负面影响之外,有时还会被该组织称为英雄。真正的天才是能够设计简单性的人,他们在谦卑地对待人类和他们的工作量的同时,也将人们带入了董事会。这些被称为伟大的专业人士。他们传播知识和责任,以便不成为单点故障或瓶颈。

您认为缺少一项原则吗?给我发送您的意见!该列表肯定会得到扩展和完善,如果您希望收到通知,请订阅新闻通讯。