打算在这条路上走到黑

2015-08-12 18:17:08 +08:00
 tianzhen
楼主的情况是这样的,自学编程,由于没有科班背景,一打学习开始便是和动态语言打交道,PHP -> Python -> Ruby -> JavaScript,有幸于去年正式上了程序开发这班车,在全职开发的这大半年中,绝大部分时间都在写JavaScript(算是狭义的前端开发,因为只写JS,实现web前端逻辑,不需要负责HTML/CSS),我很喜欢写代码,打算在这条路上走到黑 …现在想选择一条倾向于后端开发的路深入学习下去,特来请教各位前辈,提前先谢谢了!我自己做了个简要的可能路径分析:

继续深入钻研JS:

- UP: 当前工作主力语言,能学以致用,相信编程这货光知道不行,必须得实际操作,敲得越多会敲得越好
- DOWN: 虽说JS现在大行其道,前后通吃,但总感觉它不是深钻的理想对象,据说真的node开发高手都是身后C/C++背景的,能看懂node源码实现…不然只能流于表面,且node也并非能适用于任何后端场景,日后换工作局限较大

利用业余时间啃Java:

- UP: Java的学习资料算是最全的了,在coursera上有北大的Java程序设计课程,又或各大培训机构的视频,啥高祺Java 300课,交口称赞马士兵老师的课,此外数据结构、算法、设计模式大部分书也都是基于Java的。而且工作机会也貌似最多
- DOWN: 太罗嗦了,实现点小功能需要一大堆boilerplate代码,而且非常依赖笨重的IDE,让基本上只接触过动态语言的我实在有点受不了…

利用业余时间深入Python:

- UP: 应该是自己最喜欢的语言了,强大到不行,啥都能干,2和3版本问题在我这个水平也不会太困扰我,入2准没错 :D
- DOWN: 说白了还是工作机会比较少,楼主不在北上广,本地用Python的都是很小的公司…
5810 次点击
所在节点    程序员
46 条回复
muyege
2015-08-12 18:21:21 +08:00
只有C能让你走到黑,回答完毕
laoyur
2015-08-12 18:23:09 +08:00
感觉楼主头像中间的→箭头跟标题好应景
kongkongyzt
2015-08-12 18:31:50 +08:00
do what you love
blacktulip
2015-08-12 18:33:50 +08:00
> 现在想选择一条倾向于后端开发的路深入学习下去
不要啦,后端现在趋势都是 BaaS 了,还是前端需求旺盛。不过要是楼主你喜欢,还是深钻 JS 吧。
编译语言还是学一门傍身为佳,Java 也是不错的选择,还可以考虑一下 Go 。
Python 建议就算了,实在喜欢的话业余耍耍吧。
Librazy
2015-08-12 18:38:28 +08:00
投奔MS怀抱,和我一起迎接C#的大太阳吧!
echo1937
2015-08-12 18:38:50 +08:00
如果你不打算离开现在的工作地方,那么研究语言的前景不如研究本地的市场。
JamesRuan
2015-08-12 18:43:33 +08:00
Java是喊了那么多年该死还没死的,C++也是。

我觉得吧,学语言就要学以致用。学Java的目的就是混饭吃,真要写出“理想”的程序,Java绝对不是个好选择。

学node.js(就业机会也不算少哦),然后去看看Erlang,你会发现还有这样一个世界。然后可以去学Go,看看现代的最人性化的后端语言(C#会表示不服,呵呵)到底有多强(当然,学了Erlang后,对Go也的看法就不太一样了)。

Python、Ruby这类做胶水还行,真要跑后端业务,还存在一定的问题(当然也看具体业务啊,跑个论坛什么的就没压力啦),用来构建大系统还是比较弱(主要是你很难遇到强的团队,语言天生就门槛低)。
quericy
2015-08-12 18:44:47 +08:00
@Librazy C#的大太阳233333为啥这么有画面感
zog
2015-08-12 18:50:28 +08:00
语言只是个工具。选择语言都是选择语言背后的框架、库、支持的公司,对于开发人员是否友好,开发的速度能否赶上项目要求。兄弟你还得修炼呀,不要在语言选择上花精力。
JamesRuan
2015-08-12 18:53:05 +08:00
只考虑工作的话,最好不要从码农角度考虑,而要从CTO角度去考虑。

语言的入门门槛,工程化程度,构建大系统的能力,维护难度,配置、部署的方便程度,跨平台性,业务转变后的灵活性,性能,代码可读性……

Java没死是有道理的:入门门槛低,工程化程度高,构建大系统的能力高,维护难度中等,配置、部署麻烦,跨平台性存在(虽然这是一个笑话),业务灵活性低,性能高,代码可读性中等。Java的缺点转嫁给一堆叫测试、运维的去处理了,创造了新的职业。但它的优点却非常有竞争力。
zog
2015-08-12 18:53:31 +08:00
补充一下,你平时工作中js用的多。你就沿着这路走走看看。玩玩npm里面那么多的库。研究研究前端构建流程,看看比较新的react和flux如何构建应用。都是非常好的方向。
ETiV
2015-08-12 18:56:12 +08:00
我觉得基础还是先打好.
在这基础上, 啥语言都不是问题.

编程工作很简单, 都是一些 加减乘除/循环/分支 这些.
有区别的就是写起来的语法不太一样. 学习新语言主要就是学习这个. 再就是各种模式, 面向过程/面向对象/事件驱动/函数式编程...

所以编程语言学起来很快的.

再加上一些成熟的"设计模式", 绝大多数特定方向的问题都有前人已经总结好的经验, 照猫画虎, 即可开展快速开发.
tianzhen
2015-08-12 19:07:30 +08:00
@zog
@ETiV

谢谢大家!嗯,我也知道语言只是开发环节中的一环而已,不用太过于纠结,但我听说作为优秀的开发者应该有一门语言是精通的,所以我希望选择一门来深入学习 :)
tianzhen
2015-08-12 19:10:33 +08:00
@zog 我其实也挺喜欢JS的,但不是很中意前端方向,那个领域实在发展太快了...
1024cool
2015-08-12 19:16:01 +08:00
抱住一门语言啃是没有前途的,骚年!
JamesRuan
2015-08-12 19:19:07 +08:00
@tianzhen 前端是在不断地造轮子,并非是发展快,而是发展水平落后于其他领域。这些轮子其实是显而易见的,我自己就差点造了个hexo出来。
JamesRuan
2015-08-12 19:23:21 +08:00
我觉得核心竞争力应该在于领域视野,工程协作能力和抽象能力。其他的一切都是工具(工具背后的思想却是值得学习的领域视野)。
imn1
2015-08-12 19:31:51 +08:00
边学边做的话,还是选你有工作可做的那种语言优先
JamesRuan
2015-08-12 19:31:56 +08:00
比如说你写前端业务,就可以想想是不是业务非如此抽象不可?RPC的抽象和REST的抽象的不同,传统MVC和React,用后端模式写前端的asm.js。这些其实无非是其他领域已经有的抽象在前端开的花而已。你有那些抽象能力,有前端领域视野,自然也会像要这样那样的工具的。
tianzhen
2015-08-12 19:45:29 +08:00
@1024cool 嗯嗯,肯定不会的哈,只是想确定一门最为趁手的,通了一门,再多接触其他的是我的计划

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

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

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

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

© 2021 V2EX