很认真的聊一聊程序员的自我修养

首先要谈的是,今天的话题所聊的程序员包含哪些人?html

在中国,写程序,不只仅是一种兴趣,更多的时候,仍是一种普通职业和谋生工具前端

大公司有厉害的程序员,优秀的架构师,但大量的小公司也有不少普通的程序员。在我这些年的工做经历中,也愈来愈深入的感觉到普通程序员的影响和力量。对于高阶程序员,所谓八仙过海各有神通,各有各的成就,各有各的修养,但程序员在达成较高的水平以前,有一些“自我修养”,是最基础的,是普世的。程序员

因此今天的话题面向的程序员,就是全部的正在写代码或者曾经写过代码的程序员,也包括广义上的程序员,例如项目经理、架构师等等。算法

?数据库

作任何事都是有明确目的,那么编程

再谈一谈,程序员提升自我修养是为了什么?安全

程序写的好有人崇拜,有妹子喜欢?仍是到博客、论坛、社区发表文章进行分享得到成就?我想这是少数人的追求,也是更高的追求,在这以前网络

我认为,在中国,程序员提升自我修养的目的,是为了数据结构

一、更好的融入工做,减小困难,增长成就多线程

二、稳步的提高能力,提升收入,达成财务自由

二、站在更高的层面看待本身的学习和工做,树立更加适合的人生观价值观,家庭幸福,生活愉快

说的更通俗一点,就是用更加合理的方式和方法,赚取到更多的收入

 

说了这么多废话,进入正题

何为程序员的自我修养?

正面论述很难说清楚,反向描述可能更通俗易懂一些,自我修养的对立面是“没有修养”,先说一说在这么多年的工做、学习、生活中,遇到的一些我认为“没有修养”的程序员形态

我想,有些人可能已经明白我要说什么,有些人可能还不明白,具体的话我也说不出来,只能用一句话来归纳就是:

在编写代码的过程当中,善于学习、掌握方法、勤加思考、勤奋努力、锲而不舍,久而久之,在编程中,你会发现不同的本身。

?

以上这些仍是比较抽象,那么

提高自我修养的具体方法有哪些?

程序员具体如何达成“较高的修养”,每一个人各有本身的办法,我没法说到很细,就和如何提升作人修养同样,一句两句话是说不清楚的,可是有些说法也通俗易懂,好比一个小孩,有教育良好的父母,父母彬彬有礼,小孩从小开始接受正规教育,小学、初中、高中、大学,而后文化课程和社会实践良好,那么这个小孩最终的作人修养,必定比没有经历过这个过程的小孩更好一些。

一样的,写程序也是如是,下面我就讲一些最基本的、最浅显易懂的学习方法和道理,我把它叫作:

一个好的开发人员,应该可以全面、高效、严谨的去处理任何软件程序和业务问题,成为一个好的开发,是一个颇有意思的话题,不过不管这个话题如何开展,基础两个字必不可少,虽然代码量是衡量开发能力的重要指标,但仅可以熟练的进行代码编写是不够的,更要能深入的理解技术原理和业务逻辑,扎实的我的基础和技术基础每每会促进代码的编写,更游刃有余的解决问题。

下面说的一些基础,可能绝大部分开发人员都不会在乎甚至忽略,但偏偏这些才是开发大厦的基石。

一、科学基础

成为开发人员的过程不尽相同,有的是科班出身,有的是兴趣爱好,还有的是专业机构的培训,在这个过程当中,可能全面或者零散甚至没有学习过计算机基础学科,但不管是哪种,想要成为更高层次的开发人员,写出更高质量的代码,计算机基础学科的学习,是很是很是很是(重要的事情说三遍)重要的。具体的来讲,基础学科在实践应用中,有以下几门是必定须要的,按照学习顺序排列以下

1)数据结构

数据结构课程通俗的说就是告诉你如何用最基本的语言类型、变量,关键词语句等,去处理各式各样的逻辑问题,咱们称之为算法,而平常编程中的各类问题,例如排序、文件夹遍历操做、数据库查询等,均可以在数据结构课程中,找到对应的数学原型。数据结构课程的理解能力,也是一我的数学能力的体现,数据结构学习的好坏,是程序员水平差别的一个重要分水岭,对于这一块内容的学习,有以下建议:使用VB、C、C++、Pascal等语言,买一本相关语言数据结构与算法的书,或者在网上下载相关的PDF电子书,完整的学习一边,并将书本中的全部案例亲自编写运行调试一遍,当可以领悟到某些平常编程中常见手法源于某些数据结构和算法时,就基本达到了学习效果。

2)操做系统

全部编程语言的开发以及应用的运行,都基于操做系统,桌面编程中的大部分场景包括内存、进程、文件系统、网络通信、用户界面等,都源于操做系统的定义和概念,完整的了解操做系统的起源和组成以及运行逻辑,对多线程、复杂界面、文件管理以及一些难以正常理解编程思路等开发中遇到的场景,有很是大的帮助,不只帮助理解,也能掌握更多有效的程序写法。具体能够买一本操做系统的书或者下载相关PDF电子书,完整的浏览一遍,作到可以结合实际编程场景来看待操做系统原理,就基本达到了学习效果。

