现代软件工程系列 学生精彩文章(7) 宝贵的教训

from http://codecanvas3706.spaces.live.com/blog/cns!5A77585898179960!205.entry 

[当学生的时候, 最好犯一些错误,  经历一些失败.  不经历一些惨痛的失败, 难道要到工作的时候才失败么? ]

个人的失败感言

记得在读完了《梦断代码》之后,我也只是为chandler项目感到一点点惋惜,感觉软件有那么一点点难做。但是今天我却从我的失败中体会到了他们的另外一种心境。我不知道为chandler花费了3年的精力,为chandler费尽心血的卡普尔在项目失败的时候,承受了多大的打击。而我所能体会到得是:将近两个星期,每天7个小时的精力付之东流之后,有一种让人窒息的失落感。软件难做,这不是假的!也许程序员必须在这种现实的无奈和郁闷中成长。

今天凌晨。无意中搜到的MSDN对hook的定义把我对于分程序音量调节的想法,思路全都被给否定了,所有的工作必须从头开始,可是时间已经不够了,无奈,只能把它给砍了。

本来我是想通过api 钩子勾住进程向系统发送的特定请求,然后再调用自己的逻辑代码来控制声音消息的播放,来达到分程序音量调节的目的。可是,hook的定义是:

A hook is a point in the system message-handling mechanism where an application can install a subroutine to monitor the message traffic in the system and process certain types of messages before they reach the target window procedure.

Hook只能勾住系统向窗体发送的消息,不能勾住进程向窗体发送的消息。我这颗幼小而脆弱的心灵就这样被他深深地刺痛了。

现在只能总结一下教训了:

1. 基本上我从来就没有用过windows API,对其一无所知,这使我花费了大量的时间和精力在api的入门上。我觉得使用一种你完全不熟悉的技术从事开发,效率可能为负值。今后对于一些基本的主流技术,都应该有一些了解。

2. 从今天的局面来看,我一开始的方向就是错的。我只是想当然的认为hook能够满足我的需要,而没有仔细的去看他的官方定义,如果能够早一点理解hook的官方定义,那么我也就不需要在这上面花费大量没用的精力了。我觉得,对于你想要使用的关键的技术,一定要有深刻的认识,或者至少应该理解其能干什么,不能干什么!而官方的定义显然是最重要的参考依据!

3. 不管做什么你不能一开始就是错的,方向性的错误真的是会要了人的命呀!所以软件开发不应该仓促地 入手,你花在分析阶段的时间越短,你开发的时间可能会越长,因为大部分时间花在了无用功上面。而我基本上是没有分析就入手了。

4. 一个人是很容易犯错的。在这一段时间里,基本上我是在孤军奋战,因为我们的项目分了好几个相互独立的功能模块,每一个人负责一部分。这就使得我对自己的东西只是有一种片面性的了解,团队其他人员没能给予我帮助,因为大家基本上都是这方面的新手。虽然说web是最大的知识锦囊,但是盲目的搜索很难获得实质性的东西。我觉得项目的开发小组中,至少应该有一个人是某一个方向的专家,这样的话才能够给予开发人员指导性意义的帮助。当然,我们现在都还是学生,大家都在学习,这个条件是不可能满足的。

以此共勉,希望cc小组能做得跟好,加油!!!

———林江

6:31 AM | Blog it

Someone on Windows Live

Favorite

Comments (6)

Picture of xin 邹欣

xin 邹欣 - Nov. 28, 2009 - Delete

很好的总结!
很多同学毕业找工作的时候,在简历上写自己“精通Windows 编程”,但是还不知道MSDN是什么东西。 你已经比他们好多了。

Picture of 健

健 - Nov. 28, 2009

江哥,说实话,看到这篇日志,面对你每天7个小时的经历投入,我很惭愧。
你比我执着,我一周就放弃了检测耳机插拔的工作。
感觉我上周末就这感觉吧。。。很失落!但是希望马上转向其他的方向,从新开始一块工作,一起加油!
说点儿个人的小观点:可能咱们组的分工导致每个人单独奋战,确实方向上和思路上容易出错和进入死胡同。
这样的分开开发,确实感觉不是我们在开发一个软件工程,而更像每个人开发一个小软件,然后最后拼在一起,少了相互的沟通促进,有些工作的落实和进度、难度、出现的问题,容易出现错误判断……

Picture of TEAM CC

TEAM CC - Nov. 28, 2009

