程序员的修养,架构师养成之道(一)

引言

近期在头条认证成功软件工程师,作为30多年的老码农还想分享一下作为资深程序与架构师的一些心得与经验体会,希望对大家有一些帮助。

我是从1990年开始接触编程,在1992年就通过了全国的程序员软件技术资格考试并获得证书,工作后从程序员,软件设计师,架构师,项目经理,项目总监,项目指挥,亲自编写的系统有十多个,新自组织实施的项目大大小小也有二十多个,当前主要精力花在对几个投资上亿的软件项目进行架构管控,项目协调。由于自己喜欢写代码中间中断了10年,这几年由于兴趣,还是重操旧业写代码,业余上写一些小系统练手玩玩,旧的头条文章,是近两年学习的内容输出。

本人编程使用并完成项目应用的编程语言也非常多,很多现在的程序员可能都没有听说过,使用过的主要有:汇编语言、BASIC、PASCAL、Dbase、Foxbase、Magic、Access、C++、C#、VC、PowerBuilder、Java、Python以及SQL。

程序员的在中国确是一个吃青春饭的行业,因为程序入门不是特别难, 上有很多零基础学习某某编程的课程,的确要学会一门编程语言不会很难,但要真写出一个有用、有价值的软件还是非常困难的,这也是当前大型软件公司少、市非常高的原因。在我的工作经历中,有非常多是学习计算机专业人员,工作后绝大部分实际上无法独立开出一个软件来,只能参与项目部分工作,时间长了,只能负责运维、项目管理、支持性功能,很少能成长为架构师继续组织软件开发,这中间还是有很多经验值得分享。

在30多年的编程经历中,自己写过很多代码,也培训了很多优秀的项目经理与架构师,与数百程序员共事过,积累了一些经验和心得体会,后续将以连载方式总结分享出来,希望对你有用,感谢大家关注并转发。

一、持续学习

计算机专业从某种程度一说,是比较悲哀的,我接触的同行中,计算机专业毕业很长时间后不从事本专业的人员比例非常高,由于当前IT技术面太广了,发展又快,需要持续学习,计算机课程可以学习一段时间就工作,也可以跳着学,计算机专业毕业后如果不从事本专业工作,基本上3年就不会了,因为全新工具出来了,10年基本上是外行了,整个体系已更换了。要想在计算机专业持续工作,必须保持持续学习、终生学习的状态。

1、根据兴趣和需要学习

程序员要学习的内容太多,当前在使用的主流编程语言就、数据库都多达十几种,各有不同的特色与特点,也针对不同的应用领域,学习本来就枯燥,没有兴趣学不进去,不有实际应用,学不深入并且学会了很快就忙掉,因此需要根据兴趣和工作需要进行。但IT某个产品的学习还是需要一定时间才能掌握,需要对前沿做普遍性了解,有兴趣的做理解深度学习,在需要时,做应用时做更全面、深度的掌握性学习。

2、在一个方向成为高手

3、写博客做沉淀

写作是为了更好地总结,更深入、全面的学习,对于程序员来说,要想提升自己,要想成长为架构师、项目经理,持续不断学习是必须具备的基本素质。现在博客比较发布,写作输出更加方面,在技术方面可以多写,但是要做好内容保密与知识产权保护工作,不要直接将工作中的代码粘贴发布出来,避免产生知识产权问题。

二、养成良好的记录习惯

对于一个程序员来说,是经终身学习的,别的专业学习一门课程可能用很长时间,我有一位学习机械的校友,在交流时他们搞一个东西可以吃10年,但对于程序来说,就悲催了,有时我们搞定一项东西,可能就只在一个项目中用,仍要全力学习掌握通,上面我学的Magic编程工具,就只用过一个项目,当时用它为一个酒厂编写了一套完整库存、销售单管理系统,就用了1年。

