为了账号安全,请及时绑定邮箱和手机立即绑定

重塑程序员职业发展观

2019.12.19 12:04 11274浏览

大家好我是7七月今天给大家带来我在慕课网的一次分享。分享仅代表个人观点大家听听就好希望能帮助到大家。

本次分享的主题是 关于程序员的 职业规划希望能帮助大家能开心的度过20岁幸福的过好30岁

先给大家讲个故事2019年英雄联盟S9冠军FMVP小天在2018年时还默默无闻没有LPL的队伍要他一个人每天独自住在地下室里孤独的打Rank每月薪水大概只有5000块。这与他同期的选手相比简直是少的可怜。直到FPX选中他才有了今天的FMVP。

小天还是幸运的能在LPL中打比赛的选手年薪不会少于100万更何况是获得了世界赛冠军的选手薪水更是不敢想象这还不包括各种商业活动、直播所带来的收益。

但这令人艳羡的收入背后是需要付出及其残酷的努力的残酷到令人可怕。

职业选手的训练是强度是非常高的一天十几个小时的训练+Rank是常有的事儿。很多人觉得打游戏很开心但真的让你一天打十几个小时一般人是受不了的。每天中午起床、训练、比赛、rank一直到深夜凌晨第二天再重复枯燥且乏味。一年也大概只有在春节的冬歇期会有一个月的休息时间。很多选手因为常年的训练腰部、背部、颈椎、手都有不同程度的伤病。

即使这样的付出也很难站在LPL的顶级联赛上。LPL只有17个队伍能活跃在这个顶级联赛的选手全国只有不到100人。职业选手之间的竞争远比其他运动要残酷太多了。更何况职业选手的黄金年纪最多只有5年从18岁到23岁有的选手甚至更短。这比足球、篮球等运动的黄金年纪要短太多了。

没有哪个职业是轻松的在那些耀眼光环的背后其实是无尽的辛酸、泪水与汗水。要想获得成功刻苦的付出是最最基本的要求。

恕我直言我们现在很多人的刻苦的程度是远远不够的。

但我并无意怂恿各位同学都像职业选手这样刻苦。每个人对待生活的要求是不同的有很多人本身对物质要求不高也不愿意去付出努力这并不能说他们有什么问题。生活并不是只有物质才是唯一的快乐。

做一个有趣的人也是个不错的选择

但人生最可悲的是既有太高物质追求又不肯付出相应的努力。夹在两端是焦虑的本源。

所以同学们需要想清楚要追求的是什么如果是追求物质那必然要付出极其艰辛的努力除非家里有矿

所以不管你以后想做什么认清自己看看自己愿不愿意为物质付出这么多的辛苦才是最重要的事情。只有认清这一点才能为自己选择一条合适的路。

就如同我们之前谈到的电竞选手即使你一年四季刻苦训练都不一定能站在LPL这个最高级别的联赛上所以刻苦的努力只是一个基本条件还需要有天赋更需要有一些运气。

刻苦+天赋+运气要想获得成功这三者其实缺一不可。

经常有学生会问我编程需不需要天赋

不得不承认其实是需要一些的。天赋可以决定你最终在编程路上的高度像C#之父、Linux之父这些天才之人毫无疑问是有天赋的。不是每个人都能通过努力达到这样的高度。

但人生有趣的地方就在于我们并不想达到这些程序天才的高度我们绝大多数的人其实也只是想让自己通过编程吃饱、穿暖过上小康的生活

鸡汤告诉我们只要你努力没啥做不到的。这其实不现实。就算做到了也未必是你真的想要的。所以最关键的就是认清自己没必要去做那些付出很多却收益很低的事情。

就拿程序界的LPL联赛——BAT来说其实国内几百万程序员能在BAT的程序员其实少之又少。所以你确定你拼劲全力就一定能进去吗技术是一方面更多的时候其实进BAT还需要一些运气。

