1

As you see, I’ve marked this post Number 1. Let’s leave the last post on “Dreaming in code” Number 0 :) This time, I will focus on the issue of PEOPLE, partly based on Chapter 0 and 1 in that book.

Why focus on PEOPLE? Think about our group, think about your group. What is the purpose of this course and projects we have done? To practice and improve our skills in C#? Obviously not. From IProject, to PProject, and the TProject we are currently doing, we are experiencing the process of dealing with more and more people, and then, more and more trouble.

2

It’s “difficult to produce computer software on time and under budget”. (Quotation around sentences, in texts below and following posts, means copying the original sentence from “Dreaming in code”.) In essence, is it really the time or money or experience problem?

Students in our class are all considered as programming masters, having written so many projects for professional courses, some even having OI experiences. But what happens in our group and your group? Exceptional examples:
1. A classmate complains to me that one member of his group violently expressed the impossibility for him to write any code.
2. A classmate in some group always promises to write code the next day, but his work actually starts a week later, because he always has unexpected social affairs.
3. In our group, Wu Yue modified a configuration item of the project on the server, and when Wang Jun checked out the next day, without an indication of previous change, could not even compile successfully.
4. A classmate in some group told his PM that he would post the first article about “Dreaming in code” on this Wednesday, because he planned to read the book that day. But he found on Wednesday evening that he didn’t have enough time to read, and moreover, he had already had plans for Thursday, so he eventually started reading on Thursday evening, and he is writing this post right now on Friday night.

It seems that the complexity of software development described in “Dreaming in code” can be applied to cases everywhere. Every company tends to hire people with best technical skills, tends to avoid work delay and short of money, but the dilemma appears again and again. So, it’s never a technical problem. It’s a matter of people, a matter of social behavior. Actually, we have met plenty of issues related to people in this course, like the number game. Let’s imagine such a situation: we, everyone in our class, go to hunt jobs in coding market. Which ones can end up as a successful developer in high positions? I think this is a serious question for us to think about.

The following paragraphs address several aspects of the PEOPLE issue, summarize some interesting viewpoints and sentences in “Dreaming in code”, and try to add some comments if applicable.

(To be continued. I will post the next article on Sunday evening. Perhaps this means I am going to post it on Monday morning.)

3

People form groups. Every group has its own interests. Just like the process of revolution in society, which is always dreadful as a result of interest redistribution among groups, software cannot meet everyone’s needs, and is reluctant to go forward. When the number of programmers and users both get larger and larger, this phenomenon is more likely to pervade. We can post a rule at will on the wall at home, but a national law needs consensus among the most prestigious heads in the country. Let alone all different types of user need, the thinking of programmers and users just Kannot Kommunicate. This idea is perfectly expressed in the book: Programmers count from zero, while users count from one, and this gap simply allows bugs to flow in and out.

People need communication. That is why software development is different from other engineering tasks like building a house. How to schedule multiple “workers” so as to see actual advancement? Complexity arises as tasks assigned to different members have different interrelationships. Some are serial, others parallel. When serial, “your estimates are based on someone else’s estimates”, so time to finish is hard to guess. Like a pregnant woman, how can you guess the time she will get pregnant again when the existing baby has not been born? How can you rely on other people’s estimates? In what criterion? Based on his rich experience in building large-scale systems? Based on the estimates of an IOI winner? “Software developers are typically optimists who assume that each bug can be fixed quickly and that the number of bugs will diminish”. It should be emphasized again, that this is a PEOPLE issue, not a technical problem! When situation is worse that communication is unlikely, people joining afterwards are the most painful ones. For example, a typical intern in MSRA stays 3 or 6 months. When new interns come later, they have to read his code, lonely, and… lonely.

