技术开发 频道

实战Web2.0房屋中介客户管理项目(一)

【IT168 专稿】摘要:本文是web2.0实战开发系列的第一篇,介绍了项目的背景知识、文章的约定标记等内容,为下一步的阅读做基础。
 
好了,今天晚上开始工作吧。

不算大学里的兼职开发,我在软件开发行业工作了12年。从早期系统开发C/C++一枝独大、Visaul Basic/PowerBuilder领军数据信息领域,到今天的Java/.NET二分天下、PHP/Python/Ruby各有所长,开发语言热点转移速度飞快;从瀑布式开发模型到CMM/TSP/PSP/XP,开发方法演进速度惊人。可以套用狄更斯名言来总结我的感受 -- “这是一个最好的行业,这是一个最坏的行业,这是一个充满崇高创新精神的行业,又是一个充斥虚假概念的行业”。

本文中我将抛开纷纷扰扰的语言之争、开发方法选择之争,尝试从一个现实中正在进行,最终要向客户交货的web2.0房屋中介客户管理项目入手,采用与项目同步推进、逐步展开的方式,向大家介绍Web2.0开发方法、剖析CodeIgniter(PHP开源框架)的应用方法、分享自己相关的开发经验和教训。希望能够为大家还原一个可能不是很合乎理论规范,但绝对真实的开发过程。

我一直痛恨大段援引原文的作风,或者那些故作高深、似是而非的技术文章。其实技术开发生涯很精彩,解决客户需求后的满足感也很激动人心。技术开发文章也可以写得很好看,我希望自己也能做到。因为涉及的知识领域比较杂,如果在描述上有不当之处也望各位及时指出。

严格的说,本文不属于开发教程,也不是纯粹的技术分析、技术评论,可能属于“开发札记”比较恰当。项目大概会持续一个月时间,希望自己能坚持把这篇文章和项目一起做完做好。

引用Mike的“名言”- So, without further ado。废话不多说,我们开始吧。
一、写在最前面
98年的时候,IDG的章叔阳先生指导我们如何写公司手册,至今我印象中最有教益的一句话是:“编写文档之前,我们应该编写一份关于文档的文档。”

无论是长篇的技术手册还是大段的源代码,这些针对特定领域的文档不像小说,必然有一些专业的名词和特定的写法,不同阅读者的认知必须建立在相同的认识基础之上,文档才能达到非常好的的效果。所以“文档的文档”非常重要。

下面我将描述本文的简介、约定标识及面向的读者,希望为后面的阅读提供参考和帮助。
1.1简介
本文的关注点有两个:
Web2.0
web2.0是一个非常宽泛的概念,它曾经是技术领域的宠儿,呼唤投资的魔咒,吸引点击的法宝。我们在这里要描述的是技术领域的web2.0,以及如何做一个2.0时代的web程序员。
 
August说:
2.0 web programmer?不是web2.0 programmer吗?
对,我们没有写错,我们想塑造的是有2.0精神的web开发人员。
2.0web程序员的概念来源于goole里面同窗:Alex,他描述了google欣赏的程序员 – 很简单,就是在某个领域可以独挡一面的程序员,比如gmail,传说中开发人员一共就两位仁兄,一个负责存储部分,剩下的是另一位。这个就叫2.0 web programmer。

         小型企业信息化

小型企业可以说是中国现阶段特有的现象,“宁做鸡头,不做凤尾”的理念造就了很多小型化的组织。随着市场化进程的推进,他们必然面临越来越残酷的竞争,信息化不能改变一个行业的命运,但是可以提高一家公司的效率。

不过国内软件市场,针对小企业的软件公司比较稀少,客观的说,我们不能批评从业人员不愿意做小单,主要是开发企业大部分也是小型企业,在温饱的压力下,很难有专门的资源做这块。

我在这里只能做一个无力的推荐,有实力的软件业同行们,其实这块市场潜力巨大,中大型企业也是从小型发展而来。

August说:
我想结合上述两个主题,我们还能得到一个新的方向,对于全面发展的2.0程序人员来说,开发小型企业的信息系统可能是SOHO的一个新方向。
1.2约定标记
心理专家说,生动的图片能够加深记忆。在本文中,我们引入几个虚拟角色,分别担负起分享知识的重任,下面让我们逐个介绍:
:老计,这个项目的甲方,上海某房屋中介公司经理,在本文他代表通常意义上的甲方。具有甲方很多特点:对自己的领域非常了解,对程序开发所知甚少。他会这样说:

老计说:
我是完全不懂计算机啦,可是我的业务员打字都非常熟练,办公室也一直可以上网。
目前我们预算有限,想做个最简单的系统

     :小于,这个项目的开发助理,在本文他代表刚接触具体项目的程序开发人员,熟悉基本的开发语言,掌握一些开发环境,精力充沛,又有些迷茫。他所说的话,我会这样表示