能进去固然很棒但进不去也大可不必觉得人生就没有了希望。很多中小公司的程序员过的未必比BAT差。当然进BAT是很多程序员的执念这个就另当别论了。

我这篇分享没办法帮助大家进BAT但如果你认真看它至少可以让你在程序这条路上走的更远生活过的不会太差。

所以认清自己是大家在规划自己职业路径的时候首先要明确的事情。只有在明确了这一点我们后面的分享才有意义。

我们程序员的职业生涯大概是从20岁开始。20岁我们都在干什么也许我们还在校园的象牙塔里挥洒青春也许我们已经走出了校园进入了职场

如果我们还在校园里那最重要的其实只有2件事情

  • 好好学习

  • 谈个女朋友/男朋友

没有比这个更重要的事儿了

如果你所在的学校属于一本以上那我的建议是专注计算机基础理论的学习包括操作系统、计算机原理、算法和数据结构、Java语言的学习。项目可以少做甚至不做。大厂校招是会考虑学校的。

如果你所在的学校不是很好那么应该把实践(项目)放在第一位同时你的期望值必须要调低一点否则你会很焦虑焦虑不是件好事儿。

如果你所在的学校不是很好那么应该把实践(项目)放在第一位同时你的期望值必须要调低一点否则你会很焦虑焦虑不是件好事儿。

换句话说没有一个好的学历那就必须拿作品来说话作品是一个程序员最好的自描述比你那些花里胡哨的简历要实在很多。很多程序员说没有好的项目这是骗自己无论是参与开源项目还是自己尽可能的11模仿优秀的互联网项目这都是很好的做法。当然最好的还是能参与一些开源的项目。

这一条同样适用于现在工作不是太好想跳槽去BAT的同学

用能放的上台面的纸面实力弥补学历的不足是同学们去大厂的最好方式。一定要看得见有说服力。如果你有一个Star在2000+的项目其实去大厂很轻松。

这里强烈建议大学生可以学习一下Java这对培养自己的编程思维非常有好处因为Java这个语言是经典编程思维的代表而很多经典编程思维动态语言是不强调或者说非常容易忽略。很多后端能够很轻松的成为全栈开发者的原因是因为他们是从Java开始的编程之路从Java入手学习别的语言比较轻松但反过来从动态语言入手再想学习Java、Go等语言就不是那么轻松。

Java、C#、C++ 三者任意一个即可

一定要选择 这类经典的编程语言

考虑到实用性目前也只有Java最合适

Python和JS都不是最好的首选语言作为二语言最合适。

为什么 建议是这3个语言。因为这些语言有很多 跨语言的编程思维

http://img1.sycdn.imooc.com/5dfae4a50001a51912800653.jpg

这是Java中的思维但其实是软件工程中的思维不论是JS还是Python其实都有这样的需求

不会因为是动态语言就不需要

很多同学看不懂源码的根本问题 不是在于自己太菜了 语法不熟悉

还是 这些 软件工程的思想不熟悉不懂得为什么好的框架代码都要写的很复杂

这个时代一个程序员掌握多种语言是再稀松平常不过的事儿了。

追求多语言不是目的但一个人能够灵活应用多种语言是一种能力的体现

如果在工作中有条件和能力的话也应该补习下Java。很多在前端同学看起来非常神奇的思维和机制其实在后端编程里是非常常见的比如一些设计模式、IOC容器等概念。

很多人说算法是好程序员和普通程序员的分手岭这句话放在过去是正确的。但现在对于软件这种高度封装的东西要求实在太高了

思想和设计模式才是 最合适的分手岭

如果在大学时能少玩游戏多学习一些编程技术差不多是真可以积累2到3年的工作经验出来找工作是比其他人有很大的优势的。主要是现在大学不学习的人太多大家要把握好这个机会。

我们是技术人技术自然是要过硬的。所以在我们的20岁的时候是最好的学习技术的时机。在这个年纪大多数人没有家庭的负担也没有太大的经济压力如果这个时候不去认真学习那么30岁后就没有这个环境和心境了。

