首页 > 其他分享 >几个自学项目的通病,别因为它们浪费了时间!

几个自学项目的通病,别因为它们浪费了时间!

时间:2025-01-15 11:25:19浏览次数:1  
标签:路线 教程 入门 项目 通病 学习 最新 自学 浪费

大家好,我是程序员鱼皮。就在昨天,我又带大家做完了一个新项目 《智能协同云图库平台》,已经带大家做了十多个项目了,自然也发现了很多大家在学项目过程中的问题。

最了解学生的,莫过于老师和学生自己。而我经历了自学阶段,从学生成长为了老师,所以也很清楚怎么自学项目,效率才能更快一些。这篇文章,就分享一下我发现的大家自学项目时的通病。

注意,本篇文章中我写的所有内容,目的都是为了帮你节约时间,提高自学效率。

如果你正好有下面这些情况,请务必及时调整!

 

自学项目的通病

1、重复工作

任何业务类项目基本都是从项目初始化、编写增删改查开始的,在你做第一个项目的时候,自己手动编写这些代码没有任何问题,主要是熟悉自己搭建项目的方法和过程。但当你做第 2 个、第 3 个项目的时候,如果还在从 0 开始写基础代码(比如全局异常处理器、一些工具类),那就属于是浪费时间了,完全可以通过复用自己之前的项目代码、使用工具自动生成、或者搭建一个自己的项目模板来提高开发效率。

像我工作的时候遵循一个原则 —— 只要有重复劳动,都会尝试能否通过自动化的方式来提高效率。大家学项目时也是如此,避免在重复工作上耽误时间,不要满足于 “自己重复代码写得有多快”,而是要多把时间花在学习新的技术知识上。

 

2、死守教程

大家都知道,每个教程中作者都会选择特定的版本、技术和工具来教学,没有人能保证这些技术和工具不更新,所以每个教程一定有自己的 “保质期”。

像我在几年前最开始带大家做第一个项目 —— 用户中心项目时,就吃过技术更新的亏,由于前端框架的更新,导致前端部分的开发跟教程有一些不一致。所以后续我在带大家做项目时,会倾向于选择稳定的框架和版本。

当然,这是对于项目作者来说的。那对于学习项目的同学来说,可能就会产生很多问题:

  • 为什么我使用的版本跟教程不一致了?

  • 为什么教程中用的工具有这个按钮,但我用的工具没有这个按钮?

  • 为什么我在官方文档中找不到教程中写的内容了?

  • 为什么我跟教程中操作一模一样,但是运行结果不同?

很多初学者会因为这些问题,纠结很久,甚至不敢接着往下做项目,其实大可不必。

任何教程都有保质期,但解决问题的方法是灵活的。

如果使用的版本或环境跟教程不一致,那么不妨安装跟教程相同的版本(比如前端可以用 NVM 管理 Node.js 版本),或者查阅下如何使用新版本;如果用了比教程更新的工具,那么就在网上搜一下新版本的工具有没有教程中要执行的功能;如果官方文档跟教程中的内容不一致,那么就仔细阅读一下官方文档中最新的使用方法;如果跟教程中操作一模一样但结果不同,那么不妨自己 Debug 一下来解决问题,有可能就是教程本身有错误呢?

总之,在出现跟教程不一致的地方时,可以先记录一下问题,并且自己查阅资料和文档,不必完全死守教程。

 

3、滥用技术

之前有个同学问我:鱼皮,我们公司想做个发券功能,现在的想法是用 Redis 分布式锁 + 消息队列 + blablabla。。。

我反问他:你们发券功能的 QPS 是多少?同时要发多少张券?

他跟我说:我们是管理员给用户发券,每批 1000 张。

我接着反问他:既然是管理员控制发券,数量也只有 1000 张,那你不妨思考一下,真的有必要用到这些技术么?

类似的情况我之前也分享过,可以看 这篇文章

在企业中,业务 > 技术,技术是为业务服务的,要根据业务选择合适的技术实现。

一般来说,我们在思考业务实现方案时,能少用一个技术就少用一个技术,减少开发和维护成本。

但我发现有些同学可能是学的技术多了、也可能是八股文背多了,在做项目功能时,反而是先搬出一大堆的技术,完全不去考虑有没有必要用这些技术,有点儿 “为了学习而学习” 了。其实从学习的角度来说,多用点技术倒也没什么问题,但是如果你把这些写到简历上,面试官就会问你:“为什么要用这个技术?不用它行不行?”,这时你又该如何回答呢?

所以大家即使是自学项目,也建议找到合适的业务场景,合理运用技术。就像我昨天刚给大家讲完 DDD 领域驱动设计,有些同学就表示 “以后就用 DDD 架构来做项目了”,但其实大家自己做的项目,90% 以上是没必要用 DDD 的。

DDD 的目录结构

当然,多学新技术肯定是好的,相当于填充了我们的弹药库;但使用弹药时,肯定优先选择成本低的、最合适的。

 

4、不够灵活

我在讲 DDD 领域驱动设计时,先问了大家一个问题:如果必须要 2 选 1,你觉得开发项目时理论和实践哪个更重要?

结果大家一致选择了 “实践”。

