`
yanMouse
  • 浏览: 39183 次
  • 性别: Icon_minigender_2
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

项目开发经验

阅读更多
    以下是在javaeye的贴子看到的,感觉非常的不错,就copy了下来。
     一年来很少写日志,更多地是项目开发和研究他人的经验和知识。

    做开发4年来,给我一个总体的感觉是痛苦并且快乐着。相信很多朋友和我一样,解决了一个棘手的问题,更有甚者这个问题他人不能解决时,成就感油然而生。至于痛苦的方面,这可能和他人不同,我很少会为不能解决的问题而困惑,更多的是来自于团队合作和团队工作质量。有时候,会对队友很失望,无论是经验程度,还是处理人事的方法。
    对于软件开发,笔者一点体会,简单地说,为了一个共同的目标,一个或多个团队相互合作,产生一定“结果”的社会过程。个人偏好地认为是一种过程,通常来说,由项目立项、可行性分析、需求分析、架构设计和技术选型等等。在不同的场合,这些过程增加或者减少。无论怎么样的变化,其决定性因素的还是人,处理好人事等于成功了一半。在软件工程,没有最好,只有更好,永远牢记着只做正确和适合自身的开发方法,尽量不要教条主义和理想主义。笔者曾经就犯过错误,严格地按照敏捷那套执行,开始就遇到了同事的反对,理由是他不能理解,执行起来困难重重,照搬是不行的。
    万事开头难,尤其是软件项目,把握需求是困难的,一般而言,很难做到所有的需求细节一一列出,只可能在一个相对抽象的需求上不断地“演化”,甚至发生变化。开发人员最苦恼的地方莫过于需求变迁所带来的反复开发或者修改,所谓的“Change is welcome",那是“Communism”。若要把项目致力于灵活多变,无疑是困难的。从事多年开发的同仁会感觉,如果有一个不需要编码,只需要简单配置,能够完成需求,那该多好。不过,据我所知,不管模型化建模,还是代码自动产生器都不能很好完成需要,毕竟需求是各异的。
   找不到理想中的“乌托邦”,最终还是回到现实。重担还是落在开发人员身上,开发人员面对“脆弱的”需求,尤其是架构师团,更需要抽象业务逻辑,构建需求的蓝图和界限。笔者认为成功的架构师是务实的,我见过不少“理想主义“的架构师,写出来的方案有点像“八股文”,甚至一些方案在实际情况中是“死胡同”。
    架构设计并不是越抽象越好,更不是越技术先进越好,成熟大于高新,务实大于花哨。
    说句题外话,我看到过很多同学,尤其是初出茅庐的,在简历上面写了不少的“高新”技术,动不动就是“精通”的字样,有经验的HR看都不会看这样的简历。反思一下,为什么不少公司招聘信息注明,行业经验优先考虑。不难看出业务理解优先于技术实力。技术是要落到实处来解决实现的问题的。好比钞票,如果不流通,它就是废纸。
     架构设计和技术选型之后,详细设计,一个和客户或者和开发人员内部讨论过程,无论你的角色是什么,沟通的素质是必须的。作为开发人员,要了解自己的输入和输出。作为项目经理,需要合理安排人力资源和协调团队,同时和客户互通。
   人力资源安排是一门大学问,首先需要了解团队人员的素质,主要是技术实力和需求理解能力,其中需求理解至关重要。

    项目经理好比军队中的“帅”,架构师好比“参谋”,开发人员则是前线将士。团队的执行力,往往决定项目的成败。首先,需要了解部下,一个稳定的团队是相当重要的。众所周知,IT行业是一个流通性相对比较大的行业,尤其在时间拮据的情况下,大多数通过面试手段来招募贤士,少数则是通过推荐。无论哪种方法,在短期内,知人善任是困难的,项目经理很难全面的了解开发员的才能。笔者就遇到了这个问题,开始觉得挺不错,感觉后来越来越差,人才真是凤毛麟角。当项目进行到一定阶段的时候,临时“易将”是不明智,重新招募和培训新的员工,无论是时间成本还是人事处理都是不合适的。一个权宜的方法就是培训员工,因为技术和素养是可造的。一些上了年纪或者有家庭的员工很难进行“培训”,其兴趣和精力不在于此,处理这样的问题比较棘手,至今效果不理想。
事情不能改变的时候,只能适应其规律。
    接下来,沟通和协调团队。它是双向的,逐渐地了解队友的习惯和素质,合理地安排任务的分配。笔者举一个二期开发项目的例子,见到的一个常景就是,各个队员开发个自己的小模块并且保留接口,接口之间可用性和风格各异。由于笔者偏好开发,因此有“Code review”的习惯。出于尊重前辈(笔者的年纪最小,平均小了10岁),时常在代码上面添加注释,建议修改或者改进。由于项目前期,测试用例极少,导致了目前修改后的bug不断,项目中出现了相互职责的问题。经过一段时间的调整,最终统一了意见。
    过程可以说是步履维艰,其消耗了大量的开发时间。在一个团队中,很少的人对软件的思考,过多的是实现功能性。软件作为一门艺术,开发是苦难的。如果仅仅停留在功能性实现的层面上,可以说没有什么价值。若把它定位到哲学高度,则是力于美的结合。虽然软件是虚拟的,但是它能够体现一个团队背后的智慧,从学术的角度,就是软件的制造工艺。工艺水平直接或间接地体现了软件的架构能力。提升团队的素质,应该从这个方面入手,有限地提高。顾客就是上帝。
    有时候这些上帝也比较“疯狂”,提出来很多不合理的需求。相信大家喜欢技术型出身的客户,那样会更有“人情味”。推掉不合理的需求也是一门学问,如果能够化“被动”为“主动”,那更是“艺术”。处理顾客关系,使用软件技术手段是行不通的。有意思的是,软件工程里面很少有“人文关怀”,而是过多的“工程实践”。笔者认为“人文”方面是不可少的。事实上,项目经理多不是“技术”官,而是“行政”官,不少人误解了其作用。由于时间和经验的关系,只能写到这里。针对一些问题,我会做“专题”,从行政管理到软件架构,甚至到开发实践方面,相当地欢迎朋友们一起讨论或者指点迷津。
分享到:
评论

相关推荐

    j2ee项目开发经验分享

    j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发经验分享j2ee开发...

    linux项目开发经验

    ### Linux项目开发经验概览 #### 自由软件发布方法惯例 1. **简介**:自由软件发布惯例是Linux项目开发中非常重要的一环,它不仅涉及到软件的发布流程,还关乎于项目的可维护性和用户友好性。良好的发布惯例能够...

    Struts2项目开发经验教程 WORD文档.rar

    项目开发经验总结 word版,还没有转换成CHM格式,各有各的好处吧。这本册子不是大公司、大名气作者所著,却是本人从事Struts2项目开发二多年来的一些经验分享,因此书中的语言也不是很规范,都是我自己口语化写的,...

    一位工程师的FPGA项目开发经验总结 fpga开发.pdf

    FPGA项目开发经验总结 本资源摘要信息来自一位工程师的FPGA项目开发经验总结,总结了FPGA项目开发中的一些重要经验和教训。这些经验和教训可以帮助开发者更好地理解FPGA项目开发的要点和难点,从而更好地开发和测试...

    大学生就业关键--项目开发经验

    ### 大学生就业关键——项目开发经验 #### 一、项目开发经验的定义与重要性 在当今的IT行业中,项目开发经验被视为大学生求职时的关键因素之一。所谓的“项目开发经验”不仅指的是简单的编程能力,更是涵盖了从...

    J2EE项目开发经验谈

    本文介绍了在J2EE项目开发中遇到的war包中的文件的读取问题,Ant使用中的OutOfMemoryError解决方法。

    完整的Spring项目开发经验

    一套完整的Spring项目开发经验,从0到1,从无到有,从有到优的项目经验。助您深入理解Spring项目开发的全过程以及原理,机制。 适用人群: 适合入门级别的职场小白以及学生朋友。 适用场景及目标: 项目开发,...

    软件项目开发经验(人力资源管理很重要)

    做开发4年来,给我一个总体的感觉是痛苦并且快乐着。相信很多朋友和我一样,解决了一个棘手的问题,更有甚者这个问题他人不能解决时,成就感油然而生。至于痛苦的方面,这可能和他人不同,我很少会为不能解决的问题...

    C#项目开发案例全程实录(第2版).pdf

    本书可能会提供多个实战案例,涵盖不同领域的C#项目开发经验。通过对这些案例的学习,读者不仅可以了解具体技术细节,还能学到项目管理的最佳实践。比如,可能会涉及到以下几种类型的案例: - **桌面应用开发**:...

    ASP.NET项目开发案例全程实录(第2版) pdf

    《ASP.NET项目开发案例全程...《ASP.NET项目开发案例全程实录》是一本项目开发案例方面的参考书,适合有基本编程知识但还没有项目开发经验的软件开发初学者使用,尤其适合高校在校生进行毕业设计、课题设计时做参考。

    实战突击 PHP项目开发案例整合.pdf

    通过这样的结构,本书旨在向读者传授系统、全面的PHP项目开发经验。 本书特别强调了软件工程的实用性和系统性,每个案例都遵循了系统的开发顺序,确保读者能够按照正确的步骤进行项目开发。此外,本书还提供了一张...

    80个java开发项目经验.pdf

    80个java开发项目经验,适合应届生

    java开发三年项目经验心得

    ### Java开发三年项目经验心得分析 #### 一、项目经验概览 在这篇文章中,作者回顾了自己在Java开发领域三年的工作经历,期间参与了三个不同的项目,从中获得了丰富的实战经验和技术积累。这三个项目分别是涉密...

    VC++6.0项目开发源代码既系统教程

    《VC++6.0项目开发源代码既系统教程》是一个专为C语言开发者和初学者设计的资源包,旨在提供实战性的项目开发经验与源代码分析。本教程以Microsoft的Visual C++ 6.0为开发环境,这是一款经典且功能强大的集成开发...

    微信小程序开发项目源码

    通过研究这个项目源码,不仅可以加深对微信小程序开发的理解,还能提升实际项目开发经验,进一步掌握前端开发技能。同时,对于想要从事微信小程序开发的人员来说,这是一个很好的实战案例,有助于快速上手并进阶。

    C#软件项目开发全程剖析——全面透视SharpDevelop软件的开发内幕

    《C#软件项目开发全程剖析——全面透视SharpDevelop软件的开发内幕》这本书深入探讨了C#编程语言在软件项目...通过阅读本书,读者不仅可以掌握C#编程技能,还能获得宝贵的项目开发经验,从而在实际工作中更加得心应手。

    C语言基础项目源码解析、思路Demo及实用开发工具探究

    我们需要不断学习和实践,提升自己的编程能力和项目开发经验,以应对未来的挑战和机遇。 在C语言项目开发中,我们不仅要注重代码的实现和功能的完善,还要关注代码的可读性、可维护性和性能优化等方面。同时,我们...

    [Visual.C++项目开发案例全程实录].明日科技.扫描版.pdf

    该书适合具有基本编程知识但尚未有项目开发经验的软件开发初学者,尤其是高校在校生进行毕业设计和课程设计时作为参考。此外,本书附带 DVD 视频光盘和丰富的素材库、案例库等资源,有助于读者进行二次开发,减少...

    Java Web项目开发案例精粹14新闻发布系统源码.rar

    【Java Web项目开发案例精粹14:新闻发布系统】 这个Java Web项目开发案例是一个典型的Web应用程序,用于构建一个新闻发布系统。在这样的系统中,管理员可以发布、编辑和删除新闻,而用户则可以浏览和搜索新闻。它...

Global site tag (gtag.js) - Google Analytics