1:多读书,多学习,养成读书的习惯,保持眼界的开阔;

软件行业是发展很快的行业,作为一个程序员开放的心智(open mindset)很重要,刚毕业的新人因为从学校出来不久,思想和意识都说新鲜的,如果工作之后很少主动学习的话,过不了几年就会和整个行业产生距离;技术,软件研发模式和思想就会落伍很多;

读书是很好的学习方法,工作之后通读几本行业经典书籍是非常有必要的,对行业文化有了很好的了解之后再去根据兴趣广泛阅度,并养成读书的习惯,对软件从业人员很好的帮助;

新技术层出不穷,程序员不一定要出一个技术就去用,不用并不意味不应该去了解,艺不压身,多丰富自己的知识保持开阔的眼界,对自己的发展是很有益的;

理想的程度是和同行业人员交流没有障碍,能领悟语言、架构背后的‘道’,很多新技术新思想其实是万变不离其宗的,关键是去领悟那个‘宗’。

2:多写代码;代码不写个几十万行对设计模式是很难理解清楚的;

写代码是程序员的基本功,设计模式是从代码中提炼的精神;代码写的少的人对设计模式的感觉是:字都认识,组合在一起就不知道这个模式好在哪里;

这是正常的现象,代码写的少对设计模式很难理解深刻;根据个人经验通常需要写个2、3年代码,代码量达到几十万行以上才能明白设计模式说的是啥意思。

也才能在架构上有发言的能力,说问题也才可能说到点子上,而不是说了半天都说不到重点。

3:多总结,代码写久了需要在设计和架构上提高自己,走(写程序-反思-提高)循环;

代码量要积累,不能为了积累代码数量而不顾质量,没有质量的代码写一千万行也是浪费时间;代码写多了肯定会遇到问题,bug,代码结构等等,如果需要解决这些问题,需要向高手学习经验,方法有向前辈请教,读书和看文章资料,面对面沟通是一个很好的方法,可以提高很快;

学习的目的主要是提高自己的思想,写代码的时候有很好的结构,易修改,易扩充;不去重复自己犯的错误;

写一段时间代码停下来总结一下,争取自己的水平有所提高;再继续编程-思考-提高;像上台阶一样,时间长了就站在不同的高度了。

养成总结的习惯,每个月花固定时间回顾一下,哪里做的好,哪里需要提高;每当做完一个工作之后,也要总结一下,哪里设计考虑的不周全,没想到或者想错的下次注意一下;犯的错误越少,个人的价值就越高;

4:做软件34年之后需要开始提炼思想,思想是在学习、工作中思考总结产生的,思想也是自己的,为以后更高级别的工作打下基础;

代码写了几年后如果没有自己的思想,那实际还是初,中级程序员的水平,思想是哪里来的,人的思想来自他每天做的最多事情,对于程序员来说就是和代码有关的工作;思想是在学习、工作中思考总结产生的;这就需要工作之中用心思考总结,就是投入去工作;

思想对自己的编程工作也是很好的补充,可以避免重复工作,让工作变的容易,为什么有些软件工程师工作起来很轻松,有人写程序就很费劲而且漏洞百出,每个人的思想在其中起到很重要的作用,没有思想的积累很大可能只能在低水平徘徊,这样的程序员价值也是不大的。

5:抽象思维能力非常重要,从一开始就要锻练;抽象思维能力就是在软件没写之前,脑子里面对与软件的想法,这个想法越详细,真正写程序的时候越容易;

软件很重要的能力之一就是抽象思维能力,抽象思维就是在没有写代码之前,脑子里对这个软件的想法,思考时越详细,写代码时越容易;

举个象棋的例子就是,下盲棋,两个人在一个没有棋子的棋盘上下象棋,这需要很好的抽象思维能力;其实研发人员也经常“下盲棋”,很常见的是两个经验丰富的程序员沟通一个设计,实际这个设计还没有实现,但是这两个人可以像这个软件实现了一样讨论的很细致,这是抽象思维能力的体现;

抽象思维能力不强的人通常不能够参与这种类型的讨论,或者只能说几句就再也插不上话了;

经验少的人是下不了几步盲棋的。