How to get people into a group in a most efficient way? Distributed or centered? This is again an essential question, concerning the battle of free packages and commercial software. In my opinion, the spirit of Internet is to share, not to hide. According to Raymond, “open source is most economically efficient”, but why has Microsoft become a big shot? Perhaps hobby and fun is the most loose structure of organization, lacking motivation to make quick decisions. However, getting started quickly means immature decisions as well as more bugs. So, personally, there is a point I cannot explain. The book (within Chapter 0 and 1) states a lot about the superiority of distributed collaboration in GNU world with the help of Internet, but why Microsoft wins most of the people? (I know there are a lot of answers like “more stable and easy to use”, but is there anything related to the distributed and centered way?) And further, which one will last and finally win?

4

Personally, I don’t like dealing with people. And I always have the feeling that I prefer not to enter the field simply filled with codes, even when I’ve not actually go deep into this field yet. Now it seems that I have found a reason for this.

Time of debugging the code is much more than that of writing it. When you debug codes, you debug with people actually. This should be seriously considered when it comes to the decision whether to spend a good part of life debugging.

December 08

Dreaming in code Blog Post 2

We are young. We have our dreams. People who have dreams never look back.

“It turned out that what he (Kapor) cherished was not the specific things Agenda could do, but the program’s spirit of dynamic flexibility.”

Recall the projects under “国家大学生创新性实验计划” which almost everyone in our class participated in. Whatever the initial purposes of each group were, academic or financial, we have a promising prospect at the beginning, right? During those days in Dec. 2006, when we were applying to that program and writing the plan documents, we pictured a dream in heart more or less. However, there was one voice coming from a classmate who did not join, and which I cared not a bit: “Don’t you think it’s a dangerous pitfall?”

All these projects finally wound up as a crap. One important reason rooted in its spontaneous participants, lacking supervision due to the traditional working manner of your department and government. But in my group, you could find something like the descriptions in “Dreaming in code”, Chapter 2. Dreaming itself often does not fit into reality, and when unrealistic expectations were inspired by the naive dream, the target turned more biased from the initial schedule and the reality.

Our project was concerned about melody recognition. It originated from my high school dream: building a website which enabled music search by humming. In details, I would like to extract the melody from a wave file, index it in some way, and when someone was querying by humming a melody, his or her voice would also be recorded, transformed to labels of note, and searched in the database. Perfect as a dream, it required much more than nowaday technologies could offer. After reading some papers, we realized that what we could do within the scheduled finishing time was a simple demo of single-note melody recognition and comparison. So the project ended up with a system no one would ever use. Again, it was a little aligned with the usual process of software development described in the book, “from promise to usability”.

In our current group DTSlob, perhaps this problem can be avoided, because our project aims at usability from the very beginning: to ease the trouble of using IPE to display formulas, to implement drag-and-drop operations for Windows users. Apart from these dream-like sentences, we have detailed steps in achieving this, and have seen good improvements so far. If you think it seems to be the same expressions with every group of software development, I could only say, we can see at last, and distinguish if it is again a dream.

Let’s share a sentence in the end of this post, which is my favorite in Chapter 2:

In science, the whole system builds on people looking at other people’s results and building on top of them. In witchcraft, somebody had a small secret and guarded it – but never allowed others to really understand it and build on it. Traditional software is like witchcraft. In history, witchcraft just died out. The same will happen on software. When problems get serious enough, you can’t have one person or one company guarding their secrets. You have to have everybody share in knowledge.  – Linus Torvalds