很多同学经常问我老师我觉得我很迷茫我不知道怎么学我也不知道到底要学到什么程度。这个问题在我看来它本质是因为我们本末倒置了技术。技术是一个实践性很强的东西我们太多做技术的还抱着应试教育那种学习模式高考又不考编程并没有一个能决定你人生的考试等着你。

拿我自己的经历来说我从不为找工作去学习技术。从我学习第一门语言开始我就是为了做点东西和解决问题。高中的时候是为了在文曲星上用Basic语言写个RPG小游戏给自己玩大学时是为了给老师做项目工作了也是为了去解决一个个的问题在解决问题中去学习编程。

但我才工作时写程序到凌晨3、4点是再正常不过的事情了。驱动我的并不是 薪水也不是为了完成任务而是一份成就感我把工作的项目当自己的作品。我的起点就别很多人要高

没有目标的学习确实很容易迷茫。而且很容易学了就忘记了学了也不知道学的到底是个啥因为你没有把自己学习的东西用到实践中。

你需要考虑的是技术的转化上班打工这只是转化的一种途径其实还有很多。

技术要服务于 收益而有了收益反过来 是可以促进你的技术成长的。

这是双向的而不是单向的

很多同学说我就是不知道目标是什么。这很简单你完全可以参与一个开源项目或者自己给自己虚拟一个项目甚至是可以在慕课购买一个课程以这个课程的项目为雏形不断丰富和完善。我就见过一个同学学了我的电商课程后人家硬是不断的扩展不断的追加新的功能最终做出了一个中等规模的电商小程序有团购、有秒杀。团购的业务你不知道吗秒杀的业务你不知道吗所以说没目标没项目都是借口呀同学们。

有一个同学看了我的KOA课程后自己去研究了我的开源项目Lin-CMS做了一套完整的应用程序。我其实挺佩服这些同学的这才是真的把一个课程的价值发挥到了极致。

而我们大部分同学仅仅只是 被动的把课看完了并没有动手去做 一些自己想做的东西。技术这东西其实很纯粹无非有两个途径1. 打工赚钱。2.做自己想做的东西

第一个 用处自然是显而易见的但第二个用处很多同学 没有意识到。

如果你依然还是在用教育都已经抛弃的应试态度在学编程那还是建议三思这是走不远的。

编程技术浩如烟海你指望靠学去学完 学好那是不可能的

20到30这10年时间其实是非常短暂的。以前我们谈35岁的程序员危机但现在由于程序的门槛越来越低30岁就是程序员的危机了。不是说30岁和29岁有多大差别其实在生理上没有太大差别但在心里上差别是巨大的。这不仅仅是企业对30岁人的态度你自己其实也会觉得30岁是一个巨大的门槛你已经不再年轻了。

30岁时如果再想着靠技术吃饭基本不太现实。比你便宜的年轻人有你30岁要求的薪水不可能和20岁的人一样你有妻子有孩子怎么可能期望和20岁一样。你觉得你和20岁的人比你的优势是什么经验很抱歉经验其实对于程序员这个行业来说没有那么大的鸿沟因为软件在现代来说已经模式化了它不是高精尖的产业你的经验可能一文不值。

所以30岁要拼的是综合素质包括沟通能力、领导能力、管理能力、分析问题的能力你的经验只有结合这些能力才能值钱你之前的技术积累只有结合这些能力才能继续发光发热。

很多做技术的人心里是瞧不起做管理的人的我以前也是觉得技术是纯粹的管理能干啥但最后随着年岁渐长我明白了一个道理想有更高的回报就需要提供给企业和社会更大的价值。一个人只做技术的价值是有限的但管理不同管理可以让一群人的价值最大化这也是为什么管理的薪资肯定是要比普通技术要高不少的原因。

