作为一名大龄土木专科转行的 Java 后端开发,第二个三年想问问大家该怎么继续提升自己

154 天前
 AkaneWWW

昨天刷知乎的时候看到一个问题:为什么我学个 JAVA 就已经耗尽所有,而有些人还能同时学习多门语言。

链接: https://www.zhihu.com/question/485917018 里面有个回答让我印象深刻,我大概引述一段:

因为你学错了方向。 学 C ,学 C++,学 Java ,学的目标应该是“自己写 libevent”,“自己写玩具版 unreal”,“自己写模板程序”,“自己写 spring 中间件”,“自己写设备驱动”,“自己写 DSL 解释器” 这些其实很容易。本科专业课内容而已。 一旦你往这个方向训练自己,那么换语言就是换一换符号风格,没什么大不了的。思路就是那么几条,模仿、遍历、分治、动态规划、……;手法就是那么几种,缓存、索引、信号/事件、回调/消息循环/dispatcher……;注意事项就那么几点,边界值、等价类、数据完整性原子性、死锁、空转…… 这寥寥十几、几十个知识点,玩好了,玩精了,万变不离其宗——几十年了,哪有什么软件/算法能跳出窠臼的? 学什么调优啊。这软件我都会写。知道内部算法,看一眼参数就知道是调整什么的、调整后会造成哪些影响——真不知道稍微一查也立刻明白了。 学什么框架啊。这思路我看了就懂,就知道怎么写。我觉得这个框架我应该这么写、这么给人用,一看果然是,哪有什么“学习负担”——猜错了?猜错了说明基础知识掌握不过关,赶紧补课去。唰唰补足短板,以后就再也难不倒我了。 如此反复训练,自然学什么越学越快、猜什么越猜越准——随便什么技术,内行一看,都是新瓶装旧酒! 那能不轻松吗?

这回答让我觉得醍醐灌顶,我原来一直觉得,Java 的东西怎么这么多呀?为什么就学不完呢?然后才发现自己原来一直沉浸在业务里,除了这位答主提到的 spring 中间件我稍微能有些头绪,他提到的其他的技术我是一点都不了解,一点都不明白。 我是一名土木专科转行的后端开发,虽然年纪越来越大,但还是想继续提升自己的能力,主要原因还是因为自己学历不好,想要提升自己的能力,看有没有机会能跳出外包圈进入甲方公司。。。

3365 次点击
所在节点    程序员
37 条回复
AkaneWWW
154 天前
@kera0a 谢谢指点,目前也有打算去补完计算机本科的课程
AkaneWWW
154 天前
@ikas 大佬说的有道理,我先尽量深入自己工作相关的 Javaweb 方面
AkaneWWW
154 天前
@nerkeler 我和老哥的情况还蛮像的,转行后,今年是在外包工作的第四年,也经常会和行里的人探讨技术实现和项目问题,但是目前我的这批外包的同事,真的太卷了,而且技术方面也限制的很严重,技术老旧,实现混乱,管理也很混乱,所以才起了该离开了的心思~~
windman038154
154 天前
@kuituosi 大佬想请教一下,现在公司自己做 IM 组件的还多吗,一般公司应该没有预算吧。做 IM 系统最核心的是哪方面的问题呢?
vultr
153 天前
有一本叫作 深入理解计算机系统 的书,特别适合非计算机专业的人看,补一补数据结构,算法方面的知识是很有必要的,虽然在工作中不一定用得上。
monmon
153 天前
meiyiliya
153 天前
@AkaneWWW 现在极力的找补作用并不大了,等你安心补上计科的几门课,没个脱产的几年吃透大概率做不到知乎上说的能自己写,可能有了家庭这个时间会更延长,最后达到的效果就是了解原理,然后随着时间的推移又逐渐遗忘,对于工作上来说”意义“并不大,我个人认为现在更好的方案是先吃透业务,找到业务上最薄弱的地方,在这些地方上看有没有技术去解决或提升,也就是业务上为什么要有这些中间件,当时没有中间件的时出了什么问题,理解为什么要有这东西,比这东西怎么实现的在工作上要更有帮助,这样才可以在工作上即提升技术也能做出贡献。
kuituosi
153 天前
@windman038154 主要还是看架构设计
dog82
153 天前
语言入门不难(RUST 除外),学个两三周就能写 CRUD 了
但是象写标准库那样使用语言很难,不信你看看 Java JDK 和 Golang 的库

大部分的 Go 程序员,都是在用 java 的风格写 CRUD
AkaneWWW
153 天前
shawn4me
153 天前
技术为业务服务,如果公司的业务已经发展到了对应的地步那么自然就会接触到对应的知识。相信软件发展这么多年以及信息行业的开放性,会有比较多成熟的解决方案。那么自己要做的就是准确发现当前业务中的问题,然后将成熟的解决方案应用到公司的业务之上。在能够解决提升当前的问题的情况下,再去深层次研究,是什么,为什么,以及怎么做的问题。感觉会比没有方向的学习要好一些。
AkaneWWW
153 天前
@shawn4me 说的有道理,谢谢指点
jones2000
153 天前
提升自己有很多含义, 比如涨工资, 社交能力提升,人脉提升等等。 技术能力的提升不一定能带来工资的提升。先搞清楚自己要什么, 如果是要钱, 技术只是很小的一个因素而已。
coderzhangsan
153 天前
@dog82 学习另外一门语言,尤其是设计模式很大不同的语言,想要标准化编程,我觉得这个是比较难的,绝大多数人编程思想受"母语"影响较深,你看 java 转 go ,写出的代码偏 java 风格,php 转 go ,写出的代码偏 php 风格,真正学通一门语言,就是要用当前语言的设计思想去编程,但大多数人学习只是功利性的需求而已,很少花时间去理解这门语言的设计思想并为之付诸实践。
mantouboji
153 天前
何必要这样难为自己,祸害他人,费力气当一个高产 bug 的职场杀手业界毒瘤呢?
AkaneWWW
153 天前
@mantouboji 真是对不起了
draymonder
151 天前
@AkaneWWW emm ,从我角度来看

打基础是需要很长时间的,即使我作为科班学生,现在入手操作系统源码也是相对来说比较痛苦的

我的建议是

1. 向身边经验丰富的人学习,吸取别人的工作经验,多看别人的系统设计
2. 每天反思下自己的工作模式上有没有可以提升效率的地方,比如哪些重复工作可以自动化解决掉
3. 遇到问题,多和有经验的人沟通讨论,可能别人有更优的方案
4. 语言、设计模式这些都不本质。。本质上你要多看别人的代码,思考为什么要这样设计,这么设计的好处,不好的点在哪里。而不是说学到个工厂模式,就满地找地方写把工厂模式应用上去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1001099

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX