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

 

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



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

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

相关文章

mysql 索引 简书_MySQL 索引

索引用于快速查找具有特定列值的行。如果没有索引,MySQL必须从第一行开始,然后读取整个表以查找相关行。表越大,成本越高。如果表中有相关​​列的索引,MySQL可以快速确定要在数据文件中间寻找的位置,而无需查看所有数…

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

http://dtslob.spaces.live.com/?_c11_BlogPart_BlogPartblogview&_cBlogPart&partqsamonth%3d12%26ayear%3d2008Dreaming in code Blog Post 3 Dreaming in Code这书,读着读着就到了尾声,然后惊讶的发现关于后面章节的内容和我的想法&#xff…

java 管理系统登陆完毕后关闭窗口_【求助】登录窗口登录成功后隐藏窗口

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼代码如下:import java.awt.*;import java.awt.event.*;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import javax.swing.*;import jdbc.Connect;public class login extends J…

python高级功能_python高级篇

1.切片功能:类似于java中的split方法。对list或者triple中几个值进行取出的过程。L [a,b,c,d] L[0:3] [a,b,c] #下标从0开始,取到第n-1个元素 L[-2:] [c,d] #倒序取值2.迭代(循环)功能:python中的可遍历对象只要是可迭代对象,例如list…

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

“拿来的代码所不能做到的部分,恰是项目与众不同的创新之处”。 《梦断代码》 终于看完了《梦段代码》。其实整本书就是讲图灵机的不可判定性————软件开发过程中,很多过程都不知道什么时候能不能结束,甚至说能不能做出来,这导…

qt 无法打开shell32_在Qt中用默认程序打开文件

用法: QProcess::execute("explorer 文件名");例: QProcess::execute("explorer c:\\123.txt");----------------------------------------------------------------------应该早有大虾发现了这个方法,只是我没搜到,于是有…

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

《梦断代码》读后感(第1~6章) 书名:"Dreaming in Code",作者:Scott Rosenberg(中译本:《梦断代码》,翻译:韩磊,电子工业出版社出版)。第…

现代软件工程系列 学生的精彩文章 (6) 项目总结

http://lunarthu.spaces.live.com/?_c11_BlogPart_pagedirNext&_c11_BlogPart_handlecns!48EA3793D3DA17C8!211&_c11_BlogPart_BlogPartblogview&_cBlogPartJanuary 10学做一个PM By Cheng Lu 对于我们的SmartMe,我是真正倾注了感情的。看到今天SmartM…

sqlite查询空日期类型_SQLite比较日期

我有这个sql语句:SELECT Geburtsdatum FROM KundeWHERE Geburtsdatum BETWEEN 1993-01-01 AND 2000-01-01但我得到一些奇怪的结果,如:2.02.1990“Geburtsdatum”是DATE任何建议或解决方案?我的表格结构:CREATE TABLE Kunde (Kunde…

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

http://cid-064ec84e17924332.spaces.live.com/blog/cns!64EC84E17924332!173.entryDecember 06读《梦断代码》 读《梦断代码》的感想 《梦断代码》详细叙述了OSAF的Chandler项目从2001年开创以来直至2005年间的进展状况,真实展示了Chandler项目的艰难的开发过程&am…

现代软件工程系列 结对编程 (II) 电梯调度程序

[很多同学完成了上一个结对编程项目后, 很想知道下一个项目是什么, 我们这次要练习如何设计 接口, 测试框架, 和算法] 现代软件工程系列 结对编程 (II) 电梯调度程序 ------- Pair Project II Elevator Scheduler Design and implement an Elevator Scheduler to aim for …

java 中violate_Java中的Volatile关键字

Java的volatile关键字用于标记一个Java变量为“在主存中存储”。更确切的说,对volatile变量的读取会从计算机的主存中读取,而不是从CPU缓存中读取,对volatile变量的写入会写入到主存中,而不只是写入到CPU缓存。实际上,…

现代软件工程系列 创新靠学分

如何在学校里讲创新, 这是一个老问题。 但是天朝的教育体制总有办法,请看: http://news.163.com/10/1125/03/6MABIS4H00014AED.html 武汉一高校设"创新学分" 不搞创新不能毕业 去年秋季,武汉科技大学中南分校出台《学籍管理规定》,…

java 如何发提示_消息提醒-如何实现收到待办给QQ发送提醒?

一、前期准备一台windows服务器(用于运行QQ机器人)下载QQ机器人框架二、QQ机器人配置1、解压前面下载的机器人框架和httpapi2、打开解压后的 小栗子框架.exe3、在用户列表右击选择添加单个4、添加后右击点添加后的账号选择登录选中QQ5、点击应用中心>点击导入插件>选中前…

顶级程序员的心得 - Coders at Work

这篇博客经历了 CSDN 的历次改版后,格式已经坏了, 我重新写了一篇,重排了格式: 顶级程序员的心得 –– Coders at Work_SoftwareTeacher的专栏-CSDN博客顶级程序员的心得 –– Coders at Work我2009年读了 “Coders at Work”, …

jdbc mysql myeclipse_关于JDBC连接MySQL的问题,我一直解决不了(Myeclipse 环境下)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package org.mlj.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.net.UnknownHostException;import java.net.InetAddress.*; public class…

现代软件工程课件 需求分析 如何提出靠谱的项目建议 NABCD

《构建之法 - 现代软件工程》课件 互联网时代对于创新者来说, 既是一个伟大的时代, 又是一个糟糕的时代。 你有很多机会做出影响世界的产品, 但是, 似乎任何想法都被别人想到过了, 做出来了, 上市了, 移植到各种平台上去了… 那么我们后来人除了羡慕别人生得早, 还有什么机…

java禁止数据库写入事务_Java -- JDBC 事务处理, 事务的隔离级别 脏读 不可重复读 等......

1. 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。数据库开启事务命令•start transaction开启事务•Rollback回滚事务•Commit提交事务JDBC控制事务语句•Connection.setAutoCommit(false); //start transa…

现代软件工程 教学计划 适应两种难度和重点

现代软件工程 教学计划 经过 2007 - 2018 年,30个不同学校的实践后, 《构建之法》在大学的两种教法已经出现了, 这两种教学计划适应于两种难度和重点。 下面我们具体介绍这两种计划。 1. 软件工程导论(适合大一下的学生,在学过…

java中setDocument_Java ActionItem.setDocumentId方法代码示例

import org.kuali.rice.kew.actionitem.ActionItem; //导入方法依赖的package包/类Test public void testConvertActionItem() throws Exception {// get test dataString testWorkgroupName "TestWorkgroup";Group testWorkgroup KimApiServiceLocator.getGroupSe…