刚进公司就负责项目,把老弟整蒙了!

news2024/9/20 8:03:27

刚进公司就负责项目,把老弟整蒙了!

大家好,我是鱼皮,先把封面图送给大家:

又快到周末了,今天分享一些轻松的编程经验~

还记得我学编程的老弟小阿巴么?他目前大二,听说最近刚刚找到了一家创业公司的暑期实习。

前两天小阿巴又跑来向我诉苦了:鱼皮 gie gie,我不是找了份暑期实习嘛,结果还没到暑假呢,公司的老大就联系我了,说公司最近有很多新项目要启动,等我暑假再来准备估计来不及了,让我提前先调研一下新项目的技术选型。

鱼皮:这不是挺好的么?还没进公司,就已经成为项目负责人了哈哈。

小阿巴:好个毛 🥚 啊,以前我自己都是跟着网上的教程学做项目,把老师的代码拉下来改几下,这让我负责一个项目,我一点底气和思路都没有。还有他说的什么 “技术选型”,我都没听说过!彻底蒙圈了。。。

鱼皮:嗯,这确实是个问题,看来得跟你科普一下 “技术选型” 了。先考你一下,你知道什么是技术选型么?

小阿巴:emm,我猜就是用什么技术来开发这个项目?比如开发前端用 Vue、开发后端用 Spring Boot?

鱼皮:不错,如果把做项目比喻成打仗,那么技术选型就相当于打仗之前选择武器。你要选择合适的武器才能打胜仗,选择合适的技术才能更好地完成项目。

小阿巴:但有个问题,现在主流的开发技术不就那么几种么,像我上面说的 Vue、Spring Boot?有啥好选的?

鱼皮:你说的其实只是技术选型的其中一点,也是最浅的一层。技术选型不止有 “选择开发框架”,还包括很多不同的方面和细节。

由浅入深来看,技术选型包括:

1)用哪类技术?比如编程语言、开发框架、数据存储、缓存

2)具体用什么技术?比如编程语言用 Java 还是 Go?开发框架用 Spring 还是 Netty?缓存用 Redis 还是 Memcached?

3)技术用哪个版本?比如用 Java 8 还是 11?Vue 2 还是 Vue 3?Redis 5 还是 6?

4)具体用到哪些技术特性?比如 Spring 的 AOP、Redis 的 GEO 高级数据结构等。

小阿巴:我滴妈呀!这么复杂嘛,我之前根本没想过这些,好像也想不到。。。

鱼皮:这是很正常的,因为之前你都是自己跟着教程做项目,用什么技术、用哪个版本都是老师给你提前规划好的。

小阿巴:确实唉,我觉得有点太麻烦了。。。能不能不做技术选型呀!老夫直接用 Spring Boot + Vue 一把梭。

鱼皮:哈哈,技术选型当然不是绝对的呀,比如你在学校自己做项目,那你就用熟悉的技术或者想学的技术即可。但是等当你进入企业、尤其是负责项目时,就必须要跟团队同学一起确认技术选型。而且对于规模越大、越复杂的项目,你要考虑的技术选型的角度和深度要求就越高!不能再像自己做项目一样随便了。

小阿巴:我就随便,又怎样?

鱼皮:可以的,我看你是不到黄河心不死不见棺材不落泪欲穷千里目更上一层楼啊!给你讲讲我在学校的时候有次带团队做项目时,不做技术选型的翻车经历吧。

很多年前了,当时我们在做一个校园贴吧网站,记得我是用 React 来开发前端页面的。刚开始很顺利,但直到有一天需要开发帖子页面信息状态保存功能的时候,才发现 React 不像 Vue Router 一样有现成的 keep-alive,后来又花了好久才找到一个类似的组件,结果还一堆 Bug。。。

唉,当时确实是经验不足呀。如果最开始就考虑到这点,选择 Vue 系列技术栈,那么就能节省很多时间了。

小阿巴:我悟了!就是说在开发一个完整项目前,我们要先整体思考一下实现项目功能可能会用到的一些技术,这样不至于到后面才发现难以实现?

