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

331 天前
 AkaneWWW

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

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

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

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

3729 次点击
所在节点    程序员
38 条回复
chaleaochexist
331 天前
不同语言的写法其实是完全不同的.
知乎上的东西看看就好了.

语言不重要这句话只针对真正的大牛而不是知乎上的.
pengtdyd
331 天前
有多大龄? 30 岁以上那就算了吧。25 岁左右可以继续深耕。
draymonder
331 天前
闻道有先后,术业有专攻。

提升自己能力最好的就是知道自己不足的点,针对性的提高下。
kuituosi
331 天前
他这个说法其实没问题
你熟悉这几门课程,数据结构,算法设计,数据库原理,网络原理,操作系统 设计模式 微服务架构
那么语言只是不同的符号,完成同样一件事情的方法不同而已
我自己的经历起初是学生时代 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
331 天前
果然还得是宇宙机
leaves615
331 天前
不管学什么编程语言,知识结构都是倒金字塔。越往下范围就越小,然后就发现除开语言特性、语法、文法、生态、api 等,逻辑、数学公式都是一样。所以再学一门就只需要学习差异部分。然后就可以写了。

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

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

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

纯属个人经验,我也是渣渣,一些自己的感悟。
ikas
331 天前
一个知识的维度,你研究的越多就会发现需要懂的越多.
选一个自己自认为可以搞下去的方向去深究,看看自己究竟可以走到哪一步

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

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

再说语言,除非你是从 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