现代软件工程系列 学生读后感 梦断代码 DTSlob (1)相关推荐

  1. 现代软件工程系列 学生读后感 梦断代码 DTSlob (2)

    http://dtslob.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=amonth%3d1 ...

  2. 现代软件工程系列 学生读后感 梦断代码 布鲁克斯法则

    <梦断代码>读后感(第1~6章)     书名:"Dreaming in Code",作者:Scott Rosenberg(中译本:<梦断代码>,翻译:韩磊 ...

  3. 现代软件工程系列 学生读后感 梦断代码 SpringGreen

    "拿来的代码所不能做到的部分,恰是项目与众不同的创新之处". <梦断代码> 终于看完了<梦段代码>.      其实整本书就是讲图灵机的不可判定性----软 ...

  4. 现代软件工程系列 学生读后感 梦断代码 软件难做

    http://cid-064ec84e17924332.spaces.live.com/blog/cns!64EC84E17924332!173.entry December 06 读<梦断代码 ...

  5. 《梦断代码》读后感 - 驱动,责任,交流,远虑

    这三篇读后感原来发布在我自己申请的域名 yishan.cc 上面,后来这个域名被墙了.   (原文写于2008年12月) 几个星期前,我给<现代软件工程>课的每一个团队都发了一本 < ...

  6. 《梦断代码》读后感2

    这次,我读了<梦断代码>第4章乐高王国,第5章管束奇客和狗,第6章搞掂设计方案. 在乐高王国这一章中,我看到了"牛仔程序员",就如同软件工程老师所讲的,四种人,第一等人 ...

  7. 梦断代码读后感(一)

    一个百无聊赖的下午,天空黑沉,寒风刮过大地. 无所事事我的想起了这本厚重的书--<梦断代码>: 梦断? 难道自己专业的书籍不该赞扬不该大肆宣传本专业吗? 梦断这个词很难让人联想到好的方面, ...

  8. 现代软件工程系列 学生和老师都不容易

    老师的难处 - V2.0 的困难 有笑话说某人请客, 客人无论是坐轿或是步行前来, 主人都能奉承一番. 有客人说自己是爬着来的, 主人奉承说  - 稳妥之至! 据说有些学校的有些课还是沿用 N 年前的 ...

  9. 梦断代码阅读笔记之一

    最近阅读了罗森伯格的<梦断代码>,算是近距离观察了十几年前软件开发的状态.这本书是作者对OSAF主持的Chandler项目进行田野调查  而写的一本书.本书是在讲一事,也是在讲百千事:是写 ...

最新文章

  1. java中abstract关键字
  2. 中国移动OnetNet云平台 使用以太网传输数据流步骤
  3. Linux环境下获取网卡连接状态
  4. Windows 2003 安装WLM2009/MSN9错误的另一种解决办法
  5. Kubernetes学习笔记(一)
  6. 直击!10万阿里小二的复工生活
  7. 51 nod 1097 拼成最小的数 思路:字符串排序
  8. python实现单例模式的三种方法
  9. 便捷式计算机无线功能按钮,TP-Link TL-MR13U便携式无线路由器Client模式设置
  10. python函数之作用域
  11. 服务器集成显卡性能,Win8.1与Ubuntu 14.10:集成显卡性能PK
  12. illegal text-relocation
  13. wps怎么链接html,wps怎么添加超链接 wps制作超链接的步骤教程
  14. 计算机领域 专利挖掘,浅谈如何进行软件专利的挖掘
  15. CSS+DIV 网页重构技术
  16. 毕设/私活/bigold必备项目,一个挣钱的免费的全开源标准前后端分离后台管理权限系统【springboot+vue+redis+Spring Security】脚手架搭建:若依Ruo框架具体使用教程
  17. 计算机nemurt.dll,DDD~领域事件中使用分布式事务
  18. 华为服务器系列产品介绍,裸金属服务器产品介绍
  19. 怎么从网上办大流量卡呢?具体步骤小编都给你写好的!
  20. 八叉树体素遍历近邻体素搜索

热门文章

  1. HDU1028——I gnatius and the Princess III
  2. VS2005 添加 Microsoft.Office.Tools.Word.dll 等引用
  3. spring-security-学习笔记-02-基于Session的认证方式
  4. 计算机网络——基本介绍
  5. Pensando Distributed Services Architecture [Pensando 分布式服务架构] - 翻译
  6. xml--Schema约束
  7. java比较炫的小程序_推荐三款私藏多年的微信小程序
  8. meanshift算法 java_Meanshift,聚类算法
  9. cnn输入层_多尺度CNN特征图的分析与应用
  10. pytorch加载的模型测试的结果和保存时测试的结果不一致