你也许会问编程怎么会是游戏?如果拿编程和游戏对比,你会发现两者十分相似:都需要投入大量的时间,还需要你掌握很多技巧。
你还会面临职业的选择(我是做个游戏开发工程师,还是做个前端工程师?),最后你会走上冒险的旅程(我是去社会闯闯,还是继续修炼读研?)。
在这个过程中,不管你是遇到C语言这种牛魔王,还是Python大蟒蛇,你都需要不断提升自己的能力,点亮各种技能树,要么打败它们,要么被它们打败。
然而并不是每个人都能玩好这款游戏,因为游戏一开始就是困难模式。
初次接触编程会感到其高深莫测,错综复杂。多数教材充斥着眼花缭乱的专业名词,每节课堂都有听不懂的专业术语。遇到的问题,也没有人可以答疑解惑。最后不得不放弃。
为什么你会玩不好?
没有掌握规则
你也许会对编程的学习感到十分不适应,这并不奇怪,因为它和你十多年来的教育有本质的区别。以前的规则一直是记忆和理解一个一个的知识点,然后做题,十道题做对六道及格,做对十道满分,但你并没有从中学过创造。
编程是一件有趣且富有创造性的事情,所以不要光听课,光看书看视频,学习编程一定要先从搭建开发环境开始,一定是要动起手来才会变得容易。
不明确自己的方向
有一个师妹,本科的时候觉得没有学到什么东西,于是考了研。然而考上之后并没解决她的焦虑:应该学什么好?
师妹坚信选择比努力重要。于是今天学Java,做Android开发。没多久,发现php是最好的语言,又搞一下后端。听说机器学习很火,于是学起了python。
这种东挠一下,西挠一下的学习,让她越挠越痒,眼看快要研二了,但没有一个技术是学得好的。
怀疑智商
我的师弟师妹学不好一门技术,很多时候会自嘲自己脑子笨,以寻求心理的安慰,相比其他人会更快放弃。其实智商不是问题,逆商才是,即面对逆境时的反应方式。
“只要能来到大学,证明智商不是问题”,有个师姐曾经这么跟我说。诚然,这位师姐也承认自己并不是天资禀赋,但仍然坚持挑战难度极高的ACM(国际大学生程序设计竞赛),但在我看来她面对逆境真的一点也不畏惧。
师姐日日夜夜在校队中练习,从刚开始的一天只能做一道题,结果还是WA(Wrong Answer)。中途无数次怀疑智商,继续坚持,AC(Accepted)。尽管一路曲折,她终于做到AC游刃有余。后来在国家级的比赛中获得了金奖。还没有毕业就拿到10多份offer,最后她选择了上海的一家外企。
我的4点建议
1. 如果时间充足就打好基础,这样会走得更远
如果你是科班出身,并且有充足的时间。建议你从C语言开始,因为C语言更加契合计算机系统和底层。学习系统和底层的知识是很有必要的,这会决定你以后职业生涯的高度。
如果你是非科班出身,可以先从Python、php或者JavaScript入手,尝试快速做出一些小应用,培养起兴趣,再进一步了解系统知识。
学习编程并不只是语言本身,就像学习语言并不只是识字造句这么简单,最终是为了表达。学习编程同样也是为了“表达”,只是对象是计算机。它需要你掌握各行各业的需求和原理,然后用编程语言告诉计算机,让计算机为你工作。
所以“学习编程”就是学习“如何用计算机解决问题”。如果你只是学编程语言本身,那就本末倒置了。
2. 教材很重要,合适的教材更重要
市面上有各种各样的教材,但大多数对初学者来说并不友好。我比较习惯在知乎或者豆瓣上去找合适的教材。然而有时候知乎上推荐的教材虽然经典,却未必适合你。
例如我刚开始学算法与数据结构,买了一本大部头的《算法导论》,看得天旋地转。再者刚开始学设计模式,看的GoF的《设计模式》,枯燥乏味。
并不是这些教材不好,而是没有到用的时候,不能产生共鸣。例如我曾经写烂了两个项目,再去看《设计模式》才发现原来是这么有用。
在代码图志中,会总结分析市面教材的优缺点,并推荐不同的阶段的人最适合看的书,以避免在教材上踩坑。
3. 做项目,做项目,做项目
重要的事情说三遍,以项目驱动式的方式学习编程。但我并不是强调做项目的数量,而是质量。
举个简单的例子,我开始学习C语言的时候,一直琢磨能不能用C语言做个贪吃蛇的游戏,即使第一个版本是黑白控制台输出的,蛇和食物都是一个一个*号显示,也算是一个完整的项目。
第二个版本为了让游戏的画面变得精致,我用图形库去改进。
第三个版本我可以移植到手机,想方设法增加创意,再加上分享功能,让更多人去体验你的游戏,搞得好说不定能赚点钱哦!
在这个过程当中,你就像做产品一样做自己的项目。不仅能提升技术,还能锻炼你的产品思维。
然而项目驱动的学习方式也有它的不足之处。因为你是根据项目的需要学习的技术,所以掌握的知识点是零碎。这样的学习并不系统,所以我建议,除了做项目之外,你还需要读一本经典的书籍,以便把之前所学的知识点串起来。
4. 面试前的充分准备
以前面试了很多Android开发者,发现他们的准备真的不够充分。因为他们很多时候并没有搞懂招聘的需求是什么。
所以,学会分析一份JD是一件非常重要的事情。从JD中学习,犹如考试前掌握了出题方向。
有一点是肯定的,无论哪个方向,面试都会问到基础题、项目经验和算法题。对于自身的方向,有哪些基础要掌握的,项目有什么样的问题,如何解决都是必不可少的。最后,面试官会通过各种算法题考察你的代码能力,你也许不太愿意去做,但是刷题是必不可少的!
最后一点,就是大厂的招聘是有严格的时间限制的,过了这个村就没这个店。很多人以为大四再找实习也不迟,其实不少厂在大三/研二就开始招人,合适的人招够之后就结束。所以要留意好实习和校招的时间点哦。
PS:小志会不定期在公众号推送BAT等大厂的内推招聘信息,欢迎大家关注哦!