回顾大学四年,做过的落地实战项目大大小小也有几十个了,这些落地项目基本都已经在企业、个人、政府等正常上线使用了,包括移动端、微信小程序以及 PC 端。
其中有些项目是和同学组建团队一块开发的,有些则是我个人开发,还有一小部分是小鹿和读者一起开发的。
这些落地项目开发经验将成为步入社会最丰富的的履历。相比于其他的应届生,算是有这么一点点的优势吧。所以,作为过来人,对于在校生的项目实战方面的经验,小鹿不得不多啰嗦几句,总结有关落地项目大多数在校生遇到的一些棘手的问题。
考虑到关注俺的在校大学生偏多,这篇文章中所谈到的经验适合在校大学生、跨专业、非科班以及正在自学编程的小伙伴。
1、
咱先谈谈自学和教育中存在的缺陷。对于很多高校,其他学校大学如何授课咱不敢说,按照目前小鹿学校授课方式基本就是教科书式的读课本和 PPT,这也导致了我大学基本都处于逃课状态,上了四年,逃了四年。说点真心话,大学“洗脑”教育,简直就是丧良心。
如果你属于那种上课好好听讲的学生,理论课基本能听懂,考试基本都能轻松过,你会发现,毕业后,学校所学到的和就业要干的简直就是两个世界的东西。
之所以出现这种状况,原因很简单,大学教你专业课的教师很少开发经验和缺少完整的知识体系,而且技术发展很快,如果不能保持持续的学习,就业用到的技术和书本的教学内容是相差好几年的,好几年在互联网行业代表着什么,就不用再强调了。
再说了,如果专业课老师是位大牛,明明可以靠开发能力进入大公司,拿着年薪百万,它不香吗?嗯,如果你说就是放弃年薪百万,就想当个老师,那我就没话可说了。
为了避免幸存者偏差误区,不能以局部代表整体,但是大部分的学校教学基本是这个样子的,大部分的学生也在面临着这种困境。
如果你不是在名校,学校的教学是对你产生很大局限性的,本来编程就是动手实践的,再加上学校之教学理论,而且存在不完善性,这个时候迷茫真的不怪你,这是必然的。
还好,有时候学校会有课程实践课,如果让我来评测项目水平的话,和实际项目差的太远了,可以说无论你用什么技术去完成,只是在小打小闹罢了。后来跟阿里的一位技术大佬交流,也是重点谈到这个在校生存在项目经验的局限性问题。
2、
无论是非科班还是在校自学者,往往会陷入一个大坑就是,自学更偏向于理论,而非动手的实际项目。这一点,我个人陷入也挺深的,直到实习的时候,才发现被这个坑坑了我不轻。
说个最常见的情况,很多时候,我们通过书籍也好还是各种论坛博客学习也好,前期大多数的时间都在和基础理论打交道,这就导致出现眼高手低的情况。你明明看完了整本书的内容,一动手让你写代码或者写个页面,就感觉无从下手。
这个是我在前段时间带大家做前端实战的时候发现的,虽然看起来几个简简单单的网页,就是很多小伙伴看起来无从下手,从而使你更加的困惑和不解。
你会问,平常哪有什么实际项目可以练手,无非就是跟着视频敲敲代码,去 Github 找个项目源码看看,然后动手敲敲。这也在思维上,让我们大多数的自学者收到限制,因为你知道,没有实战项目可以练,只好闷头去学理论和基础,给自己打上了一个标签。
3、
鹿哥,你说了这么多,我也知道落地实战项目的重要性,关键是身边真的没有资源去接触到实战,尤其是在校大学生和大多数自学的小伙伴。
第一,我们首先要摆脱一种思维定式。很多自学编程的认为,只要有一定的基础才有资格去做实战项目,所以前期你一定在不断的学理论基础,我觉得这是很大一个误区。
没有谁规定是先要学基础才能做实战的,举两个小鹿教科书式的反面例子。
大二,我在学习移动端开发,只会些 java 基础语法,对面向对象编程掌握不深入,正好手头有一个安卓的移动端开发的企业项目。当时让我入伙一块开发,我还有些胆怯,毕竟觉得学了这点皮毛,做不出什么东西,还怕拖别人后腿。
但是后来把握住这个机会了,发现在实战中,很多基础理论学习和理解的更快了。那种来自落地项目的自信和力量充满着全身,到后来的自己开始组团给企业做项目。这也说明了,不是非要等你基础特别牢固再去接触实战项目,不要有这种思维想法,不然很容易被局限。
大三,第一次做的小程序是《小鹿留言助手》现在用户量 10k,虽然不是特别成功,但是这个产品是从零一手搭建的,之前没有接触过微信小程序。
全程靠摸索,遇到问题解决问题,而并没有先去把整个小程序基础学一遍,再去开发的。一个项目摸索下来,基本对小程序了如指掌了。
所以,我总结到,如果手头没有实战,不如从实际用户的需求出发,做一款小产品。先不要想着做高大上的产品,而是做一个满足用户需求的最简单的产品。
我记得给一个客户开发了一个产品,就一个简单的需求页面,当时我还是带着读者做的,一个页面,看起来简单,但是开发起来,各种用户体验方面的都没有考虑到,这些都是平常跟着视频做的项目涉及不到的点。
一个简单页面,加入商业广告后,还能有“睡后收入”。虽然不多,如果后期加点互联网思维,就让其成指数增长,关于商业这块,不是本篇主要的分享内容。
所以说,充分利用已有的资源和把握住每次机会,无论是在校生还是非科班自学,通过实战快速提高技术,还是蛮容易实现的。
4、
不同的项目水平,提高技术也是不同的。大厂的系统和小公司做的系统有着质的差别,这也是都喜欢进大厂锻炼的原因。
不同阶段,要拿不同水平的项目来进行历练。先从在校生说起,没做过项目的,不要对自己代码要求太高,前期只要把功能实现就很不错了,后续再进行完善,这是做实战的第一个阶段。
第二个阶段,当你可以给你一个简单需求可以相对轻松完成功能时,那说明你需要更高一层水平的项目来练手。
那我个人项目经历来说,在校做的一些项目,完全可以将用户的需求实现。要想进阶,必须找一些让自己做起来比较痛苦的项目,比如从零封装一个组件库,当你感觉到艰难的时候,说明又到了另一个层次水平。其实,就是一个不断给自己找刺激的过程。
小结
最后,有一点需要特别说明一下,从一个零基础到可以独自开发实际项目,这个过程是每一个编程开发者经历的,既然是必然经历的,面对项目,不要选择逃避,因为这都逃避不了的。
既然逃避不了,还不如迎难而上,提前过早的去接触各种项目,通过兴趣或者客户的需求,开发一些小产品,看看能不能得到用户的认可和喜欢,然后对自己做的项目进行反馈,这也是一个自学编程的一个突破口。
python爬虫人工智能大数据公众号