程序员进阶攻略
胡峰
京东成都研究院技术专家
立即订阅
7526 人已学习
课程目录
已完结 65 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 程序行知:走在同样的路上,遇见自己的风景
免费
征途:启程之初 (4讲)
01 | 初心:为什么成为一名程序员?
02 | 初惑:技术方向的选择
03 | 初程:带上一份技能地图
04 | 初感:别了校园,入了江湖
修炼:程序之术 (10讲)
05 | 架构与实现:它们的连接与分界?
06 | 模式与框架:它们的关系与误区?
07 | 多维与视图:系统设计的思考维度与展现视图
08 | 代码与分类:工业级编程的代码分类与特征
09 | 粗放与精益:编程的两种思路与方式
10 | 炫技与克制:代码的两种味道与态度
11 | 三阶段进化:调试,编写与运行代码
12 | Bug的空间属性:环境依赖与过敏反应
13 | Bug的时间属性:周期特点与非规律性
14 | Bug的反复出现:重蹈覆辙与吸取教训
修行:由术入道 (24讲)
15 | 根源:计划的愿景——仰望星空
16 | 方式:计划的方法——脚踏实地
17 | 检视:计划的可行——时间与承诺
18 | 评估:计划的收获——成本与收益
19 | 障碍:从计划到坚持,再到坚持不下去的时候
20 | 执行:从坚持到持续,再到形成自己的节奏
21 | 信息:过载与有效
22 | 领域:知识与体系
23 | 转化:能力与输出
24 | 并行:工作与学习
25 | 时间:塑造基石习惯(上)——感知与测量
26 | 时间:塑造基石习惯(下)——切割与构建
27 | 试试:一种“坏”习惯
28 | 提问:从技术到人生的习惯
29 | 偏好:个人习惯的局限与反思
30 | 写作:写字如编码
31 | 画图:一图胜千言
32 | 演讲:表达的技术
33 | 定义:阶梯与级别
34 | 晋升:评定与博弈
35 | 关系:学徒与导师
36 | 核心:安全与效率——工程技术的两个核心维度
37 | 过程:规模与协作——规模化的过程方法
38 | 思维:科学与系统——两类问题的两种思维解法
徘徊:道中彷徨 (15讲)
39 | 职业倦怠:如何面对?
40 | 局部最优:如何逃离?
41 | 沟通之痛:如何改变?
42 | 技术停滞:如何更新?
43 | 无法实现:困扰与反思
44 | 完成作品:理想与现实
45 | 代码评审:寄望与哀伤
46 | 人到中年:失业与恐惧
47 | 该不该去创业公司?
48 | 该不该接外包?
49 | 技术干货那么多,如何选?
50 | 技术分歧,如何决策?
51 | 技术债务,有意或无意的选择?
52 | 选择从众,还是唯一?
53 | 选择工作,还是生活?
寻路:路在何方 (7讲)
54 | 侠客行:一技压身,天下行走
55 | 江湖路:刀剑相接,战场升级
56 | 御剑流:一击必杀,万剑归心
57 | 三维度:专业、展现与连接
58 | 三人行:前辈、平辈与后辈
59 | 三角色:程序员、技术主管与架构师
60 | 三视角:定位、自省与多维
蜕变:破茧成蝶 (3讲)
61 | 工作之余,专业之外
62 | 跨越断层,突破边界
63 | 成长蓝图,进化跃迁
结束语 (1讲)
尾声 | 始于知,终于行
程序员进阶攻略
登录|注册

02 | 初惑:技术方向的选择

胡峰 2018-08-06
初入职场或还在校的同学想必都会有些共同的疑惑,比如:“到底我该选哪个技术方向?”“现在该学哪门语言?”“未来 Java 语言的发展趋势如何?”这些问题的本质其实都是技术的投资决策问题,也即现在我该把时间精力花在哪个方向上,未来的收益才可能最大。
这个问题并不好回答,因为这个问题的本质和 “我现在应该投资哪只股票” 一样。没有人能回答好这个问题,我觉得最好的做法就是:从投资的出发点而非终点来选择一条路径。
至于这样选择的路径是否能在未来获得很好的收益,这是没法预测的。但选择技术方向和选择股票不同的是,只要你在这条路径上持续努力、学习与进步,基本可以保证能和 “大盘” 持平而不至于有亏损,但是否能取得超过 “大盘” 的收益,其实是看运气的。

选择语言

