软件项目开发过程中主要遇到的核心问题小结

   最近在北京组织管理某银行的现金管理系统项目的开发,对软件项目开发过程中遇到的问题进行一些心得体会小结,怕时间长了没及时写下来时间久了被遗忘了,现在趁项目还在开发过程,把体会相对深刻时,感受到的一些问题整理下来,分享给大家同时也多听听大家的建议,也希望给那些将来想当项目管理人员的做一些参考,好思想好总结,没必要将来跟我一起升天人间蒸发了。

 

   01:软件项目开发合同的订立,合同需要对将来几个月甚至几年需要做的事情有个明确的定义说明,限定好工作范围、工作内容、承担的责任、项目总费用,每个阶段支付的费用都需要有明确的说明甚至付款条件等都需要一清二楚,很多东西都没讲明白是将来合作不愉快的导火索,这些都需要白纸黑字写清楚,其实从合同上也能看出甲乙双方的水平在什么层次上的。

 

   02:软件开发过程中,往往会发生客户不按时支付费用的事情,因为软件开发不只是脑力活儿,也是强度非常大的体力活儿,难免会遇到不能按时交付软件的可能性,除非遇上非常有经验的能相对准确评估工作量、工期的管理人员,参考历史的开发经验、再按自身团队的开发技术能力、协调工作效率,计划出一个合理的工期计划来,因为整个公司都需要考虑到资金安全、开发风险,需要有一定的水平能说服客户及时付款,至少可以支付大部分款项的人,在开发软件项目的过程中往往会发生需要垫资几十万的事情,其间需要做好防备工作需要防止资金链断裂了。

 

   03:软件开发人员中途离职也是家常便饭,相对规范的公司,一年也大概也会有10%的人员流动性,若薪资待遇也不怎么样、公司管理也不规范,开发人员也学不到知识、业务也不稳定的,那估计有50%的流动性也是很正常的事情,连微软、Google都会有开发人员离职现象,更何况一个不知名的公司,人员离职是很正常的现象,但是人员离职了就得需要有后备开发人员,公司管理人员需要在最短的时间内招聘到合适的人员,这也需要必备的技能。

 

   04:现在已经不是单枪匹马就能搞定中型软件系统的年代了,一个软件项目开发过程中往往需要N多人参与,客户对软件项目的质量要求,功能要求也越来越高,不只是需要把程序写好,还需要有各种配套文档,测试都需要跟上,所以这些人的协调工作、及时沟通也是很大的问题,若一个项目经理的沟通能力有问题也很容易遇到很多没必要的麻烦,也会使得项目进展会很不顺利的局面,甚至到有敌对力量产生的程度,一个公司,一个项目最怕的是内耗,我们国家其实很多东西也都浪费在内耗上了,若没几千年封建王朝的内耗,我们应该会发展的比美国强大很多。

 

   05:合理的安排工作计划、有目的有计划的做事情,很不容易,项目里需要完成的工作NN多,需要协调的人员NN多,需要设计实现的功能NN多,做一个软件项目并没有学习编程那么轻松愉快,更不项打网络游戏一样输了还可以从头再来,软件项目开发是不允许输了再来的,输了就需要按合同进行经济赔偿、又要丢人、又容易吃官司、还无法在这个圈子里继续生存了,至少会口碑很差了。

 

   06:进度的把控比制定工作计划更难,我们可以制定个计划2012年开发好操作系统、2013年开发好数据库、2014年开发好编译器、开发环境,看上去很美,其实更本没那个能力实现这个计划,计划计划难免会有变化,计划目标需要不断地调整,但是调整得太大,那说明这个计划有问题不符合实际甚至是有些空洞的计划瞎搞搞而已,开发项目过程中需要分工合理,有一定的稳定性,例如今天让你ASP开发,明天PHP开发,后天C#开发,大后面又是JAVA开发,估计没几个开发人员不会被折磨疯了,工作分配也是一个道理,需要有一定的稳定性。

   及时的验收确认好工作安排也是需要有水平的,若开会问大家任务完成了吗?大部分都会说“快好了”,快好了可以理解为,已经完成了10%?已经完成了90%?但是剩下10%是技术难题,超级复杂的功能,那其实这并不是完成了90%,虽然开发人员理解为90%,但是可能10%都不到而已。

 

   07:高效的会议,解决问题需要有效率,特别紧急时需要有站立式会议,项目紧急时也需要安排每天的会议,会议不适合超过20-30分钟,甚至10分钟内开好会议是最理想的,例如我们10个人参加会议,会议开了1天,那其实是超级浪费生命,如何高效的指挥大家,如何开一个高效的会议,责任明确的,能解决问题的会议是需要有一些水平的,若以前参与过牛B管理人员主持的会议,那很容易有经验了,参考别人的好处多多。

 

   08:及时的强有力的测试,人都不可能自己找出自己的缺点,写程序也一样,能自己找出自己缺点的,能自己测试出自己程序错误的人,都是牛人,啥叫牛人?就是这样的人不多才叫牛人,普通人是还是需要别人来测试出问题,反馈给大家的,这个就是生产里的一个工序,笔记本生产线上少了一个测试检验的,那会惹来多少麻烦?天天有客户投诉,天天有人退款,天天折腾更换本本的事情来回快递来回折腾,何必呢?增加一个测试环节,减少很多后期麻烦的产生。

 

   09:成熟的功能设计套路、函数命名套路、窗体命名、变量命名等等,也会大大的减少项目的开发周期,项目前期需要把例子程序都写好,适当的进行一些培训工作,然后让大家模仿例子程序就可以了,例子程序不适合写得超级复杂,功能超级强大,只要能把主要核心思想都表明了就可以了,最好还是拿个投影讲一下比较好,这样大家的印象也会更深刻一些。 

 

   10:成熟的数据库设计套路,其实数据库设计也是一门学问,看起来简单,真正想设计好也需要有硬功夫,也需要手艺精湛、技艺高超的。数据库基本上还是目前开发各种管理系统必不可少的组成部分,甚至现在还是稳定的管理信息系统的基石,所以数据库设计是否合理、至少30-40%的项目是否顺利稳定的分量是有的。

 

   11:代码规范,代码质量检查,由于项目不是一杆子买卖,往往还担负着后期的维护,甚至部分运行工作,若项目的代码质量不好后期会有无穷无尽的痛苦,把一些问题扼杀在摇篮里,总比把问题培养大了,再去消灭得麻烦、头大,所以项目的中后期一定要安排严格的代码质量检查工作,可以找个工作效率非常高,做事情又相对仔细认真的人,来个地毯式轰炸,从头到尾把扫一眼,很多有SQL注入漏洞、有重复功能的代码、命名不合理的代码等等还是会被发现很多,毕竟项目开发中参与的人多,人多了就很容易啥鸟都有了。

 

   12:系统架构重构上也花费蛮多时间,由于客户是要求在分布式环境里运行系统,开发时又往往是单机上开发调试,又没充足的时间慢慢勾画、慢慢设计,工作安排往往是排得满满的,系统的架构有时候需要进行一些调整,若刚开始开发时就架构不明确、思路不严谨,到项目的中后期,整个项目就会大乱,更本经不起系统架构的重构,当然这里的架构架构重构更多的是小调整,若真的是大调整那说明刚开始的架构就是非常失败的,项目由于不是1个人开发的,若是一个人开发项目那还好说,想怎么调整就调整,现在是多个人开发项目,虽然不能比喻是航空母舰,至少像个护卫舰,想怎么拐弯就怎么拐弯不是那么容易的。

 

   13:技术疑难为题外包,项目过程中遇到了一些WCF配置相关的疑难问题,前后解决了10多个问题,还是无法顺利搞定信息加密传输、电子证书SSL安全配置等等,甚至两台电脑之间的TCP方式通讯上也遇到了问题,由于手上有300多个付费用户,而且他们都是开发人员,所以把这个信息一发布,马上就有专家响应,人家2个小时就搞定问题了,支付了500元辛苦费,钱虽然少也是个心意,我也把问题搞定了,我的付费客户也从我这里赚到辛苦钱了,2个小时若都能赚500元,而且是自己擅长的事情,我想也足够可以了,有时候选择花钱办事比花时间办事更爽。

 

   14:项目经理的带头作用是不可低估的,若碰上一个天天吃喝嫖赌、天天游手好闲的项目经理,那这个项目的最后的结局就是等着赔款就可以了,其他人员看到项目是这样的人没几个SB会拼命干了,大家顶多装装样子,混混日子找找那里有更好的前途了,这里就是不是久留之地的念头没几天就产生了,我自己曾经就遇到过这样的情况,我没到半年就跑路了,公司没两年就关门大吉了,因为这样的领导不是真正干事的,顶多就是转了空子碰到到了狗屎运而已长久不来。

  

   15:采用成熟的软件组件也会大大的促进软件项目的开发进度,这次我们工作流自己开发了一套B/S的,在网页上拖拖拉拉就可以设定好工作流的,自己也比较满意的效果,但是现在想想有接近足足开发了5个月,这个开发成本算 开发人员的工资 + 公司的房租、办公费用 +相应的管理费用 + 测试成本 ,远远超过了6万以上的成本,只是这个钱没一次性拿出,而是每个月一点点的往外付出而已。而且还花费了5个月时间,还不能确保没任何错误,其实到真正稳定好用,至少要烧掉10万了。若从项目开始开发就用合理的价格购买了一套,不用5个月时间自己开发,而是用1个月时间学会怎么用,然后剩下的4个月时间放在核心的业务系统的开发上,项目会相对来说更轻松、更顺利一些,毕竟战线就缩短了很多了,可以集中优势兵力重点突破。兵力分散乃大忌也。

 

   16:软件在开发测试阶段往往会有客户的需求变更,甚至有可能会有大面积的需求变更,每变更一次需求,客户会觉得这个是简单的变更,开发人员会说是超级复杂的需求变更甚至会说前面的工作都白做了,这时候需要有超级强的沟通能力,一方面尽量阻止客户发生没必要的变更,甚至彻底想清楚了再变更,每次变更都有文档记录,好向客户追加软件开发费用,其实这个除了大客户、实际强的客户外,想追加费用是难于上天的事情。只能是跟客户处理好关系、下次客户还能找你就不错了,客户的钱也不是飘来的,预算也是有限的,所以若不想把客户得罪了,还只能按着客户的变更来、顶多是把事情都讲清楚,这部分变更带来了多少工作量等等,至少按合同支付费用时,能有个协商的筹码对吧。

   开发人员这里,有再大的牢骚也是没办法的事情,为人民服务、为客户服务,客户是上帝,让客户满意,让客户用我们的软件更舒服、爽一些,只能按客户的要求重新调整程序,若水平高怎么调整都没事,例如用通用权限管理系统组件来说,我还真希望客户能提改进意见,那会开心死了,怎么调整都不怕,因为维护了7-8年,经得起折腾,再说我的开发技能也是顶呱呱的,不怕客户折腾,经得起折腾,因为这东西是铜墙铁壁地。

 

 

 

   客户是上帝、客户既然选择了我们,客户烧了钱找我们做软件开发了,我们就得让客户把这钱烧更舒坦,得更爽。

   昨天晚上调试优化程序又住在办公室了,今天还得继续战斗,等项目结束了出去旅游一下,放松几个月再战斗。

   谢谢大家补充完善、有不足之处请指点。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Directory.Build 来消除项目文件中的重复配置

