当前位置: 首页 > news >正文

突然间我懂了软件

什么是 “遗留代码” – 它是一个不再由具有这些代码相关理论的人维护的代码库。

单枪匹马的工程师能做出比同样有能力的专业团队更好的产品。单干的工程师会花时间为自己的程序建立一套完整的理论,而专业人员则会定期在不同的项目之间流动,他们只对自己做过的项目有理论。

为什么说掌握陌生项目的速度要比重建项目难得多?无论如何,要真正建立一套理论,你都需要从思想上重建现有的代码库。

软件需要有人通盘理解它的运作机制,所以单个工程师有可能比一个职业开发团队造出更好的产品。因为单个工程师花时间,完整理解了他要构建的软件,而职业开发团队总是从一个项目转移到另一个项目。

这也是为什么接手不熟悉的项目,比重建该项目要困难得多,以及为什么软件外包的质量总是如此糟糕。


  • 参考:Suddenly, I Understand Software

相关文章:

突然间我懂了软件

什么是 “遗留代码” – 它是一个不再由具有这些代码相关理论的人维护的代码库。 单枪匹马的工程师能做出比同样有能力的专业团队更好的产品。单干的工程师会花时间为自己的程序建立一套完整的理论,而专业人员则会定期在不同的项目之间流动,他们只对自己…...

游戏美术的技与艺

大家好,我是阿赵。   可能很多朋友都知道,我刚进入游戏行业的时候,做的是美术工作,包括了建模、贴图、动画等,都做过。我对各种美术资源制作也都很熟悉,懂得很多制作的技术。但最后,我却没有继…...

Python(35):Python3 通过https上传文件和下载文件

Python(35):Python3 通过https上传文件和下载文件 Python http方式的下载,参考:https://blog.csdn.net/fen_fen/article/details/113753983 https需要先安装需要的模块 1、上传示例 1.1、调用: upload_strategy(access_token,"1234…...

【MySQL】日期格式为 YYYY-MM 无法直接使用 DATE_SUB 函数的解决方案(特殊处理 或 PERIOD_DIFF 函数)

力扣题 1、题目地址 1843. 可疑银行账户 2、模拟表 表:Accounts Column NameTypeaccount_idintmax_incomeint account_id 是这张表具有唯一值的列。每行包含一个银行账户每月最大收入的信息。 表:Transactions Column NameTypetransaction_idint…...

Redis的key淘汰方式和内存不足淘汰方式

Redis的key过期淘汰方式 Redis key过期策略 定期删除惰性删除 Redis如何淘汰过期的key 定期删除 隔一段时间,就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除定期删除可能会导致很多过期key到了时间并没有被删除掉&#x…...

java使用redis

1、pom.xml文件里面增加如下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2、yml文件增加如下配置&#xff1a; redis:host: loc…...

MySQL技能树

MySQL作为一款广泛使用的关系型数据库管理系统&#xff0c;提供了丰富多样的SQL语句以支持数据的创建、查询、更新和删除等操作。以下是一份MySQL语句操作大全的概览&#xff0c;涵盖从数据库管理到复杂查询的常用命令&#xff1a; ### 一、数据库管理&#xff08;DDL - 数据定…...

redis获取过期时间

03&#xff0c;redisTemplate_redistemplate 获取剩余时间-CSDN博客 11.返回当前key所对应的剩余过期时间 redisTemplate.getExpire(key);1 12.返回剩余过期时间并且指定时间单位 redisTemplate.getExpire(key, unit);...

ERROR in Plugin “react“ was conflicted .... 天坑留念-turborepo、eslint plugin

前两天项目代码拉下来&#xff0c;装完依赖启动的时候直接报错&#xff1a; [eslint] Plugin "react" was conflicted between ".eslintrc.js eslint-config-custom eslint-config-alloy/react" and "BaseConfig D:\pan\erp\test\business-servic…...

MergeTwoSortedLists 【合并有序链表】

