不怕各位笑话,我大学毕业做程序员,第一个月工资是 600 RMB。
其中拿出一部分买了辆自行车,剩下的交给妈妈保管,自行车骑了两个多月就丢了。
算来到现在已经做了18年程序员了,下午还刚解决一个iOS上内存泄漏问题,顺便优化了点性能。
我应该不能算低级码农了,说说我是怎么过来的。
你得热爱写程序。我本来的专业是化学,无机化学方向的,但是我大学的时候就爱写程序,喜爱程度仅次于玩游戏,泡在大学的机房里,除了玩游戏外所有时间都用来写代码了。
没有真心的喜爱有时候遇到困难是坚持不下去的,我那时当然买不起电脑,大学导师给我了台PC可以随便用,那台机器在他的一个实验室里,而那个实验室暖气坏了,我在冬天穿着棉大衣每天在里面呆几个小时,北方的冬天在没有暖气的房间,你想像下。物质条件的困难是一种,还有一种技术上的困难,读不懂的代码文档,调不通的程序,莫名其妙的bug,搞了很久毫无进展的技术难题,都需要一种动力让自己坚持下去。
你得懂得抓住机会去表现自己。机会不会砸到你头上,要自己抓。我刚工作的公司,有个数据分析程序,要运行5-6个小时才出结果,所以他们都是下班前开始运行,等第二天早上看结果。我就不信这个程序需要运行那么久,于是下班后自己分析代码,重写了排序和查找部分算法,用空间换时间,并不是很难的东西,只是以前没人去做。那个程序被我优化到只需要运行15分钟,此后他们就可以当天看结果了。老板觉得我不错,工资涨到了900 RMB。
你得懂得环境的重要性。我在天津呆了一年多,就觉得软件产业的氛围太差了,在报纸杂志上读到各种中关村的传奇,很向往,于是下决心去北京。好的环境给人提供了更多学习和发展的机会,最重要的是让你能认识很多优秀的人,能从他们身上学习,能被他们激励。我到北京就有了和雷军共事的机会,金山当时很小,可以近距离观察行业里最精英的人是怎么样的。和跑得快的人一起跑也能跑得更快。
你得能持续学习。总有人觉得学什么技术很重要,大量的讨论都是说学哪个语言好,哪个平台好。其实学习的能力本身最重要,能随需应变,工作中需要什么就能快速学会,并且学精学透,而不是满足肤浅的了解。
你得有个好身体。这点我做得很不好,从小就体育极差,1000米跑从来不及格,一直到40岁都没怎么锻炼,可能是运气好,也可能是没有烟酒嗜好,身体没出什么大问题,但是小毛病还是有的,颈椎腰椎手腕都不是很舒服,牙齿也不太乐观。我有个习惯,每年生日的那个月都要做一项重要改变,那么40岁这次就留给健身吧。去了两个月健身房,感觉身体清爽多了。
谈学什么的都是瞎扯,首先随便找几篇知名的论文读一读,读不读的明白这都不是重点,本科生能读明白的没几个,那么如果真的想读明白某一篇论文背后的思想,基本一个月就过去了,在这期间你会自己搜索各种有关的东西,那么这一个月你要是能坚持下来,说明你基本有成为工程师的素质。如果没有,那么请趁早想好后路,避免以后一不小心进坑了的尴尬。因为英语和数学会成为你生活的主旋律,而且每天不是在写代码 ,而是在写文档,复制粘贴,不管是CV源代码还是CV思想大概率都是这些东西,想搞创新,那更离不开读论文,实现系统,写论文了。
那么本科生应该学什么?
C9什么期末考试水平不太清楚,大多数本科院校的计算机考试你都可以通过背诵PPT八股文来过掉甚至还能拿到不错的分数。
成为工程师的前提,是大量的知识储备和工程经验,那么给你一条路径
经过上面的步骤,你可以收获三个项目
这三个东西,可能需要你大概一年半的时间,然后,停下来,去读一本书
普林斯顿数学分析读本
这本书,看着都是一堆证明,但是让你能很快的学会那帮学数学的人的语言,然后看懂一些奇奇怪怪的算法证明,还有论文,未来能帮助你更快的追踪技术的趋势。
后面就随意了
其他的 CV AI 方向就不太清楚了,按照上面这个路径,基本本科毕业吊打大部分985的水货计算机研究生问题不太大了。
最后选好一门语言很重要,可以用C/C++,当然也可以用Go/Rust, python 什么都可以,因为无论你用什么东西,在你玩过编译器以后,就都一样了。
以上就可以避免成为普通的搬转人,和垃圾的 CURD Boy,当然这一切都建立在你能有足够的兴趣前提下,并且在大学能享受苦行僧一般的生活,不然只能短期不太低级,长期来看还是挺低级的
这个问题是很久以前提出的了,现在的码农应该没有月工资两三千的,最底层的运维岗位工资也有六千以上,业余时间偶尔接单写小程序一个月都能赚两三千
【重要提示】
该回答仅陈述个人经历,不代表具备可复制性,亦不构成职业规划建议,各位计算机专业从业者应审慎看待以下内容,辩证思考其合理性。
在任何时候,习得扎实的专业能力都无疑是正确的事。
不要写代码。
以下是毕业十五年的历程。
2006年毕业,计算机科学与技术,本科,211。
各科勉强及格,不会编程,真不会,这个专业的都知道,不做项目不自学,光靠听课,根本没有上手写代码的能力。
开发、测试、技术支持、管培生、销售、售前...各种面试都无疾而终。
终于在临毕业前找到一份接电话的工作,月薪1500。
干了一年,没学会什么,英语练的挺好,凭着这个找了个大牌外企技术支持的活儿,技术还是不懂,月薪5000。
干了五年,工资加到13000,开始转项目经理,能力一塌糊涂,项目带一个砸一个,考pmp都没过。又干了五年,工资加到28000。不得不说,外企加薪和福利各方面真的不错。
裁员,拿了40多万现金走人,去了一家民企做IT主管,月薪30000,干了两年,公司不行了,可能也是发现我太水了,裁员,没有赔偿。
找了大概三个月,去了一家上市民企做IT副职,年薪80万,干了两年,在政治斗争中阵亡,裁员,奖金赔偿一起拿了20多万。
找了大概又三个月,去了一家民企,IT一号位,俗称CIO,年薪现金100万,其他是虚的不提。
完。
补充一点点信息:我是那种下限高上限低的人,脑子算够用,学东西快,但每每浅尝辄止,所以没办法成为一个领域的大牛,但临时准备一下应付面试够了,而且到了C-level的职位,其实大家都不怎么实操了,更多的是看你跟老板合不合拍,能不能听懂老板的顶层设计。
15年的职业历程中,有10年在微软这样的老牌美资外企稳定工作,且绩效非常好,大部分同事的绩效都是合格,我10年来只有一两次是合格,其他都是优异甚至杰出,曾经因为工作表现好(全球10万人的大企业,绩效排前3%)被派到国外带薪休假一个月。一直在技术岗,学得快,上手了够用了就不学了。绩效好另一个主要的原因,是英语好,莫名其妙的好,常被老外误认为是移民二代,其实之前国门都没出过,初中之前不认识字母表。
计算机专业出身,虽然不会代码,但管理一支技术团队是完全没问题的,不太会出现听不懂的内容。
因为不懂技术,所以反而有了大量的时间来熟悉业务,所以跟业务侧debate也不心虚,完全可以hold住。
决定来说点儿干货!
月薪两三千,不说北上广深,就算是三四线城市也会过得很辛苦吧,所以,能有避免成为低级码农的觉悟,就是一个好的开始!
如果你还是一名在校大学生,泥萌一定要对高中老师的“谎言”有所觉悟!“大学生活悠闲浪漫,没事儿就散散步,看看景。”“人生能有几回搏?现在是很辛苦,等上了大学就轻松了。”这只是高中老师们的“激将法”。大学期间务必要上进、自律,为成就优秀的自己打下良好基础。
在校期间不要轻视任何一门专业相关课程,基础打得越牢,将越利于你在实际工作中的发挥。在实际工作中,你可能不仅要会写程序,更要懂算法的原理,必要时还要懂得优化算法,甚至是创造新的算法。
积极进行知识技能实践。比如反复练习课本上的案例,熟悉代码,搞懂其中的运行技巧;到开源中国、Github等网站查阅现有的优秀项目的代码,并学会举一反三;参加实习,找一个靠谱的公司踏踏实实地从码农做起,感受实际工作的环境等。
不断向优秀进阶,你需要将以下好习惯贯穿程序员生涯的始终。
1. 定位清晰,坚持不懈。
IT领域技术栈非常庞大,你不可能同时学完所有的知识,因此有所取舍是相当重要的,避免贪多嚼不烂。一定要根据自己的实际情况及个人兴趣来确定自己专攻的方向:
确定了专攻方向便要持之以恒地坚持下去,如果你想成为一名高手,就要对自己的主力语言达到精通的程度。当然,并不是说确定了主攻方向,其他技术就不需要关心了,而是要努力把自己发展成一个T形人才,深入学习专攻领域外,对其他技术也要广泛涉猎。
2. 熟读相关书籍,培养程序员素养
通过阅读程序员相关的经典书籍,掌握程序员应该掌握的通用原则。比如《代码大全》、《程序员修炼之道》、《编程珠玑》、《代码整洁之道》等经典书籍一定不要错过,这是快速修炼自己的技术水平的必由之路。
而且,如果你能坚持每个月都能读完一本专业好书,两年之内,你便有可能成为该领域的顶尖人物,这是业内很多顶尖专家认同的观点。所以,从现在开始,为了成为行业大牛,坚持读书吧!
3. 充分驾驭IDE
选择一个合适的IDE/文本编辑器和选择语言一样重要!不要换来换去,坚持使用下去,熟悉IDE的每个细节、快捷键及特性,做到烂熟于心,可以取得事半功倍的效果。用JAVA的话,可以用Eclipse或者IntelliJ Idea;写Python推荐PyCharm;写C、C++,Visual Studio会是不错的选择。
当然,不要专一到离开了自己的IDE环境就不会写代码了哦!
4. 成为Git高手
如果你在Google中输入“git version control”,可以得到数以百万计的返回结果,显然,Git已经成为业界标准,熟练操作Git是成为一个高级程序员必不可少的技能。推荐阅读 《PRO GIT》,了解如何成为一名Git高手,希望能对你有帮助。
5. 精通框架并让重构成为习惯
精通框架可以把你从重复造轮子的窘境中解救出来。框架是项目的基础,所以你拿出学习语言的热情来进行框架学习不为过。
有很多程序员都有过这种经历:拿了别人的框架过来用,没有仔细推敲的情况下便飞快地码好了所有代码,信心满满地提交之后却发现由于框架的不合理而导致整个程序跑不通,不得不自己再重写框架。因此,精通框架可以有效提高工作效率。
由此也可以看出,重构是非常重要的一项技能,随着代码的增加,需求的变更,重构往往不可避免。关于重构,可以读一下Martin Fowler的《重构:改善既有代码的设计》,案例的话,可以看一下酷狗音乐的大数据平台重构。
6. 坚持TDD测试驱动开发
TDD已经成为了软件开发的标准,对于老程序员来说,直接写代码可能更加轻松简单,但是缺点是品质不可控,你总不知道什么地方会出篓子。所以,拥抱TDD是大势所趋,越早习惯TDD,对你未来的发展助益越大。
7. 成为命令行专家
命令行操作起来不仅仅是酷炫,还可以节省大量的时间。熟悉SHELL及命令行技术,对于提高工作效率是相当重要的。要达到传说中用自动化命令完成大部分工作的水平,熟练的命令行技术是必要途径,关于命令行,可以参考《Conquering the Command Line》
8. 培养团队管理及协作技能
程序员往往都喜欢单打独斗,但是事实却证明,天才的程序员敌不过资质平庸的协作团队!因为开发工作并不是一项个人工作,而是需要团队的智慧来解决各种问题,实现客户需求。然而,团队管理及协作却是一项容易被忽视的能力,说白了是情商的问题:知道自己很优秀,却并不急于向别人证明;能够编写清晰易懂的代码,而不刻意在代码中炫技;乐于帮助团队成员提升……一个高情商的人懂得关注他人的利益和感受,强调共赢和团队受益。
9. 关注开源社区
无论你的技艺多么高超,总是藏着掖着也很难出名。注重总结和分享,多写写辅导新人的教程,分享下自己工作中的感悟和经验技巧,把自己过去的好项目在Github上分享,或者将自己的工具分享出来,积极参加到开源项目的建设与改进当中,都有可能会让你声名鹊起,让更多人认识你。
最后,程序员一定要打工吗?
NO!
当你技术成熟、经验丰富之后,会有各种优秀的人员拉你入伙创业、或者加入他们的创业公司,到那时你会有更多的选择空间。所以,你一定要保持一颗不断学习不断进步的心!
纸上得来终觉浅,绝知此事要躬行。去吧,皮卡丘!
推荐阅读:
去打游戏
先下结论:电影想把Freddie塑造成一个有人性的神,却忘了真正的Freddie只是一个有神性的人
如果作为一部粉丝向的情怀片,《波》已经达到了满分,哪怕不谈对细节出色的把控,光是最后二十分钟的神级还原已经足够让所有的情怀在we are the champions中泪流满面
感受一下当时的直播:
Live Aid https://www.zhihu.com/video/1092941240030597120
但是作为一部传记片,《波》还是太流程化了,才华横溢的主角惊艳出场,遇到小人,遭遇挫折,众叛亲离,踢开小人,亲友重聚,完美收场。作为人物小传也算及格,但是对于Freddie这样的传奇人物的剖析还是不够大胆,想要表现其人性的一面,又不敢去探索Freddie其实也有自私功利的角落,想要表现其亦男亦女的魅力,却又只是浮于外表没有触碰到灵魂,以至于片子自始至终有种畏手畏脚的憋屈感。
不过不管受众是谁,《波西米亚狂想曲》至少是一部及格线以上的作品,再加上Queen的音乐加成,哪怕不至于血脉喷张,但让观众在电影院点点头抖抖腿还是绰绰有余了
看完电影之后,再看到波西米亚狂想曲的歌词,或许会有一些不一样的体会
Is this the real life
Is this just fantasy
Caught in a landslide. No escape from reality
Open your eyes.Look up to the skies and see
I'm just a poor boy, I need no sympathy
Because I'm easy come, easy go,A little high, little low,
Anyway the wind blows, doesn't really matter to me
freddie的生命像一场华丽的错觉,但他所留下来的,is not fantasy