作为Java程序员,怎样才能比别人更优秀?

1. 不要吝啬投资自己

和朋友一起搓一顿大概人均几十或者百把块钱,基本上我们都很随意,根本不会觉得这很贵或者很浪费。但是每当我们去买书或者去买一些优质的视频教程的时候,很多人会觉得很贵,甚至不太愿意出这个钱。

的确,技术书籍都很贵,动不动就50-100的,我想说的是什么呢?永远不要吝啬给自己投资,我研究生读的是通信专业,在学校自学的Java,我看过网上很多的免费视频教程,免费的教程有两个特点:一是入门的,二是质量不高的。但是要想真的提升自己,这些入门的教程是不够的,网上有些收费的教程确实不错,我读书那会儿也买过好几个项目视频跟着认认真真学习,收获颇丰。

而且现在也是知识付费时代了,入门资料一大堆,真正能提升自己Level的东西,哪怕花点钱,给自己投资永远是稳赚的生意。不要在乎那点钱。你和别人的差距,往往真的就是这一两百、两三百块钱给拉开的。因为知识创造的价值要比这几百块钱来的更猛。

2. 站在巨人的肩膀上

我们平时在开发的时候,会遇到一些功能上的东西要实现,当然咯,如果开发经验丰富,基本知道用什么技术去实现,但是对于开发经验不足的朋友来说,首先不要想着自己去造轮子,除非是非常冷门的一些技术,否则绝大多数现在互联网上都有了较多的解决方案,我们可以用来参考改进。软件开发,说的诙谐一点,就是 copy+改。因为工作不是学习,它是有deadline的。

还有一点,我们开发一般都会有很多类库,同一个功能可能有多个类库都可以实现。就像移动、联通和电信都可以满足你通信的需求一样,但是你选择哪一个,就看你自身的需要了。我们在实现某个功能的时候也是,如果能够选择一个很好的开源类库,那么必将是事半功倍,不管是从效率和稳定性上来说,都比我们自己实现要好得多。所以我们要站在巨人的肩膀上。

3. 写代码要规范

也许我一开始自学编程的时候,就跟着一些视频教程的缘故,受到那些大牛的影响,所以一开始我写代码就比较规范。我特别看不惯下面这种代码:

Integer index=0;

if(s_user.getNum()==0){

redisUtil.setInfo(s_user,0,-1);

}

这几行代码没有任何意义,我就是举个例子而已。如果是我写,我会写成下面这样:

Integer index = 0;

if(null != sUser && 0 == sUser.getNum()){

redisUtil.setInfo(sUser, 0, -1);

}

不管是空格上,还是命名规范上,甚至是空指针异常上,这些都是举个小例子,我们写代码一定要规范,这也是一个人有没有一个良好的习惯和态度的体现。最起码,可能你同事也会看你代码,请善待同事,程序员何苦难为程序员。

4. 不停地给自己充电

我们不能一直啃老本,干软件这一行,技术更新非常快,今年上半年学的技术,估计下半年就有了新的版本,我们要一直不停地给自己充电,不停地学习。哪怕是不停的总结自身不足,也比停滞不前要好,最起码自己没闲着。

我们还要有一定的忧患意识,公司每年都会输入新的年轻血液,有初学者,也有牛逼人物,我们不要让雇主逼着自己去学习,自己要有主动充电意识,这样才不会被周围的人给超越,才不会给后来者给超越。但是这都不是最根本的原因和出发点,最根本地,还是为了提升自己的能力。

5. 计划、坚持与执行力

我一直认为,一个优秀的人都应该是好的时间管理者,不管我们现在的能力如何,如果我们能合理的安排时间,分清主次,步步为营地去执行,坚持下来,我们肯定能收获很多,而且进步很快。

我从读研那会儿开始,每天学习,每周都会写几篇技术文章,总结好了,就写到博客里,没总结完的,就放在本地继续完善。我当初坚持写博客的目的很简单:巩固知识,形成系统,等到毕业找工作时可以很自豪的把博客地址放到简历上。这些我都做到了,我在CSDN写博客坚持三年多了,这期间我受益良多,不仅仅是为了找工作,也是个人品牌的积累,这非常重要。当由量变形成质变的那一刻,效果是很可怕的。如果你还没有博客,那希望看完这篇文章之后,去注册一个吧。

坏习惯养成很简单,好习惯养成很难,但是不管哪个,养成之后,都是蝴蝶效应。是良性循环还是恶性循环,就看自己了。

6. 放低自己的姿态

是在分享还是在吹逼,这点我们一下子就能辨别出来,我也有所谓的朋友经常在我面前吹牛逼,可能这是一个人的本性,每次跟我聊天都要海吹一波,我只能苦笑一番。这是做人的一种方式。

