当前位置:首页 > > 程序员鱼皮
[导读]大家好,我是鲏。认识我的朋友都知道,我是一个实践派,相比研究枯燥的理论知识,我更喜欢做自己想做的项目,用技术来实现自己的想法的感觉真的很棒。所以从大学期间一直到现在,除了工作中的项目外,我依然保持着自己做项目的习惯,有坚持几个月薅光我头发的大项目、也有几小时搞定的娱乐练手项目。比如前两周羊了个羊小游戏很火的时候,我花了几个小时就上线并开源了一个低配版的模仿游戏【鱼了个鱼】,纯粹出于兴趣。

大家好,我是鲏。

认识我的朋友都知道,我是一个实践派,相比研究枯燥的理论知识,我更喜欢做自己想做的项目,用技术来实现自己的想法的感觉真的很棒。

所以从大学期间一直到现在,除了工作中的项目外,我依然保持着自己做项目的习惯,有坚持几个月薅光我头发的大项目、也有几小时搞定的娱乐练手项目。

比如前两周羊了个羊小游戏很火的时候,我花了几个小时就上线并开源了一个低配版的模仿游戏【鱼了个鱼】,纯粹出于兴趣。

项目地址:https://github.com/liyupi/yulegeyu

还有 ikun 测试器,一个网页答题小项目~

项目地址:https://github.com/liyupi/ikun-test

就是这些小玩意儿,也给很多同学带来了快乐(包括我),值了。

当时就有同学就在评论区问了:鱼皮你为啥这么快?(指做项目)

我说:无他,唯手熟尔。

真就是这样,我也从来不去背代码、也是不写就忘。但忘了就再写,同一类项目做个十来遍,做起来能不快么?

当然,做项目过程中,我也积累了很多做项目的技巧,下面给大家分享一下,全是我自己的一直在用的。

快速做项目技巧

我们可以把做项目的过程分为几个阶段:需求分析、技术选型、系统设计、开发编码、调试测试、部署上线、运营推广等。

每个阶段其实都有技巧,下面依次分享。

1、快速需求分析

相信大多数同学在自学时都是跟着网上的教程做项目,老师说要做哪些功能那就做哪些功能,多了咱也不去想。

其实这是一个 “坏习惯”,做项目这东西,本来就是要自己想要做哪些功能才有趣。

比如老师教你做商城系统时,说:我们要做一个根据商品名称搜索商品的功能。在你完成这个功能后,哪怕视频没有教,你自己能不能想到去添加:给用户搜索建议、提供商品热搜列表、用图片搜商品等功能呢?

尤其是你要做自己的项目(产品)时,自主需求分析更重要了,尽量打开自己的思路,才能做出亮眼的项目。

那问题来了:想不到要做什么东西,想不到要加哪些需求,怎么办?

常见的做法是从自己的生活需要或者实际使用过的产品出发,去分析他们的不足并改进,做到推陈出新。

比如你们天天吐槽某个软件辣鸡辣鸡,那能不能自己做一个?万一火了呢对不对?

我自己的做法就比较有趣了,在做过很多项目、翻过很多车后,我很少刻意去做需求分析,而是当我遇到某个问题、想到某个需求时,会 第一时间把它记录下来 ,但不是立刻就去做这个项目了。

记录的需求多了后,有时我会发现需求之间是可以有联系的,这个时候,我才会考虑是不是能把这些需求汇聚成一个新项目。还要再评估下时间和竞品:来不及、性价比不高、卷不过同行就不做。

