给大二学弟的建议:技术不是用得越多越牛逼

大家好,我是程序员鱼皮,今天分享一个 90% 以上初学编程做项目的同学都会遇到的问题 —— 做项目时,盲目使用技术。

1

事情是这样的,一位大二下的学弟前段时间找我做了好几次咨询,说自己已经学了很多微服务、中间件相关的技术,比如 Dubbo、Nacos、RocketMQ 等等,但是学完感觉没什么收获,很多知识和技术感觉并没有掌握。

这是很多初学初学编程同学的通病:学完技术不去用,结果过段时间就忘了。

所以我经常跟朋友们说,当你学完一个新技术后,要第一时间想着做项目,在项目中实践,知道怎么根据需求合理地运用技术,才算是掌握了。

因为他才大二下嘛,时间和机会还很多,所以就让他把主要的精力放在提升项目经验上,也让他去读了我的项目学习建议。

2

学弟很争气,过了没几天,就跟我说要作为队长参加中国软件杯大赛了,然后想问应该如何带领队友开始项目。

我一看,这是好事啊!我也非常鼓励大学生多参加竞赛,尤其是作为队长,可太锻炼人了。

结果让我有点意外的是,这位学弟想报名的赛题名称是 “涉诈 APP 智能识别分析系统”,赛题要求中涉及:APK 文件的解析、特征提取、训练基于 AI 的 APP 研判模型等。。。

然后我给了他几分钟的语音回复:

我当时给出的核心建议大概是:参加比赛前首先要做的不是思考怎么具体去实现某个赛题,而是要先想明白参加比赛的目标和意义,比如为了获奖、为了提升自己,还是别的什么。参加比赛是好的,但是要选择和自己求职方向、擅长方向相关的比赛,目前这个赛题的核心难点不在于后端开发,会有更专业的学信安的同学来参加,获奖概率也不大,所以个人认为参与的性价比不高。更何况这位学弟的队伍只有 3 个人,还都是软件工程专业的,基本没什么竞争力了。如果实在要参加,就需要找到合适的队友,大家分工合作。

3

学弟很开窍,没过几天,就跟我说他们又换了一个赛题,这次要做一个结合 AI 大模型的 Java 应用。并且还参考我之前的建议,做了功能模块图和技术选型,现在想让我给点建议。

我看了他们的功能模块图,设计的简直太好了!功能简直太全了!

但也正是因为 “功能太全了”,给我的感觉是他们要开一家公司去做成熟的产品了,而不是要参加一个小比赛。

举个例子,他们要做的是一个 AI 工具,结果功能模块图里面有:用户素材库、数据可视化、多媒体提取、VIP 会员、消息通知、评论、热点发现等等。。。

于是我的第 1 个建议是:这么多需求,先做哪个后做哪个?有些功能真的有必要做么?

我大学时刚开始参加竞赛、包括刚开始做自己的产品时也是这样的,总想着功能越多越好,但是常常忽略了做新功能的意义,忘记了目标。比如现在这位学弟的目标是竞赛获奖,那么应该把重心放在能给比赛加分的、核心亮点功能的开发上,比如 AI 模块,像 VIP 会员、消息通知这些功能,都不是核心需求,也不影响核心业务流程,对竞赛来说都是可有可无的。

第 2 个建议是:找到你觉得最难实现的功能,并思考如何实现?有没有卡点?

我相信很多刚开始做项目的同学,是不会去做整体的方案设计和排期的,而是先把自认为简单的功能做出来,比如用户注册登录。但如果最后你才发现 AI 模块搞不定,你前面的 “一顿操作猛如虎” 还有什么意义么?起码对比赛获奖这件事来说,帮助没那么大了。

第 3 个建议是针对学弟的技术选型来说的。这个不涉及什么敏感信息了,都是主流的技术选型,就先给大家看一下吧:

大家看到这个技术选型图,是什么感受?

个人认为,虽然画的不错,技术也列举地很全面,但对于一个比赛来说实在是 “大可不必”

因为我也是从这个阶段过来的,给大家看看我大学独立开发的、拿去参加竞赛的一个作品。一个在线刷面试题的项目,背后用了微服务、Redis 集群、甚至还搭了大数据集群和区块链节点!

结果去参加比赛的时候,人家才不管你背后用了什么技术,而是要看你是否符合比赛的要求,产品本身是否有亮点。

所以我让学弟思考:这么多技术,真的有必要用么?

做商业项目也是这个逻辑,技术是为业务服务的,应该先尽可能 减少 复杂技术的引入,完成核心功能,再去逐步引入新技术来优化系统和解决问题。不然只会把简单的事情想复杂。

而且即使你真的在比赛中用到了上面那些技术,也已经不是什么亮点了,微服务已经可以说是后端必学的技术。

4

万万没想到,学弟又来找我了,这次他梳理了一些功能模块,并且问我:系统是用单体还是微服务去完成?

首先我看了下比赛要求,没有强制要求使用微服务,也并没有关注后端架构,而是要求开发者必须完成某些功能。而且学弟团队只有几个人。

所以我的答案很明确:先单体再微服务,别把简单的事情做复杂。

结果学弟问我:单体再微服务,那为什么不直接微服务?

老实说,这次我有点哭笑不得,感觉他并没有理解我之前的建议。于是我反问他:你觉得有必要么?微服务的作用是什么?做产品的核心目标是什么?核心功能需要用到微服务来实现么?

思考清楚这几个问题,我想这位学弟之后参加比赛做项目的时候,能够少走很多弯路吧。

大学时期,我看过太多同学认为 “技术用得越多越牛逼”(包括我曾经也是这么认为的),结果比赛无法获奖;工作之后,也看过太多程序员把 “各种高大上的技术挂在嘴边”,结果业务需求都理解错了。

当然,如果是为了自己学习成长而做项目、运用技术,是完全没问题的。还是那句话,想清楚自己的诉求,并且针对诉求去设计和安排工作吧,共勉!

本文有帮助的话,牛友们点个赞吧~ 谢谢大家

#我的失利项目复盘##我的成功项目解析#
全部评论
🐟皮说的很对,我一开始做项目也是纯大杂烩,各种中间件往里面砸,最后面试官一句,你这个中间件加多了有什么坏处吗,你这个项目最多有多少个人用呀,😃
12 回复 分享
发布于 06-16 02:38 广东
说的很好,一说项目两个字,很多人总认为项目应该是一个很大的工程,一个很全面的系统,其实聚焦某一业务的小项目效果会更好,容易有更大的收获
8 回复 分享
发布于 06-29 12:24 广东
皮哥皮哥,你们公司还招实习生吗可以内推吗😋
2 回复 分享
发布于 06-14 21:32 湖南
1 回复 分享
发布于 06-14 15:53 安徽

相关推荐

45 39 评论
分享
牛客网
牛客企业服务