3)数据库

传统的关系型数据库,入门简单,深刻却难,每每开发人员可以较快的掌握增删改查、视图、索引、存储过程等基本数据库操做,却在编写复杂查询、设计主外键、优化字段、去除冗余等时,出现只会依葫芦画瓢却不能自主思考扩展的情况。究其缘由仍是没能了解关系数据库的根本原理,而数据库这一门课程,系统的阐述了关系型数据库的前因后果,了解其中的数学原理或逻辑基础所在,对提高数据库编程水平有质的影响。建议也是买一本数据库的相关书籍或者下载PDF电子书,可以把熟练的把第一范式、第二范式等数据库课程的基本知识点与数据库编程场景创建起关联,也基本达到了学习效果。

4)编译原理

编译原理是编程语言以及各种语言编译器的科学基础,能够说编译原理创造了世界上的几乎全部的IT应用,学习编译原理的基础是数据结构和算法,所以编译原理的学习要花费更多的时间和精力,因为现代高级编程语言的编译器,在代码优化、资源优化方面已经作的足够智能,所以,编译原理的学习对实战的影响愈来愈小,可是正所谓本盛末荣,若是认为本身对数据结构和算法的学习达到了一个较高的水平和状态,能够在编译原理学习上进一步深刻,最终把本身和普通程序员拉开更大的差距。

 

二、英语能力

英语的自然特性和字母长度还有学科发展的历史因素,决定了编程语言必定是基于英语的,在编程过程当中,从语言的关键词到文档的内容又或是搜索引擎的搜索结果,都不可避免的会遇到英文。大部分编程人员,都具有英语四级左右的英文基础,却因为非专业以及工做环境缘由,逐渐疏远甚至彻底淡忘了英语。而实际操做中,大部分编程语言资料都是英文,在线编程问答内容也是英文,所以,颇有必要把英语能力从新恢复到一个不用过高但行之有效的水平,达到以下效果:

 

三、搜索方法

任何一个开发人员,都应当具有搜索能力,甚至是必定要具有搜索能力,搜索引擎的宝藏,是无穷无尽的,一样具有搜索意识的不一样程序员,却由于搜索技巧的差别最终在程序开发质量、项目实施效率、甚至是工程产品质量上出现数倍的差别,所以,掌握高效、先进、灵活的搜索方法和技巧,是很是很是很是(重要的事情说三遍)有用的。其中主要的方法介绍以下:

1)搜索源选择

2)关键词构造

搜索关键词的构造,直接影响搜索效率和正确结果的过滤,没有什么特别的技巧,关键在于搜索积累,可是整体遵循的原则是,准确和简洁,好比当出现一个描述,如何用C#对XML进行序列化和反序列化,很是愚蠢的关键词构造就是“如何用C#对XML进行序列化和反序列化”,而正确高效的关键词则是“C# XML 序列化 反序列化”,或者在谷歌里面搜索则是“C# XML Serialization”。在平时的编程中,必定要注意相关方法和经验的积累

3)联想搜索

联想搜索,不属于搜索引擎的范畴,倒是在搜索中颇有用的高级技巧,举一个通俗的例子,好比想使用C#,利用某个.NET类处理一种HTTP通信,可是一直搜索不到完美的结果,不过换个思路,考虑到VB.NET也是.NET体系,和C#彻底相通,那么也能够试着用VB.NET关键词进行搜索,搜索到完美代码后再临摹成C#代码。这样的联想搜索,不只可以帮助搜索正确结果,也是对大脑思惟的训练,值得多多尝试。

4)资源搜索

开源的框架、产品、工具、控件等开发辅助类东西愈来愈多,稳健性和迭代性愈来愈强,去寻找一款成熟的工具或者插件,也成为了大量开发者的必备方法和技能,而如何高效的搜索出想要的资源,也成为了一门学问,其核心方法就在于知晓资源网站的地址,常见的例若有开源中国、Github、CSDN下载、pudn等。资源类网站须要平时多积累,到用到的时候会很是关键。

 

四、思惟模式

开发人员,必定要养成业务思惟的模式,所谓的业务思惟,就是在作任何一个项目的时候,写任何代码前,须要对项目自己的业务概念和业务逻辑甚至业务流程都要有一个全面的学习和理解,这虽然不是一个项目的强制要求,倒是一个很好的开发习惯,不管本身的以为是开发者仍是测试员又或是技术总监,掌握了业务原理,才可以更好的设计或阅读项目的数据结构和流程结构。程序员的思惟每每和用户或者客户是不一致的,摆脱技术思惟模式,习惯于用业务思惟解决问题的程序员,不必定最优秀,但必定是一个很容易沟通的程序员。

 

五、工做与编程习惯

有的人说爱干净浪费时间,因此不修边幅,但归根结底这仍是习惯问题,当养成清洁卫生的习惯并使之成为生活惯性时,每每就不会耗费更多的时间,反而显得干净干练。写程序一样如是,有一些编程习惯,看似不足为道,看似浪费时间,但是若是坚持下去,最终都能收到意想不到的奇效。下面列举一些特别重要的习惯。

