{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

java程序员如何提升自己?

luodongseuluodongseu 回答0 收藏1
收藏问题

10条回答

graf

graf

回答于2022-06-28 14:34

当前最多的程序员可能就是Java程序员了,作为工作了近20年的Java程序员,一路走来经历过很多弯路,也见过、培训过很多技术人员一步步成长,作为公司的技术负责人一直试图把自己血泪史、最佳实践进行传导、传播,中间犯过理想主义的错误,以为:告诉他(们),他们就可以知道、就会不犯错误,事实上不是这样的,计算机是一门实践性科学,很多东西需要实践、反复训练才可以深刻理解、才可以转化为能力,以至变成下意识的行为。

有人天生代码感觉、逻辑思维比较好,有些人后天训练、打开天眼也可以成为技术高手,多看、多研究、多实践、多总结是笨招也是必杀另外,沟通交流是可以让你进步加速的,不要闷头苦学,在前5年工作生涯里做的绝大多数的事情,都是把前人的知识进行收集应用、归纳总结,要知道哪些不知道、要知道哪些东西自己必须要知道,对不知道的领域结合自己工作情况制定计划,逐步落实、修炼内功。

对于程序员来说,如果可能尽量选一个技术型公司、最好有“传帮带”文化体系的公司要学会制定计划、落实计划、工作总结、沟通交流,习惯看源码、习惯调试、习惯反编译、习惯问别人之前先把问题说清楚了、习惯写需求/设计/测试文档、习惯了解新生技术以及思考为什么产生、底层原理以及如何跟自己当前工作结合。要学会喜欢跟不同领域的人员沟通,底层逻辑相通的,成为高手过程中经历是相似的、可以借鉴的。

成为高手最重要的是:对未知领域的求知欲、傻逼一样的持续坚持以及过程中的不断优化改进的工作学习方法。学而优则仕,当积累到一定程度的时候,你可以选择华丽转型,也可以选择升级打怪,也可以自主创业打造平台,不管怎样:勤奋、坚持、改进,There is no set path , Just follow your heart!

数通畅联专注于企业IT架构、SOA综合集成、数据治理分析领域,感谢您的阅读与关注。

评论0 赞同0
  •  加载中...
imccl

imccl

回答于2022-06-28 14:34

学习 Java 很容易,想要精通很难,提升自己有 2 个层面的难点:一个是知识点和企业实践层面,一个是个人综合能力层面。

学 Java 要学什么?

在回答问题之前,先讨论下学 Java 到底要学什么。

我个人的观点:学 Java 是为了学习企业级后端的架构及开发模式

这里有必要说明 3 个点:

  1. 语言只是工具,单纯学习语言及其简单的周边知识,将很快被淘汰;
  2. Java 语言只所以流行了二十多年,根源在于其逐渐完善的生态和社区,企业级后端目前只有 Java 生态最为丰富,你能想到的所有场景及组件都有对应的技术实现和方案;
  3. 学习 Java 的目的是为了以 Java 语言为切入点,切入到整个企业级后端开发的技术栈,学习到架构思维的真谛和灵魂,构建完整的技术知识体系。

提升层面之一:知识点和企业实践层面

知识点和企业实践层面,对应武功修炼的“招式”。

在这个层面,我给到的建议是:

  1. 无论技术学习到什么程度,都要始终明确你的学习目标:逐步构建完整的企业级后端技术体系(前面已经讲过,此处不再赘述),这是你学习所有后端技术栈的地图,防止你迷路;
  2. 工作 1-2 年:以快速掌握框架为主,以学习适当的基础理论和知识为辅,快速应用到工作场景,这样可以快速获得成就感,更容易坚持和学习下去;
  3. 工作 2-3 年:随着框架技术运用越来越娴熟,就要精通几门技术,目标是达到源码级掌握,推荐从最常用的核心技术开始钻研,比如:Spring、Kafka、RocketMQ 等;
  4. 工作 3 年以上:如果上述目标已经达成,可以考虑结合业务场景有意识地训练并形成自己的架构思维,重点关注分布式系统、微服务和持续交付的相关知识;
  5. 工作 5 年以上:此时应该能解决工作中常见的技术问题,对系统性能越来越关注了,所以要开始回归到底层基础知识的研究上,所有高性能中间件和系统的底层都是对核心基础理论的最佳实践,此时重读核心技术的源码,重点关注核心基础理论的落地实现,以此深入重构个人的架构思维,重塑个人知识体系;
  6. 工作 7 年以上:到这个阶段,已经可以尝试架构师了,重点关注全局架构设计,解决常见业务场景的完整解决方案,能够设计出针对特定场景的技术方案,好的技术方案可以做到简洁高效、弹性扩容、方便落地实现;
  7. 工作 10 年以上:如果体力和精力依然跟得上,自求生路吧,未曾尝试不敢妄言。

提升层面之二:个人综合能力

除了上述技术能力的提升,更重要的是个人综合能力的提升,这个对应于武功修炼的“内功”。

关于个人综合能力,我给到的建议是:

  1. 一定要有意识、有目的、一步一步地构建个人知识体系,首先是系统学习,然后才是碎片化学习,所有知识理论和方法只有内化到自己的知识体系中,才能掌握和应用;
  2. 所有的原理性知识和方法都很容易获取到,难点在于能否合理运用,大量实践和应用才能掌握,才能内化到个人知识体系,消化后再输出才是真正的闭环;
  3. 无论工作了几年,都要重点提升逻辑思维能力、阅读能力、写作能力、沟通能力、演讲能力,可以通过思维导图工具、写博客、团队内部演讲等方式不断训练这些能力;
  4. 一个重要的学习观念:所有的知识学习都要以解决问题为目标;
  5. 最后一个重要的观点:如果你有强烈的挣钱欲望,且能长时间保持这种欲望,那么,大概率你会更快地成功,赚钱的动力是最强劲的,远比高尚目标来得实际。

最后,来碗鸡汤

最后的最后,来碗鸡汤提提神,希望一直激励的鸡汤,对你同样有效。

一、关掉朋友圈,拒绝无效社交,卸载游戏

二、早睡早起,不再熬夜

三、每天结束,反省自己

四、坚持锻炼身体,坚持每天出汗

五、看书学习,每天涨知识

六、脑子里想着赚钱,赚钱第一

七、拒绝拖延症,做事果断大气

八、多和优秀的人交谈

九、学会独处,别怕孤独

十、减少负面情绪的释放(生气嫉妒悲伤郁闷)

十一、记住第六条不然其他的都是白扯

评论0 赞同0
  •  加载中...
NicolasHe

NicolasHe

回答于2022-06-28 14:34

如何提升自己?

1. 提升兴趣

一定要让自己热爱这项工作,我带过很多小孩(都是校招),你可以认为他们刚来的时候,基本上都是白纸(基础还行,动手能力很差),到公司一年后,再观察,就能发现个体之间开始有比较明显的差别,有些人进步非常明显,他们与其他人对比最大的区别就是对这项工作的热情,投入程度,由于公司有集团宿舍,大部分校招的都是在宿舍住,他们都是很晚才回去睡觉,其实由于他们是新人,一般不会把特别重(重要)的事情压给他们,他们晚上都是在学习框架(我们公司自己的框架),学习Hadoop部署,docker原理这些看似与Java无关但可以极大提升能力的知识;

2. 脚踏实地学习

初期都要求看jdk代码,先不看纷繁复杂的外部框架,就看jdk代码,而且只需要看share(jdk中Java部分)部分,再细一点,可以只看util部分,里面的大部分各种容器,里面有很多算法,很多优化设计,如果认真学,能得到很多,以后面试别人还可以考考别人呢????

3. 主动承担

工作中主动承担任务及其带来的责任,在项目模块开发的过程中,可以快速融入公司技术体系中,理解技术的同时可以深入了解业务及其实现,不同的公司都会有不同的技术体系,当你能把握各种体系,就不会走到哪里,都认为人家的代码怎么不好了(这是一般程序员都有的毛病)。我认为对产品的重构的能力比重写的能力重要太多了!动辄要求重写的人,一般心理和能力都比较脆弱。渐进永远比重来风险小,产品是设计出来的,更是生长出来的。

另,不要怕担责,主动承担责任的同事,领导一般会预估其能力,如果他能胜任,会放心让他做,如果他能力不行,领导是不会同意全部交给他的,如果刚刚可以胜任,领导会在交给他的同时准备兜底方案。所以,要敢于承担,责任(压力)会让你的能力大幅度提高。

评论0 赞同0
  •  加载中...
layman

layman

回答于2022-06-28 14:34

对于一名刚入行的Java程序员,要想不断提高自己并建立自己的职场优势,需要从以下几个方面入手:

第一,制定自己的职场规划(方向)。作为职场人来说,制定自己的职场规划是比较重要的。具体到Java程序员来说,要给自己定一个方向,并制定对应的阶段性目标和长期目标。如果想在程序员这条路上走的更远,就一定要有一个自己的主攻方向,比如大数据、云计算、人工智能、区块链等,这些方向都是不错的选择。

第二,合理利用时间提高自己的能力。程序员能力的提升分为两个部分,一部分是工作本身带来的提高,另一部分是主动学习带来的提高。通过工作带来的提高往往是有一定期限的,如果在一个岗位上工作超过3年,那么每天通过工作获得的提升是十分有限的,此时要想获得持续不断的提高就要借助自主学习,或者是转岗。自主学习的重点在于时间的利用,大部分程序员的业余时间都是碎片化的,如何有效利用碎片化时间来系统学习是非常考验程序员的。

第三,注重交流。对于程序员来说,交流是提升自己的重要渠道,尤其是对于刚入行的程序员来说,更要多与其他人交流,以便于获得更多的信息量。这些交流包括技术交流、业务交流等内容,通过交流来吸收更多的知识,然后指导自己的工作。按照历史经验来看,往往善于交流的程序员成长的更快。

除了以上几点,作为程序员来说还有一点要引起足够的重视,那就是外语能力。掌握一门外语对于未来程序员提升职场竞争力有非常大的帮助,尤其是在30岁以后,语言优势将逐渐显露出来。

我带软件团队多年,目前也在带移动互联团队和大数据团队,我会陆续在头条上写一些关于软件开发方面的文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。

如果有互联网方面的问题,也可以咨询我。

谢谢!

评论0 赞同0
  •  加载中...
paulquei

paulquei

回答于2022-06-28 14:34

抱拳谢邀。

Java程序员如何提升自己,我觉得应该从以下3点入手。

一、找准自我定位

不论是企业大佬,还是刚刚入行的小菜鸟,都应该快速找到自己的定位。定位是一个方向,这个方向定位,包括一系列信息。

它们包括,但不限于以下这些:

适合自己从事的行业、个人职业发展规划(管理或纯技术)、个人核心技术能力等等。

因为Java的应用场景纷繁复杂,因此,找到一个适合自己的业务场景就显得十分重要。金融领域、电商领域、教育领域、房地产领域或者互联网等等,你需要快速进入到某一个领域中,然后发展自己的业务知识。

没错,找到适合自己从事的行业就是找准Java应用领域,然后学习业务。因为不论你是否承认,业务知识都是十分重要的。频繁的更换行业导致学习的业务知识不通用,将会延长你成功的时间。

个人的职业规划需要你为自己定制一个适合自己发展的技术方向,这个规划表需要你给出具体的时间,节点,目标以及实现方式等信息。比如,我初入职场的时候,给自己定的近期目标是3年工资达到13K,要精通某某某技术。就算最后没有达到目标也不能气馁,重新调整计划再起航。

个人核心技术能力指的是个人的技术亮点。比如Java中的几个技术加分项:虚拟机、并发编程、网络编程、Spring底层原理、Mybatis底层原理;或者其他的比如代码重构、架构技术等等。

如果你能在应聘的时候能展示出一两样拿得出手的技术亮点,一定会比那些什么都懂一点的应聘者更容易拿到理想的Offer。

二、增强知识的检索能力

在《认知天性》一书中,提到了一个基础核心要点,那就是学习的过程就是在不断增强自己的检索能力。

通俗点解释,一个知识点,在你脑海中储存着,检索能力强的人,可以快速准确地给出问题的答案,并提出合理的解释。而检索能力弱的人会对知识点模糊,导致问题无法解决。

因此,你不仅要学习知识,还要练习如何快速地从你的脑海中获取学到的知识。

而书中提出的一个重要的方法就是需要你不断的变换场景去应用你学到的知识。

那么我的建议就是——写博客。

写博客可以给自己更多的思考时间,对于一个知识点,你需要不断地加深它的印象,通过写博客,你可以整理这些知识,用文章的形式帮助你快速提取这些曾经的知识点。我写博客已经两年的时间了,深刻体会到这种方法的有效性。也希望题主可以试着尝试一下。

三、提高自己的个人声望

第二条提到了写博客,那么提高个人声望也同样息息相关。

博客是属于大众媒体,包括个人公众号以及GitHub等,你在上面的活跃程度,可以从侧面说明你对工作的热爱程度。

个人的价值也恰恰你能够发挥出多少热量。文字就是最好的武器,它可以把你的观点、你的见解、你的成长通过网络的形式让他人看到,包括你的面试官。

因此,品牌和声望也是你需要不断加固的堡垒。这会在你日后的发展中起到推波助澜的作用。

以上,就是关于如何提升Java程序员自我价值的重要观点。希望可以帮助到题主。

点个赞吧,点个赞再走,好人一生平安。

评论0 赞同0
  •  加载中...
myshell

myshell

回答于2022-06-28 14:34

以下皆出自本人亲自翻阅过的书籍,体验良好,豆瓣大众也以为然,遂列举,以供后浪规划学习。


1 JavaSE

1.1 基础

《Java 核心技术:卷1 》

适合转行及大一的CS专业新生们


1.2 进阶

Java 编程思想 中文第四版

即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。

作者拥有多年教学经验,对C、C++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。包含了Java语言基础语法以及高级特性,适合各层次Java程序员阅读。


Effective Java中文版(第3版)

90个条目,每个条目讨论Java程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些有益的做法。

每一章都涉及软件设计的一个主要方面,并不一定需要按部就班地从头读到尾,每个条目都有一定程度的独立性。相互之间经常交叉引用,因此可以很容易地在书中找到自己需要的内容。

本书的目标是帮助读者更加有效地使用Java编程语言及其基本类库:java.lang、java.util和java.io,以及子包,如java.util.concurrent和java.util.function。

并发

《Java并发编程实战》

并发领域圣经,适合进阶选手的阅读,由 JDK 并发包作者亲自执笔,科学权威地讲解了并发的设计原理。

2 JVM

2.1 基础

深入理解Java虚拟机(第3版)

这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典,繁体版在台湾也颇受欢迎。

第3版在第2版的基础上做了重大修订,内容更丰富、实战性更强:根据新版JDK对内容进行了全方位的修订和升级,围绕新技术和生产实践新增逾10万字,包含近50%的全新内容,并对第2版中含糊、瑕疵和错误内容进行了修正。


Inside the Java 2 Virtual Machine

3 操作系统(Linux)

3.1 基础

鳥哥的Linux私房菜(第四版)

深入理解计算机系统(原书第3版)

完全以x86-64为基础:

基于x86-64,大量地重写代码,首次介绍对处理浮点数据的程序的机器级支持。

处理器体系结构修改为支持64位字和操作的设计。

引入更多的功能单元和更复杂的控制逻辑,使基于程序数据流表示的程序性能模型预测更加可靠。

扩充关于用GOT和PLT创建与位置无关代码的讨论,描述了更加强大的链接技术(比如库打桩)。

增加了对信号处理程序更细致的描述,包括异步信号安全的函数等。

更新了与协议无关和线程安全的网络编程。


编码 隐匿在计算机软硬件背后的语言

本书讲述计算机工作原理。作者用丰富的想象和清晰的笔墨将看似繁杂的理论阐述得通俗易懂,你丝毫不会感到枯燥和生硬。更重要的是,你会因此而获得对计算机工作原理较深刻的理解。这种理解不是抽象层面上的,而是具有一定深度。


UNIX环境高级编程》第三版

被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的第3版。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了众多应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等

4 Spring 框架

4.1 基础

Spring实战(第4版)

入门经典书籍。第5版最新但是设计不适合初学者,所以推荐四版。适合刚开始学习Spring 框架的Java 开发人员快速上手。

5 数据库(MySQL)

5.1 基础

《SQL 必知必会》

本书是深受世界各地读者欢迎的SQL经典畅销书,内容丰富,文字简洁明快,针对Oracle、SQL Server、MySQL、DB2、PostgreSQL、SQLite等各种主流数据库提供了大量简明的实例。与其他同类图书不同,它没有过多阐述数据库基础理论,而是专门针对一线软件开发人员,直接从SQL SELECT开始,讲述实际工作环境中最常用和最必需的SQL知识,实用性极强。通过本书,读者能够从没有多少SQL经验的新手,迅速编写出世界级的SQL!

《高性能 MySQL》第三版


6 Redis

6.1 基础

Redis设计与实现

Redis开发与运维

本书全面讲解Redis基本功能及其应用,并结合线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议。本书不要求读者有任何Redis使用经验,对入门与进阶DevOps的开发者提供有价值的帮助。主要内容包括:Redis的安装配置、API、各种高效功能、客户端、持久化、复制、高可用、内存、哨兵、集群、缓存设计等,Redis高可用集群解决方案,Redis设计和使用中的问题,最后提供了一个开源工具:Redis监控运维云平台CacheCloud。

Redis 深度历险:核心原理与应用实践

《Redis 深度历险:核心原理与应用实践》分为基础和应用篇、原理篇、集群篇、拓展篇、源码篇共 5 大块内容。基础和应用篇讲解对读者来说最有价值的内容,可以直接应用到实际工作中;原理篇、集群篇让开发者透过简单的技术表面看到精致的底层世界;拓展篇帮助读者拓展技术视野和夯实基础,便于进阶学习;源码篇让高阶的读者能够读懂源码,掌握核心技术实力。

适合人群:有 Redis 基础,渴望深度掌握 Redis 技术原理的中高级后端开发者;渴望成功进入大型互联网企业研发部的中高级后端开发者;需要支撑公司 Redis 中间件运维工作的初中级运维工程师;对 Redis 中间件技术好奇的中高级前端技术研究者。

6.2 进阶

Redis5设计与源码分析

本书系统讲解Redis 5设计、数据结构、底层命令实现,以及持久化、主从复制、集群的实现。

7 软件设计

7.1 基础

《Head First设计模式》

大话设计模式

设计模式之禅(第2版)

本书是设计模式领域公认的3本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解将不同的模式组合使用的方法。

代码整洁之道

本书提出:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。本书给出一系列行之有效的整洁代码操作实践,并辅以来自现实项目的正、反两面的范例。

遵循这些规则,就能编写出干净的代码,有效提升代码质量。涵盖从命名到重构的多个编程方面。

UNIX编程艺术

本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。本书内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。


8 架构

8.1 基础

《大型网站技术架构:核心原理与案例分析》- 面试架构知识点核心书籍

通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web 安全、系统发布、运维监控等在内的大型网站开发全景视图。了解大型网站的解决方案和开发理念。

8.2 进阶

亿级流量网站架构核心技术

京东架构师经验之谈,总结并梳理了亿级流量网站高可用和高并发原则,通过实例详细介绍了如何落地这些原则。

分为四部分:概述、高可用原则、高并发原则、案例实战。从负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与预案、缓存、池化、异步化、扩容、队列等多方面详细介绍了亿级流量网站的架构核心技术,让读者看后能快速运用到实践项目中。

企业应用架构模式

本书作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。本书获得了2003年度美国软件开发杂志图书类的生产效率奖和读者选择奖。本书分为两大部分。第一部分是关于如何开发企业应用的简单介绍。第二部分是本书的主体,是关于模式的详细参考手册,每个模式都给出使用方法和实现信息

架构整洁之道

创造“Clean神话”的Bob大叔在架构领域的登峰之作,围绕“架构整洁”这一重要导向,系统地剖析其缘起、内涵及应用场景,涵盖软件研发完整过程及所有核心架构模式。

数据密集型应用系统设计

全书分为三大部分:

第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型和查询语言,讨论各自的适用场景。接下来第3章主要针对存储引擎,即数据库是如何安排磁盘结构从而提高检索效率。第4章转向数据编码(序列化)方面,包括常见模式的演化历程。

第二部分,我们将从单机的数据存储转向跨机器的分布式系统,这是扩展性的重要一步,但随之而来的是各种挑战。所以将依次讨论数据远程复制(第5章)、数据分区(第6章)以及事务(第7章)。接下来的第8章包括分布式系统的更多细节,以及分布式环境如何达成一致性与共识(第9章)。

第三部分,主要针对产生派生数据的系统,所谓派生数据主要指在异构系统中,如果无法用一个数据源来解决所有问题,那么一种自然的方式就是集成多个不同的数据库、缓存模块以及索引模块等。首先第10章以批处理开始来处理派生数据,紧接着第11章采用流式处理。第12章总结之前介绍的多种技术,并分析讨论未来构建可靠、可扩展和可维护应用系统可能的新方向或方法。


9 DDD

9.1 基础

领域驱动设计模式、原理与实践

实现领域驱动设计

领域驱动设计(DDD)教我们如何做好软件的,同时也是教我们如何更好地使用面向对象技术的。它为我们提供了设计软件的全新视角,同时也给开发者留下了一大难题:如何将领域驱动设计付诸实践?Vaughn Vernon 的这本《实现领域驱动设计》为我们给出了全面的解答。

《实现领域驱动设计》分别从战略和战术层面详尽地讨论了如何实现DDD,其中包含了大量的最佳实践、设计准则和对一些问题的折中性讨论。《实现领域驱动设计》共分为14 章,在DDD 战略部分,《实现领域驱动设计》向我们讲解了领域、限界上下文、上下文映射图和架构等内容,战术部分包括实体、值对象、领域服务、领域事件、聚合和资源库等内容。一个虚构的案例研究贯穿全书,这对于实例讲解DDD 实现来说非常有用。

《实现领域驱动设计》在DDD 的思想和实现之间建立起了一座桥梁,架构师和程序员均可阅读,同时也可以作为一本DDD 参考书。

9.2 进阶

领域驱动设计

领域驱动设计方面的经典之作。全书围绕设计和开发实践,结合项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。给出了领域驱动设计的系统化方法,并将人们普遍接受的一些实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计新实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。


10 计算机网络

10.1 基础

《图解HTTP》

本书对HTTP协议进行全面系统介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。本书的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。读者可通过本书快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API、实现自己的HTTP服务器等过程中所需的HTTP相关知识点本书均有介绍。

11 数据结构与算法

11.1 基础

算法(第4版)

Sedgewick畅销著作的最新版,反映了经过几十年演化而成的算法核心知识体系,全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的50种算法,全新的Java实现代码,采用模块化的编程风格,所有代码均可供读者使用。

大话数据结构

本书为超级畅销书《大话设计模式》作者程杰潜心三年推出的扛鼎之作!以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。

本书以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。与市场上的同类数据结构图书相比,本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。


11.2 进阶

程序员代码面试指南(第2版)

程序员代码面试"神书”!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近300道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到接近万无一失。"刷”完本书后,你就是"题王”!《程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版)》采用题目解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化。本书所收录的所有面试题都给出了最优解讲解和代码实现,并且提供了一些普通解法和最优解法的运行时间对比,让读者真切地感受到最优解的魅力!书中收录了大量新题和最优解分析,这些内容源自笔者多年来"死磕自己”的深入思考。提升算法和数据结构等方面能力。

12 网络编程

12.1 基础

Netty 实战

本书中文版基于Netty4.1.9做了修订。Netty之父”Trustin Lee作序推荐。无论是构建高性能的Web、游戏服务器、推送系统、RPC框架、消息中间件还是分布式大数据处理引擎,都离不开Netty,在整个行业中,Netty广泛而成功的应用,使其成为了Java高性能网络编程的卓绝框架。无论是想要学习Spring 5 、Spark、Cassandra等这样的系统,还是通过学习Netty来构建自己的基于Java的高性能网络框架,或者是更加具体的高性能Web或者游戏服务器等,本书都将是你的超强拍档。

13 消息队列

RabbitMQ 实战

评论0 赞同0
  •  加载中...
KitorinZero

KitorinZero

回答于2022-06-28 14:34

不管是程序员还是其他什么行业,最重要的当然是努力学习啦,除了努力之外,掌握高效的学习方法、自身的天赋水平、个人的境遇等也是有很大影响的。

成功

努力自己可以控制,只要你有一颗坚持的心、热爱技术的心,每天学习知识和实际敲代码,增加自己的技术广度和深度,只要不傻基本都可以成为大牛。

如果你天天敲代码却还是没有什么提升,那么你就要回头看下自己的学习方式了,可能你天天做一些浅显的crud工作,一直重复同样的技术点,这样也是没有太大帮助的,只是提升了你的熟练度。所以掌握高效的学习方式是很重要的,比如先了解行业内有哪些技术点、哪是些自己擅长的有兴趣的、有哪些地方有好的课程、怎么查看官方文档、怎么阅读源码等等。

天赋自己没法控制这个没办法,个人境遇虽然也很难控制但是我感觉却是可以认为影响的,比如你接触什么样的人、选择什么样的公司、参加什么样的论坛群等,有可能一个选择就是对应不同的未来,有时候学会选择也是很重要的。

以上都是些比较虚的东西,如果你要具体的学习路径,那么看下你自身目前处于什么水平对应的学习,比如你是新手,那就学习javase的课程、前端js、html、css、数据库sql,然后就是学习市场上主流的框架像spring系列、mybatis、各种中间件如Rabitmq、redis、maven、git等拓展知识面,接着深入学习某些内容jdk、spring等的源码、其他偏原理之类的学习技术的本质,基本完成这些也算是个大牛了,后面是当架构师还是技术专家研究方向等就看自己职业发展了。

评论0 赞同0
  •  加载中...
AdolphLWQ

AdolphLWQ

回答于2022-06-28 14:34

谢谢诚邀

从事Java开发已经N年了,想说说对提升的认识。

我其实不擅长写作(文章中错误欢迎指正),所以很多语句都是斟酌再三,改之又改,不断的修正希望更好的观点表达清楚。

观点陈述

未进入这个公司之前,我认为只要努力学习技术就可以了,什么交流、方法论、管理、团队...都是次要的,但是渐渐发现这种意识不是十分正确的。我们领导是一个爱读书、爱分享、有自己擅长的方法论...

因此在领导身上学到了很多技能点,将过去工作经验和读书过程中的一些感悟相结合,努力形成一套方法论(仅供参考)

成为架构师靠什么驱动?

个人观点陈述:快速成为一个架构师主要有2个方面:技术驱动和职业驱动(暂且这么叫)

技术驱动,或者说是T型人才(深度、广度),努力的提升技术,毕竟架构师这方面技能点还是占主要, 工作3年经验的工程师最常用这种方法,这种认知我觉得没有什么问题,但是我们的思维一旦固化,即将技术驱动作为唯一的途径,此时我们很容易陷入迷茫期,迷茫期或者说是瓶颈期往往是3-5年的工程师会经常遇到。大家对于技术驱动很了解,所以此篇不再详述,其他篇章会有所涉及(也就是全面技能点图谱),本篇着重说下职业驱动。

职业驱动:用岗位(架构师岗位)驱使工程师快速学习架构师该掌握的技能点,提升架构师水品。

对于职业驱动大家可能不是十分了解,也致使当问到走那一条路线时,大家一致选择技术驱动。

1.不同的职位有不同的职责,即从事架构师的岗位要比非架构师岗位进步快(大部分)

2.架构师岗位分为高、中、低,待遇也相差甚大,并不是所有的架构师水平比其他工程师水平高,

即没有架构师的技能水平(自然技能水平相差不是很大)也可以有架构师的职位。

(说白了就是在技能迷茫期,试着找个架构师的岗位)

3.如果你迈出了上面一步,说明你已获得合适的岗位,但是这只是迈出的第一步,接下来的才是真正驱动过程。

有架构师的职位没有架构师的薪资不可耻(说白了就是薪资低),但是有架构师的职位没有架构师的水平此时就严重了,

轻则被辞,重则名誉扫地,一蹶不振。

4.人要有危机感,没有架构师的水平短期不可怕,入职后谦虚求教,快速上手业务,此时你的一天要分成24块规划了,每小时都充分利用高效学习,总之就是不“死”便学,娱乐项目建议也暂时放放。弥补自身技能点不足,有学习的环境(即根据岗位所负责的任务也不同),此时不快速进步,还有等什么时候。

5.回归技能驱动,职业驱动只是帮你完成转型,归根到底还是要以技能驱动为主。

说这么多也是希望大家在这被辞的寒冬季、或者找工作的阶段正确的摆正心态的同时做好职业规划。

案例分析

我曾经是待遇最低的架构师(通过职业驱动完成职位转化),

但是我知道自身技能点的不足,内心怀着对这个岗位的不可亵渎态度去玩命的学(1-2点前基本没睡过,致使那段时间脱发严重),技能点也快速的提升,对这个岗位有了把控度(也就说学了很多技能点,很多项目遇到的问题很容易解决)。

也成为架构师岗位提升算是比较快的工程师(好的学习环境不提升也难)

有的架构师的水平,没有架构师待遇此时你们的选择是什么?

是的,通过调查我们知道一般企业涨薪是在2-3K左右,合适的岗位才能给企业带来更大的价值,

所以在此我们要感谢帮助我们成长的企业,怀有感恩之心,挥挥手离开吧,此时尽量要果断坚决(至于原因大家可以讨论下)。

有了架构师的水平自然也找到了合适的岗位(此篇终)

正在写相关系列文章,对于职业生涯有困惑或者不知如何突破的工程师可以参考下,感兴趣的可以关注下

评论0 赞同0
  •  加载中...
svtter

svtter

回答于2022-06-28 14:34

这个问题如果改为“Java程序员如何避开中年危机”,也许答题的人会蜂蛹而至,而围观的小伙伴也会格外多,因为人对危机总是敏感而响应积极的


“Java程序员怎么提升自己”这其实是一个对每个人而言都至关重要的职业发展规划问题,准备充分的人生才有更多选择的机会,没有规划、得过且过是导致许多人中年危机的最重要原因,往往很多人会忽略这一点。因此,我认为这个问题极其重要,值得每位工作1-3年的程序员深入思考,如果看到这里的朋友还没有自己的职业规划,希望你可以花些时间,好好思考并规划自己的将来。


我们先来看看JAVA程序员的几个成长阶段:


第一阶段:1-3年

这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。


第二阶段:3-5年

这是程序员的分水岭,如果在这个期间,除了完成本职工作之余,基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被更年轻的人给顶替;如果你能在写好代码的同时,还热衷于研究各种技术实现细节、精进1-2门技术,技术上有独当一面、快速解决问题的能力,并且清楚自己未来的发展方向,你将从一个Coder逐步走向系统分析师或是架构师,随之时间的推移,你会成为项目组中不可或缺的核心人物。


第三阶段:5-10年

这又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就决定在技术进阶路径上精进并且为之努力的话,那么在这个节点上,你必然会成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的高级程序员,在公司的title基本都是CTO、技术专家、首席架构师等最关键的职位。

Java程序员的技术提升路径

1、研究源代码

有时间就多研究Tomcat/Resin/Jetty的源代码;


2、 学习相关知识

譬如,高性能/高并发,并在项目中应用实践,提升技术广度:

  • Socket编程
  • 多线程的知识
  • I/O库和异步I/O库
  • TCP/IP 协议


3、 程序员进阶必看书籍

我早前罗列的不同阶段的java程序员进阶必看书单,详见头条号链接:https://www.toutiao.com/i6461884735961432589/

4、 多向身边的大牛学习

通过学习别人多年沉淀的知识与经验,能够让自己少走弯路,更快达成目标。


5、多争取项目实践机会

知识需要经过项目演练,最终才能沉淀。

每个人的情况不同,学习方法也有差异,希望程序员们都能因时因地制宜,找到一条适合自己的进阶学习路径,希望程序员们都能找到一条适合自己的学习路径!

PS:花了2小时码字,觉得有点用的同学,欢迎点赞支持...送你【BAT架构学习资料合集80期】,关注优知学院,回复关键字架构立即领取。

评论0 赞同0
  •  加载中...
tinyq

tinyq

回答于2022-06-28 14:34

1:不停的写代码

2:写完不停的总结

就这么简单

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<