在前两节课中, 老师给大家描绘了关于软件工程和创新的理论和美景。 那么在实践中, 我们的软件工程师是怎么创新的? 我们请两位清华的校友和大家聊聊他们自己做的项目, 也和大家探讨一下软件工程师的工作, 生活和职业发展。

分享题目1:  Sora Project  - turn cutting edge research into great product

SORA 被业内专家称为最近几年在无线领域最重要的论文之一, 论文中提出的思想是怎么变为现实的呢?

分享题目2:   How Engkoo Innovates

做中英文词典/翻译的应用软件,这不是老一套么? 还能创新么? 请看微软亚洲研究院的回答:

课程的详情在这里。

============================

这次经验分享是由我们在一线工作的工程师主讲。

很多人对微软研究院的 RSDE (Research Software Design Engineer) 这一职位不了解, 我从这本书里抄下来几段话:

Q:微软及很多其他软件公司都有不少研发职位,名称不尽相同,而且还是缩写,能不能讲解一下?

A:不少同学对微软公司的各种研发职位(Discipline)并不太了解,我们在面试进行到一半的时候,经常发现一个应聘者其实更适合做其他类型的工作。当然这时我们可以调换面试的方向,但是对应聘者来说总不是一件好事。我刚好在BBS上看到了一篇文章,这篇文章从个人的角度出发,非正式地讲了R&D各个方向的特点,虽然并非完全正确,介绍也不一定全面,但是我们不妨看看。

aR:Associate Researcher,副研究员,主要在“R&D”的“R”这一端,工作是读论文,提想法,被否决后再提想法(如此反复N次),赶在截止时间之前提交论文。AR的想法得到初步验证之后,还要跟其他部门推销自己的想法,争取把想法变成产品。AR的乐趣是能在一个领域中深入研究,发表论文,申请专利,每个专利申请(无论是否批准)都能让自己得一块黑色立方体石头(如图)。好多人的桌面上堆了不少石头,好像他们没什么苦恼。

AR有时做的事情和RSDE差不多。AR以后会成长为 Researcher(研究员)、高级研究员,杰出科学家, 等等。总之,最后就成了大家小时候特别梦想做的“科学家”。

图1 申请专利得到的石头

Dev:正式的名称叫SDE(Software Development Engineer),是在“R&D”的“D”这一端。他们在一个产品团队中,按照严格的流程开发产品。MS的一个产品发布之后,所有成员会得到一小块铁皮(学名叫“Ship-it Award”,如图2所示),上面写着产品的名字和发布日期。资深的Dev会收集到不少,他们会认真地把这些小铁皮整齐地贴起来,摆在办公桌最高的位置上。Dev的乐不少,这里就不列举了。但是苦也有不少,比如产品的周期有时非常长,过程定义得非常完备(有时不免觉得太完备了);比如要维护老版本;比如要用比较成熟的技术,而不是用最时髦的东西来开发产品。另外,Dev要负责一个或几个模块,这些模块不一定和最终用户打交道,未必是整个产品的核心模块。做一个好的Dev要生活在代码中,对代码和平台的各种细节要非常熟悉,掌握非常底层的技术,有些人以此为乐,有些人则未必。Dev的职业发展道路很多,如果只想钻研技术,不乐意做很多管理工作,Dev可以成为非常高级的工程师,直到杰出工程师(Distinguished Engineer)。当然,Dev也可以成长为开发主管(Dev Lead)、开发总经理(Dev Manager),等等。

图2 Dev得到的小铁片Ship-it

