为什么说 80% 的程序员都缺乏基本功?
击上方“码农突围”,马上关注,每天早上8:50准时推送
真爱,请置顶或星标
昨天我在 InfoQ 上看文章的时候,看到了 InfoQ 对熊节老师的专访。感觉这篇文章说的非常有意思,大致说:
有人说:“初级程序员才比招式,高级程序员只看内功。” 什么是基本功?不是那些高大上、新潮的技术、框架,而是程序员每天做的基础工作。比如,快捷键是否熟悉,测试习惯好不好,代码干不干净,打字速度有多快等等。在 IT 产业高速发展的当下,为何我们还要重申程序员基本功的重要性?一个基本功扎实的程序员应该具备哪些素质?当我们与国内最早导入敏捷软件开发方法的熊节先生探讨这一话题时,他表示,程序员的基本功才是真正影响开发效率,甚至影响整个项目成败的核心。然而,“ 国内 80% 的软件从业者都存在基本功缺失的问题,其实我想说 90%,太得罪人。” 本文整理自 InfoQ 与熊节的采访全文。
看完之后,不知道大家如何看熊节老师的观点的呢?在我看来,熊节老师说的非常对。因为能做和能做好是两回事。在我看来能做就是程序员懂得这个招式是干什么的,知道做什么,需要用什么招式。而能做好则指的是能够熟练使用招式,运用自如的同时可以举一反三。而能做和能做好之间差的就是基本功。
我发了一条状态之后,很多人评论说算法和原理性的东西才是基本功。不,它们属于内功。
其实,程序员 80% 的工作,尤其软件开发方面,都是在用基本功,而不是内功。
因为软件开发这个工作,确实大部分的时间,都是在搬运代码和改 bug ,而这些工作恰巧都是需要基本功的。
比如快捷键用得好,就是能够节省时间,提高效率;
比如养成单元测试的习惯,就会减少很多 bug 的出现,既节省了测试的时间,又能节省你改 bug 的时间,单元测试的时间,可能都不及你改 bug 时间的十分之一;
比如养成良好的编码习惯,可以大大提高你代码的阅读效率,在产品更新迭代的过程中,你可以非常快速的完成代码的修改;
比如你打字速度很高,绝对提高了你代码编写的速度;
虽然基本功都是非常常识性的,非常简单的东西,但是就是这些往往看似简单的东西,大家都不重视。这就是典型的还没学会走,就想跑的思想。其实在这个浮躁的社会中,这样的现象太多了,就像练习武术一样,很多武侠人士之所以走火入魔就是不重视练习基本功,感觉这个太简单了,我不想练习,我想直接练大招,学习降龙十八掌。
这样的现象确实很普遍,我所认识的大部分程序员,真的自己写完代码,别说单元测试了,其实自己连简单测试都懒得做。我所经历的公司大部分公司都是不写单元测试的;编码习惯更是各种各样。
熊节老师认为:基本功扎实的程序员通常具备如下几点素质
其实你看,上述每一点都很简单,要求也不高,但是往往就是做起来就很难。
大家想过为什么大部分程序员都缺乏练习基本功吗?
其实就是习惯的问题,那为什么没有养成习惯呢?我相信大部分程序员都这么想过:
在做一个新项目的时候,心里想:这次我一定要使用非常规范的编码规范,一定要命名规范,每个函数前面一定要加注释,一定要注意把重复使用的函数提取出来。前期雄心勃勃,确实在按照自己想的慢慢做,但是写着写着就变样了,越往后,越想算了,怎么快怎么来吧,怎么自己舒服,自己怎么写吧,时间快不够了。
我敢打赌,上面的想法,绝逼有 80% 的人都这么想过,想这件事就像程序员看到电梯都会想调度算法的问题一样。
其实,不是项目时间太紧了,不是项目时间不够了,就是大家心里比较浮躁,比较懒,做着做着就坚持不下去了。你可能刚开始能坚持代码命名规范,可能会写单元测试,但是慢慢就是感觉这样太麻烦了,自己想偷懒,并不是项目时间紧。
久而久之就这样了,基本功的习惯是永远也练不成的。
所以,说大家没有练好基本功,还真别不服气。
其实不仅仅是程序员的工作这样,其实所有的事情都是一样的道理:越是简单的东西,大家往往越不重视,而往往越是这些基础的东西才是真正决定能否成功的关键。
最后用熊节老师的话结尾吧,如下:
读书对于能力提升的帮助很有限。能力的获得,必须通过重复、有针对性、有反馈的刻意练习。
基本功就得这样练才行,习惯养成之后,基本功就扎实了,扎实之后,你想不用都难,大脑和肌肉自然而然的就会使出这些基本功。
有热门推荐????
1. 面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?我竟然回答不上来...
2. 不敢相信?System.currentTimeMillis() 居然存在性能问题
3. GitHub 标星 3.2w!史上最全技术面试手册!
4. 面试常考:Java中synchronized和volatile有什么区别?
5. Spring 常犯的十大错误,打死都不要犯!
6. Java 线程池 ThreadPoolExecutor 八种拒绝策略浅析
句题外话,有不少人想加鱼哥微信,鱼哥姑且放出来,但是坑位有限哦
想去大厂么?来加入鱼哥技术星球,放大你进大厂概率
扫描如下二维码加入我的知识星球:
为什么说 80% 的程序员都缺乏基本功?相关推荐
- 80%的程序员都不了解的调试技巧
转载自 80%的程序员都不了解的调试技巧 程序员的工作内容,除了大部分时间写代码之外,因为有不少的时间是用在调试代码上.甚至说不是在调试代码,就是即将调试代码. :) 今天我们来谈谈调试代码的一些 ...
- 我敢说80% 的程序员都掉进了「老鼠赛跑」的陷阱
loonggg 读完需要 2 分钟 速读仅需 1 分钟 大家好,我是你们的校长. 今天我给大家再次分享一下,我最近的一些读书的感想,思考起来,确实能够给自己带来一些真实的帮助和启发,希望大家在平时的工 ...
- 这是80%的程序员都看过的python教程,你掌握了么?
2018 IEEE最热门48种编程语言榜,Python雄踞四项第一! 据介绍,IEEE Spectrum 的排序是综合 10 个精选线上数据源,例如 Stack Overflow.Twitter.Re ...
- 学习C语言的教材、如何成为一名优秀的C程序员、激发程序员创意的6本书、国外程序员推荐:每个程序员都应读的书
学习C语言的教材 我的C语言是自学的,这些年看过不少教材. 下面,我对其中一些教材做个点评. 1. How to Think Like a Computer Scientist: C version ...
- 甲骨文华育兴业|【大数据调查】80%的程序员年薪都在10万以上,三分之一的人年薪20万以上
看了上面文章的小伙伴 如果感到不舒适 那么请看看这篇文章 非常适合你找准方向 你们印象中程序员是什么样?他们的实际生活状态怎样?针对中国程序员薪资生存现状做了一项调查,大数据让你更懂程序员.(以下数据 ...
- 90后程序员:我面试了一些80后程序员,有些人的技术深度都不够
点击上面↑「爱开发」关注我们 每晚10点,分享软件开发资源.社交电商资源 文|洪生鹏 80后随着时间的流逝渐渐淡出了人们的视线,人们更热衷谈论90后,有人说90后是跨掉的一代,对于新一代,似乎都有人来 ...
- 90后码农:我面试了很多80后程序员,他们大多技术深度都不够!
不论是在我国还是世界范围内,软件产业都是近几十年才出现的产业,搞编程的工作,目前还可以说成是科技工作者吧,目前互联网行业内的程序员想必主要是80后与90后了,当然一些70后朋友也是有的,不过还在主要参 ...
- [转]leo谈“80后”程序员为什么找不到工作?(1)
(应it168约稿写了关于"80后"程序员求职难的文章,我将分三次放在博客上,之后会引用网上的部分批评文章.) 80后的定义应该是:22至27岁之间.受过高等教育.刚刚毕业走向社会 ...
- 这是 1000 万程序员都想要的格子衫!
程序员们在着装上创造了一个风格--百搭格子衫.加厚加宽黑框眼镜.展现风中实力的凌乱发型--这种自带槽点的打扮,让有娱乐至死精神的网友们大喜过望-- "程序员都爱格子衫"成功与&qu ...
- leo再谈 80后 程序员为什么找不到工作
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 版权声明 ...
最新文章
- jsonp获取服务器数据的方式
- 小憩,味一二 ——08年3月编程手札
- VMware workstation运维实践系列博客导航
- 视频搜索时代到来了吗?[翻译]
- Ubuntu查看系统任务管理器(cpu+内存资源占用)+查看虚拟机分配核心数
- bootstrap 查缺补漏
- java我的世界极限生存_我的世界 1.7.10 极限生存整合包
- android layout_width 属性,android:layout_weight属性详解
- 简单演示matlab生成三维平面的命令mesh
- Linux高性能网络:协程系列01-前言
- 网页制作的基本知识(标签)
- ES插件elasticsearch-mapper-attachments 2.3.4及各个版本正确下载地址
- ug打开服务器文件保存不了,UG突然说保存不了, 你都是怎么处理的呢?
- 线性代数【8】-1 线性方程组 - 非常重要的概念 - 三个基本的问题
- php计算工资的代码,php计算税后工资的方法_PHP
- centos安装NVI驱动
- 【转载】Excel操作 Microsoft.Office.Interop.Excel.dll的使用
- 【论文】caj文件打开方式
- 【时序】M4竞赛冠军方案:一种用于时间序列预测的指数平滑和递归神经网络的混合方法
- 【恒指早盘分析】9.25恒指今日复盘及后市思路
热门文章
- 面向对象(Python):学习笔记之封装
- 三实系统地址是什么意思_终于明白!火灾报警系统的余量应该如何设置?地址数又是什么?...
- 论文笔记_SLAM_An Overview of SLAM_SPIE
- ICCV2019-FSGAN:实现任意两张人脸图片换脸的GAN方法
- 从零开始搭二维激光SLAM --- 文章索引
- 深度学习实现缺陷检测算法汇总
- shell 调试脚本设置
- amazeui学习笔记--css(常用组件2)--面包屑导航Breadcrumb
- mysql 数据库授权
- [NOIP2013] 华容道