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

2023-12-17 16:24:02 +08:00
 AkaneWWW

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

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

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

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

3807 次点击
所在节点    程序员
38 条回复
chaleaochexist
2023-12-17 16:37:32 +08:00
不同语言的写法其实是完全不同的.
知乎上的东西看看就好了.

语言不重要这句话只针对真正的大牛而不是知乎上的.
pengtdyd
2023-12-17 17:58:31 +08:00
有多大龄? 30 岁以上那就算了吧。25 岁左右可以继续深耕。
draymonder
2023-12-17 18:39:04 +08:00
闻道有先后,术业有专攻。

提升自己能力最好的就是知道自己不足的点,针对性的提高下。
kuituosi
2023-12-17 21:05:57 +08:00
他这个说法其实没问题
你熟悉这几门课程,数据结构,算法设计,数据库原理,网络原理,操作系统 设计模式 微服务架构
那么语言只是不同的符号,完成同样一件事情的方法不同而已
我自己的经历起初是学生时代 c++,工作几年后转为 java
有 c++和 java 之后再学其他语言就是小菜,学 python 几天就能干活,学 golang 一个月足够
学 js 几周就能干活,rust 学的久 6 个月后才干活
总结就是 c++打基础,java 学技能。c++让你学习很多开源软件没有压力
特别是 java 能让你的技能树点满,其他语言就是小菜
rust 学的久是因为上手门槛高,要想写顺手必须经过严格训练,没练好很容易编译不过会让你哭
真的不骗你,rust 专治各种不服
我现在用 rust 实现的 im 在技术上可以比肩微信或者 telegram ,rust 真的很强但是完全掌握不容易
推荐我认为应该多花时间学的语言,第一名非 java 莫属不接受反驳,编程思想和各种顶级源码是最好的老师
第二名就是 rust ,高性能高质量中间件最强工具,没有之一
第三名是 c/c++,语法学个大概就行,主要是各种重量级源码是 c/c++写的
404www
2023-12-17 21:19:45 +08:00
果然还得是宇宙机
leaves615
2023-12-17 21:46:21 +08:00
不管学什么编程语言,知识结构都是倒金字塔。越往下范围就越小,然后就发现除开语言特性、语法、文法、生态、api 等,逻辑、数学公式都是一样。所以再学一门就只需要学习差异部分。然后就可以写了。

每种编程语言有各自的特点和适应场景。编程语言只有最合适你的,没有最好的。
AkaneWWW
2023-12-17 21:57:46 +08:00
@pengtdyd 额,目前刚好 30 岁。。。
meiyiliya
2023-12-17 22:01:24 +08:00
按现在互联网上的说法,这就是教育的闭环,年少时的一颗子弹时隔几年后击中眉心,学生时代打基础时期觉得教的"没什么用",脱离了社会,面试时可是需要会使用 XX 框架,到了社会上工作了几年又觉得基础重要,但既然都到了这一步了,再回过头意义不大了,我个人感觉工作中吃透业务比吃透技术要有用,因为技术是服务业务的,技术原理了解就好。
AkaneWWW
2023-12-17 22:04:37 +08:00
@draymonder 闻道有先后,术业有专攻,虽然我作为 30 岁的转行人员可能不太有资格认同这句话,但我还是觉得这句话很有道理就是了
janus77
2023-12-17 22:06:54 +08:00
语言只是工具,大学里面学的是思想,思想才是计算机界的基石,就好像你研究物理一定要先学数学一样。
当然如果你只是为了工作,那就用到什么学什么,先学框架、中间件这些,然后是最佳实践、架构这些,然后是性能优化、底层这些,到这个时候你就开始用到思想了。要看你现在处于什么阶段
AkaneWWW
2023-12-17 22:07:15 +08:00
@meiyiliya 对于本专业人士来说,这可能是教育的闭环,对于我来说的话,应该是在为自己曾经的年少无知买账,现在极力的找补,也不知道将来会怎样。
AkaneWWW
2023-12-17 22:10:22 +08:00
@kuituosi 这几门课程我在看了知乎的回答之后,都下载了对应的电子书,但是我的时间实在是不太够,不知道要怎么做才能把这些都学完,感觉现在要学的东西太多了,对于我来说,目前正在进行自考本科,又在学英语,Java 方面的各种技术也不能落下,毕竟现在工作就在写这些,现在越学越迷茫了
AkaneWWW
2023-12-17 22:11:00 +08:00
@404www 啊?这个是指什么?我不太懂。。。
ZZ74
2023-12-17 22:14:58 +08:00
@janus77
在国内这环境,等你意识到开始用思想的时候 就已经来不及了。
其实 CS 的人本科阶段,把 C 用好,算法和数据结构学好。操作系统也熟悉,最好看一些 linux kernel 源码,体会一下数据结构和算法的在里面的应用 就够了
不考研的话,等到大四,再补一点 CPP 或者 Java 就够了