1)快捷键的使用

不管是使用Windows、Linux操做系统,仍是在IDE中,快捷键都是系统自己的标配,事实上,Ctrl+C、V这样的操做,大部分人都能尝到在节省时间上的甜头,把这个概念进一步扩散,若是在IDE中编写代码,除了代码自己,将其他全部的鼠标操做、键盘定位操做,都用快捷键来代替的话,在时间上将会有数量级的节省,然而看上去这么好的事情,真正坚持去执行并造成习惯的人屈指可数,所以,在初期的改变习惯,记住快捷键,会是一个长期的过程,须要不断的坚持。

2)代码注释

一个开发人员随着年龄和经验的增加,所参与的项目,不再是靠一我的或者几我的就能完成的。系统的重构、代码的重构、工做的交接、对新进人员的培训等等相似的事情,会愈来愈多的遇到,这些事情无一例外都会把已经写过的代码从新或者重复阅读,若是在初始编写代码时,就作到完整、清晰明了的代码注释,对后续工做会有巨大的帮助。不只提升工做效率,还能加强合做好感。事实上,就算只是本身看本身的代码,若是有注释,也能加深印象,缩短代码查找时间。所以,任何开发人员,都应该养成良好的代码注释习惯。

优秀的代码注释应该能作到:

3)命名规则

具有必定规模的软件公司,在代码编写上都有一套本身的命名规则,涵盖项目、模块、函数、变量等等,标准化命名的好处不言而喻,然而被动、被迫去遵照命名规则和主动习惯于使用命名规则是彻底不同的。一个优秀的开发人员,应当发自心里的但愿各类代码命名都是有规则的,易读的,而不是纠结于命名规则会增长码字长度。

4)不将就的编程逻辑

所谓不将就的编程逻辑,其对立面就是不讲究的编程逻辑,不讲究的编程,不只是一种很坏的编程习惯,也体现了低下的生活品质,不少开发人员,由于我的习惯、赶工期、客户要求不高等多种缘由,在编程时特别随意,体如今好比为了实现某个功能,百度出一段代码,直接套用,10行的代码只理解8行,有两行看不懂也放到程序里去使用,不少这样的小细节,就比如在项目中埋下了无数的定时炸弹,不只有很大几率造成返工,更是为项目埋下了风险。编程人员,应当有担当有态度,养成不将就的编程逻辑,不勉强本身,也不轻视程序。

5)数据备份

误删、误操做、电脑断电、文件遗失等等情况是每个开发按人员均可能遇到的问题,若是不但愿辛勤的劳做被浪费,不但愿偶然的意外影响工做,那作好备份是必不可少的,在较大规模的公司,会有完整的源代码管理以及信息安全防御,而不管是在大公司工做,仍是身处较小公司或者在实现我的代码价值时,都要作好代码和文档的数据备份,备份方式的选择灵活多样,有使用在线的CVS、SVN、TFS、Git源代码管理,也能够手工拷贝文件至云空间或者本地硬盘,甚至能够在我的电脑上组成RAID磁盘阵列等等,养成周期性、规律性的备份习惯。

6)邮件工做方式

沟通是进步的源泉,若是说开发小组的热烈讨论是性格和激情的体现,那邮件的工做方式也是另外一种稳重和高效。不管是公司层面的工做沟通,仍是开发小组的问题交流,邮件的做用包括问题正规化描述、工做留档留痕、工做流程流转、责任分工明确等等,习惯于将重大问题、哥伦比亚大学校训重要事项经过邮件的方式与同事、主管等进行沟通,将会很是有助于团队协做。

以上这些方法,是我这么多年来的感觉和体会,也给了我很大的帮助,但愿也可以帮助到你们,不能说必定能够“提高修养“,但也是”提高修养”的有效方式。

?

最后还想再说一说坚持的力量

分享一个真实的小故事,公司有两个开发人员,1个作.NET好多年了,可是很油滑,作事能省就省,抓到能够偷懒的机会就偷懒,让他学点新知识新方法老是自觉得是以为本身都会;还有1个毫无.NET基础,一直作低级语言开发,从15年才开始学习.NET和Web前端,可是作事很积极,几乎天天都本身抽空学习,遇到不懂的都琢磨清楚,遇到不会的场景就上网或者找人寻求帮助,项目结束后还反复思考有什么地方能够改进。从15年到如今,短短1年,这两我的的发展已是天壤之别,工资差距也愈来愈大,后者已经可以独自操盘中小型软件外包项目,而前者还在混着日子,之后他们各自的发展也彻底能够预见。

我想说的是,本篇里面分享的一些道理和方法,都是通俗易懂的,就和常听到的例如101%和99%的365次方的故事、1万小时的道理等等同样,但真正去认真思考并实践的屈指可数,也许,坚持才是程序员最大的修养,和各位共勉!

 

 

640?wx_fmt=png


文章来源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/80682268

相关文章
相关标签/搜索