那这些能力怎么培养这些看似很虚却又很重要的能力其实并没有一个像技术一样的学习路线。很多同学说我20岁还年轻我应该先学技术等我技术学好了再考虑这些问题。大错特错。

这些能力的培养或者说综合素质的培养不要说20岁还年轻这些其实是应该从小就应该培养的。很多时候等我达到了什么目标等我生活安定了等我先找到工作了了我再干什么事情这样的想法和放弃是没区别的。

我以前做直播的时候跟大家聊说综合素质和重要我推荐大家在学习之余需要多去读书不是读技术书而是读文学、历史。当你的综合素质提高了其实你会发现这些能力的获取途径自然就清晰了。综合素质可以影响我们的很多选择而人生其实就是由一个个选择的结果堆积起来的一次选择会影响到下一次正确的价值观和人生观会影响你每一次选择。

大家有没有想过为什么同样的两个人在同一家企业为什么一个人的薪水可以比另一个高出1倍甚至好几倍为什么每次加薪其他人的幅度都比你高我带过不少团队我心里很清楚是为什么技术绝对不是主要的区别点。都到了一个篮子里了大家耳濡目染朝夕相处谁还比谁的技术能差多少其实主要还是有的人综合素质高能把各种事情处理的仅仅有条又有自己的原则简单来说就是做事儿做的漂亮。

这样在企业里KPI肯定高不了也不可能有前途。没有领导喜欢这样的下属领导的事儿很多的你指望他每一个细节都给你指出来那和他自己去做有啥区别为什么还要你去做。你能帮你的leader省心你在企业里就不会差无论是什么公司都是这个道理。这肯定不是仅仅只有技术就可以办到的真需要大家提高综合素质

其实各行各业都对综合素质要求很高但往往程序员这个职业有点另类大多数人不看重综合素质只是一味的猛学技术。

当然我从不否认技术的重要性只是我们现在很多同学太盲目的追求技术了。但如果你仔细观察身边的人很多技术好的人综合素质其实不差。因为综合素质其实可以帮助你更高效的学习让你知道怎么学习该学哪些不该学哪些。这无疑是提高了学习的效率。简答点来说综合素质可以帮你做出最符合你利益的选择。

综合素质高编程思维其实自然是有的

相信我在不同的课程和分享中其实一直都在强调综合素质甚至是编程思维相比综合素质来说都没有那么重要

但什么是综合素质我觉得很难用语言来描述。我给大家看个文档来说明什么是综合素质在这里插入图片描述

图片描述
图片描述
图片描述
这个文档是 我们团队的一个人做的。完成这样的文档我其实只说了3句话需要有一个sql join的文档。样式做好点。逻辑清晰点

从两个角度来想你是leader你喜欢这样的员工吗

第二个角度如果是你来做你能做到这个程度吗

如果你有这样的能力不会愁未来

这其实就是综合素质的体现

其实各行各业都对综合素质要求很高但往往程序员这个职业有点另类大多数人不看重综合素质只是一味的猛学技术。

当然我从不否认技术的重要性只是我们现在很多同学太盲目的追求技术了。但如果你仔细观察身边的人很多技术好的人综合素质其实不差。因为综合素质其实可以帮助你更高效的学习让你知道怎么学习该学哪些不该学哪些。这无疑是提高了学习的效率。简答点来说综合素质可以帮你做出最符合你利益的选择。

选择比努力重要。有时候对于普通人对于没有逆天改命的能力的人来说真不是假话。

上面的这个文档其实很简单都是现成的资料但在实际工作中本身就不是让大家去弄高科技呀就是踏踏实实把事儿做好做漂亮

所以你可以仔细观察很多高薪的人其实他们都有一个共同的特点就是能把事做好。能够最大限度的发挥资源的价值尽可能的把事情做到极致。

所以企业需要什么样的员工这个答案太多了但我认为是可以概括一下的