抽象思维能力强,可以把工作一次性做好,不会经常做推倒从来的工作。

6:没有设计或者花很少时间设计,之后不停的改代码,是抽象思维能力弱的表现;

抽象思维能力和设计能力是相符相成的,软件过程做的不好的团队通常喜欢花很少的时间去设计,之后不停的改代码,这是抽象思维能力弱的表现;

很多人喜欢说:别和我说设计,我要看实现!

其实说这么酷的话是需要职位很高才行,通常是大领导,对软件研发流程不是很了解的人;大领导说这话是没错的,因为大领导通常不写代码,不做设计;于是负责设计代码的人也这么做,领导要的急我们就边做边改,也不设计了整出来就行;

软件很多是在时间要求很急,需求变化很快的情况下要求发布的,但这不是忽略设计,忽略抽象思维能力的理由;敏捷开发就是很好的解决以上问题的办法,还有很多老外的经验都是值得借鉴,毕竟国内的研发是在走别人走过的路,我们在犯的和要犯的错误其实已经有数不清的解决办法了,老外们都犯过很多次了。

其实设计是一直要做的,很少时间去做设计,之后不停的改代码,花费的时间也少不到哪里去,反而会产生更多问题。

7:软件能力高低主要看两点:对模式、架构的理解程度和抽象思维能力;

软件能力很强的人一般都对模式和架构有深刻的理解,还有就是抽象思维能力很强,可以描述出一个设计中软件的很多细节,就像已经实现了这个软件那样去和人沟通;

抽象思维能力是设计能力很重要的一个指标,设计的好坏在于在实现过程中改动的大小,如果改动很少,说明抽象思维能力很强,在设计之处对于整个产品的细节把握的很到位,是设计能力高的体现;如果设计在实现过程中改的面目全非,说明设计能力很差劲,抽象思维能力很烂,或者没有抽象思维能力;

如何锻练抽象思维能力?在工作中锻练,多做些有难度的工作,没有太多捷径.

9:设计时常想想面向对象的几个原则;

面向对象的几个原则:去网上找吧,这里不写了;

10:好的设计是代码在头脑中都已经快速写过一遍了;

设计文档就是思路的体现,说白了就是你打算如何用软件实现这个功能;很多野路子的研发模式是写代码之前不知道该怎么写,边摸索边写代码,写对了继续,写错了再尝试另外的办法;

完成软件之后,再去花时间补一份设计文档;设计和写代码本是研发过程很密切的两个工作,好的设计可以很好的跟踪软件的研发过程;野路子的研发方法把他们分成了两个不相关的任务单独完成,效果有很大差别。

11:对于做设计,做管理几年之后不会写代码的人,原因是自己没有跳出写代码,对软件没有真正的理解;

有些管理者是从程序员提拔起来的,做过管理之后发现自己不会写代码了,其实研发的管理很大程度是研发过程的管理,设计是源于代码并且高于代码的工作,过程管理中设计又是很重要的,实际优秀的管理一直是对代码在内心非常清楚的状态;

出现这种情况原因是自己没有跳出写代码,割裂了设计和代码的关系,对软件没有真正的理解;

从设计可以预测实现代码,掌握了设计也就很好的掌握了代码,知道了这个道理,也就很难发生做了几年管理忘了如和写代码的情况出现。

12:设计模式是经典的书籍,是放在软件人员枕头边上的书,应该熟读;

转载于:http://blog.csdn.net/galen_wang/article/details/5412243

转载于:https://www.cnblogs.com/OOAbooke/archive/2012/11/02/2751556.html