同样身为小组成员之一,首先是对江哥深深的佩服,将最难的一块接下,每天7小时,这是我不敢想象的,惭愧惭愧。其次,说实话我也感受到了计划不足所带来的困难,前一段时间几乎天天都在群里向大家询问各种技术问题,我觉得有很多如果在代码之前的设计时就计划好的,那后来的工作会高效很多。或许这学期繁多的大作业让大家无心设计,只想着赶紧开始赶紧开始。之后便导致了每天至少5小时在软工上,可是进度却进展比较缓慢。设计出的东西达不到大家期望的要求。
还有一个星期就要发布alpha版本了。我们要争取把能做好的做好。小iDLE可能不一定会成为多么优秀的软件,但是它一定会记住我们CC小组每一位成员的成长。江哥加油!!!
----HP

Picture of TEAM CC

TEAM CC - Nov. 28, 2009

我的回复在下一篇日志里@ @
总之,对不起,以及万分感动>____<
——成

Picture of 超 周

超 周 - Nov. 29, 2009

读过,共勉!

Picture of Someone on Windows Live

Someone on Windows Live - Nov. 29, 2009

抱歉提出了hook的方向建议。相信江哥完成后就成这个方向的专家了!

 

 

PM之不得不说的一些话

看了林江的那篇日志,感动万分,也愧疚万分。从TeamWork正式开始到现在的两周时间里,从没有方向一无所知,和大家一步一步的走到这里,有很多感慨都没来得及说。这篇日志,算是个人总结,一表心声吧。

一、道歉

在《移山之道》里,关于PM是这么描述的

Program Manager(程序经理)做的是开发和测试之外的所有事情。有些同学会问 “我写程序都不用测试,那么除了开发和测试之外还有什么事儿?”在公司里开发商业软件可没有那么简单,比如有10个Dev和5个Test 要在一起开发下一个版本的MSN Messenger,那我们到底要做多长时间才能完成?什么事情先做,什么后做?项目进行了一半的时候,领导说我们改名叫Live Messenger吧,那这一改名意味着什么?如何调整进度?最后还剩下两个月的时候,看起来我们的确完不成全部任务,那要怎么办?你又不是Dev和Test的老板,他们凭什么听你的呢?这也是PM的苦。PM的乐看起来在于,他们可以全盘掌控一个产品,广泛了解一个行业,和用户打交道,代表团队出席各种会议,在公司内部的曝光度也比较高。

老师在课上讲到了,PM的工作,应当是总揽全局的。显然,我个人的能力还远没有满足对PM的要求。首先,我没有办法提供技术性指导,特别是在WindowsAPI以及线程的方面,我的了解也甚少。甚至是在分配任务的时候,我也对“耳机插拔感应”以及“分程序调节音量”的难度没有认识。陈健和林江两位同学遇到的困难,也有我的责任。他们两个人的辛苦,我是看在眼里的;而那种从头学起,资料难查又屡屡挫败的感觉,我个人又何尝不理解呢。同时,毋哲和张弓两人也是凭着自己的毅力,克服了那么多困难,完成了两个实际上很有难度的功能。

因此,在这里对CC组的全体成员们表示深深的歉意,以及敬意。

经过了这些事情,我也获得了很多教训。第一、选题上,不该在未了解难度的情况下,贸然定下一些功能,导致了小组成员的无谓辛苦。第二、分配工作上,同样不该在不太了解难度的情况下分配任务。第三、也是最根本的,自身知识的不足,才是导致上面两个问题发生的原因。

二、感谢

感谢CC小组全体成员!虽然是很老套的话,但是仍然要说。

为了完成这次的TeamWork,小组的每个人都付出了很多的时间和精力。之于我个人,我从小组开发的过程中获得了很多快乐。并不是敷衍的谎话,而是真的觉得,一个小组的人一起散发调查问卷,一起写一个博客空间,一起在群里讨论互助,一起去食堂吃饭,甚至在累的时候一起喊……这些,远比一个人去开发一个软件要快乐得太多。

似乎还没到收工的时候,因此就先打住吧。

总之,能够获得大家的信任成为PM,我十分感动。从此次经历中,我学到了很多。也希望今后,我能不再重蹈覆辙,成为一个真正值得信任的Program Manager。

4:24 PM | Blog it

Someone on Windows Live

Favorite

Comments (2)

Picture of xin 邹欣

xin 邹欣 - Nov. 29, 2009 - Delete