使用 Directory.Build 来消除项目文件中的重复配置Intro如果解决方案里的项目比较多的话,往往会有很多重复的项目属性,通常我们可以使用独立的 props 属性文件来配置公用的属性,而一般的属性文件都需要手动的 Import 到项目文件中&#xff0c…

mysql 批量更新和批量插入

1. 批量更新 update table_name set field_name CASE id WHEN id1 THEN field_value, WHEN id1 THEN field_value END 2.批量插入 insert into table_name (field1_name, field2_name) values(field1_value, field2_name) , (field1_value, field2_name)

chromium关闭更新_Win10今年最重磅更新!Win10 2004正式版详尽体验

今年首个Windows 10正式版更新于近日上架MSDN,版本号最终确定为Build 19041.208(v2004),这是一个RTM版本,也就是送到OEM厂商压盘的正式版本,向用户正式推送的时候不会再有什么功能变化。按照微软的一贯逻辑,上半年更新…

Android网络通信的六种方式示例代码

表1展示了Android SDK中的一些与网络有关的API包名表1. Android SDK 网络包包 描述 API LevelJava.net 提供与联网有关的类,包括流和数据包&#xff0…

技术分享 | 业务模板的技术实践

源宝导读:“业务模板”作为天际建模平台3.0推出的重要特性,它将元数据复用发挥到了极致,通过业务模板几乎可以覆盖整个建模元数据开发流程,提供业务场景级别的复用能力。本文将介绍“业务模板”的设计原理、实现方案和应用场景。一…

