如何成为一名卓越的软件工程师

来源:互联网 发布:济南网络系统集成商 编辑:程序博客网 时间:2024/04/28 01:08

         很多研发人员,在一个公司做几年,从事几年的软件开发工作,能力依然没有提升,职位、工资依如从前。任何公司都存在这样的人,包括BAT、华为等大型公司的人在内,我面试过程中也遇到过各类公司跳槽出来的员工,本科、研究生、不同学历、不同院校、不同企业的都有。这让我思考一个问题,为什么会出现这样的情况?

所以,我结合我自己的工作和团队成员及同事们工作中疏忽的或出现的问题,总结一下“如何成为一名卓越的软件工程师”,希望对奋斗在一线的软件工程师们有微小的帮助。

个人觉得,要想成为一名卓越的软件工程师,主要做的一下几点:

(1)热爱工作,永驻激情:

        我们老生常谈的一句“兴趣是最好的老师”。无论是学生时代还是工作过程中,我们身边不乏有很多这样的例子,他们对某方面热衷的喜欢、极其感兴趣,因此,每天像打了鸡血一样,富有激情,取得让人羡慕的成绩。

         正是因为这个原因,每当我的团队加入任何一名新成员时,我都会问他们一个的问题,那就是:“你想不想从事这方面的工作,你对这方面感不感兴趣?”因为,你只有热爱这份工作,你才能做好,即便基础薄弱,我也愿意花时间去培养。

         因此,我觉得,成为一名卓越的工程师,第一重要的就是“对工作的热爱”,只有这样,才能“永驻激情”,才能把工作做好。

(2)熟知原理,以不变应万变:

        无论是我们在校上学期间老师讲课或现在看的一些工程类书籍,我们接触到最多、最熟悉的一个词叫“例题”或“例子”?那么什么是“例题”?为什么老师给我们讲课时,以例题的形式来讲解知识?为什么“例题”学会了,就可以自主的做题了?为什么上学时,有同学经常反映,某老师讲课不行,原因是题目讲的不清楚?这些问题的原因很简单,“例题”是某个知识点的代表,若一位教师能把题目的解题原理或思路讲清楚,学生很好的掌握了原理方法,融会贯通之后,便可以解决相同知识点的题目。

      那么我个人为什么认为原理很重要?举个例子:假如你熟悉快速排序的原理,无论你熟悉什么语言,Java也好、OC也好、JS也好,或是C#等等,你都可以轻松的编写快速排序的代码。在例如,我当到公司工作时,对SQL不是很熟悉,在写SQL语句时,很多时候遇到需要产生一个新的字段。当时我的老大,不直接告诉我正确的SQL语句是什么,而是教我这类SQL语句的原理,老大告诉我:总的原理是,先生成所需的字段;再将该字段添加到原表里面。

     我想这一点,应该是任何一个公司所对研发人员所看重的一点:即分析问题、解决问题的能力;这一能力的体现,即对原理的把握度。

     这也是我日常面试时,在培养团队时,看重的一个重要方面,因为我认为,原理比语言更重要,掌握原理、融会贯通,才能以不变应万变,因为万变不离其宗。

(3)匠人精神,迭代创新:

        达芬奇画鸡蛋的故事,人人皆知;如果把这种反复的返工用我们开发人员的话说,就是“迭代”,这种精神,就是“匠人精神”。在第二届世界互联网大会(乌镇)上,快货运的李金成说,做产品设计需要匠人精神,其实,要想成为一名卓越的软件工程师,同样需要匠人精神,而且还要不断创新;在迭代中创新,在创新中迭代,这就是我们通常说的“优化”。

      有些人,做一个产品做了半年,觉得太没意思了,半年了,一直做这个,功能或数据接口不停的在改,因此出现了消极观念,失去了之前的那份激情,工作没做完,不再加班了;不再以工作完成情况衡量自己,转而换之,以时间为标准衡量自己,认为该在的时间,我出现了就OK了。

      匠人精神,强调的不仅仅是反复迭代,而且在不断的迭代中积极创新;对同一个问题,V2.0的解决方案应该比V1.0更高效、更稳定,这个一名卓越的软件工程师能力的体现。

     迭代的过程,是从不同的角度审视自己的过程,是牢固基本功的过程,是创新的过程,是达到卓越的必经之道。

(4)坚持学习,具有危机意识:

        苹果之父乔布斯的座右铭:Stay hungry,Stay foolish。这句话的含义是,我们必须了解自己的渺小,具有危机意识;如果我们不学习,科技发展的速度会让我们很快被清空,被淘汰。所以,必须用初学者谦虚的自觉,饥饿者渴望的求知态度,不断学习,来拥抱未来的自己。

        任何公司,任何职务,任何行业的人,不管是老板、领导还是普通的员工,若想不断时间打倒,就必须不断的学习。

        比如我自己,刚接触初Web开发时,不懂JS,不懂Jqery,不懂Ajax,我自己给自己制定严格的学习计划,加班加点的学习;做产品设计之初,不懂设计理念,不懂设计模式,我去看各类产品设计相关的书,花大量的时间去分析各类优秀的网站,优秀的系统;每天都在不断的学习,因为我觉得,我一旦停下了脚步,我就被别人拉的太远了,所以我只能不断的奔跑。

       作为一名程序员,我也知道,不断的奔跑很累很累,但是你若想成为卓越的工程师,就必须奔跑;老牛明知夕阳晚,不待扬鞭自奋蹄,这就是危机意识。

       有句话我非常喜欢:人因梦想而伟大,因行动而成功,更因学习而改变。

(5)保持较强的时间观念,言出必行:

大家先思考一个问题,为什么有些人技术能力较好,公司却把他开了?有些人技术水平一般,公司却舍不得他走?

主要原因在于“言与行”,这一点在一个软件工程师的成长道路上至关重要。

例如:有些人,一个工作,一拖好多天完不成,上班玩手机,加班不积极,你说他工作没做吧,他也做了,但效率呢?有些人说,当领导问及工作完成情况是,我工作做完了,结果等你去看他的工作成果时,不是存在bug,就是某些功能没做彻底?有些人,当上面问到一项任务什么时间做完时,承诺1天或2天,等时间到了去看成果时,说还要2天,这样一直拖了一两周。

霸王别姬中的一句话:差一年一个月一天一点一个时辰都不算一辈子。对于工作而已,哪怕差一点没做完,等于和没做一样。

清华大学的校训是:行胜于言。其意思是说,行动胜于语言。对于一个工程师而言,不仅要会说,而且要会做,并且说到做到,做就做对,做好,做优,做到极致,做成精品。这就是一个卓越工程师的体现。

较强的时间观念,是执行力的体现,反映一个人的工作效率;言出必行,是责任心的体现,反映一个人的职业素养。

(6)善于总结,不断积累:

        感觉文字太多了,关于这一点就不再多说了;只希望大家认识到一点:总结、积累是量变的过程,终究会导致质的飞跃。

总结:

俞敏洪老师曾经有次演讲,我很喜欢,他说:一个人的优秀并不是你考上北大就优秀了,不是你上了哈佛就优秀了,不会因为你长相显得更好看而优秀了,一个人真正优秀的特征来自于想要变得更加优秀的那种强烈的渴望和对生命那种火热的激情。

文笔不好,写的不深;但希望这些可以给想变得更加优秀的程序员们一点点启发;如果有可能,并坚持它,因为这个世界上只有我们自己不断往前走的脚步声我们能够听见。







1 0
原创粉丝点击