V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tianzhen
V2EX  ›  程序员

打算在这条路上走到黑

  •  
  •   tianzhen · 2015-08-12 18:17:08 +08:00 · 5810 次点击
    这是一个创建于 3422 天前的主题,其中的信息可能已经有所发展或是发生改变。
    楼主的情况是这样的,自学编程,由于没有科班背景,一打学习开始便是和动态语言打交道,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的都是很小的公司…
    第 1 条附言  ·  2015-08-12 19:48:33 +08:00
    楼主不是想死守一门语言哈,只是想确定一门最为趁手的,通了一门,再多接触其他的是我的计划,现在的我虽然能开展工作但属于是 stackoverflow driven开发者...好多都要Google
    第 2 条附言  ·  2015-08-12 22:44:37 +08:00
    多想无益多学无害,楼主打算先开始撸Java了
    46 条回复    2015-08-15 20:09:19 +08:00
    muyege
        1
    muyege  
       2015-08-12 18:21:21 +08:00
    只有C能让你走到黑,回答完毕
    laoyur
        2
    laoyur  
       2015-08-12 18:23:09 +08:00
    感觉楼主头像中间的→箭头跟标题好应景
    kongkongyzt
        3
    kongkongyzt  
       2015-08-12 18:31:50 +08:00   ❤️ 1
    do what you love
    blacktulip
        4
    blacktulip  
       2015-08-12 18:33:50 +08:00   ❤️ 1
    > 现在想选择一条倾向于后端开发的路深入学习下去
    不要啦,后端现在趋势都是 BaaS 了,还是前端需求旺盛。不过要是楼主你喜欢,还是深钻 JS 吧。
    编译语言还是学一门傍身为佳,Java 也是不错的选择,还可以考虑一下 Go 。
    Python 建议就算了,实在喜欢的话业余耍耍吧。
    Librazy
        5
    Librazy  
       2015-08-12 18:38:28 +08:00
    投奔MS怀抱,和我一起迎接C#的大太阳吧!
    echo1937
        6
    echo1937  
       2015-08-12 18:38:50 +08:00   ❤️ 1
    如果你不打算离开现在的工作地方,那么研究语言的前景不如研究本地的市场。
    JamesRuan
        7
    JamesRuan  
       2015-08-12 18:43:33 +08:00   ❤️ 1
    Java是喊了那么多年该死还没死的,C++也是。

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

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

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

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

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

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

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

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

    谢谢大家!嗯,我也知道语言只是开发环节中的一环而已,不用太过于纠结,但我听说作为优秀的开发者应该有一门语言是精通的,所以我希望选择一门来深入学习 :)
    tianzhen
        14
    tianzhen  
    OP
       2015-08-12 19:10:33 +08:00
    @zog 我其实也挺喜欢JS的,但不是很中意前端方向,那个领域实在发展太快了...
    1024cool
        15
    1024cool  
       2015-08-12 19:16:01 +08:00
    抱住一门语言啃是没有前途的,骚年!
    JamesRuan
        16
    JamesRuan  
       2015-08-12 19:19:07 +08:00 via Android
    @tianzhen 前端是在不断地造轮子,并非是发展快,而是发展水平落后于其他领域。这些轮子其实是显而易见的,我自己就差点造了个hexo出来。
    JamesRuan
        17
    JamesRuan  
       2015-08-12 19:23:21 +08:00 via Android   ❤️ 1
    我觉得核心竞争力应该在于领域视野,工程协作能力和抽象能力。其他的一切都是工具(工具背后的思想却是值得学习的领域视野)。
    imn1
        18
    imn1  
       2015-08-12 19:31:51 +08:00   ❤️ 1
    边学边做的话,还是选你有工作可做的那种语言优先
    JamesRuan
        19
    JamesRuan  
       2015-08-12 19:31:56 +08:00 via Android   ❤️ 1
    比如说你写前端业务,就可以想想是不是业务非如此抽象不可?RPC的抽象和REST的抽象的不同,传统MVC和React,用后端模式写前端的asm.js。这些其实无非是其他领域已经有的抽象在前端开的花而已。你有那些抽象能力,有前端领域视野,自然也会像要这样那样的工具的。
    tianzhen
        20
    tianzhen  
    OP
       2015-08-12 19:45:29 +08:00 via iPhone
    @1024cool 嗯嗯,肯定不会的哈,只是想确定一门最为趁手的,通了一门,再多接触其他的是我的计划
    exuxu
        21
    exuxu  
       2015-08-12 22:00:52 +08:00
    如果按照作者的路线走的话,看来过一段时间我要学javascript了
    lequiet
        22
    lequiet  
       2015-08-12 23:14:10 +08:00 via iPhone   ❤️ 1
    可以学学Java,以弥补你在强类型语言的不足。作为后端语言,Java还是很稳妥的/健壮的,至于觉得比较啰嗦,那只是写小功能会有这种感觉,做大了,面向对象和复用做好了,就知道Java的可靠性了。至于Python,很简单的语法,也不需要太深入学,偶尔有点小想法的可以拿来快速实现一下, Python3更推荐,如果是自己用的话。
    lequiet
        23
    lequiet  
       2015-08-12 23:16:08 +08:00 via iPhone
    @lequiet 当然,Java学归学,用起来才是王道。
    tianzhen
        24
    tianzhen  
    OP
       2015-08-13 07:10:02 +08:00 via iPhone
    @lequiet 谢谢!我也觉得应该学习下强类型语言补充下 :)
    bugeye
        25
    bugeye  
       2015-08-13 08:26:20 +08:00
    非科班出身不应该先把 离散数学、数据结构、编译原理、计算机组成原理 这些基础学好吗?
    尤其是准备在coding上面走到黑的。
    ren2881971
        26
    ren2881971  
       2015-08-13 10:36:26 +08:00
    @bugeye 等学完这些课程 早饿死了。 来点实际的吧 不可否认这些课程的重要性。但更不能脱离实际!尤其是非科班的!
    notcome
        27
    notcome  
       2015-08-13 10:58:46 +08:00 via iPhone
    一、忘记语言只是工具这种话。
    二、学习 Haskell。
    Rand01ph
        28
    Rand01ph  
       2015-08-13 11:09:56 +08:00
    最近也想捡一门强类型编译语言好好学学,犹豫Java和CPP。
    Rand01ph
        29
    Rand01ph  
       2015-08-13 11:11:36 +08:00
    目前接触的有PHP,Python,Node.js,Lua这几样,可能这下半年会学习Switf撸一个APP出来,目前在用PyQt实现一个gui,这么看来可能学习CPP会是一个平滑的选择。
    karlakte
        30
    karlakte  
       2015-08-13 11:30:12 +08:00
    @Librazy 长点心吧 大兄弟 逗逼巨硬专坑C#
    tianzhen
        31
    tianzhen  
    OP
       2015-08-13 11:55:02 +08:00
    @bugeye 嗯嗯,知道这些也很重要,但就我现在水平来说那些太难了,我的计划是先成为一名熟练的程序员,然后把你说的这些作为长远慢慢攻克的目标
    bugeye
        32
    bugeye  
       2015-08-13 12:12:34 +08:00
    @ren2881971 他已经有工作了,又不是还在找工作。对于想走到黑的人来说,跳过这些以后更浪费时间。我不知道码农能做到几岁。

    更何况数据结构是非常多工作的敲门砖。
    anubiskong
        33
    anubiskong  
       2015-08-13 12:37:47 +08:00
    学Java? 自找苦吃
    tianzhen
        34
    tianzhen  
    OP
       2015-08-13 12:56:02 +08:00 via iPhone
    @bugeye 嗯嗯,数据结构是肯定要学习的,等我把java se基础部分学了就开始学数据结构,有很多数据结构java实现的学习材料,包括算法,应该工作中用不上java所以不急学应用譬如j2ee部分的东西,学了也记不住,就通过java来打其他的基础 :)
    chinajik
        35
    chinajik  
       2015-08-13 14:17:04 +08:00
    我当年也是你们这想的, 至少大学的时候也跟着一群人喷 java....
    @tianzhen 但是, 我工作是用 java 的, 当系统足够复杂的时候,这个语言在构建大型系统上有不可替代的优势...尤其是当技术水平不一,有需要保证系统健壮可维护.. 动态语言这方面简直是灾难
    JamesRuan
        36
    JamesRuan  
       2015-08-13 14:47:28 +08:00   ❤️ 1
    @bugeye 还是学操作系统、数据库、计算机网络等对工作更加重要吧!这些工程方面课,跳过所有基础课去学完全没有问题,却对实际工作最有帮助。

    那些基础课,什么时候学都不迟的(用来刷新世界观用的)。而操作系统、数据库、计算机网络这类确实越早学越受益。

    提到基础课的话,还要补一个概率论,所有工科的都应该去学。
    moro
        37
    moro  
       2015-08-13 14:53:19 +08:00
    @JamesRuan 基础打好,语言都是一通百通,都是用来解决问题的,不要被表象所困惑。
    robertlyc
        38
    robertlyc  
       2015-08-13 15:30:57 +08:00   ❤️ 1
    噗 我发现 有些人就喜欢一本正经的胡说八道 然后还享受被小白膜拜的感觉
    limuxy
        39
    limuxy  
       2015-08-13 15:54:06 +08:00
    UP & DOWN 应该说成PROS & CONS (对不起歪楼了
    publicID321
        40
    publicID321  
       2015-08-13 16:02:09 +08:00
    数据库 or ABAP
    iminto
        41
    iminto  
       2015-08-13 16:16:17 +08:00
    你需要学Java,学学工程语言,而不是随便写写的脚本
    bk201
        42
    bk201  
       2015-08-13 16:20:13 +08:00
    爱好是最好的老师,走到黑说明你还不爱她,对她没信心
    jukka
        43
    jukka  
       2015-08-14 08:24:53 +08:00 via iPhone
    1,用简单的语言做简单的事情。
    2,使用C + Lua。
    500miles
        44
    500miles  
       2015-08-14 12:57:24 +08:00
    楼主看完所有回答 . 更加迷茫了......

    最终决定把这个问题交给上帝来抉择 : 最终选择了javascript .

    ----- 任何能用JavaScript实现的应用,终将会用JavaScript实现
    Librazy
        45
    Librazy  
       2015-08-14 21:40:01 +08:00
    @karlakte 坑太大爬不出去了
    JamesRuan
        46
    JamesRuan  
       2015-08-15 20:09:19 +08:00
    @Librazy 从放弃使用IDE开始,哈哈!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1433 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:12 · PVG 01:12 · LAX 09:12 · JFK 12:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.