企业需要的是能把事情做好的员工。很多同学在有人带着你、指导你、事无巨细的告诉你怎么做的情况下能把事做好但这句话其实更准确的来说是需要你主动的、独立的把事情做好。领导其实只应该起到一个协调资源和提供资源的角色怎么做做到什么程度是应该由你自己来决策的。

好这个话题我们暂时先讲到这里。下面我谈下职业规划的问题。

其实程序员未来的路相对于其他行业来说实在是太窄了。可选的不多。

这主要是因为程序员是一个是相对比较封闭的群体除了技术综合素养、人际关系、沟通能力、眼界其实都是偏差的。这大概是我觉得程序员这个职业最不好的地方。但程序员必须有一个觉悟就是再你看起来牛逼哄哄的技术其实在很多人眼里他只是个工具。对于绝大多数人来说技术也只是谋生的手段。

由于技术的频繁变迁程序员在技术上也很难形成积累所以其他很多职业都是越老越吃香只有程序员这个职业是走下坡路。所以30岁后的程序员如果没有很好的综合素养真的很难。

其实技术这个事儿越到后面越不值钱是很正常的其他很多职业是先付出才有收益但技术不同它只需要付出少量的精力突击学习就能找到一份还可以工作。这点和其他需要前期投入很多成本的职业不同。这个行业门槛偏低享受了低门槛的优势就必定要在未来付出相应的代价。

程序员在未来大抵有以下4个方向

  • 技术一条路走到黑

  • 半技术、半管理做综合性的复合人才

  • 自主创业

  • 直接转行

我们来一条条分析。

第一条能在技术上一条路走到黑的少之又少。能走这条路的很大程度上是真需要一定的天赋大多数人走不到黑就爬不动了。

第三条这个不多说了能自主创业成功的那是你的能力。如果你有这个能力我觉得基本不需要听其他人的意见你必定有很强的自我选择和分析能力。

第四条也有很多人走但大多数是被迫无奈只能转行。

最实际的目标也被大多数前辈证明了确实可行的只有第二条。有很多同学说做纯管理不是不可以只是没有优势你20岁都在为技术奋斗这些积累需要物尽其用的利用起来。技术是你傍身的优势不能丢掉。只有兼具技术和管理才是你最大的优势。

这就是为什么前面我特别强调技术不是唯一把事做好才是你的目标。我们很多同学体会不到是因为你从来都只站在一个执行者的角度去看待问题和完成任务从来没有站在一个leader的角度去看待问题。你必须和你的leader保持同理心。时间长了你自然就具备了一定的管理和分析能力。

所以你的目标就是把事情做好而不是把技术学好。技术学好这个要求其实很低把事情做漂亮才是难点。

把事情做好的一个先决条件是你有一定的大局观和分析能力这一点非常重要这也是为什么很多人到了30岁后无法转技术管理的原因。你20多岁的时候只知道每天耕耘自己的一亩三分田做前端的永远不学服务端做服务端的永远不了解前端你如何能有全局的分析能力和大局观

前端这个称号其实是人家给你画的圈不应该成为你自己的枷锁。其实在我心里从来就没有全栈这在过去本身就没有前后端之分何来全栈之说很多同学说过去不分前后端是因为没有那么多的框架要学习这是本末倒置还是抱着考试的态度在学习。

在我看来现在的前端比过去简单太多了开发一个项目的成本比过去低太多了。jquery时代是没有组件化也没有数据绑定想想只这两点能节约多少成本以前你需要自己用原生的JS模拟类这个概念因为那时候没有ES6想想现在的ES标准。

所以我不推荐大家把自己贴上前端开发还是后端开发的标签自己给自己打标签的行为是非常愚蠢的。因为你扼杀了你自己的可能性。

如果你不想选择第一条 技术一条路走到黑那么最好的做法就是前后端通杀没有那么难你觉得难只是因为你提前给了自己心里的暗示不断的告诫自己这玩意儿太难了我学不会。老程序员会告诉你其实编程的本质是逻辑的运算前端和后端本身就没有明显的界限。唯一的差异就是前端不管数据库服务端不管CSS。