近几十年计算机技术发展太快了,对于我们从业人员来说,即是福音,更多的是挑战,需要学习的内容很多,技术点也非常多,在编程过程中,要想取得好的进展,能力快速提升,编程效率提高,就必须要养成良好的记录习惯,将工作中学习、使用、解决的关键技术点做可复用的记录。这种记录与写日记不一样,这个记录是为了便于复用。很多都是code片断,必须用计算机文本记录,以便于复用。建议记录的内容如下:

1、建议记录的内容

  • 关键技术点:我们在编程时,关键的技术点不会很多,更多的是重复性的工作,对关键技术点是我们能力提升之处,也是系统功能重点要实现的地方。我在刚上班不久,使用PowerBuilder编程,当时花了十多天,构建了下过用户选择表格行、列、条件,系统自动用SQL语句,构成数据的DataWindow,这样用户就可以自定义 表,后面在使用了十多次,这个实现的关键代码记录起来就非常有用。
  • 解决的重要问题:编程的过程最苦的就是debug了,特别是使用新学习的语言和工具时,会遇到大定的问题和bug需要排出,现在互联 很发达了,排bug比较容易,以前互联 不发达时,排一个问题要很长时间,还经常需要找高手,但高手时间总是有限,自己解决了重要问题和典型问题,一定要记录解决方法。如有时间,最好写成blog,这也是为什么IT类的BBS、博客非常兴盛的原因。
  • 算法与技巧:当前大家都将程序员称着码农,这个叫法多少还是有些不爽,在做企业应用编程复制、粘贴的确用得很多,不像写操作系统,有那么多技巧,对于编程来说,程序的技巧是非常重要的。在读书时,啃过非常厚有1000多页的老外写的《编程算法》,对各种排序、树、 络等实现有详细的编程案例,当时虽然不能全部掌握,对自己参加编程竞赛和后面的工作非常有帮助。算法与技巧对于提高程序运行速度是非常有好处的,当我们程序出现性能问题时,我们首先要分析是的算法使用是否有问题,不是一上来就提升硬件性能。
  • 待处理事项:现在编程工作在代码段中增加了//TODO,编程工具可以自动帮助汇总,以前没有这个功能,自己必须记录好,否则系统上线会发现很多没有解决完的问题。我们在做企业软件时,经常会绕过一些暂时难以解决的代码问题,或比较小,这一阶段不解决的代码问题,如果编程工具没有//TODO汇总功能,自己不记录好,就会积累下比较严重的问题。
  • 重要的配置项:对于系统重要的配置项,自己必须集中记录起来,在问题分析时,以便对快速找到并且参考,配置项与参数太多了,有时记不得在代码哪儿,会影响对问题的分析。
  • 任务问题与BUG:现在非常好的项目管理平台可以跟踪这些问题,在 Jira出来之前,我们编程这些问题都项目组和自己要记录的,否则软件的问题无法跟踪解决,Jira出来开始可以方便记录BUG,并能方便截图,后面国产也有禅道,现在有现好的项目管理软件,也有云上的teambition等,都不是错的项目管理工具,这些就不用记到自己的笔记中了。
  • 2、记录工具

    工具根据自己的喜好,我们是程序员,记录的东西会在编程中复用,需要具备两个条件,一是能够检索,另外对内容可以复制到编程工具中复用。我用过以下记录工具,供大家参考:

  • 记事本:最早没有其它工具,就用记事本记,不是很方便。
  • UtraEdit: 这个工具用的时间较长,比记事本好多了。
  • Office OneNote:这个工具非常不错,可以分层、分级,还可以团队共享,可以自己多台设备共享。但服务器在国外,近几年不好用了。
  • 云笔记:现在金山,有道,书生都有云笔记,比UtraEdit功能强多了,更适合于做IT记录。
  • Teambition:阿里云上嵌入的一个IT项目管理工具,除了项目需求、任务、BUG等管理外,也可用于程序员的工作事项记录。
  • (。。。待续)

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2021年5月21日
    下一篇 2021年5月21日

    相关推荐