首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

怎样成为优秀的工程师

我一直在IT企业的研究部门工作,已经通过了三家公司:NEC、微软和华为。这项工作是基础研究和产品开发。事实上,两者在本质上是密切相关的,而且是完全不同的。前者是在发现或发明普遍性的理论和方法,后者在发展的实际系统和工具。公平地说,前者需要科学家的思维、基本技能和品质,而后者则是工程师。我经常提醒自己,我需要确切地知道我的“帽子”在一个具体的项目中是如何工作的,是科学家还是工程师?

我已经收集了很多关于如何成为一名优秀科学家的博客文章,这篇文章讲述了如何成为一名优秀的工程师。在我看来,在做工程的时候应该遵循这五个原则,在实际工作中应该作为指导。这些原则是:面对问题,解决问题,系统地解决问题,站在用户的角度看问题,以最小的成本获得最大效益,在封闭的地方磨磨。这里做一个总结,仅供参考。

面对问题,解决问题

西方有句谚语:“当你手里拿着锤子的时候,你会觉得自己像钉子一样。”根据他们自己的喜好,专业,解决问题的习惯是工程师的一大禁忌。在工程中最重要的是面对问题并解决问题。理想的策略应该是理解问题的本质,理解问题的机制,并以最直接有效的方式解决问题。经验告诉我们,解决问题总是不好的。你不需要有一个理论来做工程。只要能有效地解决问题,任何方法都是可以做到的。“无论白猫黑猫,抓老鼠都是好猫”也适用于此。当然,有一些理论和方法可以更经常地抓住问题的本质,这可以更好地解决问题。

在NEC工作的时候,我参加了一个自然语言研究小组的会议。他们建议开发一个语音系统来帮助用户远程控制电视,因为远程控制对于老年人和儿童来说太复杂了。当然,语音控制是一个好主意,而且仍然有许多企业正在开发这个应用程序。他们的印象尤其深刻,他们声称除了通过声音,没有其他的解决办法。当时,我也认为他们的想法是合理的。

但在过去的几个月里,其他几家日本电子公司推出了一种更简单、更实用的远程电视编码方法。远程控制主要由数字输入、每台电视节目和代码,每天将在电视栏目中宣布编码,用户只要输入代码就可以观看或录制相应的程序。

这对我的心脏来说是一个巨大的冲击,奇怪为什么NEC的同事们只想到自然语言而忽略其他的道路?这难道不是因为他们拥有自然语言的锤子吗?

系统地解决问题

动画片《没头脑与不高兴》描写了两位少年:“没头脑”与“不高兴”。“没头脑”做起事来总是丢三落四,“不高兴”待人处事总爱别别扭扭。不久,“没头脑”当上了工程师,“不高兴”当上了演员。“没头脑”设计了一座一百九十九层高的少年宫,楼建好以后,才发现忘记了设计电梯。孩子们为了在这个大楼顶层的剧院看戏,需要带着铺盖、干粮爬一个月的楼梯,害人不浅。其实,我们在日常生活中也能看到不少“没头脑”的作品。工程师需要构建的一定是一个系统。系统一定需要全面、整体、有机的设计,不能有缺陷与差错。切忌成为“没头脑”的工程师。

在微软,我们与唐朝晖博士一起在SQL Server 中开发了文本数据挖掘功能。术语提取工具可以自动提取数据库中英语文本中的名词短语。该工具的输入通常是英文的文本,看起来像一个单一的,但是工具的设计,必须考虑到其他的异常输入,以应付所有可能的情况,例如,代码,而不是英语,特殊字符,全文大写,不包含标点符号,等等。请记住,开发团队构建了一个巨大的逻辑图表,列出所有可能的输入,为解决方案做准备,并试图“妨碍敌人、水和地球”。这个项目真正地锻炼了系统解决问题的能力。

站在用户的角度

苹果的产品,就像iPad一样,简单,直观,易于使用。据说,两岁的孩子也可以不用老师来使用iPad。原因很简单:苹果的产品是为用户设计的。因此,苹果产品可以被用户喜爱和喜爱。虽然很简单,但我们会发现很多工程师在开发系统时往往不能做到这一点,所以做的事情一点都不好。

NEC参与的第一个项目是一个失败的项目。其目标是为自然语言开发一个用户界面,并自动将用户输入的日本问题转换成SQL语句,使普通用户能够方便地访问数据库。这个项目的初衷是好的,但是最大的挑战是语言是非常具有表现力的,同样的意思也可以用很多不同的方式来表达。的发展,系统只能接受受限自然语言输入(不基于统计学习的想法来解决这个问题,可能通过大数据,统计学习方法来解决这个问题在某种程度上,这是自然语言处理研究在未来的一个方向)。对于用户来说,反馈是非常糟糕的,因为对于用户来说掌握受限的自然语言比掌握SQL语言要困难得多。如果不能从用户的角度考虑问题,就会导致项目失败。

以最小的成本获得最大的收益

福特说:“工业家的一个重要规则就是以尽可能低的成本生产出最高质量的产品,并给予工人最高的工资。”在1908年,福特T型车的价格是825美元,当时很少有人买得起,在1924年,T型车的价格是290美元,成为大众汽车,每两辆车都在美国销售,是T型车。

原因是福特引进了生产线,大大降低了生产成本。在装配线上,T型车的零件是标准化的,维修费用急剧下降。工程学和其他领域,如科学和艺术的区别在于,它必须考虑成本,包括开发成本、推广成本、使用成本和维护费用。当工程师开发系统和工具时,他们必须权衡收益和成本,并尽量以最小的成本获得最大的利益。

我参与了Office 2007、Office 2010和Office 2012的SharePoint的开发,具体参与了元数据提取和企业搜索功能的开发。我的研究团队开发了文件元数据自动提取工具,它有两个方法:CRF和SVM。CRF比SVM高一个百分点,但是在提取的代码量方面,CRF比支持向量机多几倍。SharePoint的架构师Meyerzon讨论了使用哪种方法?Meyerzon毫不犹豫地回答:当然,SVM,因为它的精度只有1个百分点,但是开发和维护所需的代码量要少得多。对于产品来说,开发成本是一个不考虑因素。

对于工程师来说,上帝是存在的!只有精雕细琢,潜在性的工作,才能做项目的项目。好的系统和工具是由位和位抛光的。工程师必须不断磨练你的技能在实际工作中,为了达到精湛的工艺,熟练的,想要我的房间有奶牛,就像卖油翁滴油不溢油。

在NEC的案例中,工程开发团队的负责人hamada从他那里学到了很多编程技巧。特别是在他的指导下,开发了TopicScope的核心算法。我不是程序员,我只有普通的程序员,但是我的同事们说我的代码很好,条理清晰,结构良好,而且很精致。

这是因为我花了很多时间在hamada的影响下编写代码。项目的设置和文档的分配都经过仔细的选择,并且函数和变量都是经过仔细的命名的。系统的效率不断优化。写程序,拿出一段时间检查,评估,修改,直到找不到问题,但加入微软后,几乎没有时间写代码,我希望以后能做一些编程工作。

从实际工作

这些原则很简单,但做起来并不容易。在实践中遵循这些原则,培养成为一名优秀工程师的习惯是很重要的。训练自己直接解决问题,系统地解决问题,从用户的角度解决问题,并考虑用利益和成本来解决问题的能力。不断提高你的专业技能,努力工作以获得细节。你必须认识一些接近的优秀工程师,甚至可以把他们作为一个例子,虚心向他们请教,了解他们的长处,提高他们作为工程师的素质和能力。另外,从失败中学习,从失败中学习是非常重要的。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171223A09T4D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券