我是同济大学硕士毕业,可能相比于大部分人来说,我这个背景还算可以了,但是我一直为人低调,真心待人,从来不会因为你是大专或者一个不起眼的学校毕业的,我就在你面前吹牛逼,说一些大话,站在高处俯视你。我觉得人与人之间靠的是真诚,我真诚待人,别人肯定也会真诚待我。而不是我让别人觉得我有多牛逼,那样换来的也不是真正的友谊。

任何人都是从0开始往上爬的,你的背景好,可能快一点,别人差点,可能就会慢点,但是这不能说明别人就不够努力,我很佩服那些先天条件差,但是却非常努力的想要提升自己的人,我特别愿意给这些人帮助。我的粉丝当中,有很多很多还在学校读书的学生,也有很多大专生,这些粉丝在微信里跟我聊天,让我指点指点(当然,指点不敢当,我一般都是建议和分享),我都会耐心的把自己的想法结合他们的处境,给一个我觉得比较好的建议。别人来问我是看得起我,我能帮上忙的,基本上都义不容辞。

7.不断的学习提升自己

据不完全统计,截至目前(2018.01)为止,中国Java程序员的数量已经超过了100万。而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级工程师或架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。

很多人在问我,程序员如何拿高薪,其实总结出来还是一句话,你的技术决定你的能力已经薪资。下面是我的一个总结技术:

一、常用的设计模式

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:

作为Java程序员,怎样才能比别人更优秀?

二、开源框架源码分析

程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这也造成了很多错误看源码的方式。

作为Java程序员,怎样才能比别人更优秀?

三、分布式架构

迎接高并发大数据的挑战,从深度到广度完善知识体系,成为下一个互联网高薪人才。

理论结合实战,透彻理解分布式架构及其解决方案。

面向人群

需要突破瓶颈;

传统行业转型进入互联网行业的人群

分布式架构原理

1、分布式架构演进过程

2、如何把应用从单机扩展到分布式

3、CDN加速静态文件访问

4、系统监控、容灾、存储动态扩容

5、架构设计及业务驱动划分

6、CAP、Base理论以及其应用

分布式架构中间件

1、分布式架构网络通信原理剖析

2、通信协议中的序列化和反序列化

3、基于框架的RPC技术Webservice/RMI/Hessian

4、深入分析Zookeeper在disconf配置中心的应用

5、基于Zookeeper实现分布式服务器动态上下线感知

6、深入分析Zookeeper Zab协议及选举机制源码解读

7、Dubbo管理中心及监控平台安装部署

8、基于Dubbo的分布式系统架构实战

9、Dubbo容错机制及高扩展性分析

分布式架构实战

1、分布式全局ID生成方案

2、Session跨域共享及企业级单点登录解决方案实战

3、分布式事务解决方案实战

4、高并发下的服务降级、限流实战

5、基于分布式架构下分布式锁的解决方案实战

6、分布式架构下实现分布式定时调度

作为Java程序员,怎样才能比别人更优秀?

四、微服务架构

微服务架构是一项在云中部署应用和服务的新技术

微服务不需要像普通服务那样成为一种独立的功能或者独立的资源

微服务作为一项在云中部署应用和服务的新技术已成为当下最新的热门话题

微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。

使用微服务构建现代化应用程序是很有意义的,因为它让你既利用了扩展横向扩展架构,也利用纵向扩展架构;还额外得到API的组合,且在整个业务中可重复利用。可能,每一分钟构都在交付新服务,这样你就必须拥有一个敏捷的且响应的应用程序平台,这一平台一直在不断改进中。

作为Java程序员,怎样才能比别人更优秀?

五、工程化专题

工欲善其事必先利其器,不管是小白,还是资深开发,都需要先选择好的工具。提升开发效率和团队协作效率,让自己有更多时间来思考

面向人群:具有1-5年工作经验的人群

作为Java程序员,怎样才能比别人更优秀?

六、项目实战

要想立足于互联网公司,且能在互联网浪潮中不被淹没,对于项目的开发实战演练是不必可少的技能,也是对自身能力的一个衡量,有多少的量对等于获得多少的回报。看似简单的一个项目需求图谱,其中的底层原理,实现原理又能知道多少?你搭建一个完整的B2C项目平台到底需要多少知识?这一切都是需要我们考量的。

作为Java程序员,怎样才能比别人更优秀?

欢迎工作一到五年的Java工程师朋友们加入Java工程师学习交流群:795632998
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

猜你喜欢

转载自blog.csdn.net/weixin_42882439/article/details/83508212