用代码编写成功的人生
2018-08-03张彩华
张彩华
达人名片:永清,青岛某外企软件工程师
达人语录:坚持就是胜利!很多时候,成功和失败只有一步之遥,在坚持不下去的时候,再耐心地往前走走,你就能看到美丽的风景。
我见到永清是在青岛软件园的一个写字间里,当时他正和同事在一起测试一个刚刚写好的程序,他的喜悦之情溢于言表,想必一定是测试通过了。这是一家外企,主要开发网上银行安全系统的产品,永清是其中的一名软件工程师,负责编写程序和软件开发。
拼的是耐力,靠的是信心
永清是一个特别简单的人,生活简单,和同事的关系也很简单,他们之间没有钩心斗角和互相算计,只需要共同合作圆满完成任务即可。他告诉我,大多数软件工程师都是这样的,他们穿着随意的休闲装,过朝九晚五的白领生活,偶尔会加班,或者把干不完的活带回家熬夜,一天的大部分时间,他们都和电脑还有代码在一起。
软件开发本身是一个寂寞的过程,因为软件工程师面对的是一大堆没有生机的庞杂数字和一个个复杂的程序,同时软件工程师又需要这种寂寞,因为只有寂寞才能让他们看清程序的逻辑,看到问题的本质。“沉浸在这种‘0和‘1的世界里,我觉得很兴奋,因为那里有神秘、未知,也有挑战。”永清告诉我,为了写好一个程序,他常常会在位子上坐一整天,会忘了吃饭,忘了喝水,脑子里全是数字和代码,没有十足的耐力是很难做到这一点的。
“永远都不要说一个项目做不出来。”这是软件工程师的一个信条,他们需要这样的信条支撑自己在未知的世界里不停地探索、研究,直至成功。软件工程开发的特殊环境造就了大多数软件工程师好胜和不服输的性格,“面对每一个新项目,首先想到的就是征服”。
在这里,永清给我讲了一个让我印象非常深刻的例子。那是2015年,当时他还在中国海洋大学信息学院读研究生,不过在导师的培养和日常锻炼下,他已经是一名合格的软件工程师了。那時他接到了自己人生中的第一个大项目——利用ARM嵌入式操作系统控制打印机,在鲜花、指甲、蜡烛等物品上面打印出自己喜欢的图片或者文字,而这个技术在当时没有任何人做过,连一丁点线索和参考的资料都没有,但是他和几个同学还是把它接了下来,因为他们相信没有做不出来的项目。终于,通过60多个日日夜夜的寂寞研究,他们找到了突破的方法,项目做成了,参与项目的几个同学却失眠了,那种寂寞过后的开怀,枯燥过后的兴奋,让永清真正体会到了只要付出就有回报的快乐和幸福。
要的是激情,要的是创新
当我问到作为一名软件工程师需要具备的素质时,永清说:“有耐力、能吃苦,具备扎实的专业基础,富有逻辑思维。若是在外企工作,还要加上一点,那就是能说一口流利的英语。其实,最重要的就是要有良好的心理素质和永不消失的激情,这是在这一行业中坚持做下去的基础,因为软件行业是一个变化和更新很快的行业,行业之间以及行业内部到处都充满了激烈的竞争,软件工程师时刻都面临着巨大的挑战,如果没有良好的心理素质和不断创造的激情,很难在行业中立足。”
一个软件项目的开发大致需要这几个流程:软件工程师拿到一个项目,首先要去调研,研究项目需要什么技术,是否已经有人做过这个项目;然后就是立项估算时间,这时大家会互相分配任务,一个项目会分成很多块面,软件工程师之间需要非常默契地配合;最后就是软件的各个模块组装测试。“在我们这个行业里,团队精神至关重要,因为没有谁可以独立完成一个项目,只有同事之间默契配合,我们才能成功。”永清说。
说到写程序,永清也有自己的理解。“写代码就像建筑师盖大楼、作家写文章一样,一个好的软件工程师,写出来的代码一定要严谨而且逻辑清晰,甚至让一个门外汉都能看懂。”他笑着说,“还要有自己的创新,如果没有自己独有的东西,那么软件工程师就成了‘代码搬运工,只是去把这些代码从一个地方搬到另一个地方,就好比一辆汽车的很多零件,你只是把它们组装成汽车,而不是去亲手造一辆汽车,这样的工作毫无意义。”面对这一切,一个成功的软件工程师要做的就是在巨大的挑战中时刻保持高昂的激情和不断创新的精神,因为激情可以激发他们创造的灵感,而创新则是他们不断走下去的法宝。
做的是精专,练的是本领
当问到永清在工作中是否遇到过困难时,他说:“工作的困难是肯定有的。有些情况下拿到项目后也不可能马上做出来,我们都是在通过项目的需求来查找相应的技术,也就是通过实践来推动理论学习,这和学校的学习正好相反,尽管这样的学习有时候会有遗漏,但是速度快,理解深刻。软件行业是一个高端的行业,技术更新很快,这就决定了干我们这行的需要终身去学习。”
软件行业使用工具的更新频繁是众所周知的,但第一次听永清给我讲到这么多的编程语言时,我真的有种找不着北的感觉,算是彻底迷惑了。“从最初的面向控制的语言到现在面向对象的语言,从最基本的C语言到C++、Java、C#,再到目前很流行的Ruby、Python,我们都需要不断学习,至少需要了解。”对于很多软件工程师而言,这些东西都需要在工作中慢慢去体会、去学习,但是在这些繁杂的编程语言和数学原理中,软件工程师又一定要有自己的工作重点,也就是常说的做专做精,毕竟人的精力是有限的,不可能面面俱到,这就需要打造出自己的专长。
要想成为一名合格的软件工程师,从大学时就得开始积累丰富的理论知识和实践经验,其中计算机、电子和数学专业的学生最适合从事软件行业,这与他们在大学期间学习的数据结构、编译原理、操作系统、软件工程、离散数学等课程密切相关,这些都是软件工程师必不可少的理论知识。
每一位软件工程师都是在巨大的挑战面前不断学习、不断提高自己,尽管这样的过程很艰辛,但是他们很欣慰。项目成功后的喜悦,每个月七八千甚至上万元的薪水,使他们看到了自己的价值,所以他们又是快乐的。