1.11 新手应该具备的基本素质
新手走过的路,我们都走过了,别人走过的路,我们也看过了。回首往事,我们有过很多经验和教训,但是,几乎没有人会刻意告知我们应该怎么成长,更没有人专门对我们进行素质上的要求和引导。直到今天我们才知道我们的成长是自发的。它完全取决于我们的工作环境和内容,取决于我们遇到的人和开发的项目。假如我们能够回到从前,我们一定会在年轻的时候更加注重培养自己的素质,让我们成长得更好更快。我将与程序员有关的素质方面的要求进行了一个系统性的归纳,希望这些会对程序员有所启发。
1.激情
激情是程序员的职业标志,在很多情况下,激情具有递减规律。也就是说新手的激情最高,越到最后激情越低,甚至麻木和消失。而成功的程序员几乎都是充满激情的,他们能将激情始终保留在身边。我们要对年轻的程序员说,请保持你们的激情,无论你们在工作中遇到多大的不满、委屈、挫折、失望都不要丧失你们的激情,只要你们有了激情,你们才能东山再起,才能勇往直前,才能达到事业的顶峰。
2.学习
无论是新手还是优秀程序员,无论是程序员还是其他职业人员都应该注重学习,人只有在学习中才能增加自己的知识,才能将更多知识用于自己的工作。针对程序员这个职业,由于其涉及软件技术、项目管理、用户的业务知识等方方面面,而且这些方面的知识还在不停地变化和更新,所以只有学习才跟得上职业发展的要求。刚开始的时候,我们发现若不学习,那就什么都不会,我们只好学习。后来,我们发现即使学习了,还是有很多东西不会。当我们把学习看做一种常态的时候,我们就会不断获得新知识,这样才会适应职业要求。
3.基础
“万丈高楼平地起”,这充分说明了基础的重要性。程序员在开始的时候,并没有感觉到基础的重要性,但是随着程序员不断成长,这种基础的制约现象就会很明显。很多程序员总是感觉自己的进步不大,进步不快,不知道自己的问题出在什么地方。其实,很多最根本的问题是大学生的基础问题。因为很多大学生在学校的时候,并不知道所学的基础知识用在什么地方,有什么看得见的重要性。很少有人会对基础知识有真正的理解。到了工作单位之后,一些程序员在编程的时候,复制网上的程序,还是知其然不知其所以然,基础越来越差。不单是知识基础,其他基础也很重要,例如,一些新手开始不愿意学习盲打,不肯在开始学打字的时候练习盲打,基础没打好,结果若干年后,只会一个手指头按键盘,被人们笑谈为“一指残”。程序员要有基础意识,要把现有的取得的成绩当做基础,只有把现有的基础打牢,这样才能向上更好地发展。
4.好胜
没有一个程序员没有好胜之心的。但是,好胜有强有弱,有的程序员大有舍我其谁的气概,有的程序员则不露声色暗下工夫比高低,有的则看不出来是否好胜,一副好坏与己无关的样子。有的因能力而好胜,有的因面子而好胜。作为程序员好胜是必需的,因为程序员是一种智慧劳动,要比就是比智慧。只有通过智慧的竞争,智慧才能精彩,程序才能更加漂亮,软件才能向前发展。好胜意味着要比同们做得更好,好胜意味着遇到困难必须克服,好胜意味着自己要比自己原先做得更好。我们要的是好胜的结果,我们不需要的是好胜的表现。其实,不要刻意表现你的能力,你的成果足以表现你的能力了。
5.动脑
软件本质上是一种智力的产物,这个智力并非天生就有的,它和程序员的技术能力、理论基础、思维方式、知识范围、周围影响等因素密切相关。只有通过对这些因素进行收集、存储、加工、处理,进行各种各样排列组合,形成各种解决方案,然后在这些方案中进行择优判断,才能得出最后的解决问题的办法。程序员除了动脑还要通过打键盘编写程序,所以程序员还有一个动手的工作。很多程序员习惯于边想边编,久而久之就养成了动手习惯。从成长的眼光来看,程序员应更加注重开动脑筋,而且要把其和动手编程分离开。这样养成动脑的习惯之后,对编写程序有很大的帮助。一般而言,动脑的时间越长,动手的时间越短,程序员技术水平就可能越高。
6.外向
程序员性格对成长有很大的影响,无论是原来外向还是内向性格的程序员,只要从事这个职业,只要和计算机打交道,其性格都会有点向内向方面转变的趋势,我们看到不少程序员不善于和另人交谈,怕见人,甚至从内心里不愿意和别人交谈。这样的自我封闭其实对自己并无益处,我认为程序员性格要外向一些,要乐于和别人交流,要主动和另人交流,和别人交流并不一定要限于技术,用户的需求、公司成长情况甚至对方个人生活等方方面面都可以进行交流。这些外向的性格可以让程序员见识更多的人,见识更多的领导,见识更多的高手,见识过动去不敢见识的人。这样可以积累更多的社会关系。
7.技能
程序员的技术能力是程序员生存下来的基础,而技能从某些方面来说是首要的。可以说程序员就是技术的代名词。有了好的技能你就能更好地开展自己的工作,有了好的技能你就有了和别人交流的内容,有了好的技能就可能让自己获得更高一层的技能。因此,程序员要重视自己的技能学习和提高,要在技术上体现自己的能力,要通过技术能力去影响或帮助自己的同伴。只有这样,程序员的最基本的价值才能真正体现出来。很多程序员到了一定阶段放松了对技术的追求,技术平平,只能满足现有工作,这就愧对程序员这个称号了。
8.团队
程序员可以一个人编程序,但是,一个人只能编写一些程序或小规模的程序。有一些程序员一个人完成了整个系统开发,其技术水平固然值得称贺,但是,如果他认为软件可以一个人摆平,这就会影响到其向更高水平发展。随着软件业发展,软件的规模也在变大,软件制作的专业化程度变得越来越高,一个人即使有这个能力开发一个完整的系统,最好也不要一个人去完成,只有通过团队的分工协作,软件制作才能走向正道。如果程序员一开始就能注重团队意识,一开始就认为自己仅仅是团队的一分子,一开始就注重与其他团员的沟通和协作,这样程序员一定能融入团队中,而团队的巨大作用是每个程序员个人作用所不可比拟的。程序员不要只是享受自己独自编程的快乐,而是要享受整个团队编程的快乐。
9.兴趣
程序员的工作内容看起来似乎只是一行行代码。代码的编写来自于程序员头脑的指令,而程序员头脑中的指令并不是来源于程序设计语言,而是来源于各种需求、各种问题的分析方法和处理方法。因此,程序员要编好程序,不仅要对程序语言感兴趣,而且要对所有和编程序相关的事物感兴趣,甚至对看上去与编程无关的东西也要感兴趣。我们成长后才知道各种事物都是相通的,有些东西会潜移默化地影响到你的分析方法和处理方式中。所以,程序员不要只关心编程,这样只会成为“书呆子”。我们日常生活中看电视、听新闻、上网聊天、社交活动等都应放在兴趣之中。只有广泛的兴趣才能体会到你最爱的兴趣。
10.谦和
我喜欢程序员有一种谦和的精神,尤其是那些有本领骄傲的程序员的谦和。我们常常看到一些得意于自己的程序、自己的项目、自己的收入、自己的职位而忘形的程序员,他们无视别人的意见和建议,有的甚至自傲,看不起其他程序员。但是,要知道艺无止境,假定软件领域拥有顶峰,而谦和正是通向这个顶峰的一个阶梯。更何况软件领域没有顶峰,更需要我们的谦和来表明自己不拘泥现有的成就,我们还有更高更远的理想。
11.求新
我们常说软件技术发展太快,跟不上就会被淘汰。回顾几十年来的软件技术发展就可以明白这一点。求新本质就是注重时代的变化、跟上时代的变化。因此,对程序员来说,要有求新的意识,不要排斥新生事物。要通过网络和各种媒体注意各种新技术的产生,对于与自己工作相关或感兴趣的技术要花点时间进行跟踪,要了解这些新东西的新方面,要学会新旧对比,对自己必须掌握的新技术要毫不犹豫地花时间拿下。求新会让程序员时刻感到压力,但是求新又让程序员能看到自己未来成长的方向。
12.主动
主动绝对是程序员的一个良好素质。我和许多年轻的程序员打过交道,有主动型的与被动型之分,大凡学习上主动,工作上主动,甚至是劳动上主动的人,大都会得到同事的喜爱,都会得到更多的回报。而那些虽然听话,但是“不说不动”的人,因为缺乏主动意识,只能被动听从别人的安排。别人给什么,自己就吃什么,就像一只填鸭,当哪天没有人给你填食的时候,结果就可想而知了。“会哭的孩子有奶吃。”这是很有道理的一句话。
13.吃苦
现在的程序员和我们那个年代的程序员有很大的不同,他们很多都是独生子女,家庭娇惯比我们那个年代多了很多,而且绝对的自我。因此,他们眼高手低,怕吃苦,不能吃苦。对于程序员来说,连续工作是一种很常态的事。有的吃不了程序员的苦,因苦而选择离开。我们不能说吃苦是一件好事,但是,一个人能吃苦说明这个人不怕困难,有坚韧不拔的意志。这对程序员成长是很有帮助的。想想当年,自己要是怕吃苦,可能也不会有今天的成果。当一个人没有苦吃的时候,说明这个人真的没有发展机会了。而且吃苦的人更能感到甜的味道。
一个人的素质是其成长的基础,良好的素质一定是后天培养的,是后天自我约束和完善形成的,这种约束和完善的内在要求使得他在做任何事的时候趋于合情、合理,容易获得进步和成功。同时,一个人良好的素质可以给外界一个良好的形象,而外界因此会给这个人更多的关注和鼓励,外界的影响反过来又促使这个人进一步提高素质。相同的时间和相同的环境,不同的人因其素质的不同会有很大的不同。因此,如果我们在入门阶段能够重视自己的素质的培养,知道自己在什么方面需要改进和提高,程序员一定会少走弯路,成长更加顺利,而其中的良好素质将影响程序员的一生。
很多程序员对以上方面也有所了解,也知道应该怎么做。但是,涉及自身时,说归说,做归做。如果是这样的话,缺乏自己约束的程序员也只能“自发”地成长了。