为什么80%的码农都做不了架构师?>>>   

程序员的灯下黑:重知识轻技术(转)

电视《雍正王朝》讲了这么一个故事:大将军年羹尧奉命到青海平叛,清军因路途遥远,军耗巨大,因此力求速战速决。但叛军避开锋芒,东躲西藏,年羹尧没有办法找到叛军决战。这时,朝廷内外压力越来越大,年羹尧陷入困境。这是一位谋士对年说:我知道叛军在那里。年大喜。这位谋士指出,敌人就在不远处的一座皇封寺庙里。年不信,谋士不慌不忙地说:这就是灯下黑,离自己越近就越不可能意识到,但却是最可能的地方。果然,大军一出,大获全胜。

我想讲一些关于程序员对自身认识的故事,这些故事都和灯下黑有关。只要正确认识自己,道理非常简单,但是,到处都可以看到灯下黑的故事。

某程序员,有一天接到一个任务:公司的有一个产品的文件太大了,要求采用压缩算法,减少尺寸,最好能压缩20%。

程序员兴高采烈地接受了任务:以前没玩过压缩算法,这下可以学习新东西了!研究了几个月后,他觉得差不多了,就交给了项目经理。项目经理正等着呢,高兴坏了,拿着演示文件就去找产品经理。产品经理开始挺高兴,看完脸就拉下来了。打开文件,把所有的文件尺寸一算,很淡淡的说:“才压缩了10%,有什么用啊!”

程序员愣住了,“不会吧!我看过的,压缩了 20%!”

产品经理指着文件列表说:“你看,某文件是压缩了20%,可你的压缩算法增加了一个动态库文件,尺寸还不小,总共加起来,不就只减少了10%吗?”

各位看官,这是不是软件公司里经常发生的情形?

这种失败的成因当然是复杂的,有沟通管理方面的问题,也有程序员能力的问题。我今天想要说的是程序员认识方面的问题。

继续故事:

项目经理很没面子,回去就和程序员找原因。项目经理是老程序员了,直话直说;终于弄清楚的事情的本质:

第一,这位程序员一个的时间读了很多关于压缩算法的书,会了不少算法。可是从来没比较过算法的优劣。这老兄觉得研究算法很有趣,乐此不彼,写了好几个实现。

第二,这位老兄在最后几天才想起来20%的目标,也没太放在心上,看看差不多就拿出来了。

这是典型的程序员的认识问题,重知识而轻技术。

先从是么是知识,什么是技术说起。

知识就是知道,你知道了某件事是怎么回事,就是有了知识。

技术就是你能做出来,做得好叫技术好,做的不好叫技术差。

怎么写操作系统?看完操作系统原理,再苦读完源代码,这叫有知识了。如果有本事把任务调度、内存管理、IO什么的都写出来,还能写得稳定,快速,可扩展,那是有技术。有知识和有技术可差远了。早年我在工厂实习,要挫一个圆孔,拿着内锉刀干了一天,只挫了一个椭圆;师父来了,三分钟,比冲床冲出来还圆!我是个好学徒,使用锉刀的知识全记住的,可以写一篇内圆挫使用大全。知识是有了,可没这个技术。

程序员也一样。什么C++,Java,.net,什么STL,Struts,Spring,就是门门都满分,这也就是有知识。算不算技术好呢?差远了。软件工程师界就专门出这种不会写程序的“高手”。我遇到一位老兄,精通Java知识,从虚拟机到各类框架,概念,无所不同,谈起Java来,没人说的过他。可是他的代码永远Bug最多,而且都是最简单的Bug,什么逻辑不对啊,功能没实现啊,UI不对啊。他的领导只有又好气又好笑。问下去,发现这老兄写了几个程序文件以后,就不感兴趣了,因为所用的技术没什么不知道的了。所以马马虎虎交差。

说到底,写程序是个手艺活,就和古代的匠人一样,是要讲工艺的。比如一个玉匠,能打造栩栩如生的玉孔雀,那得打的好!要是一个玉匠说,这些手艺我都知道了,重复做东西没劲,将就着给客人做出来吧!那他还不吃西北风!

可是,十几年来,程序员界有的是这样的人,还引发大规模争论。象什么C++和Java之争啦,J2EE和.Net之争啦。你看里边的帖子,不停有人赌这个阵营那个阵营,有发誓一辈子做C++的,有发誓打倒.Net。我还奇怪了,专门没人效忠机器码的,那不是最难最有“学问”吗?这都是在争论什么知识最重要。可是啊,很少有人谈谈怎么做好产品的。

现在程序员最大的问题就是太看重知识,拼命追逐新玩意,而忽略了身边的够得着东西。好,什么C++,Window API都知道了,东西也弄出来了,可是三天两头崩溃,还找不到原因?为什么?有没有看看代码,看看是不是某函数写了2000行,自己都看不懂?是不是全局变量乱用?是不是没考虑前后兼容性?没考虑冗余和故障恢复?

