程序员的新出路:维护老项目?

news2024/11/26 8:39:52

1

张大胖刚进入公司,遇到了一个神奇的同事:何小痩。 

别人工作都很忙, 何小痩工作似乎特别轻松,从来不加班,到点儿就回家。

张大胖向别人一打听,原来何小痩一直在维护一个老项目,维护了5年了。 

一次下班的路上,张大胖碰到了何小痩,向他询问起了这个项目的细节。

何小痩说:“这个项目使用Applet技术做的,实现了一个网页版的在线客服系统,客户在使用网站的时候,如果有问题,可以直接在网页上向客服人员提问,客服按照排队次序挨个回复。别看功能简单,在90年代中后期可是非常先进的功能。”

张大胖惊道:“Applet,这可是上古的技术啊!”

何小痩:“这个Applet项目依赖一个古董级的Library,是基于JDK1.1开发的!”

张大胖再次大惊:“JDK1.1,那可是最早的一批JDK啊。”

何小痩说:“由于时代久远,这个Library已经不再维护了,每次Applet项目添加新需求,修改Bug,只能只用JDK1.1的功能, 并且在JDK1.1上进行编译。” 

张大胖咂舌不已,感慨现在居然还有这样的系统存在。

张大胖问道:“那你岂不是被困到了这个JDK1.1之上。”

何小痩说:“什么叫被困住啊,这是好事啊,你想想这个项目没人会,技能独特,我可以一直把这个项目给维护下去,领导想裁我都裁不了。”

张大胖心想,这个工作很不错啊, 以何小痩的年龄,再维护个几年,兴许就可以退休了。

没想到,一年以后,JavaScript开始大行其道。

Applet被迅速抛弃,整个项目被用JavaScript重写。

新项目上线以后,何小痩被辞退了。

2

这个故事是我杜撰的,但是其中的Applet项目确是真实存在的。 

在计算机行业,为什么不能通过维护老项目来度过中年危机呢?

主要有两个原因:

技术发展实在太快

开发成本太高,而维护成本太低

计算机技术每隔5~10年,就会刷新一次,新技术往往具有更高的性能,更低的成本或者更好的用户体验。

80年代的PC,90年代的局域网,00年代的互联网,10年代的移动互联网,中间还夹杂着大数据,云计算,现在又出现了GPT。

每个时代的技术栈都是不一样的,一般的程序员经过努力,能精通一个时代的技术,再发发狠,最多再熟悉下一个时代的,你要想让他精通三个时代的技术,那就要了命了。

可是应用程序不等人,它会不断地演进,从C/S变成B/S,Browser变成手机,Server变成云。

不演进应用就会落伍,就会死掉。

在演进的过程中,它会不断摧毁那些老程序员。程序员工作了10年以后,就可能遇到危机。

所以何小痩想通过维护那个JDK1.1的Applet退休,是不可能的。

不过,事情总有例外,有些系统任你风吹浪打,我就是岿然不动。

这些系统的特点是业务极其稳定,对业务的理解远大于对技术的要求(如美国的失业救济金系统),又非常关键,用古董的COBOL开发完成以后没人敢动,硬件也不变,软件也不变,就这么运行了几十年!

然后疫情来了,领取失业救济的人数暴涨,系统崩溃,但是没人能维护了。

自然语言描述的需求和计算机代码之间有着巨大的鸿沟,程序员需要耗尽心血去fix各种意想不到的问题,实现客户的需求。

所以软件开发时特别麻烦,成本超级高,但是一旦开发完成,部署,稳定运行以后,神奇的事情发生了:

一个几十人的开发团队,留下几个人来维护这个项目就够了,剩下的人可以投入新的项目。

反正就是改一些不重要的Bug,或者实现一点儿新需求,要那么多人干嘛?!

当然,留下来维护系统的人,薪水是不会很高的。

正是由于这两点原因,个人想通过维护老项目来度过中年危机是非常难的。

3

真想一直靠维护老项目生存,有这么几种可能。

(1)个人项目

找到一个小众领域,和个人技能相结合,开发出一个软件,一直维护。

典型代表是《一个国外小老头,用被淘汰的编程工具,开发了一个了不起的软件》,他用Delphi开发了一个3D CAD程序PROLINES,专门用来设计船舶。

