最早和编程这件事扯上关系,应该是我刚上高中那会儿,学校为全国信息技术奥林匹克竞赛招募队员。我当时就觉得会编程是件很酷的事儿,便很踊跃地报了名,参加了笔试,然而笔试并没有过。从头到尾看了好几遍张贴出来的名单,也没有找我的名字。我心有不甘,心怀忐忑地找到负责这件事的老师,问了他我为什么没入选之类的问题。他先是问我是哪个班的,然后说奥赛班的同学想进来都是可以的。
那时候的竞赛题现在看来只是一些算法和数据结构方面的题,和实际当中的编程关系并不大,所使用的编程语言是一种非常古老的语言——Pascal,刚开始的几节课给我们讲这种编程语言的语法,和学习英语的语法一样,非常枯燥乏味,以致于打消了我对编程的兴趣。上过几节课后,老师让我们在屏幕上打印一个菱形,我不会用循环,写了很多行print语句来做这件事,之后就再没去上过课。当时的我绝不会想到,六年之后我会成为一个程序员。
在我看来,要做一个出色的程序员,首先你得对编程这件事有足够的兴趣,愿意花很多的时间在这上面。这意味着你会为了写出一段能运行的代码放弃很多周末的外出活动,推迟晚上上床睡觉的时间。在外人看来,整天对着电脑屏幕吭哧吭哧地敲着键盘,绞尽脑汁地解程序里的一个bug是件很苦逼的事情,然而当你写的程序终于能够顺畅地运行的那一刻,那种成就感和满足感也是外人无法体会到的。程序员这个职业,门槛不高。有很多并非计算机专业出身的人,觉得做程序员薪水高,工作也好找,报个Android或者iOS开发的培训班,几个月下来,也能找到一份不错的工作。干了一段时间后发现,工作很累还很枯燥,受不了就转行做别的去了。入门很容易,在这条路上坚持下去的很少,兴趣决定了你能走多远。
自学能力是程序员最重要的技能,没有之一。程序员可能是为数不多在进入工作以后还需要不断学习的职业之一。作为一个程序员,需要掌握的知识多入牛毛,学校教的那丁点知识是远远不够的,剩下的都需要自学(实际上我认为我在学校并没有学到什么有用的东西,上课的那些老师也都是一群只会念PPT和点名的水货)。在编程领域,技术更新换代的速度很快,如果你不想落伍,就得跟上步伐,不断更新你的知识体系。这不是说每当出现一种新的技术你都要去学习,当然也没人可以做到这一点,你得先搞清楚哪种技术是对你当前工作有帮助的,然后再深入地了解,而不是盲目地去学,每种都浅尝辄止,除了浪费时间,并没有什么卵用。永远不要学习已经过时的技术,假如公司要求你这么做,是我的话就会选择换家公司。
英语可能是一个程序员第二重要的技能。英语不好会成为一个程序员成长道路上 的障碍。很多人英语不好,是因为缺乏英语学习的兴趣,不肯花时间去学。但我觉得作为程序员,花点时间提高一下自己的英语水平,会大大提高自己的工作效率。不必听说读写样样兼顾,阅读水平提上来就可以了。这样就不用再去看翻译蹩脚的专业书籍,不用再对着英文的API文档抓耳挠腮,还可以在Github,Stackoverflow以及各个开源社区与技术大牛提问交流。不仅局限于程序员,我觉得英语对我们每个人都相当重要。英语不错的基础上,还能擅用Google,会给你的生活带来许多方便。
程序员有时候要学会偷懒。在编程领域有个很重要的原则——「DontRepeatYourself」,也就是尽量不要去做重复的工作。比如你如果发现一段代码在你的程序里会经常用到,你就应该把这段代码封装在一个函数里,需要用到这段代码的时候调用这个函数就可以了。我的兴趣主要是在Web开发方面,我发现每次新建一个html文件,都需要手动加上一些tag,非常繁琐,于是我就写了一个脚本,每次需要新建html文件的时候运行这段脚本,就会自动生成一个加好tag的html文件。脚本很简单,却为我节省了很多时间。假如你比我还懒,既不想自己动手写一个脚本,也不想每次新建文件时手动加上tag,那么也有很多现成的非常好用的工具可以帮你,作为程序员,要善用工具。说道工具,有句话我一直铭记在心——「Choosetherighttoolfortherightjob」,只有最趁手的工具而没有 的工具。你一定听过这句话:「PHP是 的语言」。这句话只不过是程序员之间拿来相互调侃的,有些肤浅的程序员却很热衷于显摆自己使用的工具,用*nix的瞧不上用Windows的,用文本编辑器的瞧不上用IDE的,用Chrome的瞧不上用IE的...这些都是很幼稚的想法。
每种职业都有所谓的职业道德,职业操守。在我的观念里,医生的职业操守是治病医人,不乱开药,对患者一视同仁;媒体记者的职业操守是不畏权贵,敢说真话,尽量还原事情的本来面目。程序员的职业操守是尽量写出逻辑严密的代码,多写注释,少留bug,不要给后人挖坑,经常做代码评审(codereview)和代码重构(coderefactoring)。实际上很多公司都有代码评审的制度,然而没有代码重构的习惯。特别是在大公司和外包公司里,他们只想着实现客户提出的需求、完成老板布置的任务,并不关心代码质量的高低,造成很多代码的冗余。
图片来自电影《第四公民》
想换台Mac
赞赏
人赞赏
北京看白癜风权威医院白癜风是什么