ACM ,数学建模,编译原理接触下就行了。
AkaneWWW
2023-12-17 22:20:40 +08:00
@ZZ74 大佬,我想问一下,对于我这种半路出家转行进入这个行业的人,我该怎么做才能靠近那些本专业毕业工作了几年的人的水平呢?是不是应该静下心先去把专业里的几门大课全部先学一遍?
nerkeler
2023-12-17 22:30:44 +08:00
半路出家大概率像我一样是 javaweb 方向,既然已经是这样的处境了,那只能面向工资发展了,意识到哪里落下就补哪里吧,就算是科班,绝大多数也到不了上面老哥说的那种深度。
AkaneWWW
2023-12-17 22:34:34 +08:00
@nerkeler 老哥也是非本专业转行的吗?冒昧的问一下,老哥现在是在甲方还是外包?如果是甲方的话,大概自身要达到怎样的水平可以摸到进甲方公司的门槛?
nerkeler
2023-12-17 22:43:41 +08:00
刚转一年多点,在外包,我这边是驻场没有甲方开发,偶尔和甲方领导讨论技术实现,平心而论我感觉并没有多厉害,很多时候也只是实现而已,并没有什么精妙的设计和想法。你要是真想转甲方的话,基础算法数据结构得整上吧,数据库方面得稍微精通点,java 方面 JUC 深入点,这几个就够小半年学的了,有精力再看看 spring ,后面拓宽再看看网络协议,辅修另一个语言,主要是应用场景用得上,我就是这么给自己规划的,虽然进度都不咋样,并且在考虑该干不干这个了
kera0a
2023-12-17 22:43:46 +08:00
不知道你有没有网上学完计算机本科的课程,计算机网络,操作系统,数据结构,编译原理等等。没有的话强烈推荐,这些课程难度并不高,你甚至可以当开拓视野的科普片看。

很多东西你学完后才会发现,思维都很质朴,没有什么高大上,高大上都是在这些质朴的思想下慢慢垒起来的。
我感觉这些基础课程还是非常重要的。虽然可能你工作中好像没用到,但学习这些能让你的思维方式改变。
了解底层的一些原理后也更自信了,什么各种高大上的名词你一看原理就会想,不就是 XX 嘛。

纯属个人经验,我也是渣渣,一些自己的感悟。
ikas
2023-12-17 22:54:52 +08:00
一个知识的维度,你研究的越多就会发现需要懂的越多.
选一个自己自认为可以搞下去的方向去深究,看看自己究竟可以走到哪一步

知道自己的上限然后其它相关的再来研究

另外自己学习的能力,思考的方式,解决问题的方法经验这些也是极为重要的.

再说语言,除非你是从 java,c#这一类的语言,跳转到 c++,rust 这样的.否则难度都不是很大的 (当然不包括一些..语言)

可以去对比 java netty,c++ facebook/wangle,c# Azure/DotNetty

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

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

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

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

© 2021 V2EX