大约一年前,我得到了自己的职业机会。 领导层接近我,问我是否想领导一个新的云原生团队。
"当然,我愿意。"
我花了一些时间在我公司的开发团队中组建了一个有远见的个人团队,他们认为这会使团队成功。 我建立了一个不错的人平衡,他们的经验范围从仅仅几年的经验一直到20多岁。
从历史上看,我们从来都不是云开发人员。 我们是一家大型的企业软件公司,在Microsoft技术堆栈中扎根。 我们知道一切都会突然发生,但是我们从未考虑过的一项更改是编程语言。 为什么?
因为我们总是那样做。
如果可行,为什么还要更改? 这就是我们所知道的,因此我们不必花时间学习一种新的编程语言。 我们将花费所有时间来学习诸如CI / CD,无服务器开发和NoSQL之类的知识。
开始建设
您可以做的最坏的事情是忽略选项,因为它们看起来很难。 寻求方向,因为这是正确的方法,而不是简单的方法。 不要假设方向,因为您总是那样做。
"如果您想要新的东西,就必须停止做旧的事情。" -彼得·德鲁克(Peter F. Drucker)
尝试一种新的编程语言,它将以优秀的方式解决您的问题。 如果它不起作用,请吸取教训,再找一个。 灵活地做出决定。 不要袖手旁观,而要与您的团队做出明智的决定。 尝试一下旧的大学。
您会发现,对于应用程序的技术方面做出的最早决定(即编写方式)将产生比较大的影响。 每个人都有学习新事物的能力。 不要害怕走不败之路。
建立。 学习。 创新。 每天变得更好。
考虑未来
在您的整个职业生涯中,您都不会使用此产品。 在某个时间点上,您要么转移到新项目,要么离开公司,去其他地方寻求帮助。
这意味着您需要考虑继任者。 在您加入之后维护该应用程序的人员将在其中花费更多的时间。 因此,请考虑让他们的生活更轻松的原因。 问自己以下问题:
- 这是语言行业标准吗?
- 我可以在最短的启动时间内雇用街上有人在此应用程序上进行构建吗?
- 有社区支持吗?
- 我可以在堆栈溢出中找到问题和答案吗?
作为领导者,您的工作是对公司产生影响。 听起来很愚蠢,为项目选择正确的编程语言可以决定您留下正面还是负面的语言。
如果需要,请更改
在开发过程的早期,您有一个窗口,您可以在其中更改编程语言,而对生产率的影响最小。 您已经完成了概念验证,发现了一些陷阱,而且看来风险大于回报。
更改。
最小的工作已经完成。 团结一致,讨论优缺点。 如果团队认为此编程语言不是正确的选择,请尽早致电并切换。 您等待的时间越长,重构的难度就越大。
这对我的团队来说不是一次,而是两次。 在此过程的早期,我们做出了一个明智的决定,即选择使用Python。 几周后,我们意识到鉴于我们的用例,这对我们来说将不是一种可维护的语言。 因此,我们聚在一起,讨论了我们的选择,然后转移到另一种语言。
您能做的最坏的事情是将自己锁定在无法解决问题的编程语言中。 在项目的早期阶段保持高度警惕,以及早发现并做出积极的改变。
使用正确的工具完成工作
您将不会使用锤子将螺钉拧入一块木头或使用钢锯来锯制2x4的边缘。 不,您将使用适合手头任务的工具。
您的编程语言是您的工具。 从字面上看,这就是您用来构建产品的依据。 为了在最短的时间内做出优秀的应用,请使用优秀的工具完成工作。
以下是一些主要编程语言的公认使用案例:
- Python —数据科学,机器学习,后端Web开发
- C#—基于Windows的胖客户端应用程序,游戏
- Java —胖客户端应用程序,Android应用程序,后端Web开发
- JavaScript —快速的Web开发
- Swift-iOS应用
显然,还有更多的语言可以考虑,但是请记住,某些语言比其他语言更容易解决问题。
不要害怕打扰
罗伯特·克里格(Robert Kriegel)在他的《圣牛造就最好的汉堡》一书中谈到了旧业务流程如何扼杀创新。 本应在很久以前就进行过重新评估的流程,但从未遭到质疑,因为它们总是可以完成的。
我和我的团队很快意识到,我们都习惯了的编程语言无法在我们的新应用程序中使用。 我们构建了一些Lambda函数,这些函数由于冷启动时间而极慢。 我们考虑了解决方法,以使冷启动不成问题,但我们认为这将与我们掌握的工具对抗。
因此,我们决定成为破坏者。 我们加入了这个团队来进行更改,并且我们不会让旧的流程和神圣的牛妨碍我们。
做出不利决定的决定是艰难的,但是我们希望确保我们取得成功。 中断通常意味着要勇敢面对,因为没有适当的流程。 但是,如果您像我一样拥有一支强大的团队,一切皆有可能。