鱼皮:good,是这样。越是对项目侵入性强的技术,后期的改动成本就越大。比如我刚刚举的例子,等你页面都写了几十个了,再去切换开发框架,就会很麻烦;而且有的时候,你给项目引入新的组件或类库,可能会和现有的库版本冲突,导致后面项目跑不起来。这些其实都是技术选型不当带来的问题,也是我们做技术选型的必要性。

小阿巴:原来如此,那做技术选型有没有什么好的经验呢?

鱼皮:一句话,我们做技术选型的目标是 在有限的条件下、选取特定场景下的技术最优解。

有限条件包括我们团队同学会的技术、我们的时间和金钱成本。比如大家都只会 Java、项目又急着上线,那肯定优先选择 Java 相关技术栈,不要因为什么 Go 语言的性能高就让大家加班去学 Go。再比如公司很有钱,但是缺人手,那么很多服务(比如数据库)就不用自己搭建了,直接买大厂云服务即可。

特定场景是指我们的技术选型一定要围绕着业务和需求来做,可以思考以下几点:

  1. 你的业务量级有多大:如果用户数巨多,要不要用 Nginx 或者 LVS 来做个负载均衡?如果存储量巨大,要不要使用分布式数据库、要不要搞分库分表?
  2. 系统的核心业务流程和关键数据结构是什么?比如要做一个管理系统,那么数据库选择主流的关系型数据库 MySQL 就好。而如果要做数据分析系统,那么应该选择 OLAP 利好的数据库,比如 Postgre SQL、ClickHouse 等。
  3. 系统更注重哪些性能?比如日志收集的场景更注重高性能和吞吐量,那么可以选择 Kafka 消息队列来采集;比如注重低延迟以及消息的准确性,那么可以选择 RabbitMQ 等。很多时候,我们做技术选型和设计算法一样,没有绝对的最优解,而是对时间、空间、稳定性、可用性等等的综合权衡。

小阿巴:大哥,我悟了,您别念了!

鱼皮:哈哈,另外还有两个建议

  1. 做技术选型时,可以通过编写最简单的 Demo 来快速验证下技术是否可用,不要直接拍板!
  2. 原则上优先选择知名度高的、开源的、用户多生态好的技术,没几个人用的技术,估计你用的话就是踩雷去了。

小阿巴:我明白了,那我就先问清楚我们这个项目大概要做哪些功能、预计有多少用户和存储需求,再根据这些到网上搜技术选型!

鱼皮:糊涂啊!都 2023 年了,直接问 ChatGPT!

我的编程导航网站:https://www.code-nav.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/466792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java 版本企业电子招投标采购系统源码之登录页面

​ 信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…

基于python的socket网络通信【1】

一、Socket原理 学习了大佬的知识,简单记一些笔记 https://www.jianshu.com/p/066d99da7cbd http://c.biancheng.net/view/2351.html 1.1什么是Socket 在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种…

Speech and Language Processing-之最小化编辑距离

今天讲编辑距离。 编辑距离为我们提供了一种量化这两种关于字符串相似度的直觉的方法。更正式地说,两个字符串之间的最小编辑距离定义为将一个字符串转换为另一个字符串所需的最小编辑操作(插入、删除、替换等操作)数量。 如上,图中第一行字符串和第二行…

Java-代码生成器的实现

文章目录 前言一、概述二、手写代码1. 简要说明2. 代码编写3. 完整代码4. 测试效果 三、项目源码 前言 最近看了一个开源的项目,jfinal-layui,然后这个项目里面有一个 代码生成器 的功能 之前虽然有用过代码生成器,但是从来没有看过相关的源…

【react从入门到精通】react入门这一篇就够了

文章目录 前言什么是 React?安装和配置 React创建 React 组件渲染 React 组件使用 JSX传递属性(Props)处理组件状态(State)处理用户输入(事件处理)组合和嵌套组件写在最后 前言 React 是一种由 …

一些技术管理常见问题笔记

空降管理: 1 真诚靠谱: 思考我们能给上级、下级、公司带来什么价值。 遇到冲突,怎么决策? 团队、合作方了解清楚。 团队同学的简历,工作情况,背景能力有了解。 对应的产品经理、业务方的思维、背景。…

改善电商实时聊天体验的 5 大方法

