0x01 :采访的学长简介

If you weeped for the missing sunset,

you would miss all the shining stars

梁野,北京航空航天大学计算机学院研究生一年级,本科就读于北航计算机学院,大三上学期奔赴新加坡国立大学交流实习,在新加坡国立大学开设的软件工程课程上,团队项目设计方案为“TASKey Manual”(任务管理器含自然语言解析功能),主要负责前端界面的设计(Front End UI Designer)和时间计划的掌握(Deadline Watcher

0x02 :访谈,Hola

There are no trails of the wings in the sky,

while the birds has flied away.

Q1:学长,您好,您在新加坡国立大学攻读了大三上学期的课程,当时的软件工程课程设计是怎样的一个安排呢?个人项目,结对项目,团队项目都是怎样的一个时间安排呢?

A1刚才听到你们吐槽软件工程课程的时候感觉,新加坡国立大学的开设方式和你们也有一定的区别,在十二周的课程时间中,前两周是非常基础的个人项目,开发语言限制在C/C++/C#Java之间,此个人项目更注重的是程序设计语言的熟练度,为之后的团队项目做铺垫,所以难度上相对较小,比较轻松就完成了这一个人项目;至于团队项目,当时的团队项目几乎是从零开始设计,十周的时间,四人的团队,共同去开发这样一个brief project,不过每周的讨论会占据大量的时间,可能汇报时间会大约两小时,并且助教全程“监听”你们之间的沟通,并适当提出一定的意见

Q2:既然这样,在课外讨论的时候,而不是课内的“监听”的沟通,你们一般都怎样处理呢?都会谈论些什么呢?

A2这个问题真的是相对宽泛了,我们软件工程四人组由两个新加坡人,一个柬埔寨人和我共同组成,助教是标准的印度人,因此在交谈的过程中几乎全程都使用英语,当然讨论的时候最理想的地方自然是咖啡厅了,但有时也会在聚餐的时候偶尔讨论下?谈论的话题其实相对比较集中,在初期搭建框架的时候,这一部分可能需要首先完成需求上的分析,探讨时间节点的设置,整体功能的划分和架构,事实上这些内容都会消耗很多时间,因为设计的基础是比较重要的,而成员们一般都问题的时候也都会直接提出来,所以沟通的过程更多的是一个修缮想法的过程,但后期的项目,基本都集中在接口的统一和提供方面了,相对较为单一吧

Q3:那学长,你们聚餐的时候都吃什么呢?(欢脱的跑题QQAQQ)

A3新加坡其实当地美食还是蛮多的,比如斯里兰卡的大螃蟹,甚至蟹腿会有铁棍山药那么粗,因此人手很难将它掰开,厨师会给你一把铁钳子帮你敲碎;而其他的美食其实很类似广东一带的风格,海南鸡饭,咖喱和椰浆混合的LASA,都是蛮不错的选择

Q4刚才咱讨论着就跑题了(:D),回归正题,您在项目中担任的是一个怎样的角色呢?是否使用了什么代码托管平台呢?

A4刚才咱们说道代码托管平台吧,我们在项目开发的时候是用Google Code来进行项目同步,其实当时Goolge Code平台本身的确不错,项目的同步啊,commit的索引啊,使用起来也是蛮方便的,但近年因为它已经很久没有进行整体框架上的升级了,最近也要关闭了,还是蛮遗憾的;至于角色吗,我们因为是四个人的一个小团队,所以本身的职能划分会有一定的交叉,我是主要负责负责前端界面的设计(Front End UI Designer)和时间计划的掌握(Deadline Watcher),同时,和你们其实还有所不同,我们的分数评定和展示其实更注重团队的合作,而不是最终项目产品的使用问题,所以每周的讨论过程,都是一个助教负责两个人,助教来“监听”两个人的交流,从而分析小组协作时的能力,不过当然项目产品要求严格这是必须的。而前端的设计,最主要的交流集中在功能开发的成员上,因此经常和他讨论功能和UI的协调的确是必需的一部分。

Q5当时您印象最深的一个或多个项目,主要是什么方向的呢?他的主要用户需求是怎样的一个概况?

A5这个产品我给你们展示一下当时设计初期的构架和最终的文档吧

 

 

1   TASKey Manual的构架

  “Thank you for choosing TASKey! Here at the TASKey development team, we share your concerns on the rigidity and steep learning curve of the other task manager apps.  Therefore, our aim is to provide you with a simple and hassle-free experience as you plan ahead with your day’s/week’s tasks. TASKey allows for flexible command formats that will help “busy” folks like yourself to “quick-add” a task so that you can get down to doing the actual work quicker. So remember, TASKey is here to help you!”

这是我们当时产品的一段摘要,如果用最朴素的话语,我们可以解析你输入的句子,并从中提取出重要的关键字如起止时间,任务核心,主语,宾语等相关信息,并将它整理为一个关键字组成的表格式的摘要,因为当时教师规定了团队项目的题目,所以我们所有团队做的产品基本都是它。

Q6对于您当时做的团队项目,成果如何呢?当时所做的项目有多少用户在使用?现在是否还在继续维护和有人使用吗?

A6成果当时的确没有衡量清楚,当时产品的下载量和具体流量也的确没有很好的计算,但当时的项目至少自己也会用一下,不过是在Windows平台略加修改,优化为一个便签的模式,可能更清晰和简单一些吧,但随着手机近几年类似软件的发展,我想,真实用户可能不会很多吧,维护和使用是由团队的Leader继续来完善,不过因为前端方面一直没有很大的修改,所以,就是这样吧

Q7当时的项目源代码和文档是否仍继续保存呢?能够给我们的新团队继续开发和维护吗?

A7当然啊,但是我并不建议你们在我们软件的源代码上继续修改,因为软件本身因为需求的局限性,所以可能添加功能等会比较麻烦,但我发给你来仅当做参考吧

Q8在项目开发中,你有着怎样的经验或者教训分享给我们呢?比如团队的协作,各个BUG的调试,单元模块测试,架构,调试等等

A8其实项目的开发,最重要的就是细化和提问,比如产品经理负责产品的可行性分析,需求挖掘,沟通整个团队与发现问题,项目经理负责产品的技术框架,统一接口与规范等技术层次上的统一,但实际上,更重要的是如何更好地提问题来帮助架构师进行完善,比如“需求是从哪里来的?目标客户是谁?有多少人有这样的需求?这个需求紧迫吗?他们的痛点是什么?场景是什么(用产品之前/之后)?需求满足之后数据和指标上会有什么表现?”同时,对于开发人员,务必也要确保有良好的注释风格并且可以描述清楚自己的实现思路,代码出问题不互相指责,首先寻找自己的问题,沟通和协作是必要的,当然,队长不要忘记请客就可以了(笑脸)

Q9最后你想对学好软件工程这门课有什么建议呢?

A9只能说,LEARNING BY DOING~祝你们好运~

0x03 :杂谈,照片

To the world,you maybe a person.

But to a person,you maybe the world.

BugPhobia,愿一切安好

你好,BugPhobia

访谈:BugPhobia’s Brief Communication的更多相关文章

  1. Serial Communication Protocol Design Hints And Reference

    前面转载的几篇文章详细介绍了UART.RS-232和RS-485的相关内容,可以知道,串口通信的双方在硬件层面需要约定如波特率.数据位.校验位和停止位等属性,才可以正常收发数据.实际项目中使用串口通信 ...

  2. RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)

    前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview ...

  3. RS-232 vs. TTL Serial Communication(转载)

    RS-232串口一度像现在的USB接口一样,是PC的标准接口,用来连接打印机.Modem和其他一些外设.后来逐渐被USB接口所取代,现在PC上已经看不到它的身影了.开发调试时如果用到串口,一般都是用U ...

  4. MySQL远程连接丢失问题解决方法Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0

    最近远程连接mysql总是提示 Lost connection 很明显这是连接初始化阶段就丢失了连接的错误 其实问题很简单,都是MySQL的配置文件默认没有为远程连接配置好,只需要更改下MySQL的配 ...

  5. ORA-03113: end-of-file on communication channel

    导致的原因,可能是异常断电导致文件状态不一致. SQL> startupORACLE instance started. Total System Global Area 1653518336 ...

  6. 《C++ API设计》作者Martin Reddy访谈问题征集

    Martin Reddy博士是软件行业的一名老兵,有着15年以上的从业经验,共撰写过40多篇论文,拥有3项软件专利,并与他人合著了Level of Detail for 3D Graphics.另外, ...

  7. Mac下遇到 'reading initial communication packet’ 问题

    今天在开发过程中,一个单位跑的好好的项目,在家中的Mac下运行时,遇到了下面这个错误:   "Lost connection to MySQL server at 'reading init ...

  8. PIC32MZ tutorial -- UART Communication

    At this moment, I accomplish the interface of UART communication for PIC32MZ EC Starter Kit. This in ...

  9. 跨平台开源通讯组件elastic communication

    elastic communication是基于c#开发支持.net和mono的通讯组件(简称EC),EC的主要目的简化mono和.net下的通讯开发难度,通过EC可以非常快速地开发基于mono和.n ...

