65.9K
CodeProject 正在变化。 阅读更多。
Home

软件高管给开发者的建议

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2014年1月2日

CPOL

7分钟阅读

viewsIcon

22211

一位在科技行业拥有37年经验的资深人士,对开发者应如何评估自己的职业生涯进行了反思。

引言

领导技术团队的乐趣之一是能够与许多聪明、充满热情和富有创造力的工程师互动。我的角色很大一部分就是汲取他们的能量,并将他们引导向尽可能多的生产性方向。

一段简短的回忆之旅

我在科技领域摸爬滚打近37年了,几乎 all the time 都在软件行业。我见证了代码的创建和管理方式、团队的运作和协作方式以及个人评估职业生涯方式的巨大变化。“我能多快成为一名架构师?”“成为一名技术主管意味着什么?”“我如何成长为一名经理?”“我需要具备哪些技能才能晋升到高级职位?”我认为,没有人不至少暗示过这些问题中的一个。

在我还在微软(1987-1998)的那些年里,大家对头衔并没有太在意。我记得我第一天到 Unix 业务部门(没错……那时微软授权的 Unix 副本数量比其他所有 Unix 供应商的总和还要多)。

Unix 团队里有一群超级聪明的人。他们创造了高性能内存管理等东西,同时还要处理诸如进程从 ring 0 切换到 ring 1 保护(在当时仍然非常有限的设备上)等问题,这都是非常棘手的。这些人中没有人想当经理。成为一名技术主管很酷,因为它有可能领导一个小型团队,但这也可能意味着该开发者拥有比团队中其他人更深的知识水平。

对于开发者来说,成功的关键特质是永恒的

这是一件毋庸置疑的事情:技术变化的速度非常快。我总是更倾向于寻找那些具备扎实基础知识、对学习新事物有强烈的好奇心以及对解决问题有极度热情的人,而不是那些精通最新编程框架的开发者。

在我还在微软的那些日子里,我们目睹了桌面系统伴随着多用户分布式计算系统的兴起。桌面系统演变成了客户端-服务器范式,这要求开发者对网络概念有更深入的理解。

之后,这让位给了互联网和基于 Web 的应用程序的兴起。性能和可扩展性问题依然存在,但集中在技术栈的不同领域。此外,新的框架和编程语言也涌现出来,寻找那些精通标记语言、托管代码等事物的开发者变得具有挑战性。

我们有来自微软和“开放系统”公司的新开发框架,这进一步挑战了我们的招聘能力。就我而言,虽然我想要具备这些技能的工程师,但我选择基于**聪明才智、热情和创造力**来招聘。我发现具备这些品质的人几乎无所不能。一个聪明、充满激情的开发者可以快速掌握最新的编程语言;然而,你无法“教会”一个编程语言专家去拥有热情和创造力。

最终,我离开了微软,在 BMC Software 和 Citrix Systems 等大公司工作,然后是一些规模小得多的硅谷初创公司。当我们处理诸如将 UI 表示扩展到数万用户、管理数十亿个数据文件或电子邮件文件夹/消息等棘手问题时,那些在架构和正确编码技术方面基础扎实的开发者备受欢迎。**但是**,我招聘的任何开发者都需要具备**聪明才智**、**热情**和**创造力**。

深度固然好,但广度也同样重要

当我的团队中的初级成员问我关于工程部门的职业发展时,我会这样告诉他们。

你需要**精通当前的网络技术**(例如 HTML5/CSS3)、脚本语言(例如 JavaScript)、丰富的响应式客户端库(例如 Knockout)、应用程序框架(例如 Ruby-on-Rails)以及用于系统集成的有用语言(例如 Python)等。

过去,开发者可以只专注于后端或前端,但现在行不通了。开发者需要均衡发展。这包括具备不错的 SQL 和/或 NoSQL 技能,用于实现数据库驱动的应用程序。事实上,那些数据库技能非常出色的工程师需求量很大。同样,能够构建高度可扩展、高性能的搜索或分析应用程序的开发者,也因其算法能力而备受追捧。后者尤其将我们带入了大数据领域。

有趣的是,在我目前的公司(DNN),我们一直在深入研究这些领域。我们看到编程需求从传统的基于服务器的 C# 转向基于 JavaScript、Knockout 和 JSON 的富客户端代码。

我们的产品还必须**适应各种桌面和移动设备限制**,因此我们也必须掌握基于 HTML5、Bootstrap、LESS 等的响应式设计。然后是平台本身:我们的解决方案可以本地部署,也可以部署在云端

后者带来了一系列全新的考虑因素,特别是关于带宽利用率、网络利用率、服务框架优化、数据库优化、服务弹性、组件管理和部署、测试、服务监控等等。

事实上,云计算也催生了一类新的工程师,他们是开发和运营的混合体(“DevOps”)。当我们找不到具备所需技术技能和警惕性(你不会遇到放松的运维工程师)的合适人选时,我们就必须进行人员配对。

招聘开发者时我们看重什么

那么,在今天的开发者身上,我们招聘经理看重什么?我仍然看重**聪明才智、热情**和**创造力**。但随着时间的推移,我又增加了“**结果导向**”。原因在于,归根结底,我们的公司只取决于我们交付的成果。

对于一名工程师来说,无论是完成一个模块、集成一组组件,还是完成一项研究性开发,都关乎结果。我们需要那些能够高效完成工作的人,并且能够以高度敏捷的方式工作。我并不是说研究等事情总是能取得成果;而是说,它们会以一种彻底且及时的方式完成,并且符合公司目标。

所以,当我看简历时,如果上面只列出了某人的项目或他们使用的工具/服务,我通常不会感到印象深刻。当他们写到**有挑战性的问题时,那就能引起我的注意**。如果该开发者还能展示出对他们挑战的全面、系统化的看法,那他们就离被录用更近一步了。

这并不是说我根本不关心技能。对于 DevOps 角色来说,使用 New Relic、Chef、Puppet Labs、Splunk 等工具的经验非常重要。这就像是扑克游戏中的底注。但同样,聪明、有热情、有创造力、结果导向的人可以做或快速学会任何事情,并帮助团队实现公司的关键目标。

诚实地进行自我评估

考虑到这一点,我们来讨论关于职业发展的不可避免的问题。过去,在决定资历时,我们只考虑一个人的工作年限。这个标准仍然相关,但需要与对工程师**解决问题能力、领导技能、视野和适应性**的评估相结合。

这些品质也关系到一个人是成长为一名独立贡献者还是管理者。工程师们往往渴望成为一名管理者,而他们实际上最适合成为一名首席开发者(因为他们喜欢并且非常擅长编码),或者作为一名架构师那样看待整体系统(拥有全局视野)。

这并不是说开发者不应该成为管理者;优秀的管理者很难找到。在我公司,技术管理者被期望能够非常积极地参与到我们产品的实际工作中,与团队成员保持紧密联系,并在任务管理方面非常有条理。

如果他们能够以有意义的方式构思和阐述技术方向,他们就有机会成为领导者:能够指明方向,而不仅仅是管理任务的人。

结论

给工程师们最后的建议:一切都关乎改变。所有伟大的工程师都喜欢改变事物。他们的思维模式是看到挑战就是待解决的问题,以及必须改变的事物。

然而,工程师们常常难以适应发生变化的自身。所以我的最后一条建议是拥抱变化。你所做的改变和你所经历的改变。你在这一领域的成功将最终决定你在职业阶梯上攀登的高度。

© . All rights reserved.