Test:正式名称是Software Development Engineer in Test(SDET),简称为Test或SDET(读作S-DET)。这个职位看似没有Dev和aR酷,但是很有前途,首先中国的同学由于种种原因(不了解,看不起,做不来)不太愿意做这种工作,因此,公司找人非常急迫,相对容易进入。这一职位所谓的苦(也反映了一些人的偏见和误解)从传统意义上说,SDET得等着上家(PM/Dev)给你东西,你才能“测试”。然而现代软件工程要求TEST 从项目一开始就积极参与项目的规划,了解客户需求,制定测试计划,设计测试架构,实现测试自动化,等等。事实上这些都是开发的工作,所以他们叫 SDE in Test。而且SDET 能更深入地了解产品的各个模块是如何合作,如何在实际情况下被用户使用的。从代码之外理解程序,这是测试之乐。那种“产品发布前一个星期让测试人员来测一下”的情况在微软是不会发生的。用足球比赛作比喻,QA/Test就是最后一道防线.  如果你没有防守好bug,bug就会跑到顾客那里去,因此Test工作非常重要。Test的职业发展和Dev类似,一直到有专门管Test工作的副总裁(VP)。

PM:这恐怕是外界误解最多的行当,简而言之,Program Manager(程序经理)做的是开发和测试之外的所有事情。有些同学会问 -
“我写程序都不用测试,那么除了开发和测试之外还有什么事儿?”

在公司里开发商业软件可没有那么简单,比如有10个Dev和5个Test 要在一起开发下一个版本的MSN Messenger,那我们到底要做多长时间才能完成?什么事情先做,什么事情后做?项目进行到一半的时候,领导说我们改名叫Live Messenger吧,那这一改名意味着什么?如何调整进度?最后还剩下两个月的时候,看起来我们的确完不成全部任务,那要怎么办?你又不是Dev和Test的老板,他们凭什么听你的呢?这也是PM的苦。PM的乐看起来在于,他们可以全盘掌控一个产品,广泛了解一个行业,和用户打交道,代表团队出席各种会议,在公司内部的曝光度也比较高。Dev/Test/PM 在产品开发中各负其责,互相协助,为共同的目标努力。产品成功发布之后,他们都会得到Ship-it 小铁片儿。

RSDE:好了,我们最后看看RSDE(Research SDE),这是微软研究院一个比较特殊的队伍。RSDE的乐趣在于可以接触到各种最新的研究成果,并用它来解决挑战性的问题。RSDE的苦在于项目都是V0.1版,而且做得成功的项目大多数会转化(Transfer)到产品组中,由别人推向市场。
RSDE在和研究部门合作的时候,就要负起 AR和PM(甚至Test)的责任。刚开始,RSDE既没有R的黑石头,又没有D的SHIP-IT小铁片。RSDE参与的项目有比较大的风险,经常会不如预期,或者会失败(这也是科学研究的特点)。项目失败后,RSDE掩埋了项目的尸体,擦干自己的血迹,又得找新的领域和新的项目。RSDE 还有“创新”的任务,这个词人人都会说,但是要做出来就不是那么容易了,全世界有这么多人在琢磨计算机,你能在什么地方做得比其他任何人都更进一步呢?这也是RSDE 的乐趣吧。有些同学能力很强,兴趣广泛,但是一时也拿不准自己要深入研究哪一个领域,这时不妨来做RSDE。做得好的RSDE,他们的工作成果推进了研究,又走向了市场,这样就既可以拿到黑石头,又可以拿到SHIP-IT小铁片儿。我个人认为能有机会做 RSDE 是很令人自豪的事情,相当于参军当上了特种兵,很好,很强大。

Q:看起来真是眼花缭乱……

A:总之,每类职位都很重要,都有存在的理由,都有不错的发展前景,都有自己的苦和乐。微软有很多不同的机构和部门,这也意味着有许多机会,让有能力的同学尝试aR、Dev、Test、RSDE、PM的职位。