随机推荐

  1. 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位

    对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢.   一.关于POR(Power-On ...

  2. Mac显示器不亮

    上班的时候mac连接上显示器,但是显示器并没有亮,于是乎各种插拔ing...偶尔一两次还可以接受,但是天天这样小身板招架不住呀,于是乎终于找到一个可以让显示器快速亮起的方法,遂赶紧分享给各位小火鸡~ ...

  3. 基于C#的单元测试(VS2015)

    这次来联系怎么用VS2015来进行C#代码的单元测试管理,首先,正好上次写了一个C#的WordCount程序,就用它来进行单元测试联系吧. 首先,根据VS2015的提示,仅支持在共有类或共有方法中支持 ...

  4. [经验总结] 在 windows 命令窗口中运行 python 脚本时提示 ModuleNotFoundError: No module named 'xxx'

    先给出的代码和目录结构 获取CPU代码如下: # -*- coding:utf-8 -*- ''' Created on Sep 10, 2018 @author: ''' import sys im ...

  5. firefox event.preventDefault(); 没有效果的解决方案

    $('.sub-list-click a').click(function (event) { event.preventDefault(); var sub = $(this).parent(&qu ...

  6. 【BZOJ2820】YY的GCD

    [BZOJ2820]YY的GCD Description 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的( ...

  7. C#の----Func,Action,predicate在WPF中的应用

    首先介绍下,winform中可以用this.invoke来实现:wpf中要使用调度器Control.Despite.invoke: (Action)(()=> { })和 new Action ...

  8. HDU - 5078 水题

    题意:最大困难=距离 / 相邻时间 #include<cstring> #include<cstdio> #include<cmath> #define ll do ...

  9. dd测试

    time dd if=/dev/zero of=/root/test.db2 bs=200K count=10000 oflag=dsync

  10. JS进阶之---执行上下文,变量对象,变量提升

    一.结构顺序大体介绍 JavaScript代码的整个执行过程,分为两个阶段,代码编译阶段与代码执行阶段. 编译阶段由编译器完成,将代码翻译成可执行代码,这个阶段作用域规则会确定. 执行阶段由引擎完成, ...