有种归并排序的感觉 链表好久不用有些生疏了&#xff0c;思想思路是对的&#xff0c;但是代码写出来有问题&#xff0c;。 写完说点感受&#xff1a; 当时在学校学习链表的时候&#xff0c;就了解到链表分为“有头节点”和“无头节点”的链表&#xff0c;所以这里好像就不练&am…...

基于多反应堆的高并发服务器【C/C++/Reactor】(中)HttpRequest模块 解析http请求协议

一、HTTP响应报文格式 HTTP/1.1 200 OK Bdpagetype: 1 Bdqid: 0xf3c9743300024ee4 Cache-Control: private Connection: keep-alive Content-Encoding: gzip Content-Type: text/html;charsetutf-8 Date: Fri, 26 Feb 2021 08:44:35 GMT Expires: Fri, 26 Feb 2021 08:44:35 GM…...

muduo网络库剖析——网络地址InetAddress类

muduo网络库剖析——网络地址InetAddress类 前情从muduo到my_muduo 概要socketaddr_in介绍成员用法 网络地址转换函数 框架与细节成员函数使用方法 源码结尾 前情 从muduo到my_muduo 作为一个宏大的、功能健全的muduo库&#xff0c;考虑的肯定是众多情况是否可以高效满足&…...

什么是本地IP?服务器本地IP有哪些优势?

本地IP是指直接在互联网上分配给服务器或设备的IP地址&#xff0c;而不是通过NAT&#xff08;网络地址转换&#xff09;或 代理等中间设备进行转发。让我们关注本地IP的优势。 1.直接访问&#xff1a;原始IP允许无中间设备转发或代理直接访问服务器或设备。这减少了网络延迟&a…...

Open CASCADE学习|参数化球面的奇异性

参数曲面的奇异性是一个相对复杂的概念&#xff0c;它涉及到参数曲面的几何特性和参数化过程中的一些特殊情况。参数曲面通常用于描述三维空间中的复杂形状&#xff0c;通过参数方程将二维参数域映射到三维空间中。然而&#xff0c;在某些情况下&#xff0c;参数曲面可能会表现…...

基础知识篇(一)Acticity生命周期

Activity 类是 Android 应用的关键组件&#xff0c;而 activity 的启动和组合方式是平台应用模型的基本组成部分。与使用 main() 方法启动应用的编程范式不同&#xff0c;Android 系统会通过调用与其生命周期特定阶段对应的特定回调方法&#xff0c;在 Activity 实例中启动代码…...

Java内存结构

前文&#xff1a; 《Java8之类的加载》 《Java8之类加载机制class源码分析》 写在开头&#xff1a;本文为学习后的总结&#xff0c;可能有不到位的地方&#xff0c;错误的地方&#xff0c;欢迎各位指正。 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数…...

Java--ListUtil工具类,实现将一个大列表,拆分成指定长度的子列表

文章目录 前言实现代码执行结果 前言 在项目中有时会出现列表很大&#xff0c;无法一次性批量操作&#xff0c;我们需要将列表分成指定大小的几个子列表&#xff0c;一份一份进行操作&#xff0c;本文提供这样的工具类实现这个需求。 实现代码 以下为ListUtil工具类代码实现…...

SpringSecurity 密码加密登录

SpringSecurity 密码加密登录 1.前端所需文件2.后端所用工具类3.登录代码4.灵魂一问 1.前端所需文件 import JSEncrypt from jsencrypt/bin/jsencrypt.min// 密钥对生成 http://web.chacuo.net/netrsakeypairconst publicKey MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqz…...

大模型实战作业03

大模型实战作业03 注&#xff1a; 因为微调数据较少&#xff0c;没有显示出个人助手的名字...

【AI视野·今日Sound 声学论文速览 第四十四期】Tue, 9 Jan 2024

AI视野今日CS.Sound 声学论文速览 Tue, 9 Jan 2024 Totally 27 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers DJCM: A Deep Joint Cascade Model for Singing Voice Separation and Vocal Pitch Estimation Authors Haojie Wei, Xueke Cao, Wenbo Xu…...

基于Arduino与TSL2561的光照度测量系统:从硬件连接到软件调试