> 在《移山之道》里,关于PM是这么描述的...
我记得这些描述是在《编程之美》 中的。

Picture of TEAM CC

TEAM CC - Nov. 29, 2009

说实话:感觉你做得相当好了!我觉得咱们组的氛围真的很好,尤其我从一开始的由于自己的部分没有进展,而其他组员都进展很快,不好意思参加小组的讨论,到PM和组员的理解,积极加入咱们组的讨论,当时很感动。。。
这次软工,我一般多的时间也是在资料的查找上,尽管最后没有结果,但是对一个软件,或者功能的实现也有了进一步的了解……
team cc 加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度Linux安装火狐,deepin或Ubuntu安装最新版Firefox,并设置去掉标题栏

第一步&#xff1a;使用一下命令下载并安装Firefox################################### 先卸载老板Firefoxsudo rm -Rf /opt/firefox*sudo rm -Rf /usr/bin/firefoxsudo rm -Rf /usr/share/applications/firefox.desktop# 下载最新版Firefoxwget "https://download.mozil…

现代软件工程 作业 个人项目

MSRA Advanced Software Engineering Project: Individual Project - Word frequency program 2010/11/1 考察重点: 基本算法的实现; 基本I/O; 字处理; 程序效能分析; 简单测试用例 Implement a console application to tally the frequency of words under a directory (…

现代软件工程 团队博客作业 如何评价个人在团队中的绩效

在现实社会中有很多团队合作的项目, 他们是如何评价个人在团队中的绩效呢? 例如下面的情况: • 一群人把一堆砖头从A地搬到B地• 一个剧组排演话剧• 一群队员在职业球队踢球• 医生和护士做手术• 计算机系的一群老师教课• 一群学生做软工项目 (PM, Dev, Test) (这是重点) …

手势在c语言的作用,手势态度在人际交往中的重要性

一、人际交往的定义及其在社会活动中&#xff0c;人们运用语言符系统或非语言符系统相互之间交流信息&#xff0c;沟通情感的过程就是人际交往。人际交往是人们共同活动的特殊形式。任何个人或群体进行的交往&#xff0c;总是为达到某种目标、满足某种需要而展开的。二、人际交…

现代软件工程 结对编程 (I) 三维棋类游戏

Pair Project I 3D Board Game Turn a usual 2D board game into 3D by transferring board and game rules into 3D. Goal: how to collaborate in explorative situation (new requirement, new language, lots of ambiguity) 把一个二维的棋类游戏变成三维游戏, 两周时…

洛谷找最小值c语言,洛谷 P1478 陶陶摘苹果(升级版) C语言实现

原题地址&#xff1a;P1478 淘淘摘苹果(升级版)- 洛谷题目描述又是一年秋季时&#xff0c;陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果&#xff0c;这次她有一个a公分的椅子。当他手够不着时&#xff0c;他会站到椅子上再试试。这次与NOIp2005普及组第一题不同的是&#xff1…

现代软件工程 结对编程 (II) 电梯调度 算法和测试框架

[很多同学完成了上一个结对编程项目后, 很想知道下一个项目是什么, 我们这次要练习如何设计 接口, 测试框架, 和算法. ] [博客园的朋友们也可以试一试怎么高效地解决这个问题] 现代软件工程系列 结对编程 (II) 电梯调度程序 ------- Pair Project II Elevator Scheduler D…

c语言入门自学为什么要用,为什么要将C语言作为入门语言?

编程是向计算机发出指令以执行特定任务或执行指令的行为&#xff0c;目前专业行业和学术界使用数百种编程语言。一个人需要熟悉并且能够使用至少几种编程语言进行编程才能作为目前专业开发者的成功。学习编程的最好理由在于它对所有人开放&#xff0c;你不需要大学学位即可通过…

c语言case接收字符,switch-case-break:字符释义 | 新思维:C语言程序设计

【问题&#xff1a;字符解释】从键盘输入一个字符&#xff0c;当输入的字符为“y”或“n”或“c”时&#xff0c;分别显示“Yes”、“No”、“Cancel”&#xff0c;输入其他字符时显示“Illegal!”。#include int main(int argc, char *argv[]){char cgetchar();switch(c) {cas…

现代软件工程讲义 如何提出靠谱的项目建议

互联网时代对于创新者来说, 既是一个伟大的时代, 又是一个糟糕的时代。 你有很多机会做出影响世界的产品, 但是, 似乎任何想法都被别人想到过了, 做出来了, 上市了, 移植到各种平台上去了… 那么我们后来人除了羡慕别人生得早, 还有什么机会呢? 但是往往不经意间, 在同学们…

现代软件工程 教学计划 中国科学技术大学-微软亚洲研究院联合培养班

屈指一算, 我已经讲了3年 <现代软件工程>, 教了 4 个班。 2007 - 2009 清华大学理论计算机科学研究中心 (姚班) 2009 北航计算机系还有在北大合作的教学: 2007 - 2009 北京大学软件学院 (课程名叫 - 微软软件实现技术, 我是讲师之一) …

c语言程序设计主编张玉生教材答案,清华大学出版社-图书详情-《Visual Basic程序设计实验指导》...

前言Visual Basic程序设计实验指导本书是《Visual Basic 程序设计教程》的配套实验指导书&#xff0c;全书内容分为四部分。第1部分为实验指导&#xff0c;设计了18个实验&#xff0c;每个实验都是编者精心设计和选择的&#xff0c;所构思的实验内容选材合理&#xff0c;实验目…

基础知识很扎实 - 但是面试就是做不出来, 怎么办? (长, 慎入)

http://www.newsmth.net/bbstcon.php?boardMicrosoft&gid48785 有人提问: 看了很多的面试题之类的&#xff0c;感觉虽然自己数据结构与算法基础知识很扎实&#xff0c;但还是做不出来&#xff0c;所以请高人指点。 这个问题看似迷惑, 其实提问的人搞混了两件事 - “数据…

c语言中的for循环怎么提前终止,[新人求指教]51C语言编程可否用中断令循环结束提早结束...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼C51_C语言编程控制流水灯硬件电路 p0 接 led 8 个&#xff0c;P33 接按键使用中断2开机灯按1~8逐位闪烁&#xff0c;并循环按键后改为 两灯亮 的流水灯下面写了个程序#include #include #define uchar unsigned char#define uint u…

湖南工程学院+c语言程序设计人事档案管理系统,程序设计人事档案管理系统.doc...

课 程 设 计 报 告课程名称 C语言程序设计课题名称 人事档案管理系统专 业 电子信息班 级 1001班学 号 201001030112姓 名指导教师 肖伟平 黄哲 罗敬2011年 6 月 23 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计课 题 人事档案管理系统专业班级 电子信息1001班学…

敏捷软件开发宣言ndash;Manifesto for Agile Software Development

敏捷开发, 谁不会呀, 不就是 没文档, 出活快, 用户说啥都能改?下面是一个笑话, 王屋村的大牛说 - 我最近转手接了一个活, 完事能挣四五万, 我拿过图纸一看, 不就是盖一烟囱吗? 我们是敏捷 (Agile) 的团队&#xff0c;要文档作甚? 马上开始干活&#xff01;都快盖好了&…

2015电大c语言,2015电大本科C语言程序设计A试题汇总.doc

2015电大本科C语言程序设计A试题汇总2015年电大本科《C语言程序设计A》一、单选题1&#xff0e;在每个C语言程序中都必须包含有这样一个函数&#xff0c;该函数的函数名为 A 。A. main B. MAIN C. name D. function 2&#xff0e;每个C语言程序文件的编译错误分为(B)类。 A. 1 …

现代软件工程 - 代码量等于树叶量

我 2008年在清华大学上<现代软件工程> 的时候, 和同学讨论了代码量的问题。 同学说&#xff0c;许多相似课程都有“代码量”的要求&#xff0c;就是说软件工程的项目选题如果没有到一定量的代码&#xff0c;就不能算合格的选题。 老师助教专门花时间分析学生的代码是否…

计算机二级考试c语言公共基础知识,全国计算机二级c语言公共基础知识考试内容.doc...

全国计算机二级c语言公共基础知识考试内容全国计算机二级等级考试的笔试包括基础知识和程序设计两部分&#xff0c;其中基础知识占30分。以下是由关于全国计算机二级c语言公共基础知识考试内容的内容&#xff0c;希望大家喜欢!全国计算机二级c语言公共基础知识考试内容一、C语言…

现代软件工程 其实还是人的问题

在《现代软件工程》这门课程上&#xff0c;大家分成6-7人的小组进行项目开发&#xff0c;有项目经理 (PM)&#xff0c;有开发人员 (dev)&#xff0c;测试人员 (test) 等。不久就有PM说&#xff0c;怎么小组里有些人就是不干活&#xff1f; 最早&#xff0c;大家假设所有人都是…