最近做了近一年的CS项目终于接近完工了,有一种脱离苦海,跳出泥潭的感觉。虽然此项目做的很不理想,但它却给了我颇多感受,许多经验教训值得总结。

1。总的技术解决方案大方向上选择的不合适,导致后期对新的需求,新功能开发上难度上成倍的增加,致使软件的易用性、容错性、扩展性都很不理想,维护起来也相当麻烦,做到后期,bug满天飞,拆东墙补西墙的感觉,真的感觉自己掉进了一个泥潭,怎么都爬不出来的感觉。虽然此方案不是我能决定的,但是在初期,我却从来没有去主动深入的思考过此方案的利弊,以及对以后扩展性等各个方面的影响,这方面做的很不好,遇到问题一定要深入思考,要有自己的想法和思路,不能不加思考的人云亦云,跟上上面走。

2.软件核心模块的构架设计,这一块主要是由我负责的,由于没有考虑到以后需求的巨大变更,致使它不能根据需求的变化去很好扩展新的功能。出现这种问题时本来可以通过重构来适当的调整设计以使后面的开发工作更容易进行,但由于怕麻烦,存在一种这是最后的需求了,实现了就可以了的心理,致使越来越难重构,越来越难进行新功能的开发。

3.核心控件的选择上不够谨慎,为后期的开发带来了巨大的困难。

4.需求分析做的不够到位,和PM的沟通做的不够,致使需变动的太频繁。

通过对这个项目的总结,下面的经验是值得注意的,放之四海而皆准:

1.遇到问题,不要人云亦云,要有自己独立的想法和思路,不要怕麻烦,怕吃力不讨好。不要认为别人已经提供了方案了,我照着做就行,那个不是我的职责范围,只有通过不断的思考,不断的尝试,才能锻炼自己,不断的进步。

2.遇到困难时不能不能总想着逃避,越想躲着它,你会发现它越会找上你,一定要主动的想着去解决困难,这样你会发现后的跟会越来越好走,否则的话,后面会困难重重,举步维艰。

3.遇到需求和实现有冲突时,不能先从开发人员的角度去考虑怎么样实现起来简单来要求需求的调整,首先要从用户的角度去考虑怎么样更易用,更友好。当然这一点不是绝对的,要找到一个好的平衡点,把握好度,有时候一些小的需求的变更可能影响很大,这时就要进量找到一个折中的方案去说服用户。

4.关于控件、技术选择上要考虑到以下几点:

   1)控件的扩展性,可否满足以后的潜在需求。

   2)控件有没有很好的技术支持,出了问题有没有团队来修复,一些使用上的问题,有没有相关文档、例子、或者团队可以咨询。

   3)控件的性能问题,要有压力测试,考虑大数据问题

5.团队的协作性方便,不能放任不管,没有主次之分,这样很容易各做各的,相互推卸责任,没有统一的规范和风格,一定要有一个人去主导,去定制规则,使大家在最优的主线下去最大的发挥主观能动性。

CS项目总结的更多相关文章

  1. BS项目启动任意EXE文件或者CS项目

    1. 基于注册表启动exe程序 1. 桌面新建注册表执行文件:protocal.reg 2. 任意文本编辑器打开该文件 Windows Registry Editor Version 5.00 [HK ...

  2. web.csproj Compile 下出现两个同名 xxx.cs 项目中出现两个xxx.cs

    删掉一个就好了 ItemGroup Compile 为加载的cs代码文件

  3. 2018北美部分CS项目学费

    yearly cost from official website USC 城里 24credit about 49k + cost of room&food BU 城里 NEU 65k 城里 ...

  4. 最近跟进一个CS项目,用到c#基础知识,准备开个分类记录一下

    C#在txt类文件中追加内容 string path = "test.txt";FileStream mystream = new FileStream(path, FileMod ...

  5. DateHelper.cs日期时间操作辅助类C#

    //==================================================================== //** Copyright © classbao.com ...

  6. Web自定义协议,BS端启动CS端,

    实例 1.准备CS项目,windows窗体应用程序,拖进来一个label控件来接受BS的参数,并显示,右击生成,复制该文件的bin目录下的exe,例如放在以下路径,例如C:\\simu\\下, 2.编 ...

  7. Npoi Web 项目中(XSSFWorkbook) 导出出现无法访问已关闭的流的解决方法

    原本在CS项目中用的好好的在BS项目中既然提示我导出出现无法访问已关闭的流的解决方法 比较郁闷经过研究 终于解决了先将方法发出来 让遇到此问题的筒子们以作参考 //新建类 重写Npoi流方法 publ ...

  8. CS系列(一):Cobalt Strike初体验

    0X01 环境准备 Cobalt Strike安装包(链接:https://pan.baidu.com/s/1wCHJcJrF6H0wUCdetz3Xjg 提取码:rjuj) Cobalt Strik ...

  9. CS系统中分页控件的制作

    需求:在一个已有的CS项目(ERP中),给所有的列表加上分页功能. 分页的几个概念: 总记录数  totalCount (只有知道了总记录数,才知道有多少页) 每页记录数  pageSize (根据总 ...

随机推荐

  1. Scala零基础教学【90-101】Akka 实战-代码实现

    第90讲:基于Scala的Actor之上的分布式并发消息驱动框架Akka初体验 akka在业界使用非常广泛 spark背后就是由akka驱动的 要写消息驱动的编程模型都首推akka 下面将用30讲讲解 ...

  2. angular2学习资源汇总

    文档博客书籍类 官方网站: https://angular.io 中文站点: https://angular.cn Victor的blog(Victor是Angular路由模块的作者): https: ...

  3. TCP长连接与短连接的区别(转)

    1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...

  4. iOS开发——MJExtension复杂数组用法

    最近在看MJExtension的Demo,发现了一个plist文件直接转数组模型的方法.以前研究过但是浅尝辄止没有解决,这几天有时间,好好看了看,找到了解决办法,与大家分享. 如果大家的项目中有这种嵌 ...

  5. linux-改变文件属主权限-chown

    http://www.cnblogs.com/peida/archive/2012/12/04/2800684.html chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID: ...

  6. java--模板方法模式

    /* 需求:获取一段程序的运行时间 原理:获取程序开始和结束的时间并相减即可 获取时间:用java中已有的一个类:System.currentTimeMillis(); 当代码完成优化后,就可以解决这 ...

  7. canvas如何兼容IE8

    大家都知道canvas是个非常好玩的东西,但是IE9以下的浏览器不支持,有时候业务需求必须用到canvas,且又要求兼容IE8浏览器,那怎么办呢? 1.添加对html5的支持:<!--[if I ...

  8. 前端传递参数,由于控制器层类实现了struts2的ModelDriven而产生的一个异常

    产生的异常如下: ognl.MethodFailedException: Method "setId" failed for object com.aliyun.pcitcAliy ...

  9. C# 操作mongodb 简单实例

    本实例主要简单的查询,新增,修改和删除操作,完整代码如下: using System; using System.Collections.Generic; using System.Text; usi ...

  10. KVO(Key Value Observing)

    *KVO能够监听某个对象属性的改变 原理:仅仅要给一个对象注冊一个监听,那么在执行时, 系统就会自己主动给该对象生成一个子类对象,而且重写自己主动生成的子类对象的被监听属性的set方法.然后在set方 ...