- 浏览: 479381 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
gapper:
多谢!!!
软件项目解决方案模板 -
lxyizy521:
感谢你无私的分享,正头疼文档的事情呢。
软件项目解决方案模板 -
flyisland:
不错的资料收集的心得,多谢分享!
如何从小工到专家——Dreyfus模型应用 -
a254124185:
Java编码规范及实践 -
clj2008tom:
LZ好久没更新了,呵呵
graphviz 在redhat as4 下的安装
读了前田约翰的《简单的法则》 ,我自己也总结了一下软件开发中的10条简单法则。
1) 信心
无论做什么事,信心都是最重要的。我一直信奉两条广告语,一句是李宁的“Anything is Possible”,依据是Adidas的“Impossible is Nothing”。只要你有信心,你就成功了一半。软件开发本来就是复杂性的游戏,抗拒这种复杂性,无论是对个人还是团队,信心都尤为重要。从大的方面讲,很多根本问题都已经被前辈们解决了,各种软件开发技术都成熟了,你没理由恐惧。信心使软件开发变得简单。
2)思考
思考是人类区别于动物的主要特征。不思考,你就不会找到根本问题,也不会找到根本原因,更不会找到问题的解决办法。软件开发中主要的工作就是思考,其次才是敲键盘。它就像多米诺骨牌,你不能让中间断掉。你必须仔细思考每一个设计环节,让他们契合。关于设计的可预见性,参考我的文章可预见性(Prodictability)——设计之美 ,程序员的结构化思维方法——一个思维脑图模板 ,思考让一切变得简单。
3)学习
软件开发是一个知识密集型的工作。环境在变,技术在变,问题在变,唯一不变的就是变化。所有这些,使你必须不断的更新你的知识。学习使你拥有新工具,新手段,新思路,新方法。用学习来的新手段,思考你现在的处境,然后去实践。关于如何学习,请看我的文章如何从小工到专家——Dreyfus模型应用 。学习让软件开发变得简单。
4)沟通
由于软件本身的复杂性,不可能由一个人来完成。当多人共同完成时,沟通常常会成为一个制约工作效率的主要瓶颈。做需求的和客户沟通少;做分析和设计的同需求负责人沟通的少;做开发的和开发负责人沟通的少,有问题也不汇报,也不明确说明自己需要多长时间,遇到问题自己研究,不请求他人帮助;做开发的和需求,设计沟通的少,导致对需求的理解不同,开发出的软件不能用。和最终用户沟通的少,导致软件做出来不能满足需求,需要返工。这种事情太多了,请看我的关于沟通方面的文章。沟通是个大问题——协作化软件开发 。沟通让信息通畅,让软件开发变得简单。
5)协作
Alistair Cockburn说,软件开发就是协作者的游戏,我越来越对这句话有感触。你不是一个人在战斗,团队是软件开发的最小单位。敏捷软件开发很多这方面的实践,计划游戏,结对编程,每日站立会议,反思会议。在高度协作的团队中,每个人都是某一方面的专家。通过紧密高效的配合,完成任务。众人拾柴火焰高,协作让软件开发变得简单。
6)组织
google有效的组织了信息,让信息获取变得简单。信息只有被组织才能够有效的分享,可以参考我的另外一篇文章。可理解性(Understandability)——一个扩展视角 , 通讯录模式(AddressListPattern) 。另外一方面,当资源充足的时候,如何组织,避免浪费,高效的利用资源对于团队效率的提升也是非常重要的。田忌赛马是一个很好的例子,软件开发中对开发人员的分工和调配也是非常重要的。组织让软件开发变得更加简单。
7)细节
这是一个通用的原则。很多开发人员都有这样的调试经历,往往很难发现的错误,源于一个很小的细节。要么是配置文件问题,要么是半角分号,打成了全角。以前写javascript代码尤其这样,一堆的alert。我说过,软件开发就是逻辑游戏,很多措施可以避免犯错误,代码写好了,自己仔细看几遍。写几个单元测试,证明组装之前,代码是可以运行的。最后,功能开发好了,自己自测一下,保证程序可以跑。不要想当然,一定要亲自证明它可以工作。这些难做到吗?很多程序员却做不到。一个注重细节的程序员一定是个优秀的程序员,一个注重细节的团队也一定是个优秀高效的团队。注重细节让一切变得简单。
8)背景
了解任何事物,一定了解它的背景。学习web编程,你一定要了解它背后的http协议。学习精益软件开发,你一定要了解酝酿它的丰田生产方式。开发软件,你一定了解它背后的业务知识。事物和问题往往都是联系在一起的,为了更好的了解他,你必须了解他的背景,其实一个更好的词是上下文(Context)。
9)问题
曾子曰:“吾日三省吾身”。通过不断的问题,你能获得更多的信息,你能了解问题的本质原因。问题始终使你保持清醒,而不是盲目乐观。你写好程序时,你可以问一句“我如何测试它呢?”,“还能适应更多的变化吗?”,“还有坏味道吗?”,"那样做是不是扩展性更强?"。关于这个,请看我的这篇文章ProblemAttack。 问题越多,你思考越多,事情变得更加简单。
10)开放
开放是一种心态,一种思想,一种哲学。我很喜欢开源软件,如今的互联网网站,大部分都是建立的开源软件之上。作为java来讲,我么经常用的框架,大部分都是开源的,它让软件开发变得更加简单,让所有开发人员的智慧和力量凝聚起来。开放的另外一层含义是,没有隔阂。一个程序员应该具有开放的心态,接受新事物,新方法。犯了错误,要坦诚的承认。拥有开放的心态,你就会积极的分享你的所学,同时你可以可以从别人那里学到更多,让你进步更快。
change log:
2009-03-23: 感谢jindw的提示,修改所有链接。
评论
老大,连接都错了,去掉admin吧
细节,细节,所有链接都改了,非常感谢!!!
11)执行
当楼主的10点你都具备了,还差一点,就是执行。或者用老毛的话说:“实践”。只有去做了,去尝试了,一切才有可能。重在执行力和实际行动。
发表评论
-
Power of Thinking(1): 零基准思考
2010-04-12 02:11 2393《问题解决专家-策略性 ... -
看清与行动
2010-04-03 12:37 1179有人主张,看不清就不动,宁可呆在原地。 等待是最 ... -
蝴蝶效应与个人成长
2010-02-26 22:42 1188效应最初的解释是:“ ... -
岸•山•悟
2010-02-24 23:12 1010以前看amazon的原版书,很亲近,最近一段时间,对国学非常感 ... -
讲•道•理
2010-02-22 01:00 3401做什么事都要讲道理,今天我说说软件开发中开发人员的”讲道 ... -
流程只是一个传说——敏捷方法论的理论基础
2010-02-06 16:05 2233我这里说的流程是传统 ... -
四两拨千斤
2010-02-06 11:42 0关于系统思考 -
最优化
2010-02-06 11:39 0硬系统思考,坐公交车的方法。 -
技能究竟是如何提高的?
2010-01-13 01:22 1375我爸爸学车,已经 ... -
软件需求的本质
2009-11-01 01:25 1329先看看什么是需求,人要吃饭,要喝水,要娱乐。同样,软件 ... -
这是怎么算出来的呢?
2009-07-18 15:39 1104今天看新闻,四川成都暴雨,有一系列数据,这些是怎么算出来的呢, ... -
几句值得玩味的话
2009-05-12 09:19 12841)魔鬼藏于细节之中 点评:程序中的漏洞太多了,特别是 ... -
Oracle收购Sun——未来在哪里?
2009-04-21 09:01 5280关于Sun,我去年年 ... -
QCon北京归来杂记(一)
2009-04-10 16:37 12291)Know why 先于 Know how。 ... -
象征对于团队的意义
2009-03-09 23:38 1912不知道多少人看 ... -
连接之美
2009-02-28 10:49 0连接之美 -
现状,目标,差距和行动指南
2009-02-24 12:36 1007这是一个进行改进的方法学,可以应用于任何改进。 ... -
程序员如何提高抽象能力
2009-02-18 13:40 5873之前写过一篇文章,讲合格程序员应该具备的能力,你 ... -
What about software design?
2009-02-16 01:10 1152What about software design? ... -
简单与复杂
2009-02-15 15:10 9571)简单的问题,简单的解决办法。 不 ...
相关推荐
1.5.6 迪米特法则(LAW OF DEMETER LOD) 10 1.5.7 单一职责原则(SIMPLE RESPONSIBILITY PINCIPLE SRP) 10 创建型模式 11 2.1 SINGLETON单件模式 11 2.1.1 典型的SINGLETON类 11 2.1.2 多线程安全的SINGLETON类 12 ...
在这本书中,Eclipse Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了快速而透彻的介绍。本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的世界...
·在这本书中,Erich Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了,陕速而透彻的介绍 ·本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的...
·在这本书中,Erich Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了,陕速而透彻的介绍 ·本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的...
在这本书中,Eclipse Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了快速而透彻的介绍。本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的世界...
·在这本书中,Erich Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了,陕速而透彻的介绍 ·本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的...
在这本书中,Eclipse Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了快速而透彻的介绍。本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的...
在这本书中,Eclipse Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了快速而透彻的介绍。本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的...
在这本书中,Eclipse Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了快速而透彻的介绍。本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的...
在这本书中,Eclipse Gamma和Kent Beck对Eclipse这个不断发展的软件开发环境,做了快速而透彻的介绍。本书不是简单地告诉你“应该怎么做”,书中的正文和大量的补充、前行的路标将带领你一道真正投身Eclipse的...
(首先建立代预测厅堂的三维模型,可以在ease中直接建模,更好的方法是利用autocad等通用软件建立模型,然后输出为dxf文件,导入ease中。为了保证可以计算,ease需要所建厅堂是没有“洞”的,ease提供了检查“洞”的...
Django是一个开放源代码的Web应用框架,由Python写成。...Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don’t Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型
ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充) ASP.NET2.0中themes、Skins轻松实现网站换肤! ASP.NET 2.0 中的代码隐藏和编译 ASP.NET 2.0 Language Swithcer and Theme Swicher 多语言转换和多样式主题...
FPGA 具备高速、并行、运算及引脚资源极其丰富、定时精确(纳秒级)、功能极其灵活、硬件直接实现算法(不需要在操作系统调度下访问片外存储器以读取算法指令序列)、操作数存取机制简单且高效(不需要在操作系统...
FPGA 具备高速、并行、运算及引脚资源极其丰富、定时精确(纳秒级)、功能极其灵活、硬件直接实现算法(不需要在操作系统调度下访问片外存储器以读取算法指令序列)、操作数存取机制简单且高效(不需要在操作系统...
目录 一 Codd的RDBMS12法则——RDBMS的起源 二 关系型数据库设计阶段 三 设计原则 四 命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不 那么重要。现实中的情景也相当雷同,开发...
关系数据库设计(总8页) 目录 一 Codd的RDBMS12法则——RDBMS的起源 二 关系型数据库设计阶段 三 设计原则 四 命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不 那么重要。现实中...
目录 一 Codd的RDBMS12法则——RDBMS的起源 二 关系型数据库设计阶段 三 设计原则 四 命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不 那么重要。现实中的情景也相当雷同,开发...
目录 一 Codd的RDBMS12法则——RDBMS的起源 二 关系型数据库设计阶段 三 设计原则 四 命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不 那么重要。现实中的情景也相当雷同,开发...