PROLINES这几十年也在不断改进这个软件,推出新版本,比如支持更高清的分辨率等等。

(2)开源软件

Linux,MySQL,Apache HTTP Server都是典型代表,它们存活了二三十年,在可预见的未来,还会一直存在下去。

这些软件对应的是计算机最基础的知识:操作系统,数据库,计算机网络,几十年不变。

如果能成为这些著名软件维护者的一员,生活会相当不错。

(3) 凭关系拿下的政府项目

有个朋友在政府有关系,组建了一个开发团队,一直从政府拿项目,几个项目修修补补,做了很多年。

严格来说并不是维护老项目,而是维护关系了。

(完)

591c103df9e8f7106b593828dc40f39c.png

最后宣传下我和闪客建立的星球“ChatGPT基地”,专门探索程序员在ChatGPT时代的定位,如何使用ChatGPT来提升工作效率。

在程序员领域,我们这个星球可能是玩ChatGPT玩得最深入的,已经远远超出了ChatGPT聊天的阶段,很多人进入了API开发,甚至私有化模型训练。

ChatGPT聊天 ->使用ChatGPT API开发应用 -> 训练私有化部署大模型

这里的朋友们很多已经从小白进化成ChatGPT领域的熟练玩家,星球的专栏有很多有价值的主题:

ad620a56489a96ff8dc4e6a90e7f907c.png

来到这个星球,用心刷上个几天,你就不知不觉超越了这个领域 99% 的人了。

现在星球有这些活动:

加入星球即送ChatGPT账号(仅限今天进入星球的前100名,联系方式:加微信onlyliuxin97,暗号:ChatGPT星球

输出优质内容即送100元红包

现在星球处于试运行期,原价199元,现在有个100元的优惠券,相当于99元就可以加入,早点儿拥抱ChatGPT,成为第一批会用ChatGPT和用好ChatGPT的人,占据先机,吃到红利。

be4248638c2fa856cd0d220993a55020.png

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

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

相关文章

「小产品独立变现实战训练营1期」门票限时优惠

大家好,我是凯凯刘,一名程序员,一直在做小产品的开发变现,目标就是让小产品的变现更简单。【小产品独立变现实战训练营1期】这个课程主要是围绕着如何开发出一个赚钱小产品这个主题。来跟大家一起从0开始实战,一步步跟…

为什么对象存储深度归档价格低?

AWS(亚马逊云服务)对象存储S3(Simple Storage Service)有以下四种不同的存储类型: S3 标准存储: 这是最常用的S3存储类型之一,它保证了高持久性,并提供 99.999999999% 的数据耐久性…

chatgpt赋能python:Python人脸识别:从入门到工程实践

Python人脸识别:从入门到工程实践 介绍 近年来,人脸识别技术越来越成熟,广泛应用于各行各业,如社交媒体、安防、金融等领域。Python人脸识别作为一种基于机器学习的技术,可以通过训练模型从图像中自动识别出人脸,并进…

致敬六一,用外观模式实现一个儿童乐园畅玩平台

一、概述 外观模式(Facade Pattern)是一种结构型设计模式,它为多个子系统中的操作提供一个统一的高层接口,用于访问复杂子系统的功能。其核心思想是通过一个外观类将子系统的复杂操作进行封装,客户端只需与外观类进行…

IO 多路复用是什么意思?Redis中的IO又是什么?

点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 本文首发于我的知乎:https://zhuanlan.zhihu.com/p/632776455 当你打开电脑,任何时候都在进行着IO的操作! 比如一次 API 接口调用、向磁盘写入日志信息&…

[数据结构习题]栈——中心对称链

[数据结构习题]栈——中心对称链 👉知识点导航💎:【数据结构】栈和队列 👉[王道数据结构]习题导航💎: p a g e 70.4 page70.4 page70.4 本节为栈和链表综合练习题 题目描述: 🎇思路…

Semaphore线程信号量

文章目录 前言一、Semaphore 是什么?定义对比 二、使用步骤1. 场景分析2. 编码如下 总结 前言 Semaphore 也是juc中的一个关键类,他与之前的lock 类似,也有公平和非公平两种,它与他们应用含义,引用场景有很大的不同; 与阻塞队列类似,但是也不一样;听我细细道来~ 一…

MTK capture 拍照流程

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、多帧拍照请求概览二、多帧拍照回帧概览 一、多帧拍照请求概览 多帧拍照请求概览如下: 多帧拍照请求 1.1 APP 下发拍照请求到 Camera Fr…

新Linux服务器安装Java环境[JDK、Tomcat、MySQL、Nacos、Redis、Nginx]

文章目录 JDK服务Tomcat服务MySQL服务Nacos服务Redis服务Nginx服务 说明:本文不使用宝塔安装 温馨提示宝塔安装命令:yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh JDK服务…

vitepress从0到1,让每个前后端小伙伴都拥有一个属于自己的博客

📸前言 之前周一的个人博客是用vuepress来搭建,但随着文章的数量越来越多,导致每回在启动的时候构建都特别慢,于是周一有了改构建工具的想法。这不,vitepress工具自发布后,在技术圈内一直有些火热&#xf…

数据库新闻速递 亚马逊Cosmos DB 添加了AI toolchain (译)

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

chatgpt赋能python:如何将Python代码打包成软件

如何将Python代码打包成软件 Python是一种直译式、交互式、面向对象的高级编程语言。由于其简洁明了的语法,Python在科学计算、Web开发、人工智能等领域得到了广泛的应用。但是,Python程序通常需要运行在特定的环境中,这限制了Python程序的移…

NodeJs之同源限制问题

1. 说明 app1是基于3001端口的服务器, app2是基于3002端口的服务器。 gitee地址:https://gitee.com/studyCodingEx/studys/ 2. app1 2.0 app1.js const express require(express); const path require(path); // 向其他服务器端请求数据的模块 const request …

Linux常用命令——gunzip命令

在线Linux命令查询工具 gunzip 用来解压缩文件 补充说明 gunzip命令用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。事实上gunzip就是gzip的硬连接,因此不论是压缩或…

NodeJs之模板引擎及综合案例

0. 数据源 ./views/addtional.art {{ if age > 18 }}age > 18; {{ else if age < 15 }}age < 15; {{ else }}age!!!!!!!! {{/if}}<% if(age > 18){ %> 年龄大于18岁 <% } else if(age < 15) { %> 年龄小于15岁 <% } else { %> 其他年龄段…

Linux驱动开发(I2C系统的重要结构体)

文章目录 前言一、I2C硬件框架二、i2c_adapter三、i2c_client四、i2c_msg总结 前言 本篇文章来讲解I2C系统的重要结构体&#xff0c;了解这些结构体对于编写I2C驱动来说是至关重要的&#xff0c;所以要想编写好一个I2C驱动程序那么就必须先了解这些结构体。 一、I2C硬件框架 …

图片识别工具Tesseract与使用

Tesseract工具是一个图片识别工具&#xff0c; 由HP实验室开发 由Google维护的开源的光学字符识别&#xff08;OCR&#xff09;引擎。它可以直接使用&#xff0c;或者&#xff08;对于程序员&#xff09;使用 API​​ 从图像中提取输入&#xff0c;包括手写的或打印的文本。与M…

KCC@上海正式成立啦!

5月28号下午&#xff0c;开源社区的朋友共聚于上海的一间茶室中&#xff0c;组织召开了 KCC上海第一次线下见面会&#xff0c;并正式成立了 KCC上海。 KCC&#xff08;KAIYUANSHE City Community&#xff09;是由开源社理事兼执行长庄表伟老师号召发起&#xff0c;旨在让开源社…

关于职场中的面试,要是遇到这些问题时,应该怎么回

(点击即可收听) 关于职场中的面试,要是遇到这些问题时,应该怎么回 平常多学一点,面试入职时就少踩一点坑,无论是去面试还是换工作,怎么样去回答面试官,遇到此类的问题,能够应付自如 1. 你觉得这份工作你能胜任? 首先,无论你在面试过程当中表现怎么样,一定要非常坚定,一定可以 …

让身份验证更简单:OAuth2基于令牌方式为第三方应用提供认证和授权方案

随着互联网应用的发展&#xff0c;跨系统身份认证解决方案也在不断演化和改进。下面是它的发展史&#xff1a; 早期的 Web 应用程序使用基于表单的身份验证方式&#xff1b;随着 Web 应用程序数量的增加&#xff0c;需求跨应用程序身份验证的呼声也越来越高&#xff0c;从而出…