末了再回到开头的故事:

项目经理回去和程序员再重新设计,又多花了一个月,终于达到了目标。但因为这个部分是一个大项目的一部分,整个项目不得不延迟了一个月。

年底考评的时候,项目经理给程序员打了一个及格;程序员不服,告到总经理那里。总经理说:“你知足吧,给你打及格已经看在你干的很辛苦的份上了,因为你没有按时完成,整个项目延迟了一个月,这帐都没找你算呢。”程序员颓然。

转载于:https://my.oschina.net/macwe/blog/1586237

程序员的灯下黑:重知识轻技术(转)相关推荐

  1. 程序员的灯下黑:管理还是技术?兴趣优先

    Simon是一个软件公司技术总监.有一天,有一位程序员小A提出想要和Simon谈谈.小A工作5年了,程序写得很不错.他进到Simon的办公室,坐下,在Simon的对面. Simon的桌子有点弧度,于是 ...

  2. 好程序员分享Web前端知识之HTML

    今天好程序员分享Web前端知识之HTML.Web前端技术由HTML.CSS和Javascript三大部分构成,而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者 ...

  3. 小议技术业务孰重孰轻-既不能重文轻武,也不能重业务轻技术

    小议技术业务孰重孰轻-既不能重文轻武,也不能重业务轻技术 所有的人都知道一件事情,单掌难敌双拳,跛脚的人是跑不过腿脚正常的人,但是在现实生活中却无法避免这种事情的发生,首先我们先来看下宋朝的例子: 故 ...

  4. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  5. 奔跑吧,程序员:从零开始打造产品、技术和团队

    奔跑吧,程序员:从零开始打造产品.技术和团队 下载地址 https://pan.baidu.com/s/1KX4phZqGTxYVQ_vckZr7DQ 扫码下面二维码关注公众号回复 100108获取分 ...

  6. 作为一名程序员,如何高效的学习技术

    今天收到官方推送的标题,说是作为一名程序员,如何高效的学习技术,通过我的切身工作经验,我总结了一些程序员高效的学习技术的一些经验,分享给大家 制定学习计划:在学习新技术之前,制定一个合理的学习计划,包 ...

  7. Java后端程序员1年工作经验和技术总结

    本文转载自:Java后端程序员1年工作经验和技术总结 1.引言  毕业已经一年有余,这一年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了不少东西.这一年里走过一些弯路,也碰到一些难题,也受到过做 ...

  8. 谈谈Java程序员进阶的那些知识和方向

    谈谈Java程序员进阶的那些知识和方向 记得前段时间看过一篇文章谈到一种程序员叫野生程序员,战斗力极强,可以搞定一切问题,但是通常看问题抓不到本质,或者说是google/baidu/stackover ...

  9. 程序员职场规划之走向技术管理-安晓辉-专题视频课程

    程序员职场规划之走向技术管理-2315人已学习 课程介绍         如果你曾有这些困惑,这门课可以帮到你: 想转管理,不知道有哪些途径? 不知道怎么为成为管理者做准备? 不知道怎样培养自己的项目 ...

最新文章

  1. java面向过程和面向对象
  2. 2020-11-13size_t和int
  3. 设计模式:单例模式之饿汉式
  4. Fedora WIFI频繁断开问题的解决办法
  5. SpringBoot项目中对mysql数据库进行定时备份为sql文件的实现思路
  6. ubuntu 16.04 搭建 python 开发环境
  7. selenium webdriver 启动三大浏览器Firefox,Chrome,IE
  8. windows上的python能否在unix上使用_怎么用python在Windows系统下,生成UNIX格式文件
  9. 常见数据结构与算法整理总结
  10. Maven学习总结(12)——eclipse中构建多模块maven项目
  11. 翁恺老师C语言学习笔记(八)数组
  12. Mybatis Plus配置以及单表操作
  13. python动态是什么意思_怎么看出自己是Python什么阶段
  14. 蓝屏(BSOD)转储设置,看本文就够了!
  15. Android热修复之Sophix初探
  16. Gradle初级使用教程
  17. NYOJ-14-会议安排问题
  18. 我的python学习(前言 初生牛犊不怕虎)
  19. Kryo工具类 序列化和反序列化操作工具类KryoUtils
  20. OpenTracing 简介

热门文章

  1. Python删除文件、删除文件夹
  2. 安装visual studio code(VS Code)并修改为中文
  3. 35. 脱壳篇-UPX和WinUpack压缩壳的使用和脱法
  4. Python 新式类与经典类
  5. ios 10.3 汉字的中划线
  6. 引入mui后,radio单选框不可点击问题解决
  7. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例
  8. Android关闭Activity
  9. 修改默认python版本
  10. MySQL保留关键字