`
xiaoer_1982
  • 浏览: 1860747 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

对于软件开发哲学的经验谈

阅读更多

对于软件开发哲学的经验谈

"确认你已经理解问题, 由小型的有才干的团队来实现解决方案, 并且让你的客户告诉你如何改进它. 这就是全部; 其他的都是注解."(软件开发哲学,摘自<<Clouds to Code中文版>>)

做了这麽久的开发,看到这个开发哲学,真是很贴切,软件开发的几大要点概括的淋漓尽致.

"确认你已经理解问题" 即需求问题,宏观上为软件的商业目的,微观上为每个功能需求的理解与分析,根据我的开发经验,就是要获取需求并且正确的理解它,我们往往对需求的问题不能够达到全面的理解,大多数情况都是处在一知半解的状态,各种情况导致获取的需求并非真实有效,分析其原因主要有3点:

1.客户对需求也不能完全解释的清楚
2.业务逻辑确实很复杂,相关联系繁多,造成理解上会达到理解问题的限制(5~7个关联复杂性,超过就不易理解)
3.需求的获取,设计到实现的各个阶段出现了偏差,更严重的情况是无法追溯到原来提出的真实需求而造成的缺陷.
4.需求在软件开发过程中,客户实际情况已经变更,或是客户改变了原先的想法而造成的需求变更
解决这些矛盾的方法很多,主要在于需求开发的经验,设计开发的经验,团队的合做,有效全面及规范的需求记录与追踪,以及各阶段追溯到需求的评审等来保证我们对需求的理解.


"由小型的有才干的团队来实现解决方案" 即团队合做与开发技能的问题.
高品质的团队一直是成功的软件开发的保证.否则软件开发很容易陷入绝境.
至于团队,以我的经验主要提出几点看法.

1.保证的团队稳定性
团队的核心成员要稳定,例如一个团队一定要确认哪几个是团队的核心,在软件的开发周期内一定要保证这些核心人员的稳定性,最好是不只是在一个项目周期,而是在组织面上也保证此团队核心成员的稳定性,这样才能够使得团队不断进步,积累经验,更重要的是合作的有效性,要知道一个人员更新频繁,或是刚刚组建的团队效率与合作性都是非常差的,需要很长时间的磨合与锻炼,但往往会导致软件开发的失败,因为在你为建立新团队的有效合作与开发过程的同时,软件的开发已经错误百出,种下了失败的种子,后面再想补救的代价就太高了.所以建立稳定的开发团队是软件开发的有效保证.

2.合理有效的团队发展规划.

1).明确有效的团队目标.为团队设立一个明确有效的目标,让团队中的核心成员都能够一致的认同这个目标,并且将此目标与其自身的发展相互联系,给每个人前进的动力与希望.这也是团队稳定性的重要保证,没有一个一致目标和奋斗方向的团队,很难有凝聚力,也更不会成为一个高品质的团队.

2).团队成员合理的互补性.
我们要设定团队成员各方面能力的基准线,每个成员不能低于这基准,否则会影响团队的整体实力.
在此基准线上我们并不要求每个成员在各方面都优秀(这也是很难做到的),但一定会要求每个成员在某一个方面能力高于基准线,这样才能根据特殊能力来建立互补性的团队.
例如:开发团队管理者要达到分析,设计,编码,等工作能力的一个基准线, 在此之上他的管理能力一定是高于基准线之上,具备优秀管理能力的人.而不是让一个各方面平庸或是其他能力(如他的编码能力优秀)的人来充当管理者的角色. 这样让在各个方面的工作,都能够找到在此方面优秀的人来执行,以达到建立互补性的团队的目的.
同时团队成员在此基础上又能够在各方面得到向他人学习提高的机会,以提高团队能力的基准线,达到团队发展的目的.

3).其他辅助性的策略与制度也不容忽视.
首先,团队内部要有一个公平,公正的氛围,每个人的能力,业绩与其获得的回报和在团队中的位置要相互一致,形成一个良好的团队发展环境.
第二,在保证核心成员稳定的同时,合理的团队流动性也是必要的,因为不能保证团队每个成员都能够达到团队的发展要求,所以将不适合的人员替换出去,再吸收新的成员,发展优秀的成员成为核心人员,以发展壮大团队,并形成良好的团队新陈代谢的模式.
第三,获得管理层对此团队的认同,鼓励团队的变革,鼓励创新,愿意承担相应的风险,也是关系到团队是否能够发展的一个非常重要的因素,这也要求团队要不断的获得成功,创造业绩,及良好的沟通来获得管理层的支持.

"并且让你的客户告诉你如何改进它" 这里我的理解不仅仅是客户,而且也包括市场
开发好的软件,最重要的目的是达到客户的需要,以及市场的需要.让客户与市场来引导我们软件的开发方向是软件获得丰厚收益的重要保证,也是软件开发的重要目标.当然这也是建立在我们能够正确的理解客户的需求与市场的需求的基础之上的.

"这就是全部; 其他的都是注解." 这里我的理解是软件开发要以上面所提到的需求,团队,客户与市场为主要关注点,而对于其他辅助性的方面,如过程改进,检查与监测等都是实现主要关注点的有效工具与过程,要分清主次,不要一味的盯在这些辅助性的工作方面,而忽视了软件开发成功的真正关键. 根据经验,如果软件开发时在还未理解需求,又没有良好的开发团队,客户与市场也模糊不清时,而相反却去注重文件表单规范,过程改进,ISO或CMMI等等相关的事务,这样试问就算这些做的再好,我们的软件开发能够成功吗.要分的清主次,合理应用其他辅助性事务,才是正道.

综上所述,我对软件开发的经验之总结, 软件开发需要以客户与市场为导向理解软件真正的需求,利用高品质优秀的团队进行开发,以达到获取最大商业利益的目的.

注:本文转自http://sd.csdn.net/n/20060602/91200.html

分享到:
评论

相关推荐

    软件设计的哲学

    软件设计的哲学: 软件设计是计算机科学中的核心领域,它关注如何创造高效、可靠、易于维护和扩展的...通过这样的教学和实践,软件开发人员可以逐步提高自己的设计水平,最终成长为能够编写出高质量代码的优秀程序员。

    [侯捷]源码追踪经验谈

    源码追踪是软件开发者必备的技能之一,它涉及到了程序的调试、性能分析以及问题定位等多个方面。侯捷在文中首先强调了阅读源码的重要性,尤其是在解决复杂问题时,理解底层实现往往能提供关键的线索。他指出,源码不...

    《月谈赋》原文[文].pdf

    【软件开发】相关的知识点主要体现在...以上是对《月谈赋》部分内容与软件开发关联的解读,实际上命理学与软件开发的联系并不直接,但这些命理概念可以作为人生哲学的启示,指导开发者如何面对职业生涯中的挑战和机遇。

    《软件工程》 林锐2000年老版

    林锐先生的个人思想贯穿全书,使得本书不仅仅是技术知识的传递,更是对软件开发哲学的深度探讨。 1. 软件工程基础:书中详细介绍了软件工程的基本概念,包括软件生命周期、需求分析、系统设计、编码、测试以及维护...

    微软架构师谈编程语言发展

    ### 微软架构师谈编程语言发展 #### 关键知识点概览 1. **编程语言发展的多维度考量** - **历史背景**:每种语言...这些见解不仅对于软件开发者具有重要意义,也为我们预测未来编程语言的发展趋势提供了宝贵的视角。

    浅析面向对象语言C_与Java区别_王艳娟1

    了解它们之间的差异对于软件开发人员至关重要。 面向对象(Object-Oriented, OO)是当今计算机科学的核心,90年代以来已成为软件开发的主流范式。它的主要特征包括封装、继承和多态。C++是通用编程语言,既支持过程...

    编程之道全本

    - **第一篇 木**:象征着生命与成长,通过故事展现了软件开发过程中的创新与发展。 - **第二篇 火**:代表着热情与动力,鼓励程序员保持对工作的热爱和激情。 - **第三篇 土**:象征稳定与根基,强调基础架构的重要...

    编程牛人采访,Coders at Work

    1. **启发思考**:通过阅读这些顶级程序员的观点,读者可以获得更多关于编程和软件开发的灵感。 2. **学习资源**:对于初学者来说,本书提供了宝贵的学习材料,可以帮助他们了解如何成为一名优秀的程序员。 3. **...

    名言.doc

    5. "海纳百川,有容乃大":在开发多元化的软件系统或兼容各种平台时,接纳不同的观点和方法,有助于创造更包容和适应性强的解决方案。 6. "谈泊明志,宁静致远":面对工作压力,保持冷静的心态和明确的目标,有利于...

    《周鸿祎自述_我的互联网方法论》PDF版本下载.txt

    本书主要分享了周鸿祎对于互联网的理解、创业经验以及企业管理的心得体会。 ### 重要知识点概览 #### 1. 周鸿祎及360集团简介 - **周鸿祎**:中国著名企业家,网络安全专家。曾任雅虎中国总裁等职务,后创立3721...

    ERP学习必看课件,详细的讲解了ERP的内容

    实施过程具体包括项目启动、组建队伍、设计、编码、测试、数据准备、软件安装、软件调试、项目试运行、二次开发、项目正式运行等众多环节。每一阶段都需要领导强有力推进和各方协调,否则会有中断、延时、超预算的...

    经典面试题关于人事面试的题目

    请谈一下你理想中的工作。 - **解析**:此问题帮助雇主了解求职者的优先级和价值观。可以从职业发展、工作环境、薪酬待遇等方面来描述。 #### 13. 请介绍你的家庭。 - **解析**:虽然看起来与工作关联不大,但有...

Global site tag (gtag.js) - Google Analytics