他山之石,可以攻玉 ——“Smart Code” Team学习心得

时间:2023-01-06 21:49:07

by Dongfei Yu

在微软亚洲研究院的日子眨眼间就过去了两个半月,传说中的“高级软件工程”课程也在上周正式开讲了。在激动与紧张中上了第一节课,也聆听了12届师兄师姐介绍了课程经验。今天花了一整天时间阅读了13届学长的博客,主要细读了”Smart Code”团队的完整博客。下面我根据对软件工程的了解以及个人的一些认识谈一下自己的想法。

· 关于软件工程

维基上是这样定义软件工程的:软件工程是一种应用于软件设计开发/运行/维护的系统化的/有严格训练的/可量化的方法或者这些方法的研究,简单说,软件工程就是软件的工程化设计。软件工程是一项工程,不同于科学研究,不同于一个简单的程序或demo,它有实体产品的存在,有成熟的开发流程,有特定的客户人群,有一定的市场需求,而且相当一部分产品可以直接创造社会和经济价值。

因此,软件工程更贴近市场,更靠近商业。我想通过这门课程,我们可以接受和学习商业产品的研发过程和科学方法的训练,提升做产品项目的经验,这对于我们刚刚起步的科研生涯会起到很重要的作用。

· 关于”Smart Code”团队的项目

选择”Smart Code”团队的项目主要有两个原因,一是”Smart Code”团队在上届“高级软件工程”课程中表现非常优秀,据说正在被邹欣老师产品化,另一方面我个人的研究方向是多媒体搜索与挖掘,对搜索结果优化这个课题很感兴趣。

“Smart Code”团队主要对Bing的搜索结果以树的形式展现出来。在之前,我了解过一些关于可视化搜索以及可视化搜索推荐的研究,所以对这个团队的课题很感兴趣。我认真观看了这个团队每一天的博客,对他们的工作做一下总结以及我自己的一些看法和感悟。

在算法设计上,“Smart Code”团队的做法很简单,主要是调用Bing 的API得到某个query的news搜索结果,然后按news产生的时间对搜索结果进行排序。但这个项目的核心工作在于UI的设计,需要用图形结构把结果展示给用户。对于根空间,树干,叶结点的设计都需要不断调整优化,从而带给用户最好的体验。

人机交互技术把人与机器的距离拉得越来越近,从最原始的文字显示,到后来各种又炫又酷的动画效果,以用户体验为中心的观念已经深入每一个产品设计人员的心中。我在中科大图书馆图书检索系统上看到如下右图的可视化检索(3D tag Cloud),通过鼠标的移动,热门检索词会发生滚动,能带来很佳的用户体验。

他山之石,可以攻玉 ——“Smart Code” Team学习心得 他山之石,可以攻玉 ——“Smart Code” Team学习心得

关于可视化搜索,我想基于右图所示的动画界面设计一个query-dependent的推荐系统。具体细节将在随后的Research Proposal中给出。

· 关于时间管理

时间管理是永恒不变的话题。随着信息时代到来,世界变得越来越精彩,我们面临的诱惑也越来越多,海量信息给我们带来工作和生活上便利的同时,也给我们带来了负面影响:自制力越来越差,工作学习效率越来越低,制定的计划越来越难以完成。时间管理是一门很深的学问,也是我们在即将到来的科研生涯中必须训练的一种能力。

团队建立之后,我想每个团队都会制定一份雄伟的计划。我在学校参加过”RoboGame”机器人比赛,时间大致也是两个月。那次项目让我收获很多,也给了我很多教训,其中最深刻的就是如何制定合理的项目时间表。当时项目开始前,我们制定了厚厚的一本项目计划书,执行时却几乎没有按照计划执行。因为每一项计划我们几乎都是几个人一起拍脑瓜想出来的,没有调研,没有NABC分析,没有整体框架图和可行性的具体方案及时间表。最终导致项目几乎在deadline时整个系统还不work.

设计一个系统与在学校做课程设计神马的有很大区别,课程设计有简单的明确的执行方案,而系统从客户需求,相关工作调研,框架流程设计,具体方案设计和执行,后期调试和优化,性能评估,产品发布和维护等一系列流程都要走通一遍,这对人的各方面能力都是一个锻炼。

· 关于团队合作

团队合作几乎是每个项目前必谈的话题。团队合作一点也不比项目本身简单,甚至更难以处理。如何进行分工,如何通过组会讨论解决目前的问题,如何对团队的组员形成有效的奖惩机制,如何让每个人的工作都能恰到好处,当组员对问题的想法不一致时如何解决,当项目遇到难题久未进展时,这些情况都是我们在团队合作是要面对和解决的。

· 关于课程目标

最后一部分,我想为自己制定一个课程目标,弄清楚我想从这门特别的课程中学到什么。首先,这门课一定能很大程度上提高我的编程能力,缩短EE专业的我与CS专业同学在编程方向的差距。其次,我将获得严格的科学的产品开发经验,锻炼动手能力。然后,我会拥有与更多大牛合作的机会(悄悄告诉你,我们队的大牛可不只一两个,哈哈),在合作中向他们学习。最后,这一定是一段很有意义的经历,绝对比呆在学校过大四狗们堕落的日子要好得多。嗯,那就好好学习,天天向上吧。

不知不觉码了这么多字,最后鼓励一下自己和队友们吧:Believe it, and do it!