zoukankan      html  css  js  c++  java
  • 软件研发设计经验总结

    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

  • 相关阅读:
    LeetCode Best Time to Buy and Sell Stock
    LeetCode Scramble String
    LeetCode Search in Rotated Sorted Array II
    LeetCode Gas Station
    LeetCode Insertion Sort List
    LeetCode Maximal Rectangle
    Oracle procedure
    浏览器下载代码
    Shell check IP
    KVM- 存储池配置
  • 原文地址:https://www.cnblogs.com/OOAbooke/p/2751556.html
Copyright © 2011-2022 走看看