没错,理论再完美,不能落地也无法创造价值;理论再丰富,也不一定能满足所有的实践需要。做项目时,理论的指导固然重要,但一定要结合实际情况按需运用和调整。

举个例子,大家学数据库理论的时候,老师可能会讲 “我们可以通过外键来保证数据完整性,要遵循第三范式,要遵循 ACID 原则”。但实际开发中,我们可能会用逻辑外键(不添加外键约束)的方式来实现表之间的关联,可能会违反数据一致性,但是能提高写入性能。

我在带大家做项目的过程中,发现很多同学就会特别执着于 “理论和规范”,比如:

  • 你的目录命名怎么是 utils 而不是 util?为什么数据库对象用 Entity 而不是 PO?

  • 为什么你的数据库字段用驼峰而不是下划线?

  • 为什么你只创建一个对象,却不使用单例模式?

  • 为什么你的接口不遵循 Restful 的规范,删除资源时还是使用 Post 请求?

这些都是我经常收到的问题,但其实都是无足轻重的问题。大家不要把时间浪费在纠结理论或规范上,毕竟这些都是人定的,在不违背原则或产生 Bug 的情况下,我们保证团队内部、或者自己开发时的规范保持一致即可。养成统一的编码风格和开发习惯,也能帮我们提高开发效率,没必要完全和教程保持一致。

 


 

除了上面几点外,我们也要时刻把握自己的学习重点,比如后端方向的同学,就尽量不要花时间在调试前端的样式上。像我大学的时候就是学的有点太杂了,有一段时间沉迷于抠前端的像素无法自拔,现在回过头来想想,确实浪费了太多时间。

 

更多编程学习资源

标签:路线,教程,入门,项目,通病,学习,最新,自学,浪费
From: https://www.cnblogs.com/yupi/p/18672649

相关文章

  • 自学黑客(网络安全),一般人我劝你还是算了吧
     我是一名8年半的网安工程师“老司机”,要给准备入坑的同学泼盆冷水了,网络安全真的不是一般人能学的。有人会问“你一个8年的网安老司机,为什么还给大家泼冷水”?好多人说:网安基础很简单,是个人稍微认真点都能懂,给网安打上......
  • 说下你平时是怎么自学的?怎么安排时间的?
    关于如何自学前端开发和安排时间,以下是我的一些经验和方法:一、明确学习目标与内容在开始学习之前,我会先明确自己的学习目标,比如掌握某个特定的前端框架、提升JavaScript编程能力,或者学习最新的前端开发技术等。有了明确的目标之后,我会针对性地寻找相关的学习资源,如教程、书籍、......
  • 【零基础SD教程】2024最细自学Stable Diffusion全套教程!附 Sd 安装包,拿走不谢
    看:哈哈是不是很漂亮?但这些都不是真实存在的直接通过AI生成的美女达到如此逼真的地步是怎么做到的呢?那么接下来就是:学习生成小姐姐的正确姿势首先需要在你的电脑中安装一个「stable-diffusion」接下来就推荐几个大模型,以下均为个人根据SD软件出图的效......
  • 【无标题】【前端】自学基础算法 -- 16.二叉搜索树
    二叉搜索树简介二叉搜索树是一种二叉树,它满足以下性质:对于树中的任意一个节点,其左子树中的所有节点的值都小于该节点的值,其右子树中的所有节点的值都大于该节点的值。这种数据结构支持高效的搜索操作,例如,在一个二叉搜索树中查找一个特定的值,每次可以根据当前节点的值与目......
  • 2025年网络安全零基础自学全攻略:避开弯路,快速上手!
     自学网络安全是一项充满挑战的任务,但只要遵循合适的学习路径,能够有效避免走弯路,逐步建立知识体系,最终可以在该领域取得成就。本文将为你提供2025年最新的网络安全自学攻略,帮助你高效地规划学习路线,掌握网络安全的核心知识,避免学习中......
  • 网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业
    很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。算上从学校开始学习,已经在网安这条路上走了10年了,无论是以前在学校做安全研究,还是毕业后在百度、360从事内核安全产......
  • 手把手带你使用Karpenter减少K8s集群资源浪费
    Kubernetes集群的主要成本因素之一是数据平面上的计算层。将Kubernetes集群运行在AmazonEC2Spot实例上是一种显著降低计算成本的有效方式。使用Spot实例可以比按需实例节省高达90%的费用。Spot实例非常适合无状态、容错性强且灵活的应用场景,例如大数据处理、容器化工......
  • 自学黑客(网络安全),一般人我劝你还是算了吧
    前言:想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客!网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都......
  • 【Rust自学】11.3. 自定义错误信息
    喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)11.3.1.添加错误信息在11.2.断言(Assert)中我们学习了assert!、assert_eq!和assert_ne!这三个宏,而这篇文章讲的就是它的进阶用法。这三个宏是可以添加自定义错......
  • 【Rust自学】11.4. 用should_panic检查恐慌
    喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)11.4.1.验证错误处理的情况测试函数出了验证代码的返回值是否正确,还需要验证代码是否如预期的去处理了发生错误的情况。比如说可以编写一个测试来验证代码是否在特......