杂文笔记

    返回首页    发表留言
本文作者:李德强
          技术真的没用吗
 
 

        我是一个技术型的程序员,或许有朋友会问:“程序员不就是做技术的吗?”事实上我认为目前中国的程序员中多数都不是真正意义上的技术人员,他们通常只会机械式的写代码,从互联网上搜索能用的现成代码然后复制粘贴,我之前写过一篇《编程是一门艺术》我从事编程工作到现在已经有十二年的时间了,不敢说自己是一个优秀的程序员,但我一直在向这个方向努力。编程是我的兴趣所在,我也非常热爱这个职业。

        我面试过很多求职者,我常常会问他们:“你的职业规划是什么?或者说你的人生理想是什么?”大多数人会回答:“先做几年的技术,学好编程,等有了一定的工作经验,接触过项目之后再转项目管理。”我也跟很多同事聊过这个问题,多数人的回答也大同小异。其实这也是目前中国IT界的一个普遍认知:编程这种工作也就能做个三五年,最多也就做个七八年,之后还是要转行做管理或者其它类型的工作。有人也问过我这个问题,我的回答令他们很诧异,我说:“我热爱编程这个职业,我会一直做下去。”他们会反问我:“你能做一辈子的Coding吗?做到四十岁?五十岁?还在跟那些刚毕业的孩子们一起干Coding?”我只微微一笑。我先说几个发生在我工作上的故事,故事本身没有什么教育意义 ,更没有什么深层次的哲理。它们只跟我做编程技术有关:

        故事一:早在多年前公司还在使用一套非常旧的开发框架做JavaWeb的项目开发。我也跟同事一样在使用这套开发框架,但在我使用期间我发现这套框架使用起来非常不方便,编写一个业务的功能要编写六个配置文件,同时还要创建十几个接口和类,然而这些所谓的低耦合设计在实际使用中根本用不到;另外它的性能更是低下,处理几万条数据保存到数据库的功能慢如老牛,运行十几分钟才能完成。并且这套框架漏洞百出,到处是底层的bug。于是在工作之余我自己重新搭建了一套JavaWeb的开发框架。我在工作不忙时就会不断的修改和完善功能。有一次我们领导从我身旁经过看着我手里在弄的东西,很不高兴的跟我说:“这也不我们的工作项目,你弄这个干什么?”我耐心的跟他反映目前公司的开发框架的问题。他却说:“你在工作期间弄这个影响工作,我们公司又用不到。你想自己弄没问题,自己回家弄去!”我笑了笑没说什么。可后来项目上线后出现了各种问题,多数都是框架级的,还有非常严重的性能问题,客户也非常生气。后来过了几个月,领导找我说:“你自己搭建的那个框架怎么样了?如果搭好了就拿过来我们用吧。原来那个框架问题实在太多了。”后来公司用的开发框架基本上都是我搭建的。

        故事二:我个人非常喜欢Linux操作系统,无论是在家还是在公司,我的电脑安装的都是Linux操作系统(如果有兴趣的朋友可以参见《一点一滴学Linux》)。我刚到这家公司工作的时候,把工作电脑的操作系统从Windows换成了Linux。当时领导路过我身旁跟我说:“你安装这操作系统有什么用?非要在我们公司搞特例!你要融入我们团队,就要跟其他人一样。”我笑了笑,说:“我希望多学一点这方面的知识。”领导“哼”了一声,走了。日子一天天的过去,有一年,公司与一个大客户签定了长期合作伙伴协议,但客户有一个硬性要求:我们开发的所有的程序都必须部署在Linux服务器上。这下领导傻眼了,全公司没人会在Linux下工作,上网查资料也是学的一知半解,对Linux的文件结构、权限设置、软件包安装完全不懂。最后领导找到我,让我带着负责这些项目的同事做,手把手的教会他们(但目前为止还没人愿意好好学,都是能把手头的工作混过去就算交差)。

        故事三:我在公司工作只使用Java来做Web系统,也涉及到做前端的Javascript、html、CSS等,但我对Linux下的C语言编程非常感兴趣,我并且常常利用工作之余学习C语言,并且自己手动做一些有趣的小程序,比如基于Linux下的C程序做Socket通讯、多线程、图像处理等。然而熟悉的一幕又上演了,领导再次路过我身旁,看到我屏幕上的C语言代码,跟我说:“这不是Java语言啊?这是啥?”我回答说:“C语言。”领导说:“上班时间别弄这些跟工作无关的事!”很生气的走了。我承认在上班期间不应该做与工作无关的事,但学习本身也算跟工作无关吗?我不这样认为。如果我手里还有要做的工作,我会努力的去做好,但在我分内的工作已经完成的情况下去学习有什么不对的吗(有很多朋友抱怨说编程是一份永远都很累的工作,有没完没了的项目,没完没了的加班,你哪有那么多时间学习啊?这个问题请参见《上班时你在做什么》)?我是在学习,又不是看小说,玩游戏,看电影。历史就是这么惊人的相似(也许是老天为我报不平吧):又过了半年,公司接到一个项目,在Linux下用C语言编程,做服务器集群的数据采集和上报工作,公司多年来一直在做JavaWeb的相关项目,Linux下C程序根本没做过,但这是一个老客户,项目费用又非常可观,领导决定先拿下这个项目,再招聘相关方向的人员开发。很可惜,临时抱佛脚是没用的。公司只有我一个人学习过这方面的知识,只好让我一个人顶起这个项目,我一个人做了3个月完满的完成了,而且是比预期提前了2个月,这使我想起了那句话:机遇只会眷顾那些有准备的人。

        故事四:有一个同事编写的程序功能是:点一个按钮给银行出一个流水的明细帐,一次大概有4000条数据,同时还要做一些数据的业务处理和回写数据库。这个同事负责编写这个功能的程序。这个功能他写了近一个月,最后功能是做出来了,结果也是正确的了,但每次点这个按钮,程序从开始到结束大约运行了30分钟。客户很生气,后果很严重。我们领导开始想办法对这个同事加以“指点”:加大服务器的物理内存、加大服务器容器的内存使用,采用多线程技术让这个功能在多线程中运行,从而不影响画面中其它功能的使用……最后的结果是:这个功能的耗时从30分钟改善到20钟,客户还是非常不满意。做这个功能的同事在无数次失败后、在领导的无数次“指点”后,果断的辞职了。人虽然走了,但问题还在,还是需要解决的。领导找到我,让我帮忙优化一下。我从上午9点了解业务,10点开始动手做,用了1个半小时的时间,在11:30将这个功能全部重新开发完成,这个功能的处理结果正确,整个功能的运行时间为0.7秒。我并不是说我自己的能力有多强,我只是觉得一个真正懂得技术的程序员和一个只知道写代码的程序员的差别很大。编程是一份有技术含量的工作,不是体力活。

        故事五:去年有一个项目,其中一个重要的功能是对汉语的语句分词,也就是说:给你一句话,你需要把里面用到的词语识别出来。当然,前提是有词库的。同事的做法是把60万个词汇的词库事先载入到一个List并放入内存中,当接收到一条语句时,使用给定的字符串在60万个词汇中循环,判断这句话中中是否包含了词库中的词语。在他努力工作下,这个分词功能总算是实现了,在并发处理十几条数据时没有什么问题,响应速度也很可观。但在项目上线后,这个分词功能的并发非常高,服务器在几秒钟之内要处理几千条数据,客户定的性能要求是每秒200个并发请求,每个请求的响应时间要求在200ms以内。于是问题来了,这个同事写的程序在大并发请求时服务程序变的非常的迟钝,内存消耗非常大,Java虚拟机占用的内存几乎充满了整个服务器的物理内存。领导让大家开会讨论,想办法去解决这个问题:有人说加大服务器的物理内存,有人说提高Tomcat服务器的并发数,还有人说去调整Java虚拟机的内存回收机制重写内存回收功能……总之,努力了一个月后,性能还是没有任何改善。最后我给了这个同事一个建议,说你去学习一下《数据结构》的课程,主要学习“键树”那一章。采用“键树”是做分词功能非常好的解决方案。同事听了我的建议,把之前的代码重新用“键树”实现了,最后性能是:最多支持每秒1000个并发请求,每个请求响应时间在30ms以内。客户看到改进的效果也非常满意。编程是一份有思想的工作,没有思想的程序就像一潭死水;有思想的程序才会有活力,才有生命力!

        这种故事还有很多,但今天的故事讲到这里就暂时告一段落了。我想说的是:编程不是一件简单的事。那些觉得编程很简单,随便到互联网上就能搜索到想要的代码,copy一下就OK了的人,他们从来不会思考,不会独立设计程序,不会独自解决问题,遇到问题就用拿来主义的办法问同事,去互联网上找(请参见《自我学习与自我解决问题》)。从来不会主动学习相关知识,认为大学毕业了学习就结束了,找到工作了,就没有必要再学习了。从来不积累经验,遇到同样的问题仍然不明白是怎么回事,被同一块石头绊倒很多次还是一如既往的被绊倒。他们的工作很乏味,很枯燥,并且工作起来会觉得非常累,每天总有那么多做不完的工作。难道编程工作真的是这样的吗?编程真的没有技术含量吗?去年公司开年会的时候公司领导跟我们说:“技术不值钱,你们做Java的也好,做C语言的也好,做Python的也好。这些技术都不值钱,你们想要实现的功能,网上有那么多的开源库,那么多的开源代码。直接下载下来用就行了,有什么技术难度?现在你们觉得自己很有前途,再过几年你们就会像街头上那些脖子上挂牌的人一样了。脖子上挂个牌子,上面写着:“电工”、“瓦工”、“木工”、“砸墙”……再过几年你们同样也在脖子上挂个牌子“会Java”、“会C语言”、“会Python”……技术现在不值钱,能挣钱的不智商,而是情商。能谈成项目给你们做才是能力。”听完领导的这番高谈阔论之后我真是哭笑不得。也许做为领导,站在公司的高处向下看,和我这种公司小职员的想法完全不一样吧。技术真的不值钱吗?我已经用上面五个故事回答了这个问题。我并不是说我自己的能力有多强,我只是想说:一个优秀的电工要比一个垃圾的电工强太多,一个优秀的电工被各大企业邀请讲课、解决别人解决不了的技术难题;而垃圾的电工呢?只能在脖子上挂一个牌子,蹲在街边祈求有人能赏他点活干。

    返回首页    返回顶部
#1楼  点苍双剑,剑气冲天  于 2017年05月17日13:49:52 发表
 
写的真不错,值得每个程序员思考。
#2楼  11  于 2018年11月05日23:17:07 发表
 
我最佩服的就是那些热爱技术,敢于深入了解的人,给作者赞一个,也像你学习
  看不清?点击刷新

 

  Copyright © 2015-2018 问渠网 辽ICP备15013245号