小于说:
 今天怎么又要改需求?前面做的不是白做了,天呀!…
 
:August,项目开发经理,在本文代表资深的web应用开发人员,对项目需求把握、技术选型、进度把握有相当经验。他的话会这样表示:
 
August说:
这里我私人给大家一个提示,当你找工作的时候,评价一家软件公司是否正规,有一条非常重要标准 看看它是不是对所用开发语言有详细的编码规范。记得文章开头说的“文档的文档”概念吗?在多人协同开发,甚至自己独自开发中,严格的编码规范可以增加日后维护的便捷性,一定要坚持。
 
:锤锤先生,记得有句谚语“当你拿着榔头的时候,眼里见到的都是铁钉”。刚刚进入软件行业的同学最容易犯的错误按照排名的话,语法错误绝对不是第一位,我认为第一位是这种“榔头情结”,学习了很多新的知识,就觉得一定要在实践中运用,愿望是好的,但是往往会耽误事情。在这个项目中,凡是可能出现“榔头情结”的地方,锤锤先生就会出来说话:
 
锤锤先生说:
关于设计模式的“榔头情结”:著名的设计模式“四人帮”的大作基本上每个新人都会反复拜读,还有很多公司的招聘广告直接要求熟练运用设计模式。实际情况呢?
设计模式应该看成特定问题域的解决方案经验的提炼,首先它是经验性的而不是公理性的知识,不存在非此即错的绝对;其次它是针对特定领域的,我们用最常用的设计模式类比来看,建筑领域的设计模式并不是一种模式适合任何建筑的,盖摩天大楼的方法用来盖鸡窝那就是笑话,但是你把适合大型软件的某种设计模式用在hello world!程序里,还会有人说你睿智,这是什么逻辑呢?
不要迷信设计模式是我的一个忠告。设计模式提现的是一种思路,一种启发,不是一个功能较多灵丹。当你在对某一领域有了丰富的程序解决经历以后,可能会发现你的解决方案就是某种设计模式的翻版,或者是一种全新的设计模式。不恰当的使用设计模式除了增加不必要的复杂性外很难看到好处。
 
:BG先生,他是一个搜集狂,我们文章中出现的相关概念,BG先生都会帮我们收集相关的背景资料,这样我们就不会看不懂一些术语,或者能从源头了解一些技术的来历,他甚至也会告诉你一些程序界的轶事。BG先生是这样说话的:
 
BG先生说:
我来解释一下作者在最前面这段文字里面的一些术语,搞那么多缩写干嘛:
CMM:是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。
TSP:团队软件流程,属于CMM范畴
PSP:个人软件流程,同属于CMM范畴
XP:eXtreme Programming,极限编程方法。XP 是以开发符合客户需要的软件为目标而产生的一种方法论,XP 使开发者能够更有效的响应客户的需求变化,哪怕在软件生命周期的后期。
开发方法理论是软件工程中的专门领域,感兴趣的读者可以按照这些线索搜索相关知识。
还有一个小秘密透露:作者的开篇借鉴了《明朝的那些事儿》开篇的语气,我们鄙视一下,呵呵。
1.3 面向读者及预备知识
本文主要面对刚刚步入软件行业的新人,他们具有关于程序设计的理论知识,熟悉一到两门设计语言,会熟练使用某些开发环境。可能缺少一些实际项目的历练,没有和客户正面交流的经历。
在这里我们摒弃理论式的说教,或者那种简单的不切实际的DEMO教程,直接带领大家看看一个实际项目在时间短、任务重、客户没有程序背景的情况下,如何完成,甚至可能是如何无奈的失败。
阅读本文需要的预备知识有下面这些:
l   对PHP语言的初步了解
l   XHTML/CSS的初步了解
l   Javascript的初步了解,懂得AJAX更好,不会也没关系
其他的也就不需要了
明天的任务
在今天这些啰嗦的准备话题结束以前,我们留些时间来准备一下明天的工作。
BG先生说:
开发推进方法非常重要,对于小于和August这样的两人小组,他们选择的是Todo List的最简方法。
也就是每天结束工作前安排明天的任务列表,在逐项完成。
可能没有什么理论支持,但是实践中对于小型项目非常有效,唯一能欣慰的是有点象GTD(Getting Things Done)。
 
o 与用户沟通数据结构方面的需求
o 确定数据库结构0.1版
o 建立svn版本库
o 沟通界面配色和布局方案
 
小于说:
好像忘了选择编码规范了?我一直看着你呢。
August说:
没错,下面有一个规范,你要好好学习一下,不要占用工作时间
我们使用zend framework的coding standard
小于说:
为什么又是这样!天哪!
 
0
相关文章