举个例子:我之前背面试题的时候发现很多题目的题解是有问题的, 但是没有人去讨论和维护,于是我就先把这点记录下来;之后又发现大家有阅读整套面试题的需求,可以有个组卷功能,才有了之后的面试鸭(https://www.mianshiya.com)。

养成随时记录的习惯,自然酝酿出项目灵感,而不是等要做项目的时候再去硬想、硬分析,你会发现整个过程不仅轻松、而且最后做出来的项目会更实用、性价比更高。(我们做视频、写文章也是一样的)

2、快速技术选型

所谓技术选型,就是选用什么技术来开发上线项目、解决实际问题。

如果是企业中的大项目,技术选型阶段要格外谨慎,不建议选择冷门、无人维护、无人熟悉的技术。但对于我们个人来说,不用考虑那么多,一般做项目时选择自己最熟悉的技术框架即可。

像我自己在技术选型时,主要是考虑以下 3 点:

  1. 前端用什么?一般就是在 Vue 和 React 间抉择,然后统一使用 Ant Design 这种 多框架兼容 的组件库,而不是一个项目用一个新的组件库。
  2. 后端用什么?一般是在 Java 和 Node 间抉择,小项目、侧重前端的项目用 Node(比如 yuindex:https://github.com/liyupi/yuindex),追求稳定性的大项目用 Java SpringBoot。
  3. 怎么上线?一般前端用 Nginx、后端用 Docker,后面会讲。

也建议大家无论是学习阶段还是正式工作了,尽量有一套自己用的最熟的技术栈,大多数项目都不用纠结技术选型。也别非得追求什么都用过,结果用的都不熟。

3、快速系统设计

所谓系统设计,就是寻找一个 相对 最合适的方法来实现需求。

听起来简单,但实际上,90% 的同学估计都做不到自主设计,总结一下就是离开视频教程就不知道怎么做项目了。

怎么根据需求做系统设计也是 我的编程知识星球 里被问的最多的问题,比如下面这些,我都给出了自己的解决方案:

解决方案:https://t.zsxq.com/06b2bUj2B

解决方案:https://t.zsxq.com/06VRj2rrF

解决方案:https://t.zsxq.com/06meEQby7

大家可以想想上面这些问题你都能答出来么?

关于系统设计,我觉得最重要的还是积累经验,很多需求和业务场景其实都是通用的(比如用户鉴权),只要你设计过一次,之后做类似的系统应该都是无压力。

那如果我啥都不会,怎么快速完成系统设计呢?

答案也很简单,去网上搜解决方案呗!像我们在工作中做一些大的系统,都是要参考业界主流的设计方案来定制或改进的,而不是纯靠自己想。

不过现在网上的解决方案类文章没有那么多,一方面是因为大家的需求都不太一样,另一方面是好的解决方案才不会随随便便公开给你。所以如果没有分析方案的文章,那我们甚至会直接找到开源项目,手撕源码!

像我在星球里已经回答过近百个系统设计方面的问题了,星球的朋友可以看 #系统设计#标签下的内容学习,说不定能解决你的问题。

地址:https://wx.zsxq.com/dweb2/index/tags/%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/48844552128248

在做系统设计的过程中,建议大家绘制一些图来辅助理解,比如流程图、时序图、功能模块图等等,用在线绘图工具 draw.io 即可。

4、快速开发

想真正做到快速开发,就要时刻遵循以下原则:

  1. 能不自己写的代码,就不要自己写

  2. 自己写过的代码,绝对不重复写第二遍

对于第一点,如果是新项目,我会选择一个最符合我需求的脚手架来创建初始化项目模板,比如前端的 Ant Design Pro,什么布局、导航、路由、菜单、主题、整合组件、请求、测试、权限管理、国际化全都给你整合好了;如果是后端的话,我有自己开发的一个 Spring Boot 脚手架,整合了业务开发常用的组件,几分钟就能开发一个新项目初始模板了,已经公开在了我的 星球 里,打算下个月再重点完善一下。

当然,你也可以直接到 GitHub 上找一个开源项目去二改,比如知名的后台管理系统 Vue Admin Template。站在巨人的肩膀上,能帮助你大幅节省代码量和开发时间,屡试不爽。

对于第二点,那就需要我们平时写代码的过程中,多抽象复用同功能的类 / 方法 / 函数。此外,一定要保留好自己写过的所有代码,做过一次的项目,就不要再重复做第二次,直接复制粘贴岂不美哉?

除了以上两点之外,还有一个我自己的血泪教训,那就是做项目一定要有计划!

比如今天做什么、明天做什么、每个功能花多少时间等,分清主次,先完成核心功能、再去完善细节。而不是功能还没开发完,就搁那纠结前端界面、什么字体大一号小一号的,到时候如果都上不了线,你觉得纠结这些事情还有意义么?

再举个例子:给你 3 天去开发新功能,结果你花了 2 天去纠结一个很小的 bug,导致了项目延期,这也是得不偿失的。

做计划这点在工作中尤为重要,共勉。

5、快速测试

这一点没什么好说的,一般做项目时要编写好单元测试,每次改完代码后执行一次单元测试,就能提前自动发现一些小 bug,节省一些人工时间。

如果是正式对外上线的项目,建议提前招募一些有志之士(内测用户)而不是自己一个人在那点。毕竟人多力量大,不仅节省自测的时间,也更能发现一些问题。

想当年,大家一起帮我给面试鸭网站做测试,我真的感动到哭了。

6、快速部署

对于新手来说,可能会觉得上线是很麻烦的事情,但如果你操作的次数多了,你会发现上线其实是所有环节中最简单的 —— 其实上传文件、点一下就好了。

像我自己一般是使用 Vercel 免费的国外服务器来一键上线前端项目(还有个好处是不用备案);用腾讯云托管之类的容器平台来快速发布用 Docker 打包的后端代码。或者就是用宝塔面板来可视化地运行 Node、PHP、Java 等项目,可比自己登上服务器,手动启动停止项目要方便多了。

至于微服务项目嘛,也可以用同样的方式来部署,或者用 Docker Compose 来编排群起微服务。不过真正要上线一个产品,在没有用户的时候,我是不会选择用微服务的。

7、快速运维

上线项目后,怎么更方便地运营管理项目呢?

一般我不会选择自己搭建运维监控管理平台,而是直接用现成的第三方服务。比如用百度统计、51.LA 来统计网站用户,用现成的第三方云数据库、云 Redis、容器托管平台来监控服务的运行、配置告警等等。

换句话说,想要真正做到快速,有现成的服务就用现成的吧,虽然会花一些额外的金钱投入,但是能省下来大量时间,性价比绝对是高的。对企业来说,时间就是金钱。



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