聊聊程序员的自我修养
聊到程序员的自我修养,不少同学可能会想到一本讲述编译与链接的书,这本书的名字也叫<<程序员的自我修养>>,是国人难得写的比较不错的一本计算机技术书籍,不过本文要讨论的内容和这本书可以说没有一点关系。
今天的话题面向的程序员,就是所有的正在写代码或者曾经写过代码的程序员,也包括广义上的程序员,例如项目经理、架构师等等。
在中国,写程序,我相信对于大多数程序员来说不仅仅是一种兴趣,更多的时候,更是一种养家糊口的技能,毕竟,程序员的高薪已经是家喻户晓的事情了。
对于大多数程序员来说,能成为Linus Torvalds等这些大神这样的人几率确实小的几乎可以忽略不计,但是,在普通人当中,程序员的水平也是良莠不齐,大公司有厉害的程序员,优秀的架构师,不少公司也有一些工作很多年的“bug工程师"。
那么问题来了,同样是工作若干年,为什么差距就出来了,我想,这些优秀的程序员肯定是有一些“自我修养”,是最基础的,是普世的。如果你能从这些修养开始约束自己,我想比读几本技术书籍管用很多。
好了,掰扯了那么多废话,下面进入正题。
何为程序员的自我修养?
何为程序员的自我修养?从正面回答这个问题可能很难说清楚,反向描述可能更通俗易懂一些,自我修养的对立面是“没有修养”,那么我说说这么多年的工作、学习中,遇到的一些我认为“没有修养”的程序员形态:
2、程序员小张进公司3个月了,觉得代码写完能通过测试就OK了,在写代码的时候能省就省,客户反馈有问题也不主动解决,敷衍为主。
3、程序员小张正在写一个功能模块,需要进行某种加密,到百度搜到了一个编码模块,看不明白具体写了什么,但是放到程序里刚好适用,于是就这么原封不动放进去了。
4、程序员小张要对某个功能进行研发,项目经理对他说,这个功能应该能搜索到,你去搜搜看,小张就在百度搜啊搜,一天过去了啥都没找到,项目经理来到小张身边坐下,换了个关键词,1分钟就搜到了解决方案。
我想,有些人可能已经明白我要说什么,有些人可能还不明白,具体的话我也说不出来,只能用一句话来概括就是:在编写代码的过程中,善于学习、掌握方法、勤加思考、勤奋努力、持之以恒,长此以往,你的成长是非常快的。
以上这些还是比较抽象,那么说点实际的,程序员具体如何达成“较高的修养”,每个人各有自己的办法,一两句话是说不清楚的。我多年工作过程中,和腾讯最年轻的T4专家共事过,和百度92年的的T8曾经是一个团队同事,只能通过观察这些大牛的行为举止来讲述自己的观点。主要从以下四个大的方面入手:
• 1.程序员基础
• 2.搜索方法
• 3.英语能力
• 4.编程习惯
程序员基础的基础
一个好的开发人员,仅能够熟练的进行代码编写是完全不够的,需要深刻的理解技术原理和业务逻辑,能够全面、高效、严谨的去处理任何软件程序和业务问题,而要做到这点,扎实的个人基础和技术基础是必不可少的。
扎实的计算机基础才是决定程序员发展的上限关键因素,而不是你今天学了什么语言,明天又学了xx框架。下面说的一些基础,需要我们重点对待和提高。
• 数据结构
• 操作系统
• 数据库
• 编译原理
• 算法
• 体系结构
上面说的每一项都是搭成一个优秀的软件的基石,市面上也有很多相关的经典书籍,其实大家特别是毕业没几年的同学可以在平时多积累,不要丢了这些技能。
搜索方法
面向谷歌编程,这并不是一句戏言,事实上,任何一个开发人员,都应当具备搜索能力,甚至是一定要具备搜索能力。
同样水平的程序员,会不会用搜索,可能会在程序开发质量、效率上出现数倍的差异,这绝不是危言耸听。因此,掌握高效、先进、灵活的搜索方法和技巧,是非常重要的。提高搜索能力,主要的方法介绍如下:
• 搜索源选择:选择百度还是谷歌,或是选择专业的程序员论坛,这里给出我的一个顺序仅供参考:StackOverFlow网站 > 谷歌 > 百度。
• 关键词构造:总体遵循的原则是,准确和简洁,这个搜索多了自然就知道了。
• 联想搜索:举一个通俗的例子,比如想使用C#,利用某个.NET类处理一种HTTP通讯,但是一直搜索不到完美的结果,不过换个思路,考虑到VB.NET也是.NET体系,和C#完全相通,那么也可以试着用VB.NET关键词进行搜索,搜索到完美代码后再临摹成C#代码。
英语能力
计算机这个学科是从美国发展起来的,决定了编程语言一定是基于英语的,在编程过程中,从语言的关键词到文档的内容又或是搜索引擎的搜索结果,都不可避免的会遇到英文。另外每出现一种新技术,其一手资料一般都是英文,等到对应的翻译版本出来后,这个技术可能已经流行好几年了。
但是,作为程序员,也不需要太高的英语水平,只要能达到以下几个点就够用了:
• 1.在自己技术知识范围内的任何的英文的技术手册、文档、文章或是问题描述,能够读懂8成的内容含义,能够读懂完整的技术含义。
• 2.对常见的编程逻辑和核心关键词,能够用英文组织问题的描述,最简单的也行,只要能被搜索引擎读懂就可以。比如如何在C#中把整形转换为字符串类型这个问题,最简易的英文描述就是 C# Integer Covert To String。
编程习惯
• 快捷键的使用
• 好的代码注释
• 好的命名规则
• 数据备份
• 不将就的编程逻辑,甚至于要有一点代码洁癖
• 邮件工作方式
是不是这些习惯其实很简单,其实今天提到的这些提升程序员修养的几个点看起来都很简单,而且大部分同学其实应该也是知道的,但是扪心自问,平时能真正去认真思考并实践的有多少同学?或许,坚持才是程序员最大的自我修养,101%和99%的365次方的故事、1万小时的道理大家都听过,以此和各位共勉!
— 完 —