如果你想走科研为主的道路,或者你想做和计算机体系结构、算法、硬件相关的工作,那么建议你读CS,否则二者差不多。当然,在中国,这还要看某个具体大学的水平如何, 是否真的有计算机科研的实力。
给大家一个实践题目:
- 做个视频采访。在校园里,找到计算机系的老师或者研究生,问他们,请问你发现了、或者正在研究哪方面长期的、客观的真理/li>
- 找到软件工程学院的老师或者研究生,问他们,请问你在软件构建方面取得了哪些实际结果,总结了什么成熟的实践方法/li>
问:一个好的产品经理如何提升需求分析的能力并控制沟通成本/strong>
邹欣:我先说一个故事,我的一个同事爱好葡萄酒,要成为评酒师,于是他就参加了各种学习班,并且每天做家庭作业:
- 拿四瓶不同的酒,撕掉标签和其它标识。
- 喝掉这些酒,每次换酒之前还要漱口,然后分析每一种酒的口感,风味,以及各种特点,并写下来。
- 和标准答案对照,总结自己的差距。
第二天继续。第三天继续。
后来他的肝受不了,他就喝酒不下咽,马上吐掉。
用上面的例子做参照看看中国IT行业产品经理的情况,我认为,绝大部分产品经理的分析能力都有很大的提升空间。很多产品经理的 “分析能力” 体现在看看微信,微博上的文章,然后转发给团队。这当然是远远不够的。医学院的学生要解剖尸体,MBA的学生要读案例,写案例,为何计算机行业的人生转发一下微信就够了不够,一个产品经理至少要分析本行业和几个相关行业产品的前10名,对每一个产品仔细使用,研究(相当于喝酒),写出研究 告。自己独立写完10到50个 告的产品经理,全中国有多少呢/p>
而且软件产品比葡萄酒要复杂得多,需求从哪里来自好些地方:
- 从用户明确的反馈来
- 从用户不明确的反馈来
- 从各种技术发展的趋势来
- 从各个利益相关者来
- 从各个监管部门来
- 从产品技术团队来
怎么分析、排序、验证、管理这些需求看《构建之法》第八章。
在软件工程的教学中,我们也要求学生团队做产品分析作业,请看部分学生团队的回答(link, link2)。这种作业显示出他们花力气去分析了么们会是优秀的产品经理么/p>
关于“控制沟通成本”,不知道你具体指的是那些成本需要控制。把分析 告写好,可能沟通起来成本会降低。
问:目前我自己(异步 区用户)的软件开发团队就几个人,因为人手和技术都有些欠缺,基本上以实现功能为目标,没有完全根据软件工程的过程进行开发,请问如何从0到1建立起一套切实可行的基于软件开发过程的体系呢/strong>
邹欣:如果你的团队把功能都实现得非常好,用户都满意, 而且团队成员也愿意继续做下去,那么,这个团队肯定不是在 0 这个水平。 你可以做下面的几件事,帮助团队把原来不成文的、零散的协作方式变成有记录的、互相协调的流程和共识:
- 如果团队新来了一个成员,他能否只看一个文档,不用和其他人交流,就能把最新版本的源代码构建成一个能运行的软件,并运行一些基本的测试用例如果这个文档没有,那就把它写出来。
- 如果这个团队成员要修改代码,他能否只看一个文档,就能领会本项目的设计规范,代码签入规范,并且把代码签入/li>
- 如果新来的员工不是工程师,而是一个产品经理(!),而且他发现了这个产品的一个问题 (bug)!那么,你是否也有一个文档/ 站,介绍产品的各个版本,每个版本都做了什么,有什么经验教训去的bug 都在什么地方,如何记录一个bug/li>
把这三种文档做好(可能要经过几轮改进),让大家都同意,就已经有巨大的进步了。其他的方面,请看《构建之法》、《人件》这些书。 碰到问题就去研究并解决问题,你没有必要非得去外面请一个 高大上的“软件工程的过程”的牌位到家里供着。
问:对于架构的大方向或非常复杂的架构,我(异步用户)一直认是敏捷开发方式无法处理的。因为这需要参与者的水平比较高。而敏捷方法中大都没有超级程序员或架构师的位置。 请问您是怎么看待敏捷的其是大型软件的开发中,敏捷是否有一席之地/strong>
邹欣:首先,敏捷对于不迷信的人来说,是好处大于坏处的。请看酒后的敏捷。
其次,大型软件是由各种小型模块组成的,如果你把各个模块之间的关系变得比较松耦合,那么,各个小型模块是可以由小型团队来控制它的开发流程,对吧果你说的大型软件是各个模块紧密耦合,还有很多意大利面条式的代码,而且时间紧,任务重, 那么,各种软件开发方法都是无力的。
问:创新更多是需要领域内的一定的学术或技术积累,还是更需要像阿基米德那样的“灵光闪现”者说,创新者大多来自于务实派,还是空想派/strong>
邹欣:这个问题,请看《创新的迷思》系列博客,里面提到了很多和创新相关的书籍,也可以参考一下。
问:您为什么会对软件工程教学有这么浓厚的兴趣,以至于投入这么多精力去做这件事/strong>
邹欣:我1991年从北大计算机系本科毕业,不久就出国念书和工作了。2005年,我回到北京,在微软亚洲研究院工作。由于工作的关系,我走访了好几个学校的计算机系和软件学院,还作为工业界的代表,参加了一些软件学院的评审。我当时想 “十几年过去了,这些学校每年都说继续深化改革,即使每年深化改革改进了5%,这些年积累下来, 现在大学的软件教育一定是非常不错的… ”, 没想到看到的情况吓了我一跳(请看这里,评审感想)。我刚开始讲软件工程和软件开发培训的时候,水平也一般,不过,在给同学和实习生讲课之后,看到反馈还不错,就继续做下去,每次上课,都在上一次的基础上改进一些,同时也把自己学到的知识和教训加进去。
问:您在推行软件工程的创新教学方法的这几年遇到了哪些方面的困难如何应对的/strong>
邹欣:首先,这个教学方法中的很多元素并没有什么“创新”的地方,只不过是国外大学习以为常的做法,或者是中国大学本来就要求做到的。大家觉得“新”,可能是看到这样大运动量,严格的训练居然搞成了,同学们觉得的确有收获,而不是“进一步深化改革”,“打造一个全新的教学平台” 之类的表面文章,因此觉得“新”而已。
要做成一件不一样的事情,特别是在天朝的大学,困难总是很多的。经过几年的努力,现在我们形成了这样的循环:
- 学校老师开课,使用《构建之法》为教材
- 我们给学校老师配一个有工业经验的助教( 酬来自学校或者我的书的版税)
- 所有学生的作业都上 发布,助教和老师在 上批改作业
- 奖励最优秀的同学和团队
- 收集老师和学生的反馈,改进下一个学期的教学
我们希望和一些学校进行长期的合作,把更多的专业课,教学体系都改进到符合教学规律,符合现代人才培养理念的状态。
最大的困难是心理上的,很多人都有“过早退出”的心理问题。
- 教师和助教想改革,但是能坚持一个学期么持续改进么/li>
- 学生想学好,是真的付诸实践,还是在琢磨“如何以最小的努力,过了这门课”/li>
如何应付这些困难呢好调整自己的期望值,选择能够合作的对象来合作,在坚持中不断改进,在争执中协调步伐。
问:您强调“做中学”,那么在软件工程的学习当中,理论学习和技能训练是否有先后顺序和侧重/strong>
邹欣:如果没有理论的知道,技能的训练是事倍功半;如果没有技能的训练,工具的支持,来自现实世界的反馈,那么理论只是空中阁楼。
大家如果没有写一万行代码,没有和几个同伴做出一个有人用的软件,那么还不用担心这个先后顺序和侧重的问题。
邹欣背景简述:
1996–2003年,邹欣在微软Outlook团队从事开发工作;2003–2005年,他在微软内部质量工具团队和Visual Studio团队负责软件项目管理工具的开发;2005–2012年,他担任微软亚洲研究院技术创新组研发主管,负责研究成果的产品化和创新项目;2012–2014年,他担任微软亚洲互联 工程院首席研发总监,负责必应搜索客户端、必应输入法、必应词典等产品。
2014–现在,担任微软Windows工程院首席研发总监,负责Edge,Cortana, UWP App 在中国的发展。
相关资源:糖烟茶酒行业管理软件 烟酒进销存店铺销售收银管理系统
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!