普通程序员与高级程序员的差别在哪?
同样都是敲代码,为什么别人一个月工资五万,你一个月却只拿五千?是单纯在找工作的时候运气不佳?还是因为技术水平有差别?那些被大众膜拜信仰的技术大神到底牛在哪里,现状已定,普通程序员是否还有机会逆袭?看完这篇文章,或许你能从中找到答案。
从思维和习惯角度看,普通程序员和高级程序员的差别主要体现在以下四个方面:
缺乏编程思维
编程思维又叫Computational Thinking,指的是从理解问题到解决问题的思考方式,具体到程序员的实际开发工作中来看,当拥有编程思维的程序员接到一个新的需求,他们总是能迅速在大脑中分解复杂问题,将注意力聚焦到重点问题上并提前预设解决路径,比如这个需求对现有逻辑有什么影响?怎样操作才是最优解?一旦变更数据会存在哪些风险?团队最少需要多久的开发周期才能交付?拥有编程思维的高级程序员能从产品经理的需求中思考为什么要这么做。而普通程序员在收到新需求的第一反应大多不是思考,而是吐槽“为什么又要改需求,他/她到底懂不懂产品”,然后在愤懑中闷头敲代码、改Bug、继续敲代码、继续改Bug,陷入无止境的循环当中。到最后,没有编程思维的人,敲再多的代码,也只能做一名普通程序员。
不知道怎么解决Bug
普通程序员发现Bug后,直接复制粘贴靠百度,“一杯茶,一根烟,一个Bug想一天”,能不能解决全靠运气。高级程序员在发现程序报错后,首先会查看浏览器控制台是否发送了对应的请求,如果是的话再看请求码是什么,然后根据不同的错误码做出不同的调试方案,要么通过报错日志找到对应的地点进行修改,要么通过开发工具断点调试,顺藤摸瓜找到最终问题。
当问题解决后,有经验的高手往往会复盘总结处理好善后问题,下次再出现类似情况就能第一时间做出反应,普通人与高手的差距往往体现在解决问题的能力上。
没有养成良好的学习习惯
我们大部分人都习惯了接受填鸭式教育,上学期间大家还尚有学习的动力,但有多少人在工作后依然能够保持良好的学习习惯?技术的世界日新月异,当很多人还停留在JDK8的时候JDK16已经悄然问世,从SpringMVC到SpringBoot再到SpringCloud全家桶,不同版本的框架正在以迅雷不及掩耳之势快速更新。很多程序员在毕业后便不再主动学习,他们的技术水平也就停留在了刚进公司的那几个月。时光流逝,每年有大量更年轻、更有热情的应届生走出校门,他们随时都有可能替代掉高薪低性价比的普通程序员,如果没有主动学习、终生学习的意识,这批人注定将会被技术大潮所淘汰。
视野狭窄,缺乏长期的目标规划
程序员长期处在996、007繁忙的工作节奏中,鲜少有时间停下来去思考自己的目标到底是什么,现在的你和刚毕业时的你相比有什么变化?五年之后你希望自己活成什么样子?很多人每天只是马不停蹄地处理各种领导派下来的任务和产品经理提出的新需求,却从来没有驻足思考过自己的目标规划和后续进步的方向。每天在舒适圈中闷头敲代码只会让自己的视野越来越狭窄,当一个程序员做到了一定程度,除了技术本身之外,视野、圈子和人脉变得越来越重要,这也直接关乎程序员个人的晋升空间。
问题摆在面前,普通程序员要想实现技术水平的跃迁,必须有针对性地做出改变。
首先,要敢于自我革新,与过去的思维习惯划清界限重新开始。在日常工作中,多去看看“大神”做的项目,看他在一开始的时候是如何设计项目的,在编程的过程中对数据库进行了哪些操作,以及为什么这么做。久而久之,当你自己的项目遇到复杂的需求时,你也能够在这个思路的基础上进行难点拆分,不断改进优化项目,这将会是你进步的开始。
其次,拓宽视野,培养终生学习的习惯。将目光从个人所在岗位转移到行业中去,多去了解国内外的技术圈发生了什么,多去看看行业内外正在进行哪些变革,每天抽出一个小时的阅读时间,从被动学习转变为主动学习。“人生在勤,不索何获”,只有站在巨人的肩膀上不断学习,才能获得长远发展机会。
最后,制定长期发展目标。想清楚自己到底想要从事什么岗位,未来在这一岗位上想要达到什么结果,将大的目标切分成阶段性目标,以此为导向不断努力。就算阶段性目标失败了也没有关系,回过头复盘总结,看在哪些地方还有进步空间。