Java教程

重塑程序员职业发展观

本文主要是介绍重塑程序员职业发展观,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

大家好,给大家分享一篇7七月的文章。

关于程序员的【职业规划】

先给大家讲个故事,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语言的学习。项目可以少做甚至不做。大厂校招是会考虑学校的。

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

换句话说,没有一个好的学历,那就必须拿作品来说话。作品是一个程序员最好的自描述,比你那些花里胡哨的简历要实在很多。

很多程序员说没有好的项目,这是骗自己。无论是参与开源项目,还是自己尽可能地模仿优秀的互联网项目,这都是很好的做法。当然最好的还是能参与一些开源的项目。

这一条同样适用于现在工作不是太好,想跳槽去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全栈课的小程序电商能自己做出来的感觉是真的不错。如果你有这样的一个项目无论是找工作、还是做外包都有很大的优势,用产品来说话远比花里胡哨的说辞和简历要棒很多。

电商CMS:http://sleeve.7yue.pro/#/login

电商小程序

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有兴趣的同学可以了解下。

https://github.com/TaleLin

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

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

大家扫码添加小姐姐好友,咨询课程,获取全栈课程优惠~

图片描述

这篇关于重塑程序员职业发展观的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!