年轻的时候,我们该如何选择
不要偷懒,也不要耍机灵
总是希望能够把自己经历过的一些事分享出来,把走过的弯路告诉后边的人。有些痛苦和迷茫,你自己回过头来觉得很珍贵,其实只是你自己不愿意承认那些苦都白受了而已。
先说下我自己。小时候,我有严重的小儿多动症,后来考进了“985”。毕业后先去了一家国企科研单位,后来去了一家世界500强的公司,一直干到现在。
我从大学开始接触编程,到现在正好是十年,中间断过,后来又继续从事编程工作。
做任何事情,最关键的是先入门,从事编程工作也是一样,那么做编程到底到了哪个地步才算入门呢?所谓的入门,是你进了一家公司,然后开始给人家干活,并且能够提供合格的交付件,这就算入门了。我的目的是在你一行代码还没写的时候,给你一些建议。
不管在任何企业,厉害的人应该是主动地帮企业改进流程,给企业降低成本,提高效率,当然要实现这个目标非常难。最高的境界就是你改进了流程,企业终于不需要你了,把你开了,当然这是开玩笑的话。任何能做到提高整体效率、降低成本的人,都是企业的宝贵资产,做程序员也一样。因为我是做程序员的,所以,我就写写如何做程序。我想我写程序的心得,不管从事什么职业和行业,都会有价值的。
我们分成几个话题来讨论:
一、做程序员如何入门
如果你一行代码都没写过就想当程序员,我觉得你勇气可嘉,不过也可以试试,其实思路是一样的,就是使劲地敲代码。你可以搞个编译工具,找一本程序的入门书。学习C语言可以选择谭浩强的书,学习JAVA可以选 《疯狂JAVA讲义》,千万别碰什么《JAVA编程思想》之类,写代码不需要思想。你可以把上边的每一个例子都敲一遍,然后运行一遍,千万不要偷懒,也不要耍机灵,一个例子都别落下,而且必须是全部运行通过了。当你把一本书上的例子和习题全部运行完了,这本编程书30%的知识就是你自己的了。
然后,你需要继续敲代码,不要去做那种复杂的算法题,先把基本的东西做熟练,直到你翻开任何一页,给你指一下,你不看人家原来写的是什么,直接把那段代码自己敲出来,这本书就是你的了。如果做到这一步,这门语言的道路上,你已经行走了50%了。
然后,你需要继续敲代码,找点稍微复杂点的算法题,但是别找太复杂的。如果你的资质和我一样平庸,就先多找些习题,千万别搞大跃进,一道一道地做,至于定什么具体目标,大概如下:
1. 菜鸟级的程序员,累计敲了一万行的代码,能够不看书编码了;
2. 能够给公司干活的程序员,累计敲了五万行的代码,但是写代码的速度比较慢,调试的时候也比较慢;
3. 老手级的程序员,累计写了五十万行的代码,写起代码疯了似的,半天就可以写两千行,五遍以内运行通过的人。
你可能觉得我在乱说,其实并不是。比如,怎么筛选出优秀的飞行员呢?就是要看这个驾驶员安全驾驶了一千个小时还是一万个小时。
跑步圈讨论今年的训练水平,就按照跑了多少公里衡量。程序员编码也是有硬指标的,硬指标达不到,你就没办法建立那种神经元之间的硬链接,也就没法做到收放自如。不要迷茫,不要郁闷,还没写够五万行,你找不到如何编码的感觉是正常的,就像你初中之前写出来的作文跟智障写的似的。多练,总错不了。
我大学老师和我一样,都是平常人,但是他成就很高,他像一个布尔什维克一样要求自己。他每天写代码,写文章,每天工作十二个小时,每天也跑步一个小时。他说其实编码和写文章这俩事是一回事,你得不断地写,才会有感觉,才不会出错。你写得少,没法下笔成章,写出来的东西别人读起来困难,你自己的想法也传达不出去。不信的话,你自己试试,写一段话或者一篇文字。如果好几年不写,你就能感受到再写东西有多别扭。
编码也一样,当你达不到累计编码五万行这个硬指标的时候,你是难以做得娴熟的。当你进了公司,上司让你写个程序,实现个小功能,你立刻就虚了。就跟让你写一篇小短文似的,根本传达不出来你想表达的。但是如果你像我这样笨鸟多练,最起码可以写出很长的有价值的文字。
最后聊一句关于编码的语言。有人问,我是先学C语言呢还是JAVA呢?还是Python?我推荐JAVA,因为JAVA应用范围广,学了它以后容易找工作,先学了JAVA,以后转写Android或者Python也容易。那学习C语言呢?我不太推荐C语言,因为用得比较少。
至于算法结构,我不太建议学。因为当你进了公司,基本上你这辈子都不用自己实现一个双链表。如果你说你要去个高级公司,要去写库函数,那就需要你自己去专研或者请教更厉害的人。
二、关于数学
有人问,我数学不好,能当码农吗?这个我思考了很久,我认为是没问题的。但不确定,万一是我自己的认识有局限呢。后来我给阿里巴巴、腾讯、百度的小伙伴都打了电话咨询了下,答案果不其然,总结起来一句话:除非你做算法相关的,否则学很高深的数学没太大用,月薪三万以下的编码工作,初中数学水平就够了。
三、关于年龄
我被问得最多的问题是,我今年××岁了,还可以改行做程序员吗?说实话,我认识不少三十五岁以上改行当码农的,这个行业门槛低,前途也不错,你要是不确定自己适不适合,按照我之前写的,看看自己能不能写完第一个阶段的一万行代码。如果你写完了,看看能不能写到五万行,如果能写到,你确实适合搞这个。这些需要多长时间完成?事实上你要是合适的话,很快就完成了;不合适的话,估计这辈子都达不到,写几行就忘记这回事了。
不要把你的想当然作为选择的依据
很多人高考后不知道选择什么专业,其实选择专业真的是一门很大的学问。我认为人们首先需要纠正的是对经济学和管理学的误解,很多人以为学经济就能学到如何赚钱,或者以为学了管理学就能当领导。根据我多年以来的经验,好像没有发现用人单位打广告,上边写着“聘请经济学专业毕业生,待遇优厚”或者“高薪聘请领导”。
很多人学了经济学和管理学,很大可能去当了中介。并不是说做中介不好,我认识一些中介,比我年轻五六岁,赚得跟我差不多,但是一般情况下气质形象俱佳才行。
现在一般正儿八经的公司选拔干部的规则都和华为选用人才的标准一样,也就是韩非在《韩非子·显学》里说的“宰相必起于州部,猛将必发于卒伍”,从基层员工里选领导,以后企业用空降兵的情况会越来越少。
很多人偏爱金融学专业,他们认为学了金融学就能够非常有前途,其实金融学专业没有大家想象的那么有前途。这个领域我很熟,因为我身边有一堆金融从业者,和他们熟识是因为同样喜欢历史。
金融领域的薪资收益存在明显的“头部效应”,也就是头部的1%拿走了整个领域几乎所有的钱。更让人难以理解的是,金融行业的收益模式和很多人想象的完全不同,一些人以为金融数学好非常重要——通过数学模型来分析经济,通过炒股或者其他操作来盈利。事实上是你想多了,这可能是影视剧误导了你。绝大部分金融领域的高手依赖的是关系网、笔杆子、嘴皮子。这个让人很费解,不过事实确实是这样的。
我认识几个在金融行业做得不错的,他们都是文笔了得,能够下笔千言。当然,他们最大的本事是能筹到钱,认识很多人,而且他们也不是学金融学的。
我不建议你学金融专业的另外一个原因是,金融专业的留学生太多,因为这些年英国把接受中国留学生当成GDP的重要组成部分,去英国留学很容易,去了之后绝大部分都是选择金融专业。
我也不建议你学历史,因为喜欢历史是一回事,学历史又是一回事,毕业后很难找到有前景的工作。
我重点来说说计算机专业,因为我最了解这个行业。
首先,做码农肯定是可以的。在计算机行业,只要细心、认真,天分不高的人也能达到很高的水平,收益也很好。将来计算机行业的人才需求肯定是海量的,这是因为:代码不是写出来就完事了,海量代码对应的是海量的维护人员、集成人员。另外,计算机行业普遍潜规则较少,行业相对自由一些,没有什么官僚气,高水平的人,只要脾气别太臭,一般很难被埋没。
其次,当码农的学习途径非常多。如果将来当码农,不一定要学软件工程,学习计算机、通信专业都可以。我不建议报考软件学院,因为这个学院的学费非常高。如果本科不是重点大学,可以将来考研究生的时候重新努力一把,平时学好英语,上名校的概率还是挺大的
我在很多文章里反复强调过,当码农最重要的不是天赋,也不是数学,月薪三万以下的码农只需要初中数学水平,最重要的是获得“语感”。
一个人如果想做码农,他只要在大学的时候多写多练——从大学一年级就开始攒代码的数量,如果他能坚持四年,会远远超过其他同学的编码能力,毕业的时候能把面试官吓一跳。
我去过很多高校招生。在面试这些学编码的同学的时候,我发现,80%的学生整个大学代码量不超过两千。只好招聘了这些人以后重新培训他们。
最后,码农界的工资差距非常大。基层的复制粘贴码农每月可能也就能够温饱的水平,但是能做性能优化和架构的码农,月薪五万以上很普遍,倒不是多难,是需求很大,造成供不应求。将来选择职业时候要选艰苦、有挑战性的那种项目,去攻山头,长期收益特别大。
技术才是硬通货
每年高考后,很多人面临选大学专业的难题,很多读者建议我写一篇如何选择专业的文章——一部分人是因为自己要上大学了,一部分人是自己的侄子和亲戚要选专业上大学,他们不甘心坐在旁边说一些无关痛痒的话,想给自己的家人、亲戚一些专业的建议。
有的读者不知道在哪里看到一个梗,多次问报考哪个专业毕业后能够月薪八万。我确实见过毕业就能拿到这么高工资的人,不过这种人数量并不多。
今天我把自己知道的关于选专业的事分享下,供大家参考,说不准有用。当然了,你肯定不会只看我一个人的建议,毕竟我说的只是一个侧面,期待能够提供给大家一些有价值的参考。
首先我们得强调几个基本常识:
一、除了部分专业性极强的专业,比如医生和律师,绝大部分人在毕业五年内就开始折腾跟自己专业无关的事。尤其是当下的时代,人们对未来的确定性越来越低,有些专业人才在市场上根本没有匹配的工作。我的一个朋友毕业多年了,尽管继承了他父亲的洗车店,现在还经营得不错,不过他依旧长期关注人才市场的招聘信息,查看有无招哲学系毕业的职位。每次看到没人招哲学系的毕业生,就感慨家里有钱真是好,可以去读一些没什么用的专业。
二、能去大城市就去大城市。为什么我经常说年轻人争取去大城市呢?那些小地方人事复杂,盘根错节,相互提携,不管做什么事都得找人。
小地方本质还是人情社会,不像大城市是陌生人社会,相互之间遵守简单规则,反而相处容易得多。不过也有个问题,如果在大城市将来发展不下去,回到小地方,会过得有点痛苦。
之前总有人感慨大城市里邻居之间比较冷漠,其实这才是正常社会。村里那种互相都认识,天天互相打探,流言蜚语不断,每走几步就得跟人打招呼才让人身心疲惫。
这时候肯定有人要问了,大城市房价高怎么办?——大城市房价高主要是有人购买,繁荣赋予了一堆砖头以价值,偏远山区、索马里、委内瑞拉的房价并不高,你也不会去买,所以房价高是繁荣本身。
你的竞争力如果能跟得上大城市,自然买得起,在大城市工作,收入往往是曲线增长而不是线性增长,你往往干着干着会有一个跳跃。当然,如果没有获得曲线增长,也要保持平常心,咱们绝大部分人都是普通人。
美国人经常说“give a shoot”,也就是“打了一枪”,或者“尝试过”,一枪没开是遗憾,开了没打中就拉倒了,纠结也没用。我们尽量避免自己成为那种一辈子没做过艰难决定,没冒过险的人,就可以了。
受过教育的成年人思考问题,一定要少用“平均”这个说法,多用“二八定律”,比如中国人平均收入×××,很多人还觉得我们的收入很低。接受过教育的人第一反应是,我国接近三亿人接近欧美的经济水平了啊。如果我国没有达到三亿人接近欧美的经济水平,那三亿人再来一次“二八定律”,最后那六千万人的经济水平妥妥达到欧美发达国家标准了。
三、除非比较特殊的情况,可以先选学校再选专业。你毕业两年后,基本上没人问你哪个专业的,因为很多专业你说了别人也不懂,但是你说大学名字,别人永远都可以第一时间给你的大学找个位置放进去,比如“厉害,名校啊”,或者“嗯,还不错,应该不是985就是211”,再或者“没咋听说过,应该和驻马店职业技术学校差不多吧”。等到你工作五年之后,几乎不会有人关心你的专业了,你的标签是由你之前工作的单位和你的毕业学校共同组成的。
四、大学其实教不了你多少东西,基本全靠毕业后自己学,这也是为什么我一直在说保持学习的能力。“学习的能力”有两重意思,一是不惧怕学习新东西,二是知道学习曲线,能够顺利抗过学习新知识初期的挫折感。
我主要讲下我了解比较多的专业,免得误人子弟:
我先讲一下金融领域,我对金融领域比较了解。大家首先要纠正“学金融就可以赚大钱”的荒谬认知。相比其他领域,金融领域更像是“明星圈”。世界上有两种职业,一种是呈现出明显的“头部效应”,也就是这个行业里1%的人拿走了99%的钱,金融就是这么一个领域;此外还有直播行业,头部的主播一晚上可以赚一辆法拉利,头部以下的主播只能喝汤。另一种是金字塔形的,头部的工作人员能赚很多,但是不会拿走太多,比如码农领域,我们公司最顶尖的码农跟普通码农的收入也超不过三倍。
好像很多从事金融的人都爱历史,因为我也爱好历史的缘故,认识了一堆从事金融行业的。我哥以前非常仰慕金融领域的金领气质,名校物理专业毕业,数学非常厉害,自信满满地进入了金融领域,梦想着用数学搞个模型之类,就像华尔街那些精英似的玩交易。后来他去了国内知名的一个基金公司,变成了一个金融行业的中介。是的,生活就是这么惨无人道。
你以为的金融从业者都打扮得光鲜亮丽,坐在豪华的办公室里操作着计算机,在金融的世界里指点江山。而现实里绝大部分金融从业者都是站在街头,摆上一个小桌子、小凳子之类的在那里招揽办信用卡的人。
当然了,我哥做金融中介不代表他赚得不多,他的主要工作是说服一些有钱人去买他们公司的一些理财产品,他从中抽成,旱涝保收。合同里写得很清楚,盈亏由客户自负,他们中介主要收固定的管理费。通过这么多年的折腾,他成功取得了一群有钱人的信任,每年都会投,他每年就算不去开发新客户,收入也比那些互联网大公司的产品经理赚得多。
我问过他金融行业的事,他表示绝大部分都是做金融中介的,因为这个领域最难的事情不是怎么交易怎么赚钱,绝大部分交易员的交易盈利情况都赶不上大盘涨幅,剩下的交易员业绩还不如只猴。既然这样,往往基金公司会买一个组合,也就是一堆以往业绩不错的股票,放在那里慢慢涨,跟着大盘自由摇摆,基金公司最重要的任务就是去找客户买基金之类。有了钱以后什么都好说。
大部分银行或者金融公司招聘工作人员,很多人被招聘了以后经常是当了前台,痛苦至极。每年都有一堆人找我说这事,当然了,我也只能是听听,给不出什么合理建议。
金融专业的人严重过剩。最近五年,我每年都会去一线招聘,因为现在国内的大公司,比如腾讯、阿里巴巴、华为等大公司,都开始让项目负责人去招聘,人事经理只负责把关,看看应聘的人有没有精神病或者心理素质怎么样,所以我这样的技术相关领域的就得去招聘。我在招聘的过程中发现一个问题,就是海归[1]太多了。软件行业海归非常多,金融行业的海归更多。可能是拜前些年对海归的无底线崇拜,大批在国内考不上好大学的孩子被送到了海外去深造,这些人严重拉低了海归的含金量。
最近几年人事经理基本都专业化了,小公司我不知道,大公司的人事部门到处是留学归来的Linda和Abby,事实上留学生回国做人事已经是行业惯例了。这些留学归来的人当然最了解留学生——有次吃饭,一个叫Jade的女生给我们普及了哪些大学是可以直接花钱上的,哪些大学只收有钱人,哪些大学是普通人无论如何也上不起的。我当时听得一愣一愣的,毕竟我们这些国内的学生十万以内就可以把大学读完,有人甚至没带钱就去上大学,靠的是亲戚、邻居的支持就能把大学读完。人家留学生要花数百万。她一句话总结,英联邦的毕业生整体优势非常低,北美的相对较高。英联邦包括英国、澳大利亚、新西兰等,大家去留学的时候仔细考虑下。这个趋势现在已经很明显,再过五六年会更加明显。
为什么讲到留学生了呢?因为这些年去海外留学的十个里面有七个是金融专业,而金融行业的整体需求量并不高。
如果你家里条件好,并且对这个金融行业心里有数再去报考;如果家境一般,以为学了金融就可以赚钱,我劝你尽快放弃幻想。
再来说下码农。码农里有将近一半不是计算机专业或者软件专业出身的,很多都是自动化机械专业的,也就是说如果你大学没读计算机专业,将来去做计算机相关的专业,也没有太大门槛。
能够拿到高工资主要是集中在互联网大公司中,这些公司财大气粗,所以工资高。此外还有一些刚融到资的公司,这类公司现在很少了。2018年的时候,有的刚融到资的公司工资高到离谱。我曾招聘过一个人,转眼就被一家新公司以月薪八万抢去做区块链了,后来市场上突然没钱了,倒闭了一堆企业,其中包括这个人去的企业,因此这个人也失业了。
虽然码农的工资不会再像以前一样出现井喷式的高工资了,但是码农这种智力密集而且有一定门槛的行业,注定在很长一段时间内工资不会太低。
大家肯定有纳闷的地方,那么多人去做码农,会不会饱和?饱和倒是也够呛,而且码农也分三六九等,饱和之后可能会拉低整体的工资,不过优秀的码农依旧可以去好的公司继续升职加薪。
每年码农写那么多代码,代码就跟吃剩下的饭一样,放久了就发霉——如果没人维护,产品很快就没法用了,这也是我为什么说将来代码会越来越多,需要的码农也越来越多。至于人工智能,听听就得了。如果你现在就担心人工智能会取代你,干什么都担心惊怕,那你趁早别干了,不用等人工智能取代你,你周围的人就把你给取代了。
当然,做通信工程师之类的码农并不是十分轻松的事情,尤其国家级的通信网络复杂极了,每台设备都有上亿行代码,而且包括几十个厂商,出现了不以人意志为转移的混沌性和随机性,经常不知道它为什么坏了,不知道为什么它又自己好了,所以各国都尽力想一些办法来增加网络的稳定性,一些国家甚至有给服务器开光的习惯。
很多读者觉得我写的历史很有意思,于是他们就问我将来去读历史专业怎么样。我非常不建议读历史专业。如果你喜欢历史的话,和我一样研究就可以了,不然学了这个专业大概率一毕业就失业。
我也不太建议家里没有经济实力的人去读经济学专业,参考我上面讲到的金融学专业的就业情况。从我了解到的情况来看,经济、金融知识主要对写财经类文章那类人有大的价值,因为那些复杂的金融用语只有在吹牛时候才有用,真实的金融业主要是谈项目、谈分红。你天天讲经济学术语和金融学术语,但是你的客户是那些有钱人或者企业家,他们既不懂经济学又不懂金融。想赚钱,你学经济学和金融学还不如去学会计。
我之前做过调查,几乎所有学了医的小伙伴都反应自己极其忙,赚钱虽然还行,但是真的非常疲劳。
如果你去过美国就会发现,那边的医生都是金领。我之前提到过,我认识的一个美国牙医家里竟然有小飞机,着实把我吓了一跳,后来才知道美国牙医能赚这么多的有很多。医生在美国是卖高端服务的。在我们国家,医生是为老百姓服务的,他们真的很辛苦,是很值得我们尊敬的群体。
我说了这么多,很多人会问,你能不能不拐弯抹角,能不能一句话概括下?——总结起来就是:如果你家很有钱,选什么都没问题,你甚至可以去学哲学。但是如果你跟我一样出身很普通,我建议往技术层面的专业上靠,技术类的专业几个好处:
首先,技术是相通的,而且你学了技术性强的专业,选择的余地要大得多——你学了自动化专业分分钟可以去做计算机专业的事,你实在做不了计算机专业相关的事情,还可以去链家卖房。
如果你不是技术专业出身,想去做技术,你就得从头再学技术,不管是时间成本,还是金钱成本,都要大得多。这也是为什么学数学的人转行比较容易,尽管我经常说月薪两三万的码农只用得着初中数学,主要是他们学的是硬通货的知识。
其次,学习技术可以有效治疗自大狂的病。一般长期不干技术,就会产生一种怀才不遇的错觉。只有你学技术,才会知道随便一个小问题都可以让人折腾好几个通宵,人多多少少会谦恭一些;也会开始意识到社会比较复杂,而不是天天批评社会这不正常那又不对。
最后,学了技术强的专业容易找工作,骑驴找马嘛。玩过《绝地求生》的人都知道,有时候着急找辆车,跑断腿都找不到,但是一旦先找辆车,哪怕是个破摩托,很快就可以找到别的车,找到车之后就能发现到处是车。把握住一个大机会之后,人生到处是机会。
另外,大家不要被社会上各种猎奇、夸张的新闻给迷惑了双眼,现在远远没到“月薪一万活不下去”的地步,埋头做好自己的事,抬头随时关注趋势,毕竟,坐在潮头,奋斗一年顶十年。
* * *
[1]“海归”指的是海外留学回国就业的人员。