高级程序员比码农到底强在哪里?
说起程序员人们的第一印象就是工资高、加班凶、话少钱多头发少,再加上现在互联网公司太吃香,BAT、华为、小米等公司程序员加班情况众所周知,程序员用生命在敲代码的印象刻在了很多人的心里。
与其他行业一样,虽然都是敲代码,但也有高级和普通之分,大牛程序员,一个人比一个团队做项目都做得快。最为出名的当属十几年前求伯君在做wps时,一个人完成了微软二十人团队没有完成的项目需求,也让wps在与微软的竞争中站稳了脚跟。程序员的能力差距真的比贫富的差距还要大。
普通程序员和高级程序员的区别:
普通程序员:
1、知识体系零散,没有系统性的思维,在写代码、改bug的时候没有工程素养,往往是拆了东墙补西墙。
2、对某种语言的依赖性太强,知识无法很好地迁移,一旦换了语言或者领域不同就会不知所措。
3、经验不足却自认为自己经验丰富,只对自己做过的比较顺手,但是碰到未知的问题,就束手无策。
高级程序员:
1、知识体系完整,有系统性的思维,即使没有到架构师的级别,在写代码和改bug的时候也能从整体上去思考和把握。
2、学习能力强有了自己的心智模型,知识可以自由迁移,并可以高效地切入不同的领域和语言。
3、拥有真正的经验,不只是做够那些项目,而是面向未知的解决问题的能力。
能力不缺的前提下,主要的区别就是抓不到问题的本质。普通程序员多半是直线型思维,见招拆招,干得多,想得少,接到一个项目就开始噼里啪啦敲代码,不想就在电脑上敲上include ,一天敲个几千行;而高级程序员更擅长抓住问题的本质,将看似复杂的需求化为一系列简单逻辑的堆叠,写代码步步为营,逻辑简单清晰,所有条件分支都被仔细覆盖。
简单来说,同样是一个项目需求,普通程序员可能要天天加班忙上一个月,而高级程序员可以每天按时下班,几天就搞定。这也是为什么会出现“月薪五千的程序员天天加班到夜里,月薪五万的程序员5点下班”的尴尬情况。公司追求的是利润而不是努力,谁创造的多当然拿到的就多。
那么如何才能从普通程序员进阶到高级程序员呢?
1、提高代码优化的能力:“代码可运行”对一个优秀的程序员来说绝不是结束,而是开始。优秀的程序员一定熟知各种算法和数据结构,会灵活运用,致力于写出更简单、效率更高的程序。
2、先考虑、多思考:编程思路,是系统的计划和设想,是程序员写程序时的条理和线索。
其实成长为高级程序员并没有想象的那么难,但是要看你是在什么公司成长。我见过一个小企业的程序员,工作五年了,但是感觉真实水平就只有刚工作两三年这样的级别,其实能否成长为高级程序员跟机遇有很大关系。比如一个程序员,各方面能力都不错,但是公司并没有给他这个机会去向高级程序员进阶,因为之前的项目负责人还在他就没有机会,这就是现实!
针对以上问题,其实更多的是技术方面的东西,我自己收集整理了一套Java架构方面的路线图,分享给目前工作2~5年左右的Java程序员们,可以梳理一下自己的技术,这些东西可能你们平时在工作中接触过,但是缺少全面系统的学习,所以掌握的都不深,希望看了路线图以后大家知道从哪里开始入手学习。
除了这份路线图,还收集了一些关于Java高并发、分布式、JVM、spring源码分析等相关的技术资料一并分享在我的Java后端技术群:819940388。
随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。大家可以通过扫码进群下载资料,其实我自己也比较喜欢技术,群里有一些阿里大牛,也有一线互联网的资深HR,最近在面试的朋友或者在找工作的可以进来看看哦!
原文出处:http://mp.toutiao.com/preview_article/?pgc_id=6616655288990695944