做一个有追求的程序员

做一个有追求的程序员


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

转载来源:第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语言的缺点。不学习新的编程技术,很快就会落伍。在对一门技术无法继续深入的情况下,我们不妨扩展一下广度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要成为一个高级程序员,需要以下几个方面的努力: 1. 学习基础知识:熟练掌握一门或多门编程语言,如 C++, Python, Java 等,并了解计算机科学的基础知识,如数据结构和算法。 2. 实践项目:通过实际项目练习编程技巧,并且不断加深对编程语言和技术的理解。 3. 阅读技术文章:阅读与技术相关的文章和博客,了解最新技术动态,并不断扩展知识面。 4. 参加技术社区:参加相关的技术社区和在线课程,与同行交流经验,并不断学习新技能。 5. 保持持续学习:不断学习新技术,不断完善自己的编程技巧,保持对编程的热情。 以上只是一般性的建议,具体情况因人而异,你可以根据自己的兴趣和目标来制定学习计划。 ### 回答2: 成为一个高级程序员需要具备以下几个方面的素质和能力: 1. 扎实的编程基础:高级程序员需要熟练掌握至少一种编程语言,懂得常用的数据结构和算法,并能够独立解决复杂的编程问题。 2. 深入的技术理解和学习能力:高级程序员需要持续学习和掌握新的编程技术和框架,能够在不同的技术领域中自如地穿梭。通过阅读文档、参与项目和实践来深入理解技术。 3. 高效的问题解决能力:高级程序员需要具有快速定位和解决问题的能力,能够通过分析和调试找到程序中的错误,并能提供高质量的解决方案。 4. 代码质量和工程化思维:高级程序员注重代码的可读性、可维护性和扩展性,能够编写出高质量的代码,并懂得使用版本控制工具和自动化测试等工程化的方法提高开发效率。 5. 良好的沟通和团队合作能力:高级程序员需要与团队成员进行高效的沟通,协调问题,并能够适应和融入团队工作。 6. 主动学习和个人项目经验:高级程序员需要积极主动地学习和探索新技术,同时实践个人项目,锻炼自己的编程能力和解决问题的能力。 总之,成为一个高级程序员需要不断学习和精进自己的技能,拥有扎实的编程基础、问题解决能力和工程化思维,同时注重团队合作和与人沟通的能力。通过不断地实践和自我提升,可以逐渐成长为一个高级程序员。 ### 回答3: 要成为一个高级程序员,需要具备以下几个方面的能力和素质: 一是专业知识。一个高级程序员需要有扎实的计算机科学基础,熟练掌握多种编程语言和开发工具,并深入了解各种算法和数据结构。除此之外,还应该对软件工程、数据库设计、网络通信等方面有全面的掌握。 二是持续学习能力。程序语言和开发工具不断更新迭代,需要时刻保持对新技术的学习和了解。高级程序员应该注重不断学习新知识,参加培训课程、阅读相关书籍、关注最新技术动态,以保持自己的竞争力。 三是解决问题的能力。高级程序员需要具备独立分析和解决问题的能力,能够迅速理清问题的本质,提出切实可行的解决方案。在解决问题的过程中,需要运用自己的专业知识和经验,善于利用调试工具和查找资料,持续追踪和修复Bug。 四是团队协作能力。高级程序员通常会承担一些技术带头人的角色,需要与团队成员紧密协作,共同完成项目。与人沟通和合作的能力是非常重要的,要能够有效地交流、协作和解决问题,推动项目的顺利进行。 五是对待工作的态度。高级程序员需要对自己的工作有高度的责任感和专业精神,对待每一个任务都要认真对待、积极主动,追求卓越。在工作中,要保持学习的热情,勇于挑战和创新,不断提升自己的技术水平和解决问题的能力。 总之,成为一个高级程序员需要不断学习和提升自己的能力,具备扎实的专业知识、解决问题的能力、团队协作能力和良好的工作态度。只有不断努力和积累经验,才能成为一个高级程序员

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值