软件研发设计经验总结相关推荐

  1. 融合开源软件治理经验,助力科技企业规避开源风险

    随着开源软件的普及,越来越多的科技企业依赖开源软件实现业务的高速发展,但开源软件存在的安全合规问题,已成为科技企业面临的主要风险之一. 开源网安十年发展,通过为百度.大疆.金蝶等科技企业提供优质的软件 ...

  2. 2021上半年计算机技术与软件专业技术资格考试——中级软件设计师 经验分享

    2021上半年计算机技术与软件专业技术资格考试--中级软件设计师 经验分享 为什么考 软考资讯 自身情况 备考过程 考试 感想 为什么考 一开始好像是有些招聘需要一些专业证书,当时看到这个证书觉得可能 ...

  3. 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手...

    别人总觉得是在显吧,干脆把这个项目认为是小项目了,不知道把这个项目是小了,别人会不会又觉得又显吧了?说大也不行.说小也不行,也的确没招了. 我想主要把项目里遇到的问题分享给大家一起探讨,也并不是为了什 ...

  4. 存储过程可重用的代码块_利用软件重用经验进行自动化测试推荐

    1 引用 Werner Janjic and Colin Atkinson . Utilizing software reuse experience for automated test recom ...

  5. windowsmobile软件_经验:CSPJ/S初赛知识点整理(NOIP硬件与软件基础)

    noip暂停,CCF推出CSP-J/S,推荐往年NOIP初赛内容参考一下 「NOIP初赛--硬件与软件基础」 计算机组成 计算机硬件由五大部分组成:运算器.控制器.存储器.输入设备.输出设备.如下图 ...

  6. 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手

    别人总觉得是在显吧,干脆把这个项目认为是小项目了,不知道把这个项目是小了,别人会不会又觉得又显吧了?说大也不行.说小也不行,也的确没招了. 我想主要把项目里遇到的问题分享给大家一起探讨,也并不是为了什 ...

  7. P6与BIM,上海迪士尼BIM应用总结及P6软件应用经验

    从建筑网上看到一遍P6与BIM的文章,讲诉了P6与BIM之间的应用关系,非常之不错,现分享给大家, 迪斯尼在工程建设领域带给了我们最好的施工水平及世界顶尖的项目管理经验,上海满悉DI(Deep Ins ...

  8. 华南理工大学计算机/软件 复试 经验贴整理

    文章目录 最新更新2023/02/24 : 我能提供?(21,22届复试全流程,如何找复试资料,一些学习技巧,前人经验,闲聊,会就答...) 2020年 2019年 其它 资料来源 最新更新2023/ ...

  9. MSP430C语言编程技巧,TIMSP430微控制器软件编程经验和应用技巧 - 全文

    本文主要介绍TIMSP430微控制器软件编程设计中的实践经验和应用技巧. 第一部分讲述基于中断的标准程序流程模式,适用于大多数的产品应用编程:另外一部分讲述MSP430微控制器编程人员在开发产品时需要 ...

最新文章

  1. 如何拼通网络ip地址_如何解决IP地址冲突
  2. Python基础教程 os.walk()方法
  3. 3.8 高级检索方式(二)
  4. (六)docker-compose使用教程
  5. 宁波Uber优步司机奖励政策(12月14日到12月20日)
  6. POJ 2287 田忌赛马(贪心)
  7. TCP和IP协议的特点
  8. 用企业实例说明,制造业如何打破4大困境,解决数字化转型痛点
  9. UC伯克利黑科技:用语音数据预测说话人手势
  10. 自定义有多个按钮节点的SliderView
  11. Atom飞行手册翻译: 4.4 Atom中的序列化
  12. 微课|中学生可以这样学Python(5.5.3节):字符串格式化1
  13. Which path should be used jdk or jre for JAVA_HOME environment variable?
  14. 苹果mac智能手写笔记软件:GoodNotes 5 +iCloud同步
  15. 写个批处理脚本来帮忙干活--遍历文件夹字符串处理
  16. srun Invalid account or account/partition combination specified
  17. shell脚本之正则表达式
  18. md文件的简洁打开方式
  19. LVS负载均衡集群服务搭建详解
  20. BINARY和VARBINARY类型--MySql数据库

热门文章

  1. 想赚钱?先把底层逻辑搞清楚
  2. 每个人都可以创业成功,不要急于求成,慢慢来
  3. 7000块招不了一个工人
  4. RISC-V架构能否有效挑战ARM和英特尔?
  5. 以太坊创世区块源码分析
  6. Qt4_你可以使用加农炮了
  7. SqlServer解析XML,解析JSON数据格式
  8. c 结构体之位域(位段)
  9. 喜欢的数字:使用一个字典来_数字证书:何时何地使用它们
  10. sql azure 语法_如何将内部SQL Server数据库迁移到Azure