事实上现在技术的发展趋势也是模糊了前后端的界限这个就不用我再多说了。

如果你确实要选择第一条路纯技术安身立命我觉得选择一个点使劲儿学习专研是正确的。其他三条路在我们学技术的阶段最好是模糊前后端。

单纯的认为自己是前端/服务端还是没有跳出打工心态和考试心态。如果你是精研算法或者做数据或者做人工智能、大数据的我推荐你精研一个方向。但我们是做Web的Web相对于其他的方向本身就偏简单、含金量不高再把前后端舍弃一个是说不过去的。单前端或者服务端其实是放弃了自主性不给自己的未来留一些变动的可能。

第二点还有一个非常重要的学习思路注重细节。一个产品的细节才是灵魂好的程序员和不好的程序员其实在技术本身上差异不大但是好的程序员非常注重细节。如果你写代码的时候努力去做好细节那么长期积累下来学习的效果是非常明显的进步也会非常的快。如果你总是觉得这样差不多就行了写出来的代码千疮百孔那我建议乘早放弃编程。

第三点学习太多方法论不是一件好事情以解决问题为目标才是最好的方法论。没有之一。我们很多同学特别热爱去看方法论方法论本身没错但问题是我们没有坚持下去的毅力也没有这个执行力。方法论的前提是你能很好的执行它。所以我们需要有驱动解决问题就是最好的驱动力。太多同学迷失在方法论的探索里永远在找方法就是不肯去做。

从我的角度来讲我觉得编程唯一给我的乐趣就是能独立自主的做出一个完整的成品产品一切尽在自己掌握不求人的感觉真的很好。

下面是Java全栈课的小程序电商能自己做出来的感觉是真的不错。如果你有这样的一个项目无论是找工作、还是做外包都有很大的优势用产品来说话远比花里胡哨的说辞和简历要棒很多。

电商小程序

http://img1.sycdn.imooc.com/5dfae6020001223205560572.jpg

希望大家能够明白企业需要的是能做好事的人不是会多少框架的人说一千道一万还是要拿出自己的作品。

最后可能我说了很多同学们还是不清楚应该怎么做。其实很简单五个字

事事有交代

做好这点你的人生不会太差

好了 咱们的分享到这里就结束了。

最后简单介绍下我的课程。有兴趣的同学可以了解下

要学会 变现

物尽其用 技术也是同理

新Java全栈这个课程主要的目的有3个

  • 学习现在Web开发最主流的技术栈小程序+Vue+Java。没有比这三个更主流的技术栈了。

  • 培养编程思维。在课程中我们除了有SKU、优惠券、购物车数据同步等非常复杂的业务还有数学矩阵、排列组合、设计模式、IOC容器、依赖注入等编程思维的课程。

  • 培养综合素质和视野你会看到我是如何从0开始一步步的分析问题、提炼需求最终完成了这个超大的项目。

对于前段开发者来说如何进阶后端以我的角度来看如果你能接受Java那必然优先选择Java它有太多的编程思想完全可以给你打开一个新的世界掌握Java里的思想未来学习其他的语言不是大问题如果你实在学不进Java那还是选择NodeJS/Python。都是动态语言其实在编程思维上的提升其实不大。

关于详细课程大纲目前第一阶段已经更新完毕二 三 四阶段每周持续更新中我整理了已经更新完部分的详细大纲导图比宣传页要详细一些供大家参考~
图片描述

图片描述
此外课程还提供了两个很好的工具Lin CMS和 Lin UI有兴趣的同学可以了解下。

有空的同学 帮我们点个star感谢支持

http://class.imooc.com/sale/javafullstack 这是全栈课的地址 有兴趣的同学了解下

http://www.imooc.com/t/4294850 我所有课程的地址感谢大家

点击查看更多内容

本文原创发布于慕课网 ,转载请注明出处,谢谢合作

123人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消