做一个有追求的程序员

做一个有追求的程序员


作者:华为 传送网“捍码队” 张强

转载来源:第261期《华为人》 


       程序员是一个很奇怪的职业,编程有时候是一个智力活动,有时候又是个体力活;有时候感觉自己是高科技人才,有时候又发现自己是个IT民工。在匆忙的编程之路上偶尔驻足写点总结,会让自己的程序人生更加精彩。 我学的是电化教育,和计算机唯一有点沾边的就是里面的CAI(计算机辅助教学),在大学学习了C语言和Autorware,什么计算机原理、数据结构、算法都没有学过专门的课程。当时一个老师建议我学动画制作,他说搞编程对脑子要求很高,潜台词就是说我不够聪明。虽然他说的是事实,但是我没有放弃,最终成为全班36人中唯一以编程为生的人。这也说明并不是聪明人才能编程序,兴趣往往更重要。
       99年毕业后在重庆一个职高机房工作,每天早上9点上班,下午4点下班,清闲得要命,当然工资也只有几百元。后来报考了计算机软件中级水平证书,把基础的数据结构和算法都认真自学了一遍。那个年头流行数据库开发,为了以后能找个编程的工作,我开始自学Visual Basic,每天在机房里照着书本练习,自己给自己出题目,前半年几乎每个月买一本VB的书,什么数据库编程、网络编程、多媒体编程、ASP编程,各买一本。经过一年的苦练,感觉对VB已经非常熟悉了,开始写一些工具玩。记得写了一个注册表管理工具RegAdmin,假期一个大学生来机房实习,看了我写的这个工具后说了一句:张老师不会在这里呆太久了。
       果然,3个月后我就跳槽,开始了程序员的职业生涯。我对试用期工资很满意,起码进入4位数上千了。但同事中有一个19岁的小伙子,中专毕业,月薪却有两千,因为他很熟悉VC。于是工作之余我也自学VC/MFC。MFC的框架都是C++,之前在学校学的C语言根本不够用,所以买了一本《C++编程思想》。看了前面四章,就有一种豁然开朗的感觉。就这样每天学一点,把书上的练习题都认真做一遍,过了大半年,对C++渐渐熟悉起来。后来给其他人推荐C++书籍时,这本书总是不会被忘记。03年到另一家公司,主要使用Borland C++ Builder(BCB)开发,由于我的C++基础已经比较好,再加上有VCMFC、VB的开发经验,所以不到三个月,就可以很熟练地用BCB开发了。
       现在看来,实际上你在一种语言和开发环境上的投入是不会浪费的,因为当你切换到一种新的环境时,已有的经验会帮助你很快掌握新东西。我之前学习的VB,虽然工作上不用了,但是在VBA里面写一些小工具还是非常方便的,比如几年前的“问题单通用读取工具”、现在的“大量switch语句快速转换为表驱动的小工具”等等。
       04年底入职华为,2011年,由于团队调整,我加入了新的项目组。看到源代码是以.cpp结尾的,我很高兴,心想终于可以用自己喜欢的C++了。没想到代码评审时,同事们说我的代码风格和他们差异太大,原因是我在处理输入参数时用到了流,STL以及do while 结构,而他们统一的做法是数组,goto语句,也就是说虽然是挂着.cpp后缀的羊头,卖的却是纯C的狗肉。一番争论后,整个项目组没人支持我,大家还是希望能够保持一致的编码风格。
       两年后,研发都在搞降低圈复杂度的事情,我之前的项目组也准备采用输入输出流的方法降低圈复杂度和减少代码规模。虽然有一点得到平反的感觉,但是站在整个项目组的角度来看,当时他们的决定是对的。如果他们不懂C++,看不懂代码,也就没法维护。
       记得有人说过,一个优秀的程序员至少应该掌握一种面向对象语言、一种脚本语言。如果不懂OOP语言,那么就没法学会设计模式,当然如果你非要学习设计模式FOR C语言之类的山寨版,那也没办法。
       搞应用软件开发,C++相比C,至少有下面好处:C++开发效率高,当然总是有人不分具体场景拿运行效率说事;对同一个人,C++写的代码质量好;熟悉C++后,看JAVA代码基本没有问题。可能有人会说我们不用JAVA,但是,软件工程的书籍大部分都是用C++/JAVA做示例的。如果看不懂C++/JAVA代码,意味着看这些书籍就会非常吃力。
       一个有追求的C程序员应该掌握C++,因为只有学习了C++,反过来才会看到C语言的缺点。不学习新的编程技术,很快就会落伍。在对一门技术无法继续深入的情况下,我们不妨扩展一下广度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值