写在前面
今天笔者想和大家来讨论一下做个人项目的问题。想必不用笔者强调了,作为码农,做个人项目是增添履历很重要的一环。笔者也不例外,但是既然做个人项目,就要做值钱的项目,像图书管理系统啥的,在网上都已经做烂掉了。做了也没啥意义,那么要做一个好项目出来,就目前这个互联网环境来看,网上大部分项目都没值钱到哪里去。很多都是机构为了忽悠去报课的噱头。
那么没办法,笔者只好自己从零开始做,我们都知道要做一个项目第一件事情就是提需求,但这件事情平常在公司都是产品去做的。 而且产品也不负责提需求,只是负责告知需求。笔者在目前一个公司项目里,得知用户也是第一次做这里的业务的软件很多需求用户也提不出来。
所以第一件事情就把笔者难倒了,到底要做什么呢?
笔者用了各种办法,想了一个礼拜,最后得出的结果是:nothing,no ideas,useless empty brain。
那么,我们试着回到笔者之前和大家讨论的,当自己没方向的时候就把步骤列出来。我们要做一个项目,到底要做哪些事情,事实上,最简单的概括就是啥,设计需求,理解需求,实现需求。
从兵法的角度来说,如果对手的数量比我们多,我们就需要分而治之,各个击破。
摸着石头过河
也就是说,我们目前面临着三线作战,同学们如果直接头铁冲上去,一定会力不从心。所以我们一开始要解决的是怎么设计一个成熟的需求。
马克思说过:实践是认识的来源:认识的内容是在实践活动的基础上产生和发展的。
笔者在公司里也做过一个项目,这个项目的甲方爸爸也是第一次做这方面业务的软件,笔者几次去找项目经理要需求,得到的回复就是甲方也提不出来,只能是走一步看一步。
那么和笔者前面提到的内容是一样的,所以为啥笔者提到要用最简单的技术很简单。举个例子,如果大家直接上技术,那么改动的代价可能就会很大。如果同学对某项技术不熟悉,可能就会出现改一个地方,全盘炸的现象。或者,做着做着发现设计不合理,这个时候大家肯定不愿意从头再来。那只能是不断地堆积,最后成了一堆屎山代码。时间浪费了,但是却没出啥成果。毕竟,同学们不可能拿屎山代码写在简历上。
因此,在一开始我们要把试错的代价压到最低,毕竟我们现在要做的只是需要一份很好的需求。
我们对项目设计和编码技术就不用过多地苛求,那么笔者的方法是什么呢,不知道大家在最早做课设的时候还记不记得。实际上我们就一个Java语言,加一个数据库,也能做项目,所以,笔者的建议就是,最开始用最简单的技术,编程语言+数据库完事了,尽管看起来很原始,但这只是个试验品,难看就难看呗。
这样我们就不必考虑项目设计和技术的问题,专心敲代码想需求就行,有时候很多需求要实际看到内容才会感受到和想到。
边完善边理解
我们在这样一次次的尝试中,需求的内容会逐渐增加,同时,由于我们是在摸索中前进的,因此我们对需求的理解也会越来越深入。
同学们,这个时候如果你在敲代码的话,千万别忘了,我们现在在干什么?没错,我们只是在制作一份成熟的需求文档,笔者可从来没有说过一定要用最简单的技术实现所有的需求。敲代码对想需求来说只是一个辅助工作而已。你只要想到了任何需求,都可以往需求文档上加。
用这个方法有三个作用
- 给大家敲代码找找感觉,对很多喜欢敲代码的同学来说,让他空想简直是酷刑
- 技术只是个工具,人是玩工具的,但不能被工具玩,这么做可以将工具对同学们的限制降到最低
- 技术对需求实现是一个雏形,是对需求分析很重要的理解
需求文档成熟以后,我们就完成了最重要的一步,后续的问题也就相对简单了。刚才笔者也提到了,我们用这种方法做出来的需求文档,需求理解是有一定深度的,因此需求分析也就相对好做的多了。
学习不忘实践
这个时候就来到了大家最喜欢在简历上内卷的部分,想必同学们经常服务器托管网会看到这种【SpringBoot+微服务+前后端分离+Vue+ElementUI+Docker+Mysql+Redis】,当然这个时候就看同学们平时勤不勤奋了,学习技术我想不用笔者再过多阐述了吧。
笔者只强调一点,技多不压身,工作可以不卖力,学习请同学们一而再,再而三地让自己变得更贪婪。
这里纠正大家一个思维误区,很多同学可能想着做项目要一劳永逸,我把所有的技术都学完了,只做一个终极项目出来,然后写到简历上趴着啃个几年再说。
那么这个说法也是有问题的:
- 旧的技术学不完:就一个Java语言就够学一辈子了,同学们一定要有工匠精神,一定要学着给自己的项目打零分,你永远可以做的比以前更好
- 新的技术会更多:一个项目啃几年那么,到时候肯定早就过时了。那么就会出现,别人都在工业革命了,你还在那沉迷于三跪九叩
- 技术也有适用性:不同的需求适合的技术也是不同的,同学你不可能指望一个服务器托管网项目需求覆盖所有的技术
笔者的建议是什么呢,大家还是回到我们的目的上去,我们做个人项目的目的是什么,对的,不光是为了在简历上加一个筹码,也是为了对技术做一个很好的训练。所以我们还有一个目的就是为了实践好我们的技术。所以呢,笔者建议大家学习技术和项目实践走一个并发,不管你现在学成什么样,只管做项目,一开始肯定是比较差的,但是最后肯定会做的越来越好
跨时空的交汇
这就好比造武器一样,大家有兴趣去看看【1927年至2022年中国军服变迁简史】,最后那一刻小米加步枪和美军现代化的交汇一定会让大家感到泪目,所以这里也是笔者给大家的建议,大家可以自己每个阶段做的项目可以做一个截图。等到过了两三年时间,甚至更久的时间,将自己过去的成长拿出来看看,大家这个时候就会发现自己已经走得很远了。有些同学可能会质疑笔者这个走形式主义,多此一举。当然不是,学习这个东西是需要正反馈的,当同学们从学习中获得巨大的成就感的时候,同学们的热情就会变得非常高。这个时候,大家就会像滚雪球一样拼命学,直到走向人生巅峰。
附注
那么今天就和大家聊到这里,希望笔者可以给大家带来一些帮助,笔者接下来会更加努力的工作,给大家带来更多的经验分享,希望同学们工作顺利,早日升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰,想想是不是还有点小激动呢
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 对话音视频牛哥:如何设计功能齐全的跨平台低延迟RTMP播放器
开发背景 2015年,我们在做移动单兵应急指挥项目的时候,推送端采用了RTMP方案,这在当时算是介入RTMP比较早的了,RTMP推送模块做好以后,我们找了市面上VLC还有Vitamio,来测试整体延迟,实际效果真的不尽人意,大家知道,应急指挥系统,除了稳定性外…