1. 项目概述&#xff1a;从园艺需求到嵌入式光测量方案最近在折腾一个园艺相关的项目&#xff0c;需要量化评估不同覆盖材料&#xff08;比如遮阳网、塑料薄膜&#xff09;对光线透射率的影响。说白了&#xff0c;就是想精确知道&#xff0c;盖上一层材料后&#xff0c;底下还能…...

Kubernetes自动化更新利器Keel:实现容器镜像的持续部署

1. 项目概述&#xff1a;为什么我们需要一个“自动化的应用更新管家”&#xff1f; 如果你和我一样&#xff0c;负责维护着几个、十几个&#xff0c;甚至几十个运行在Kubernetes或Docker环境中的应用&#xff0c;那你一定对“更新”这件事又爱又恨。爱的是&#xff0c;新版本意…...

PowerInfer:基于热点神经元预测的LLM高性能推理引擎部署指南

1. 项目概述&#xff1a;当推理速度成为AI落地的瓶颈最近在折腾本地大模型推理的朋友&#xff0c;估计都绕不开一个核心痛点&#xff1a;速度。模型效果再好&#xff0c;生成一句话要等上十几秒&#xff0c;那种“卡顿感”足以劝退绝大多数想把它集成到实际应用里的开发者。我自…...

CircuitPython开发进阶:从库文档解读到内存优化与异步编程实战

1. 从“能用”到“精通”&#xff1a;为什么你需要深入理解CircuitPython库文档刚接触CircuitPython时&#xff0c;我们往往是从复制粘贴示例代码开始的。这没什么问题&#xff0c;快速让一个LED闪烁起来&#xff0c;或者让传感器读出数据&#xff0c;那种即时反馈的成就感是驱…...

AI编程助手安全规则实战:从SQL注入防御到团队安全基线构建

1. 项目概述&#xff1a;当AI编程助手遇上安全红线最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“cursor-security-rules”。光看名字&#xff0c;你大概能猜到它和Cursor这个AI编程工具有关&#xff0c;而且重点是“安全规则”。没错&#xff0c;这个项目本质上是一个…...

基于语义搜索的AI代码理解工具copaw-code深度解析

1. 项目概述&#xff1a;一个面向代码搜索与理解的AI工具 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫 QSEEKING/copaw-code 。乍一看这个标题&#xff0c;可能会有点摸不着头脑&#xff0c;“copaw”是什么&#xff1f;但结合“code”和项目托管在QSEEKING这个组织…...

Linux权限继承与umask配置实践

Linux权限继承与umask配置实践很多协作目录问题并不是因为当前权限错了&#xff0c;而是因为新建文件的默认权限总是不符合预期。背后的核心变量之一就是 umask。中级阶段如果不理解默认权限是怎么生成的&#xff0c;就会陷入“每次都手工 chmod”的低效循环。一、默认权限不是…...

AI攻防时间差:当漏洞发现速度碾压修复速度— 聚焦技术核心

AI攻防时间差&#xff1a;当漏洞发现速度碾压修复速度 — 聚焦技术核心 引言&#xff1a;当两个世界碰撞 2026年5月&#xff0c;对于网络安全领域而言&#xff0c;是一个具有分水岭意义的月份。 一边是360人工智能安全研究院在5月12日发布的重磅报告&#xff0c;首次提出**“AI…...

Arm Neoverse CMN-700缓存一致性互连网络架构解析

1. Arm Neoverse CMN-700架构概述Arm Neoverse CMN-700是Arm公司推出的新一代缓存一致性互连网络&#xff08;Coherent Mesh Network&#xff09;解决方案&#xff0c;专为高性能计算、云计算和基础设施应用设计。作为多核处理器系统中实现高效数据共享的关键基础设施&#xff…...

智能合约赋能AI代理:构建可验证、可审计的自动化工作流

1. 项目概述&#xff1a;当技能遇上智能合约最近在探索AI代理&#xff08;AI Agent&#xff09;的落地应用时&#xff0c;我遇到了一个非常有意思的项目&#xff1a;saralobo/skill-ai-execution-contract。这个项目名字乍一看有点长&#xff0c;但拆解开来&#xff0c;核心是“…...