选择技术方向,从某种意义上讲就是选择语言。
虽然有一些流传的说法,类似于:“语言并不重要,必要的时候可以在各种语言间自由切换。”但实际情况是,能做到自由切换的前提是你得对一门语言掌握到通透之后,再学习其他语言才可能触类旁通。
计算机程序语言虽然很多,但种类其实有限。2018 TIOBE 程序语言排行榜(见下图)上的前三位(Java、C、C++),本质上其实是一类语言。但大部分人只能选择去熟悉并通透其中一种,因为这些语言背后都有庞大的生态圈。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《程序员进阶攻略》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(58)

  • 杨城
    难道这里木有.net童鞋吗,阴差阳错在.net这条路走了两年,国内基本现在没有.net大厂了,有点慌。
    2018-08-15
    18
  • 谭多肉
    对于我来说,也是一不小心踏入了Java的坑位,不同的是,我是做Android开发的。

    大一下学期,仅仅学过C的我,偶然得知,学校这边和北大青鸟有计划一起做一款APP。顺着老师给的学习资料,我阴差阳错的踏入Android开发之路…

    这Android开发之路,也是跌跌撞撞,前期几乎没有带,自己就像无头苍蝇一般瞎撞,也东拼西凑的整出一款APP,凭借这块垫脚石,顺利拿到一家公司实习offer。至此,瞎撞的苍蝇模式,终于切换到充满次序的蜜蜂模式,也顺利搭上了移动开发的红利期。

    直到今日,虽说我仍然在做Android开发,却也涉猎过其他的语言,比如Android相关的Kotlin Dart,其他方向的JavaScript Python 等。接触下来的感觉变真的有峰哥提到的触类旁通的感觉。

    现在回过头来看,从大学到现在走了不少弯路,但是由于种种原因很少能看到类似于本专栏一样,由一线工程师来分享自己工程之路的东西,导致偶尔陷入曲折之路时,也无法自拔。直到工作之后,看到了两本书《APP研发录》和《软技能》,受益匪浅。再到本专栏,一看到目录,我就明白。这是我需要的东西。希望在这里收获满满。

    作者回复: 所有人的路,都会有曲折,你还是很幸运的😄

    2018-08-06
    10
  • 彭超
    建筑汪,纯个人兴趣在学python,希望可以在参数化设计与性能分析中有所用

    作者回复: 跨界技能,👍

    2018-08-06
    6
  • ꧁小佳꧂
    您好,看到您的文章,我受益匪浅,但有个小疑问:
    1. 这个行业的现状如何?
    2. 行业的平均增速如何?
    3. 和其他行业相比如何?
    4. 这个行业里最好的公司相比行业平均增速又如何?
    5. 这些最好的公司都用些什么样的技术栈和语言。
      
    这些问题该如何找到答案?我通过什么渠道能找到这些问题的信息?

    作者回复: 搜索引擎就有呀,要学会搜索过滤信息,分析数据,再产生洞察,做出选择

    2018-08-06
    6
  • third
    大一学了C的基础,但是自己想做图,做游戏,发现用C太麻烦,然后大二因为看了吴恩达博士的人工智能课,觉得自己怎么能落后于时代呢,转学Python,发现出项目比较容易,成就感爆棚。
    暂时没有选行业的想法,因为觉得自己还没有努力到要选行业的程度,硬要说一个的话,现在觉得数据分析不错。

    最后对一些有兴趣的人说,
    兴趣和爱这东西总是爽一会,爽完之后就得负责了,因为兴趣和爱,所以反而应该要求自己比别人做的更好,对自己更苛刻。
    ……当然了,这就是编程天才跟普通人的区别,是否能在长期枯燥的生活中,坚持并感受到快乐

    作者回复: 能感受到快乐,挺好的,抵消了努力的辛苦感,在享受中获得成长

    2018-08-06
    5
  • 一一
    从一个农民工阴差阳错下成为了一个java程序狗路过

    作者回复: 是不是真的哟?

    2018-08-09
    4
  • shine
    大一的时候安卓很火,选择了安卓,到了大三找实习,明显感觉到安卓找工作很难,也许是自己学得不够好,最后选择了与安卓同是java编写的java ee,学校课程教过而且自己暑假自学巩固一个月,就去找工作了,确实java ee比较容易找工作。

    作者回复: 恩,APP市场萎缩了,端的形态发生了变化

    2018-08-07
    4
  • ꧁小佳꧂
    感觉很多人都错了……程序设计语言不是工具,是材料。
    工具和材料区别还是蛮大的……
    http://www.yinwang.org/blog-cn/2013/04/21/programming-languages-are-not-tools

    作者回复: 写出来的代码才是材料吧

    2018-08-06
    4
  • 虎嗅蔷薇
    做嵌入式底层开发,一直是C和汇编,每次把设备运行效率提高一点都感觉很有成就感。最重要的是看到实体产品在自己的程序控制下运行正常、流畅,是一种强烈的满足感

    作者回复: 这是程序工作的魅力之一😄

    2018-08-07
    3
  • edcSam
    有些人是挺烦的,一天就在那里争论某个语言的某种优势。
    我竟然还觉得他们说得挺有道理的,所以我全学了,上班写Java,下班写Python,周末玩JS。
    后两个虽然还比较菜,但是有一个人成语叫厚积薄发!

    作者回复: 😂

    2018-08-07
    3
  • @XP
    被培训机构忽悠学了安卓,现在自学python,工资高

    作者回复: 我咋觉得差别不大呢

    2018-08-07
    3
  • Franklin.du
    我学的语言很杂。学校c++,第一份工作objective c,后来做网站PHP,js。基本上和做的项目相关。以后会怎样,现在需要好好思考下。感觉比留言的其他人要迷茫得多。

    作者回复: 那也可以参考下其他留言同学的经历

    2018-08-06
    3
  • 小新是也
    当初的选择,仅仅是因为我能负担得起的培训机构的技术道路是.net。参加工作之后发现.net的生态远远不如java而转java。。。

    作者回复: 这么说Java培训费贵很多?

    2018-08-06
    3
  • 朱月俊
    刚开始学习计算机的时候,听网络授课老师建议学习C语言,后来自己又去学习了C++,主要考量是收益得超过语言本身,即我哪天放弃这门语言后,它也能给我带来收益。C++是面向对象语言,面向过程语言,也是范式语言,能够学到底层数据结构,面向对象设计思路,也能够从C语言平滑到C++,甚至去了解模版相关的特性。
    2018-10-14
    2
  • Null
    本人从事Java开发5年多了,跳槽了很多,平时也算努力的,老板同事对于我的技术水平也是比较肯定的。目前待遇也还可以,但是我又有跳槽的念头了,总觉得身边同事技术水平不太好。目前有2个问题,1.想去大公司,但因为跳槽太多,简历并不好看,大公司入职背调严格吗?2.对于生态及其庞大的Java想学好其实不太容易的,对于学习比较新的技术您一般会是什么样的步骤,希望能具体帮我解答下。谢谢您!

    作者回复: 1. 太频繁跳槽,不利于进大公司,很多要看稳定性。2. 看学习的目的。以后会有文章专门讲这个话题,一句两句说不清

    2018-08-08
    2
  • 山上有只马
    可能我理解的有点少:
    1,选择语言,有很多种,年轻的,老的。如果没有深入理解了一种的情况下,可以转投其它语言,这样牺牲会小一点!
    2,语言越年轻,选择的风险越大,就像是投资一样。
    3,现在大热的,大数据,人工智能。都是之前冷门的时候做了大量的铺垫。
    4,如果了解不够深入的情况下,选最满意决策,而不是最优。
    5,二八法则,前20%的高手,都懂得这个领域80%的知识?这个我有点理解不出来。不过,兴趣能驱动你到50%,剩下的就需要你的天分,还有坚持不懈的努力了。
    6,最核心的一点就是。技术选择,以出发点为目标。而不是出发点。条条大道通罗马,这样?

    作者回复: 4. 是事前没法选到最优,只能觉得满意就好
    5. 进入前20%,比较的不是掌握了多少知识

    2018-08-07
    2
  • 右耳朵猫咪
    当我迷茫的时候 我会选择更艰难的路

    作者回复: 很有勇气

    2018-08-07
    2
  • 艾尔欧唯伊
    那就潜伏一下。。。暂时不想跳来跳去,之前跳槽太频繁都没积累,谢谢胡老师

    作者回复: 恩,不能太频繁,都是有代价的

    2018-08-07
    2
  • 二木🐶
    我是Java程序猿,我现在面临一次人生选择的十字路口,我在深圳拿到一个待遇还不错的offer,是做Java,另外一个选择就是在广州公司的其他部门,要转PHP,待遇深圳可能会好点,但我已经在广州成家了,我不知道是否应该去深圳,还是为了和家人一起转php

    作者回复: 如果都不满意,尝试再增加点选项?另外深圳到广州比成都到重庆还快呀

    2018-08-07
    2
  • HellloWorld
    峰哥麻烦您详细说一下Java生态圈都包含哪些内容?

    作者回复: 这可多了,网上搜一篇《Java征途》的博文,包含了我曾经探索过的一部分而已

    2018-08-07
    2
收起评论
58
返回
顶部