今天,大多数网站都提供实时聊天支持作为选项。这是因为客户压倒性地将实时聊天列为他们的首选联系方式。 高达86%的消费者愿意在更好的客户体验上花费更多,但只有1%的人的期望始终得到满足,对于能够正确进行实时聊天的品牌来说,这…

润滑剂产业互联网平台搭建

润滑剂是一种广泛应用于工业、交通运输和农业等领域的重要物质,而润滑剂产业互联网平台的搭建可以更好地满足企业和用户的需求,提高行业效率,提升企业竞争力。下面是润滑剂产业互联网平台搭建的一些步骤和关键考虑因素: 确定平台的…

在KylinV10安装Dm8

前言 因为近期,业外和几个朋友想搞点有趣的项目玩玩,既然不以盈利为主,就> 主推国产化,所以这篇记录一下,我在KylinV10安装dm8.最近真的很忙,要负责专研一下国产化工具开发的事,还要负责tb级…

大数据之Hadoop集群资源管理器YARN

目录: 一、hadoop yarn 简介二、YARN架构三、YARN工作原理简述 一、hadoop yarn 简介 Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配…

如何助力工厂实现从反应性维护到预测性维护?

技术正在重塑企业日常运营方式。技术的发展和变革促使工厂采用预测性维护,而不再采用被动(直到故障发生后再进行修理)的维护策略。 预测性维护利用多参数持续监测设备的健康状况和性能,通过预先建立的算法来预测设备何时会出现故障…

聚观早报|特斯拉向第三方电动车开放充电桩;Epic 诉苹果垄断败诉

今日要闻:特斯拉向第三方电动车开放充电桩;我国全面实现不动产统一登记;Epic 诉苹果垄断败诉;腾讯大股东Naspers再减持近79万股;星巴克中国门店将超过万家 特斯拉向第三方电动车开放充电桩 近日,特斯拉官方…

Django智能旅游推荐系统

背景 随着科学技术发展,电脑已成为人们生活中必不可少的生活办公工具,在这样的背景下,网络技术被应用到各个方面,为了提高办公生活效率,网络信息技术飞速发展。在这样的背景下人类社会进入了全新的信息化的时代。智能…

一篇文章搞懂OpenCV之图像特征

文章目录 一篇文章搞懂OpenCV之图像特征纹理特征形状特征哈里斯角检测Shi-Tomasi角点检测尺度不变特征变换算法 一篇文章搞懂OpenCV之图像特征 图像特征即图像中独特的,易于跟踪和比较的特定模板或特定结构,例如我们肉眼可见的颜色、形状、轮廓以及亮度…

线性结构的存储类型

线性结构的存储类型 顺序标:顺序标就是数组,也成为向量vector、高维向量及称为张量即tensor 链表:单链表、双链表、循环链表 线性表概念 表目、文件、索引、表的长度、空表 线性表由节点表和关系表组成二元组; 节点集由有限的…

微服务---微服务保护Sentinel基本使用

微服务保护 1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I&#xff…

计算机网路常见面试题(上)

计算机网络基础 # 网络分层模型 # OSI 七层模型是什么?每一层的作用是什么? OSI 七层模型 是国际标准化组织提出一个网络分层模型,其大体结构以及每一层提供的功能如下图所示: 每一层都专注做一件事情,并且每一层都…

SQL注入漏洞学习简记

SQL注入漏洞危害 id1 and 1 1-- id1 and 1 2-- id1 and 1 1-- id1 and 1 2-- 可以用来判断是字符型注入/数字型注入 id1 order by 3 -- id1 order by 4 -- 这些SQL注入语句中的 order by 子句用于对结果进行排序,而排序的字段编号是从 1 开始的。如果在 orde…

【论文导读】Causality Inspired Representation Learning for Domain Generalization

Causality Inspired Representation Learning for Domain Generalization 阅读笔记_1100dp的博客-CSDN博客Causality Inspired Representation Learning for Domain Generalization 阅读笔记https://blog.csdn.net/qq_44901656/article/details/127341310这一篇讲的不错&#x…

业内常用即时传输网盘

工具名称 业内常用即时传输网盘 功能简介 无需登录,短时间内有效,多用于传输小型敏感文件 外部链接 请见文内 内部网盘链接 在线站点,无网盘链接 使用说明 许多安全行内人士在团队内互传敏感文件时,为实现上传和下载文件…