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

大家好,我是鲏。

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

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

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

项目地址: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、容器托管平台来监控服务的运行、配置告警等等。

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



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

太阳能供电应用系统的设计需要考虑多个方面,包括太阳能电池板、储能装置、控制模块等。本文将介绍一种基于太阳能供电的应用系统设计方法,并从这几个方面进行详细阐述。

关键字: 太阳能 系统设计

北京2023年8月15日 /美通社/ -- 日前,在第五届OCP China Day 2023(开放计算中国技术峰会)上,浪潮信息正式推出融合架构3.0原型系统,以开创性的系统架构设计实现了计算资源、存储资源、...

关键字: 系统设计 内存 软件定义 数据中心

北京2023年8月7日 /美通社/ -- 随着大模型智能水平的提升,AIGC所需要的算力在不断增长。大模型的参数量超过千亿,甚至突破万亿级别,预计智算中心将迎来更快发展。IDC预测,2022-2026年,全球AI计算市场...

关键字: CHINA 数据中心 AI 系统设计

无论温度怎么变化始终UCQ1=UCQ2,电路以两只管子集电极电位差作为输出,就克服了温漂 当u11=u12(共模信号)T1管和T2管所产生的电流变化相等;因此集电极电位的变化也相等。

关键字: 差分放大器 系统设计 电极电位

(全球TMT2022年8月30日讯)近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部件的最...

关键字: 系统设计 英特尔 数据中心 生态系统

北京2022年8月30日 /美通社/ -- 近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部...

关键字: 系统设计 英特尔 数据中心 电量

摘要:近年来,受人类活动的影响,各大水域的水质污染问题越来越严重,大部分水资源受到严重污染,水质处理问题亟需解决。分析水体污染情况对改进水质有着重要意义,目前水质监测主要采用人工或无人船的方式。人工监测方式工作量大,影响...

关键字: 水质监测 无人机 系统设计

摘要:根据饶平县高堂水闸重建工程建设实际需求,对高堂水闸运行管理进行实时在线式监控与监测,通过闸门控制、视频监控、水情测报、安全监测和网络通信等系统的设计,为高堂水闸的水工建筑物安全、防洪调度和自动化管理提供技术支持,以...

关键字: 管理信息系统 水利工程 系统设计

湖州2022年7月26日 /美通社/ -- 近日,浙江省科技创新大会在浙江省人民大会堂隆重举行。大会正式颁布2021年度浙江省科学技术进步奖,隆重表彰为浙江科技创新事业和经济社会发展做出突出贡献的科技工作者及团队。...

关键字: 电梯 检测技术 系统设计 零部件

摘要:简要介绍了柴油发电机组和重油发电机组的构成和主要特点,以某发电厂重柴油发电机组系统设计为例,重点分析了重油发电机组燃油系统、润滑油系统、循环冷却水系统、压缩空气系统的设计要点,以提高柴油、重油发电机组的运行效率和运...

关键字: 重油发电机组 特性 系统设计
关闭