程序员如何入门及职业规划(听说程序员的职业发展)
程序员如何入门及职业规划(听说程序员的职业发展)我相信每个人身体里都有某种特质,这种特质让你在某个领域取得成就的可能性远远大于其他,这种特质也能让你异于他人。但是,人们并不是生来就知道自己擅长干什么的,需要花时间去寻找,找到它,然后去做自己最擅长的事情,这对你漫长的职业生涯是一笔巨大的财富。就好像每个人都希望做好职业规划,赢在起点,然后按部就班的往前走,一步一步,迈向人生巅峰。其实根本没这回事,世界上不存在完美的职业规划。我自工作以来,经历过不少重大选择,大部分则是被时代的浪潮和机遇推着往前走。从结果来看,很难说清楚好坏。因为不够强大,更多时候,我都无法和命运抗衡,只是因为喜欢计算机和编程,就留在了互联网这个行业里默默努力。当然现在看起来,也并没有比别人努力的更多。然后遇到一些机会,就迎了上去,仅此而已。今天跟你聊聊程序员的黄金五年。以我并不丰富的程序员阅历来看,入行三到五年的经历对程序员以后的职业生涯有非常重要的作用,可以说是黄金五年
来源|极客时间《极客视点》
作者|池建强
编辑|成敏
你好,这里是卖桃者说。
今天跟你聊聊程序员的黄金五年。
以我并不丰富的程序员阅历来看,入行三到五年的经历对程序员以后的职业生涯有非常重要的作用,可以说是黄金五年了。互联网时代学习环境开放,资料浩如烟海,很多大学生在走出学校大门的时候,很可能在某项专业技能上已经达到了很高的水准,但是这三到五年的探索,依然是不可或缺的。
很多人喜欢制定学习计划,但这些计划大都无法执行下去。不是计划出了问题,而是人学习和提升的方式很难按部就班,很多时候我们都是在摸索前行。就像你今天按计划要耕完一亩田,作业进行到一半的时候,你发现一块土质的异常,于是深挖下去,用镰刀割去杂草,用铁锹铲除泥土,用钻头钻出深洞,最后发现了一口油井。如果你按照计划耕完这一亩田,可能永远发现不了那口井。
就好像每个人都希望做好职业规划,赢在起点,然后按部就班的往前走,一步一步,迈向人生巅峰。其实根本没这回事,世界上不存在完美的职业规划。我自工作以来,经历过不少重大选择,大部分则是被时代的浪潮和机遇推着往前走。从结果来看,很难说清楚好坏。因为不够强大,更多时候,我都无法和命运抗衡,只是因为喜欢计算机和编程,就留在了互联网这个行业里默默努力。当然现在看起来,也并没有比别人努力的更多。然后遇到一些机会,就迎了上去,仅此而已。
我相信每个人身体里都有某种特质,这种特质让你在某个领域取得成就的可能性远远大于其他,这种特质也能让你异于他人。但是,人们并不是生来就知道自己擅长干什么的,需要花时间去寻找,找到它,然后去做自己最擅长的事情,这对你漫长的职业生涯是一笔巨大的财富。
需要五年这么久的时间吗?依我个人的经历,恐怕更长也说不定。无论程序员也好,软件工程师也罢,叫着简单,领域知识却是浩如烟海。
进入现代互联网阶段,程序员的领域细分到了令人发指的程度,比如 XX 语言工程师、前端工程师、后端工程师、架构师、大数据工程师、安全工程师、运维工程师、移动开发工程师、DBA 等等,叫法繁复,甚至职能重叠。这些角色最初都叫做程序员,最终他们像一棵大树,枝条粗壮,蜿蜒生长,然后在树冠分开,并结出了各种各样的果实。同时,每个细分的领域又会衍生出浩瀚的领域知识。
比如编程语言,常用的编程语言就有几十种,静态语言、动态语言、脚本语言、函数式编程、面向对象编程、过程式编程等等。而从平台角度,Java VM 上有 Java、Scala、Groovy、Clojure、Jython 等;.Net 平台上有 C#、J#、F#、VB.Net、VC、ASP.Net……
即便我们把目光聚焦在一门语言或技术上,如 Java,你也不可能仅仅掌握它的语法特性和函数库,然后写写业务表单和增删改查就完了。Java 的虚拟机、性能、并发编程、Jit 技术、垃圾收集、集群、分布式、异常、日志服务,还有大量的 Java 平台开源项目,都需要你深入了解。
除此之外,一些数据结构和算法也是程序员们应该掌握的内容,比如栈、队列、链表,二叉树、红黑树、B 树,散列表,排序算法,查找算法,最小路径,最小生成树等等……
可以说,各个领域的技术用浩如烟海来形容毫不为过,我们穷尽一生也无法掌握其中一小部分。这么看来,五年的时间并不长是不是?
那我们该怎么做呢?简单分享几个建议:
1. 由点及面建立知识体系。选一门编程语言、一个技术框架,买书也好,跟着极客时间学习也罢,先做到可以写线上生产程序的程度。这说明你至少可以通过编程养活自己了。然后再确定方向,寻找自己的学习和成长路径,补足基础知识,形成完整的生态体系,然后再去选择深入技术,或者是技术 产品的发展方向。一旦形成加速度,飞轮就开始转动了。
2. 优先打磨专业技能。人们常说先做专才,再做通才,也就是所谓的 T 字型人才,既有某个领域的专业知识,同时知识技能广泛,为人处世,大开大合。古代开国皇帝大抵都是这种,雄才大略又武艺高强,上马砍人,下马治国,一通百通。所以程序员必须首先具备专业技能,才能在这个残酷的领域里存活下来,不要没干两年就想着去管理,抛弃专业知识。翻一翻互联网招聘职位列表就知道了,一百条里面 99 条是各种各样的工程师,好不容易有一条是管理性质的,一看是总经理,您能胜任吗?所以,专业技能是需要优先考虑的,等你真正成了技术大拿,自然知道怎么去扩展横向知识。
3. 养成持续学习的习惯。彼得·德鲁克曾说过,“我们必需时常改进、挑战,以及增加我们的知识,否则它将不复存在。”要知道知识是有半衰期的,我们拥有的知识每天都在变得过时。数据、信息、技术每天不断产生,创造和分享自己想法的人也在不停增长。而且,我们还在不断忘掉自己知道的东西。事实上,“全世界的专业人士都在增加他们花在学习上的时间,我们需要和他们一样不断学习才能保持自己不退步”。
当然,说了这么多,其实还有一种可能,就是你花费了五年的时间,发现自己并不适合做程序员。虽然这听起来有点悲哀,但也不失为一件好事,因为你还有时间转型啊。正如我在昨天文章中提到的,程序员几乎可以转型为其他任何角色,反过来却很难。我们听说过很多优秀的产品经理、创业者、管理者最初都是程序员,却很少听说哪个顶尖的程序员是从产品经理转过来的,有吗?反正我不知道。
卖桃者说,明天见。
点击链接,阅读更多文章!