软件研发设计经验总结
2012-11-02 16:58 OOA 阅读(527) 评论(0) 编辑 收藏 举报1:多读书,多学习,养成读书的习惯,保持眼界的开阔;
软件行业是发展很快的行业,作为一个程序员开放的心智(open mindset)很重要,刚毕业的新人因为从学校出来不久,思想和意识都说新鲜的,如果工作之后很少主动学习的话,过不了几年就会和整个行业产生距离;技术,软件研发模式和思想就会落伍很多;
读书是很好的学习方法,工作之后通读几本行业经典书籍是非常有必要的,对行业文化有了很好的了解之后再去根据兴趣广泛阅度,并养成读书的习惯,对软件从业人员很好的帮助;
新技术层出不穷,程序员不一定要出一个技术就去用,不用并不意味不应该去了解,艺不压身,多丰富自己的知识保持开阔的眼界,对自己的发展是很有益的;
理想的程度是和同行业人员交流没有障碍,能领悟语言、架构背后的‘道’,很多新技术新思想其实是万变不离其宗的,关键是去领悟那个‘宗’。
2:多写代码;代码不写个几十万行对设计模式是很难理解清楚的;
写代码是程序员的基本功,设计模式是从代码中提炼的精神;代码写的少的人对设计模式的感觉是:字都认识,组合在一起就不知道这个模式好在哪里;
这是正常的现象,代码写的少对设计模式很难理解深刻;根据个人经验通常需要写个2、3年代码,代码量达到几十万行以上才能明白设计模式说的是啥意思。
也才能在架构上有发言的能力,说问题也才可能说到点子上,而不是说了半天都说不到重点。
3:多总结,代码写久了需要在设计和架构上提高自己,走(写程序-反思-提高)循环;
代码量要积累,不能为了积累代码数量而不顾质量,没有质量的代码写一千万行也是浪费时间;代码写多了肯定会遇到问题,bug,代码结构等等,如果需要解决这些问题,需要向高手学习经验,方法有向前辈请教,读书和看文章资料,面对面沟通是一个很好的方法,可以提高很快;
学习的目的主要是提高自己的思想,写代码的时候有很好的结构,易修改,易扩充;不去重复自己犯的错误;
写一段时间代码停下来总结一下,争取自己的水平有所提高;再继续编程-思考-提高;像上台阶一样,时间长了就站在不同的高度了。
养成总结的习惯,每个月花固定时间回顾一下,哪里做的好,哪里需要提高;每当做完一个工作之后,也要总结一下,哪里设计考虑的不周全,没想到或者想错的下次注意一下;犯的错误越少,个人的价值就越高;
4:做软件3、4年之后需要开始提炼思想,思想是在学习、工作中思考总结产生的,思想也是自己的,为以后更高级别的工作打下基础;
代码写了几年后如果没有自己的思想,那实际还是初,中级程序员的水平,思想是哪里来的,人的思想来自他每天做的最多事情,对于程序员来说就是和代码有关的工作;思想是在学习、工作中思考总结产生的;这就需要工作之中用心思考总结,就是投入去工作;
思想对自己的编程工作也是很好的补充,可以避免重复工作,让工作变的容易,为什么有些软件工程师工作起来很轻松,有人写程序就很费劲而且漏洞百出,每个人的思想在其中起到很重要的作用,没有思想的积累很大可能只能在低水平徘徊,这样的程序员价值也是不大的。
5:抽象思维能力非常重要,从一开始就要锻练;抽象思维能力就是在软件没写之前,脑子里面对与软件的想法,这个想法越详细,真正写程序的时候越容易;
软件很重要的能力之一就是抽象思维能力,抽象思维就是在没有写代码之前,脑子里对这个软件的想法,思考时越详细,写代码时越容易;
举个象棋的例子就是,下盲棋,两个人在一个没有棋子的棋盘上下象棋,这需要很好的抽象思维能力;其实研发人员也经常“下盲棋”,很常见的是两个经验丰富的程序员沟通一个设计,实际这个设计还没有实现,但是这两个人可以像这个软件实现了一样讨论的很细致,这是抽象思维能力的体现;
抽象思维能力不强的人通常不能够参与这种类型的讨论,或者只能说几句就再也插不上话了;
经验少的人是下不了几步盲棋的。
抽象思维能力强,可以把工作一次性做好,不会经常做推倒从来的工作。
6:没有设计或者花很少时间设计,之后不停的改代码,是抽象思维能力弱的表现;
抽象思维能力和设计能力是相符相成的,软件过程做的不好的团队通常喜欢花很少的时间去设计,之后不停的改代码,这是抽象思维能力弱的表现;
很多人喜欢说:别和我说设计,我要看实现!
其实说这么酷的话是需要职位很高才行,通常是大领导,对软件研发流程不是很了解的人;大领导说这话是没错的,因为大领导通常不写代码,不做设计;于是负责设计代码的人也这么做,领导要的急我们就边做边改,也不设计了整出来就行;
软件很多是在时间要求很急,需求变化很快的情况下要求发布的,但这不是忽略设计,忽略抽象思维能力的理由;敏捷开发就是很好的解决以上问题的办法,还有很多老外的经验都是值得借鉴,毕竟国内的研发是在走别人走过的路,我们在犯的和要犯的错误其实已经有数不清的解决办法了,老外们都犯过很多次了。
其实设计是一直要做的,很少时间去做设计,之后不停的改代码,花费的时间也少不到哪里去,反而会产生更多问题。
7:软件能力高低主要看两点:对模式、架构的理解程度和抽象思维能力;
软件能力很强的人一般都对模式和架构有深刻的理解,还有就是抽象思维能力很强,可以描述出一个设计中软件的很多细节,就像已经实现了这个软件那样去和人沟通;
抽象思维能力是设计能力很重要的一个指标,设计的好坏在于在实现过程中改动的大小,如果改动很少,说明抽象思维能力很强,在设计之处对于整个产品的细节把握的很到位,是设计能力高的体现;如果设计在实现过程中改的面目全非,说明设计能力很差劲,抽象思维能力很烂,或者没有抽象思维能力;
如何锻练抽象思维能力?在工作中锻练,多做些有难度的工作,没有太多捷径.
9:设计时常想想面向对象的几个原则;
面向对象的几个原则:去网上找吧,这里不写了;
10:好的设计是代码在头脑中都已经快速写过一遍了;
设计文档就是思路的体现,说白了就是你打算如何用软件实现这个功能;很多野路子的研发模式是写代码之前不知道该怎么写,边摸索边写代码,写对了继续,写错了再尝试另外的办法;
完成软件之后,再去花时间补一份设计文档;设计和写代码本是研发过程很密切的两个工作,好的设计可以很好的跟踪软件的研发过程;野路子的研发方法把他们分成了两个不相关的任务单独完成,效果有很大差别。
11:对于做设计,做管理几年之后不会写代码的人,原因是自己没有跳出写代码,对软件没有真正的理解;
有些管理者是从程序员提拔起来的,做过管理之后发现自己不会写代码了,其实研发的管理很大程度是研发过程的管理,设计是源于代码并且高于代码的工作,过程管理中设计又是很重要的,实际优秀的管理一直是对代码在内心非常清楚的状态;
出现这种情况原因是自己没有跳出写代码,割裂了设计和代码的关系,对软件没有真正的理解;
从设计可以预测实现代码,掌握了设计也就很好的掌握了代码,知道了这个道理,也就很难发生做了几年管理忘了如和写代码的情况出现。
12:设计模式是经典的书籍,是放在软件人员枕头边上的书,应该熟读;