清华大学 现代软件工程 - 实战经验分享相关推荐

  1. 【实战经验分享】一劳永逸的解决网线随意热插拔问题

    [实战经验分享]一劳永逸的解决网线随意热插拔问题 参考文章: (1)[实战经验分享]一劳永逸的解决网线随意热插拔问题 (2)https://www.cnblogs.com/armfly/p/11818 ...

  2. 【线上直播】深度学习简介与落地实战经验分享

    分享嘉宾: 嘉宾简介: 郑泽宇,知衣科技联合创始人兼CEO,美国Carnegie Mellon University(CMU)硕士,畅销书<TensorFlow:实战Google深度学习框架&g ...

  3. RabbitMQ实战经验分享

    RabbitMQ实战经验分享 原文:RabbitMQ实战经验分享 前言 最近在忙一个高考项目,看着系统顺利完成了这次高考,终于可以松口气了.看到那些即将参加高考的学生,也想起当年高三的自己. 下面分享 ...

  4. Spring Cloud在云计算SaaS中的实战经验分享

    摘要 云帐房CTO张英磊基于自己的个人经验,分享Spring Cloud在云计算SaaS中的实战经验,希望能为大家带来一些思路上的帮助. 内容来源:2017年5月6日,云帐房CTO张英磊在" ...

  5. MongoDB实战经验分享

    2019独角兽企业重金招聘Python工程师标准>>> 转自: http://www.cnblogs.com/ymind/archive/2012/04/25/2470551.htm ...

  6. 基金知识汇总和实战经验分享

    基金知识汇总和实战经验分享 分享一份基金知识给大家,同时分享下个人观点: 引用PMP项目风险管理的经验,无论是玩基金还是股票都要清晰明确的认识到自身的风险承受力,通俗一点就是你最多能接受你投入的本钱亏 ...

  7. 北大软件工程与计算机,北京大学软件工程考研经验分享

    原标题:北京大学软件工程考研经验分享 为大家详细介绍北京大学软件工程考研经验. 在没考完之前,我就总想着考完了我一定要写篇长经验帖,考完了,又是忙着论文,忙着兼职,now!以下是这一年给我印象最深的两 ...

  8. IT实施计划实战经验分享:避免失败

    我们在之前文章<IT实施计划实战经验分享:如何制定>中描述了如何针对企业新的业务项目制定高质量的IT实施计划,例如首先针对新应用的设计和发布开发成熟的模式和方法论来实施标准化的流程等等.本 ...

  9. 微博scrapy爬虫实战经验分享

    微博scrapy爬虫实战经验分享 这两天想要爬一些微博的数据,在github上找到了开源代码,但是在实际使用过程中遇到了很多困难,在此做一下记录. 安装MongoDB 首先安装MongoDB,Wind ...

最新文章

  1. 基于SSM实现租房平台管理系统
  2. C语言经典例83-求0—7所能组成的奇数个数
  3. 老年市场是蓝海or沙漠?
  4. IDEA高级技巧:集成JIRA、UML类图插件、SSH、FTP、Database管理
  5. JavaFX将会留下来!
  6. [国嵌笔记][025][ARM指令分类学习]
  7. html设置在父元素底部对齐,如何将div对齐到父元素的底部
  8. 比大小 log_2^3 与 log_3^5
  9. 《从零开始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式...
  10. <PCI-E> PCI-E的 x1/x4/x8/x16 四种插槽区别
  11. [1] UI原型设计工具Pencil Project 学习系列----- 为什么选择
  12. 最全DNS域名解析流程及域名注册(细节!)
  13. 洛谷题集——乒乓球(思维、乒乓球比赛规则)
  14. 终于有人把 Docker 讲清楚了,万字长文详解!
  15. 外卖和快递行业数据_白领市场三分天下,外卖行业将何去何从?
  16. linux注册浏览器协议,在Linux系统上安装Beaker浏览器的方法
  17. css 动画 抖动,css3动画之上下抖动
  18. jdon(jdong)
  19. 用html制作搜狗搜索,详解基于搜狗搜索开发的微信公众号的爬虫系统(C#)
  20. 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):MPG:一种有效的自我监督框架,用于学习药物分子的全局表示以进行药物发现

热门文章

  1. .net core中不支持GB2312编码的问题
  2. python:更改pip源
  3. Linux 笔记 - 第九章 Linux 中软件的安装
  4. 简单的HTTP协议——《图解http》第二章
  5. 团队博客 一 需求分析
  6. PHP 魔术方法__set() __get() 方法详解
  7. SQL的经典语句(太全了)
  8. linux的常用操作——共享库
  9. Windows终止进程
  10. 如何获取filecoin_获得Filecoin币有哪些条件?