为什么那么好的女孩子还单身?

1 终于知道家里的吃的都是怎么没的了!2 我的小鱼干!快给我!3 这几只狗子真是太皮了!4 您点的肉香满溢披萨到了~5 一位新手爸爸分享了自己关于为人父母的感悟6 应采儿:为什么那么好的女孩子还单身? 陈小春&a…

php上传预览源码,php批量上传五[带预览]-PHP源码

《script》ec(2);《script》$path$_SERVER["DOCUMENT_ROOT"];//服务器路径$i 0;foreach ($_FILES["pictures"]["error"] as $key > $error) {if ($error UPLOAD_ERR_OK) {$upload_file$_FILES[pictures][tmp_name][$key];//文件被上传后在服…

RHCS创建高可用集群apche服务器

实验环境: 系统版本:RHEL5.4 将selinux关闭,刷新iptables -F 配置yum仓库 192.168.0.25 station25.example.com 宿主机 192.168.0.24 station24.example.com 节点(虚拟机) 192.168.0.39 station39.example.com 节点(…

成不了天才,但为何也没成人材?(转)

长期以来,"软件业"一直被视为"智力密集"型的"朝阳"产业,大多数从业者都受过高等教育,其平均素质居于社会各行业的前列,这个产业的顶尖人物被公众视为"知识英雄",比如微软公司…

python rgb转lab_从RGB转换到LAB色彩空间 - 深入了解L * A * B *值的范围?

在OpenCV(Python)中将图像从RGB转换为LAB时,我无法找到有关L * A * B *值范围的文档。寻找一些确认我的见解是正确的,因为这些数字相当奇特。我的轻度结果是从0-255,但对于a和b我分别得到了42-226和20-223。我知道这些数值不需要有一个预定的…

oracle怎么删除lob对象,Oracle系列:LOB大对象处理

Oracle系列:LOB大对象处理Oracle系列:LOB大对象处理主要是用来存储大量数据的数据库字段,最大可以存储4G字节的非结构化数据。主要介绍字符类型和二进制文件类型LOB数据的存储,单独介绍二进制类型LOB数据的存储。一,Or…

.NET 6 RC2 版本发布

原文:bit.ly/3FS9xm7作者:Richard日期:2021-10-12翻译:精致码农-王亮说明:文中有大量的超链接,这些链接在公众号文章中被自动剔除,一部分包含超链接列表的小段落被我删减了,如果你对…

prototype.js 和jquery-1.6.2.js冲突问题解决方法

在写项目中同时用到了jquery-1.6.2.js和prototype.js两个js文件&#xff0c;使用$的时候冲突。解决方法&#xff1a; 首先引入jquery-1.6.2.js&#xff0c;然后重定义$。 <script type"text/javascript"> js$; $aa; </script> 然后在引入prototype.…

最诡异数学悖论:1+1=1

全世界只有3.14 % 的人关注了爆炸吧知识今天&#xff0c;8岁表妹的老师给她奖励了一块大巧克力&#xff0c;超模君打趣她能不能分给我点&#xff0c;遭到残忍拒绝&#xff0c;超模君很愤怒&#xff0c;暗下决心要神不知鬼不觉地吃上表妹的巧克力。超模君趁表妹在认真做作业的时…

JS URL Parser

为什么80%的码农都做不了架构师&#xff1f;>>> /** *param {string} url 完整的URL地址 *returns {object} 自定义的对象 *description 用法示例&#xff1a;var myURL parseURL(http://abc.com:8080/dir/index.html?id255&mhello#top); myURL.fileindex.ht…

如何使用Instruments诊断App(Swift版):起步

2019独角兽企业重金招聘Python工程师标准>>> 本文由Mr_cyz&#xff08;博客&#xff09;翻译自raywenderlich&#xff0c;欢迎参与我们的翻译活动。原文&#xff1a;Instruments Tutorial with Swift: Getting Started 更新记录&#xff1a;该教程由 James Frost 更…

tcp抓包返回fin_TCP/IP学习二TCP链接建立与断开

今天详细学习下TCP链接的三次握手四次挥手&#xff0c;因为开发web服务还是会经常遇到一些网络问题的。其实这方面的资料很多&#xff0c;可能我们看过很多次但也忘了无数次[捂脸]&#xff0c;这次我主要通过抓包例子来展示这个过程。TCP传输控制协议(TransmissionControlProto…

设置vim

1、配置文件的位置 在目录 /etc/ 下面&#xff0c;有个名为vimrc的文件&#xff0c;这是系统中公共的vim配置文件&#xff0c;对所有用户都有效。而在每个用户的主目录下&#xff0c;都可以自己建立私有的配置文件&#xff0c;命名为&#xff1a;“.vimrc”。例如&#xff0…

70%的单身女孩都是这样想的!

1 父爱如山&#xff0c;山就是杵在那里一动不动&#xff01;2 3 单身的女孩不要着急4 哎呀&#xff0c;没有两条小鱼干是起不来了&#xff01;5 一分钟教你画二哈&#xff0c;这次真的厉害了&#xff01;6 披着羊皮的狼&#xff1f;&#xff1f;&#xff1f;你点的每个赞&#…

.NET基金会讨论 .NET 开源事业之路

【编者按】从闭源走向开源&#xff0c;.NET 背后都发生了哪些有趣的故事。本文采访了 6 位微软 .NET 团队成员&#xff0c;分享他们在 GitHub 以及建立 .NET 开源项目的经历。作者 | Richard Lander 译者 | 弯月出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff0…