百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

编程很容易,软件开发很难,维护代码是最难的

zzlvtu 2024-09-04 23:01 6 浏览

大约2年前,我开始了我的企业家之旅,并在我的创业公司担任"技术主管"的角色。这意味着我必须开始学习一些较新的技术,如ReactNextJs。特别是如果我希望提供人们愿意支付的任何类型的软件。

"那肯定不会太难?"—— 这是非常困难的,就像在地狱的第二层航行一样。

在此之前,我积累的3年以上的Python经验是没有用的。

编程很容易,但软件开发很难。

软件开发很难,因为大多数人通常倾向于跳过基本步骤,即学习创建程序,做其他人想要支付的事情,以及随之而来的所有困难。

我的竞争性编码的背景(主要是Python)没有教会我任何关于开发具有正确用户体验和设计选择的软件产品,最多是为集成几个复杂的API或为基于角色的授权逻辑编写代码。

当我开始开发我们的第一个软件产品(广告分析平台)时,我感觉自己就像一个期望在学习字母表后立即写一篇文章的孩子。

此外,由于我已经承诺了最后期限,因此我没有奢侈地从我的业务中休息几个月来掌握这些技术,因此我只剩下一个选择 - 在旅途中学习和实施所有这些技术。我花了大约4个月的时间才交付这个产品。在那段时间里,我了解到软件开发是一个非常复杂的过程,不能仅仅通过遵循教程来学习。为了成为一名成功的软件开发人员,我不仅需要编写代码,还需要了解代码的工作原理以及与系统其余部分的交互方式。虽然这听起来很容易,但我可以向你保证,YouTube上只有少数视频可以教你这项技能。因为了解不同技术/框架如何协同工作的细微差别是观看教程视频无法学习的 - 这是必须通过"做"来学习的东西。这需要我熟悉新的概念和术语/框架。我花了更多的时间阅读文档,或者观看视频解释,以试图填补我的知识空白,而不是编写实际的代码行!

在花了所有时间学习之后,我意识到大多数教程在解释软件开发的实际过程方面都很糟糕。

大多数教程和课程都通过只教我基础内容来抽象软件开发的复杂性。

他们让学习和掌握一门语言或框架看起来非常容易——以至于这让我想知道大惊小怪的是什么。教程、博客、课程中显示的内容与企业级应用程序中实际使用的内容之间存在巨大的脱节。而且,在我看来,这似乎是人们需要数月甚至数年才能达到软件开发周期结束的最大原因。

例如,大多数 react 教程都教你如何从外部 REST API 读取数据,但很少有视频讨论使用 React Query 的重要性 — React Query 是一个钩子库,消除了重复的代码,并介绍了生产就绪的数据提取和缓存实践,可以开箱即用。

几乎每个现实世界的应用程序都需要你构建数据获取的逻辑,在大多数情况下,需要使用类似 React Query 的东西。

当我意识到这一点时,我不得不回过头来在一个应用程序内重写近2000行代码,否则这些代码就可以在一个月内启动 - 要么是这样,要么我必须花费数周的时间在交付后调试和优化我的应用程序/服务器,这将非常耗时。

软件开发的过程是十几个重要决策的组合,在编写哪怕是一行代码之前,人们都需要做出这些决策。你必须考虑你的架构,数据库设计,技术堆栈,云托管,缓存,甚至这些都只是触及表面。

软件开发是一个复杂的过程,需要您了解各种特定领域的概念,规范,测试,扩展,设置时间表,设计架构,最重要的是选择您的"技术堆栈",如云服务提供商。由于我之前没有开发软件,考虑架构或选择正确的技术堆栈的经验;我的旅程有点坎坷。

经过大约4个月的来回奔波,编写了近2万行代码,软件开发终于完成了......虽然,旅程还远未结束。

我现在面临着一系列新的挑战——维护。

维护软件是一个世界上有经验的开发人员很少关注的话题。如果您曾经尝试更新或修复其他人编写的一段代码,您就会知道它会变得多么令人沮丧。

维护代码可能很困难的原因有很多,但最常见的一些原因是:

  • 代码难以理解或写得很差。
  • 代码组织不善,很难找到所需的代码。
  • 代码被修改了很多次,以至于很难找到原始源代码。
  • 原作者或拥有代码的公司不再支持该代码。

代码维护的复杂性是软件项目失败率高的主要原因之一。

为了保持软件系统的平稳运行,必须不断更新和调整代码,以应对业务环境的变化,新的要求和技术进步。这是一项艰巨的任务,通常很难找到时间和资源来正确地完成它。因此,许多软件系统陷入了难以更新和维护的遗留代码的困境。最终,这将导致性能问题和安全漏洞。

