大家好,我是程序员鱼皮。学编程时,不知道大家有没有这样的困惑:
为什么同样是做一个项目,有的同学完成得很快、而且做完后就能自己做其他项目了?而我已经做了几个项目,还是感觉啥都不会?
这篇文章结合我自己、以及我带大家做项目的经验,给出一些建议。
只要能够做到下面这些点,保证你能够学好项目,掌握独立开发项目的能力。
学好项目的建议
1)选择合适的项目。一般情况下,做项目的前提是学完至少一门开发框架,比如前端的 Vue / React、后端的 Spring Boot。
一定要根据自己当前的技术栈和水平选择项目。比如刚学完框架时,不要为了赶时间一上来就做微服务、高并发项目,很容易吃不消,而是要先从掌握项目基本的开发流程开始,一步步学习项目开发方法、逐渐接受新的技术。
刚开始学项目感觉难、做得慢,是很正常的,因为你缺少知识和经验。如果发现项目中有太多你没学过的技术、并且没有对应的教程讲解,那么就先暂停项目,即时补充知识,再来学习。
2)多敲代码。我接触过一些同学,看完了几套视频教程后,还是无法自己敲项目,大概率就是因为做项目的过程中 “只顾着看教程” 了,没有自己动手练习。很多时候,看别人敲代码感觉并不难,但一看就会、一写就废,看完教程后,必须自己把每行代码都敲出来,才算是真正地学过这个项目,而不是将 “掌握理论”、“熟练背诵八股文” 作为学好项目的标准。
3)自主思考。在跟着视频教程做项目的过程中,尽量多思考,比如 “为什么要这么设计?这么设计有什么好处?为什么代码要这么写?有没有更好的写法?” 等等,必要时通过查阅资料来验证自己的思考。如果一味跟着讲师的节奏走,你或许可以完成项目,但是做完这个项目后,你可能很难自主做出一个类似的、或者更好的项目。有的时候,讲师说的不一定是最优解。
像我带大家做项目时,会经常引导大家思考。有时候故意留一个小坑,结果很多同学想都不想就跳到坑里了;也有些同学,能够提出和我不一样的实现方案,哪怕方案未必合理,能自己思考,就很棒了。
4)持续记录。在做项目的过程中,一定要多做笔记,不要觉得教程配套的笔记很详细了,自己就偷懒不写。笔记的作用是帮助自己复习,所以重点是记录自己做项目时的理解思考、遇到的问题和解决方案。此外,自己写过的每一行项目代码,都要完整地保存,等你学过更多技术知识后,再回过头来看自己的代码,一定会感叹自己的进步。
5)自主解决问题。这点是最重要的! 很多同学一遇到问题就紧张、害怕、担心自己解决不了无法继续做项目,然后就疯狂求助他人。
负责任的说,我写代码近 8 年,从学生时代开始,可以说 99% 的 Bug 都是自己解决的,所以大家不要有这种担心,因为你学的技术几乎都是主流的,你遇到过的 Bug,别人也一定遇到过。在遇到项目报错时,要先搜集足够多的错误信息(比如通过日志),然后查阅搜索引擎、技术社区、官方文档、甚至现在还可以问 AI,大概率是有解决方案的。即使真的没办法解决,在向他人求助前,要保证自己的问题描述地足够清楚、并且清晰列举已经尝试过的解决方案,别人才能更快地帮你解决。
6)多读官方文档。如今新技术层出不穷,不可能每个新技术都有好心人给你录制保姆级教程。而且工作后,很多公司可能会有自研技术,只有内部同事用过,我们只能通过阅读文档来解决。所以建议大家在学完一门新技术后,花 1 - 2 个小时就好,阅读一下官方文档,不仅能了解一些教程讲解之外的技术特性,还能提升自己阅读文档、学习新技术的能力。
7)多写文档。除了记笔记外,每做完一个项目,都必须写一篇完整的项目总结文档。不要嫌麻烦,写总结文档的过程中,你会从上帝视角再回顾一遍整个项目的背景、设计、实现、亮点等,帮助你复习巩固、加深印象。也便于你更快地将项目写在简历上、或者开源和分享自己的项目。有能力的同学可以多画一些图,比如功能模块图、架构图、UML 类图等,正所谓一图胜千言,绘图能力也是优秀程序员必备的特质。
如果你发现自己写不出总结文档,那么大概率你对这个项目还是不够熟悉,没有完全掌握,这时再对照着自己的笔记快速回顾吧。
如果时间比较充足,最好是能够口述整个项目的背景、技术栈、核心业务流程、核心设计、项目难点、开发过程、测试过程、上线过程、解决过最复杂的问题等等,锻炼自己的表达能力,也为后续的面试做了准备。
8)自主优化。跟着教程完成项目后,需要给项目增加几个扩展点、或者回顾自己的代码并寻找优化空间(比如优化代码规范),从而增加简历的区分度。这也是区别是否能够入职大厂的一个重要因素。这个优化不一定是刚完成项目时立刻就去做的,可以等过了半年后,再以现在的水平去优化之前做过的项目,所以鱼皮上面也建议了,自己写的代码一定要留好。
9)上线项目。在本地完成项目后,最好将项目上线,并且在线上正常运行一段时间,跑通整个流程,这是独立开发者必备的技能。此外,之前也分享过,上线项目能够大幅增加简历的真实性。
10)主动分享。将项目上线、并且编写好项目总结文档后,可以将项目和文档分享给其他同学。这样做的好处是,其他同学会帮助你 “测试” 网站,指出项目的不足之处,从而给你带来更多优化项目的思路和机会,而且对其他同学也有帮助,会给你提供更多的正反馈。鱼皮刚开始做分享也是这样,通过输出知识给自己带来更多学习知识的动力。
11)学会合作。时间有限的情况下,不需要前端和后端都看教程并且自己实现,可以找和自己方向互补的朋友,协作开发,一起参加一些竞赛也是极好的。
有同学会问了:鱼皮啊,上面这些点都要做到,不会很费时间么?
的确是这样,但是想学好编程、熟练做出项目,最最最重要的 2 点就是 掌握正确的方法 、并 投入大量的时间 ,没有什么捷径。
只要这两点都能做到,肯定能掌握独立开发项目的能力。
以上是通用的学好项目的建议,如果是学习鱼皮系列项目,可以按照以下顺序。
鱼皮系列项目的学习顺序
学完至少一门前端(比如 Vue / React)或后端框架(比如 Spring Boot)后,可以开始鱼皮原创项目系列学习。
一种最快速的学习方法是,先通过鱼皮的项目实战新技术,然后看完整的教程来系统学习新技术,事半功倍。
- 用户中心项目:适合新手入门,系统学习完整的项目开发流程和上线方法。
- 伙伴匹配系统:巩固开发流程,学习 Redis、事务、并发编程、大数据推荐思想等后端知识。
- API 开放平台:学习实践前后端模板开发 架构设计 SDK 开发 API 签名认证 Dubbo RPC Gateway 微服务网关。
- 聚合搜索平台:学习实践爬虫 Elastic Stack 设计模式 数据同步 JMeter 压力测试。
- 智能 BI 项目:学习实践异步化 线程池 RabbitMQ 消息队列 AI 应用开发 AIGC Prompt 优化。
- OJ 判题系统:学习实践前后端模板开发 多种设计模式 单体项目微服务改造 Linux 虚拟机远程开发 Docker 代码沙箱 Java 安全控制。
- 代码生成器共享平台:深入业务场景,学习实践命令行开发、模板引擎、Vert.x、设计模式、对象存储、性能优化、存储优化、系统设计、分布式任务调度系统等。