- 浏览: 487504 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 2442《问题解决专家-策略性 ... -
看清与行动
2010-04-03 12:37 1207有人主张,看不清就不动,宁可呆在原地。 等待是最 ... -
蝴蝶效应与个人成长
2010-02-26 22:42 1223效应最初的解释是:“ ... -
岸•山•悟
2010-02-24 23:12 1044以前看amazon的原版书,很亲近,最近一段时间,对国学非常感 ... -
讲•道•理
2010-02-22 01:00 3435做什么事都要讲道理,今天我说说软件开发中开发人员的”讲道 ... -
流程只是一个传说——敏捷方法论的理论基础
2010-02-06 16:05 2284我这里说的流程是传统 ... -
四两拨千斤
2010-02-06 11:42 0关于系统思考 -
最优化
2010-02-06 11:39 0硬系统思考,坐公交车的方法。 -
技能究竟是如何提高的?
2010-01-13 01:22 1411我爸爸学车,已经 ... -
软件需求的本质
2009-11-01 01:25 1370先看看什么是需求,人要吃饭,要喝水,要娱乐。同样,软件 ... -
这是怎么算出来的呢?
2009-07-18 15:39 1143今天看新闻,四川成都暴雨,有一系列数据,这些是怎么算出来的呢, ... -
几句值得玩味的话
2009-05-12 09:19 13411)魔鬼藏于细节之中 点评:程序中的漏洞太多了,特别是 ... -
Oracle收购Sun——未来在哪里?
2009-04-21 09:01 5323关于Sun,我去年年 ... -
QCon北京归来杂记(一)
2009-04-10 16:37 12641)Know why 先于 Know how。 ... -
象征对于团队的意义
2009-03-09 23:38 1956不知道多少人看 ... -
连接之美
2009-02-28 10:49 0连接之美 -
现状,目标,差距和行动指南
2009-02-24 12:36 1049这是一个进行改进的方法学,可以应用于任何改进。 ... -
程序员如何提高抽象能力
2009-02-18 13:40 5922之前写过一篇文章,讲合格程序员应该具备的能力,你 ... -
What about software design?
2009-02-16 01:10 1189What about software design? ... -
简单与复杂
2009-02-15 15:10 9831)简单的问题,简单的解决办法。 不 ...
相关推荐
7. 设计模式:在设计和软件开发中,设计模式作为一套解决特定问题的方案,能够帮助专业人员更高效地工作,同时也让结果更易于理解与维护。 以上就是从提供的信息中分析出来的相关知识点。在实践中,这些概念可以...
通过以上分析,我们可以看到,软件开发和服务项目的价格并不是简单的计算成本加上利润,而是需要全面考虑项目的各个层面,包括成本、风险、市场因素等。对于软件企业和客户来说,理解和运用这些评估方法,可以更好地...
在软件开发过程中,设计原则是指导开发者构建高效、可维护和扩展软件系统的重要准则。这些原则不仅提高了代码质量,还能确保团队之间的沟通清晰,降低维护成本。以下将详细阐述一些核心的软件开发设计原则。 1. **...
例如,在软件开发过程中,通过简单的重构和优化代码结构,就能显著提升程序的性能和可维护性。又比如,在项目管理中,通过建立有效的沟通机制和信任关系,可以极大地减少不必要的误会和冲突,提高团队协作效率。因此...
嵌入式开发是IT领域一个非常重要的分支,主要涉及在特定硬件设备上进行软件开发的工作。在嵌入式系统开发中,硬件资源(如CPU、存储空间和外设接口)相对有限,而且嵌入式系统常常需要具备高实时性、高可靠性和高...
在软件开发过程中,需求分析被视为项目成功与否的基石。一个清晰且全面的需求分析不仅有助于开发团队明确目标,还能有效避免后期的返工和修改,确保项目的顺利进行。本文将基于“《软件需求分析法则》提高软件质量”...
### 敏捷软件开发宣言解析 #### 一、宣言的核心价值观 **《敏捷软件开发宣言》** 是2001年由一群资深软件开发者提出的指导原则,旨在改变传统的软件开发方式,提升开发效率与质量。宣言提出了四个核心的价值观: ...
软件开发和运行维护是IT行业中至关重要的环节,涵盖了软件生命周期的多个阶段,包括需求分析、设计、编码、测试以及后期的维护与更新。本篇主要讨论软件开发模型及其相关基础知识。 1. 渐增模型(Incremental Model...
布鲁克斯博士以其在IBM System/360项目中的经验为基础,揭示了软件开发过程中的诸多深层次问题和挑战。以下是对《人月神话》中一些核心知识点的详细解释: 1. **人月神话的由来**:书名“人月神话”源于一个常见的...
这些法则旨在帮助程序员提高工作效率,避免常见错误,以及提升软件开发的整体质量。以下是部分重要的程序员法则: 1. **YAGNI(You Aren't Gonna Need It)**:你不会需要它。这一法则提醒程序员不要过度设计,只...
嵌入式学习是掌握微处理器、微控制器、单片机等在有限资源的硬件平台上,进行软件开发并实现特定功能的过程。嵌入式系统在电子、工业自动化、智能设备等领域有广泛的应用,因此掌握嵌入式开发技术对于IT专业人员来说...
从压缩包的文件名"无限法则永世妖王开源 成品"来看,这可能是一个完整的、可以运行的项目版本,而不是开发过程中的某个分支或中间状态。"成品"一词意味着它已经过测试,具备了对外发布的基本条件。用户在获取源码后...
因此,软件开发在飞机设计中变得越来越重要。 飞机总体参数设计主要任务是根据飞机性能要求,确定飞机的总体布局、几何参数、气动参数等。总体参数设计需要综合考虑飞机的用途、机场环境、乘客体验等多方面因素。...
基于CAE的铸钢补缩系统CAD软件开发旨在整合CAE技术到CAD系统中,利用CAE仿真软件模拟和分析铸件的凝固过程,根据模拟结果指导冒口设计,从而提高设计的科学性和准确性,减少试验成本。这种开发思路能够帮助工艺人员...
### 软件开发设计模式 #### 概述 在软件工程领域,设计模式是一种用于解决常见问题的可重用解决方案。它不是完成任务的具体代码,而是一种模板或指南,帮助开发者以一种结构化的方式思考问题,并提供了一种标准化...
不过,我们可以尝试从这段描述中提取出与IT行业相关的一些概念,并结合标题“程序员法则完整(电子书)VIP卷全84章”以及描述中的关键词进行扩展。 ### 知识点一:程序设计语言的选择 在描述中提到学习了C语言和...
总的来说,门面模式是软件设计中的一个重要工具,它帮助我们构建模块化的系统,降低组件之间的耦合,提高系统的可维护性和可扩展性。通过合理使用门面模式,可以使复杂的系统变得更加易用和灵活。在开发过程中,应...