在开发过程中,我们很早就解决了这些问题,将精力集中在模块中编写代码(将其分解为更小的、可重用的组件),并重用它们以减少每次业务环境或系统要求发生变化时需要重写或更新的代码量。

提前规划我们的模块有助于我们解决与代码维护相关的问题,并使该过程更轻松,更高效。它为我们节省了大量的时间和金钱,也有助于确保我们的代码更加可靠和安全。

总之,软件开发和维护是严重误解的话题。没有经验的开发人员无法理解它们的复杂性,因为它们通常缺乏所需的专业知识深度。一旦你深入研究了软件开发和交付的深处,你就会学到它


相关推荐

什么是DPDK?DPDK的原理及学习学习路线总结

一、什么是DPDK  对于用户来说,它可能是一个性能出色的包数据处理加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。 ...

每天进步一点:两分钟解决kvm下windows虚拟机鼠标不跟随

跟随昨天文章做测试的朋友们应该和我一样遇到了vnc连接windows鼠标不跟随的问题,经过一番查找有两种解决办法:1.编辑配置文件命令virshedittest或者直接vi/etc/libvir...

PC虚拟化主流:KVM、XEN、OpenVZ详解

目前,PC的虚拟化逐渐成为互联网发展的大趋势,我们知道,KVM、XEN、OpenVZ是虚拟化的三种方式,今天我们就来探讨这三种虚拟化的优势和劣势。1、pc虚拟化——KVMKVM是完整的硬件虚拟化,可在...

Windows上使用QEMU创建aarch64(ARM64)虚拟机

前言随着国产化的推进,现在采用ARM、MIPS的机器越来越多,作为开发、运维人员要调测软件总不能每种架构的机器都去买一台吧?主要像博主这样的穷B,实在也是承受不起。。需要的工具...

高度致敬Windows!开源优麒麟20.04 LTS发布:支持5年

优麒麟团队宣布,优麒麟(UbuntuKylin)开源操作系统20.04LTS正式版已经发布,代号FocalFossa,全球同步发布的还有Ubuntu20.04、Lubuntu20.04、Xub...

极空间虚拟机上线了,一学就会!小白保姆级使用教程

友情提示本文涉及内容较多,篇幅在4500字左右,为了对小白用户更加友好,图片示例多达60张。整个文章部分为三个阶段,准备-初探-实战。其中实战部分包含Windows系统,ikuai软路由系统,iSto...

Windows Subsystem for Linux现以应用形式上架Microsoft Store

微软今天宣布WindowsSubsystemforLinux(WSL)作为一款应用上架Windows11端的MicrosoftStore。也就是说,现在WSL以应用的方式通过...

Windows Server 2019 Core 虚拟机系统镜像制作

WindowsServer2019Core简介WindowsServer2019是微软于2018年11月13日发布的新一代WindowsServer服务器操作系统,基于Win10180...

微软商店中的WSL预览版现已可用!Windows 11用户狂喜

...

在NAS上安装Win10,24小时待命的云电脑达成√

#头条创作挑战赛#引子...

免费开源虚拟机VirtualBox 7.0.12发布:修复TPM和黑屏问题

IT之家10月18日消息,甲骨文近日发布了VirtualBox7.0.12维护版本更新,重点修复此前版本中用户反馈和官方发现的BUG,改善了对LinuxKernel6.4/6.5...

KVM Cloud 虚拟机管理系统安装部署

KVMCloud介绍KVMCloud是一款基于KVM实现的适用于小微企业的虚拟机管理系统,支持如下功能:基于KVM的VM基础功能(创建、启动、停止、重装、webVNC等功能)使用NFS作为磁盘...

个人KVM 虚拟化学习笔记(kvm虚拟化管理平台)

一、KVM原理二、KVM基础功能2.1CPU2.2内存2.3存储2.4网络三、KVM高级功能...

kvm虚拟化之ESXi到KVM之v2v迁移(esxi虚拟机迁移到另一个esxi)

1.ESXi到KVM之v2v情况说明(1).配置任务列表:1)VMwareESXi虚拟平台下linux系统迁移到KVM虚拟平台。2)VMwareESXi虚拟平台下windows系统迁移到KVM虚拟平台...

unraid下虚拟机安装Windows(vmware安装unraid)

unraid下虚拟机安装Windows使用unraid也有一段时间了,主要是做数据备份,以及docker容器的安装测试,今天有空测试一下VMS虚拟机的使用,用在unraid上安装windows7操作系...