V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kamal
V2EX  ›  程序员

奇文共赏: 12 年没有版本控制的 PHP 代码,产生两千万美元年收入

  •  3
     
  •   kamal ·
    PlayerYK · 2022-09-20 16:39:00 +08:00 · 9004 次点击
    这是一个创建于 555 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Ask HN: 继承了我见过的最差的代码和技术团队,怎么办?

    529 点赞 | 660 评论

    我必须找到一个策略来解决这个开发团队的问题,不是直接管理团队。现状如下。

    • 这个代码每年产生超过 2000 万美元的收入
    • 运行在 PHP 上
    • 已经在生产环境直接开发了 12 年,没有源代码控制(都是这种 index-new_2021-test-john_v2.php )。
    • 没有使用 composer 或任何依赖管理。都是 require_once 。
    • 不使用任何框架
    • 路由管理完全是在 NGInX 中重写的( NGInX 的配置大约是 10,000 行)。
    • 这些年只往上堆代码,没有任何代码被删除。我想这是因为直接在生产环境开发,删东西太冒险了。
    • 数据库结构也是一团糟,没有迁移,等等。当添加一个列时,由于数据量大,他们会建一个新的表,然后用 join 。
    • JS 和 CSS 也是如此。多个版本的 jQuery 互相打架,取决于你在哪个页面,甚至在同一个页面也存在。
    • 当然没有 MVC 模式,或者什么模式。没有模板库。这是 PHP2003 的风格。
    • 在很多地方,我看到像是 Controller 一样的文件,向它自己的 rest API 发出 curl 请求(通过域名,而不是 localhost )做 oauth 授权,等等。只是为了获得菜单项或产品列表...
    • 没有缓存(但有 memcached ,但只用于 Session...)
    • 团队有 3 个人,很年轻。一个后端,一个前端,一个 iOS/android 。对变化有很强的抵触。
    • 生产力很差,这是可以理解的。乱七八糟的东西实在是太多了,根本没办法做新东西。

    业务部门有相当积极的规划,因为管理层和总部没有真正了解这些代码上的障碍。而且在 COVID 之后,预算真的很紧张。

    我知道应该全面重写,但如何抉择呢?

    原文地址: https://news.ycombinator.com/item?id=32883596

    第 1 条附言  ·  2022-09-20 17:47:32 +08:00

    勘误:

    team is 3 people, quite junior. One backend, one front, one iOS/android. Resistance to change is huge.

    团队有3个人,都是初级开发。一个后台、一个前台、一个iOS/android。改革阻力巨大。

    56 条回复    2022-09-21 18:23:28 +08:00
    liuzhedash
        1
    liuzhedash  
       2022-09-20 16:43:32 +08:00   ❤️ 11
    倒是可以完美解答这个问题:
    https://www.v2ex.com/t/881426
    wonderfulcxm
        2
    wonderfulcxm  
       2022-09-20 16:48:43 +08:00 via iPhone
    我们公司就有这种的,没有版本控制,明文存储密码,逻辑写在存储过程,都是 2008 年的时候的代码了。
    Light3
        3
    Light3  
       2022-09-20 16:53:37 +08:00   ❤️ 1
    代码能跑不还行?天哦
    rocksolid
        4
    rocksolid  
       2022-09-20 17:00:14 +08:00   ❤️ 12
    聪明人只会润或者继续堆屎
    自作聪明的或者绝世天才才会重写
    learningman
        5
    learningman  
       2022-09-20 17:00:38 +08:00
    感觉有点喘不过气了
    tzigone
        6
    tzigone  
       2022-09-20 17:12:00 +08:00
    这 3 人可不光是 phper , 他们肯定也是业务专家和细分流程的集大成者。

    只要这 3 人不重构,估计要花很多钱才能构建出一样的。
    LeegoYih
        7
    LeegoYih  
       2022-09-20 17:14:15 +08:00   ❤️ 2
    完美诠释了能赚钱的项目都是屎山
    Daniel17
        8
    Daniel17  
       2022-09-20 17:20:29 +08:00   ❤️ 1
    所以赚不赚钱和代码质量没有啥关系?
    HunterPan
        9
    HunterPan  
       2022-09-20 17:24:02 +08:00
    没人敢辞退了 不好么
    MAGA2022
        10
    MAGA2022  
       2022-09-20 17:25:16 +08:00
    提升空间巨大,我甚至有点手痒
    watzds
        11
    watzds  
       2022-09-20 17:25:41 +08:00   ❤️ 2
    @tzigone #6 原文是 3 个初级开发,楼主翻译成很年轻,到你这儿直接业务专家了
    frankies
        12
    frankies  
       2022-09-20 17:34:52 +08:00 via Android   ❤️ 6
    一句话:好的商业模式比业务代码重要得多得多!

    再多问一句,他们如此落后的开发影响他们商业利润提升了嘛?如果没有,那么继续;如果有,才需要考虑技术问题。

    其实就是奥卡姆剃刀原则。

    开发人员理应考虑技术问题,一旦你试图考虑商业、盈利、管理,那么你就要跳出技术思维,因为这可能会带来负面作用。
    zzlatan
        13
    zzlatan  
       2022-09-20 17:35:11 +08:00
    我觉得挺好~
    lucifer9
        14
    lucifer9  
       2022-09-20 18:08:54 +08:00
    这仨哥们儿万一哪个人哪天脑子一抽删库跑路...
    xiangyuecn
        15
    xiangyuecn  
       2022-09-20 19:52:06 +08:00
    看到没有,代码什么的根本不重要,只要是能赚钱,屎山都是香喷喷的😂🐶

    所以,能跑起来的代码,千万不要动🐶 除非重金重构 大捞一笔😁
    lucybenz
        16
    lucybenz  
       2022-09-20 20:30:33 +08:00
    @lucifer9 仓库报废电脑的硬盘里 还有几百个历史版本的备份
    abersheeran
        17
    abersheeran  
       2022-09-20 21:18:48 +08:00
    这三个人可以靠这一个项目养活下半辈子了,没人能接手……
    nonduality
        18
    nonduality  
       2022-09-20 21:36:56 +08:00
    很好奇啥业务,这么赚大钱。
    moult
        19
    moult  
       2022-09-20 22:06:25 +08:00
    这让我想起了某个 PHPWind 搭建的网站。
    zhangkunkyle
        20
    zhangkunkyle  
       2022-09-20 22:06:52 +08:00
    重要的是业务,用什么工具都行,业务能做成就行
    ladypxy
        21
    ladypxy  
       2022-09-20 22:21:14 +08:00
    如果是自己搭建的屎山,自己知道问题在哪里,知道怎么修。。别人都搞不定

    突然感觉这是越乱越安全啊。。。
    likunyan
        22
    likunyan  
       2022-09-20 22:29:10 +08:00
    牵一发而动全身
    zddwj
        23
    zddwj  
       2022-09-20 22:43:40 +08:00 via Android
    哈哈哈哈,我曾经接手过一个 php 商城项目跟这个描述超级像,各种年份的代码混在一起,没有依赖管理,没有版本控制,一个方法 2800 行,整个项目几乎没有什么注释,循环里面写 sql ,源文件目录下随机分布着 qwe.txt,666.txt 之类的缓存文件,用 curl 下载自己服务器上的图片文件进行二维码生成等等一系列骚操作
    swsh007
        24
    swsh007  
       2022-09-20 23:01:28 +08:00 via Android
    业务逻辑靠谱就是
    花里胡哨太多也没啥意思
    会配防火墙会备份会倒回能挣钱不赔钱
    还要啥子呢
    x86
        25
    x86  
       2022-09-21 00:25:04 +08:00
    能赚钱就是牛,给你上 laravel 和 vue 赚不到钱也是白搭
    datou
        26
    datou  
       2022-09-21 00:52:09 +08:00
    @moult s1 ?
    levelworm
        27
    levelworm  
       2022-09-21 02:22:50 +08:00 via Android
    这个除非乱到没法加新特性,或者出错到没人能搞定,否则业务上的人应该是不会同意重构的。这时候就看技术领导的软技能了。
    threebr
        28
    threebr  
       2022-09-21 03:05:42 +08:00
    重构出岔子耽误别人挣 2000 万怎么办?
    EscYezi
        29
    EscYezi  
       2022-09-21 03:30:23 +08:00 via Android
    这个样子居然还能继续迭代,太恐怖了
    akira
        30
    akira  
       2022-09-21 04:32:11 +08:00   ❤️ 3
    一套 能产生年收入 2000w 美元收入的系统,只需要 3 个初级程序员维护。。

    感觉这公司能有这么高的收入,并不依赖于这套系统。
    julyclyde
        31
    julyclyde  
       2022-09-21 08:38:34 +08:00
    口气似乎很骄傲
    而且业务变革不许组织变革,那怎么可能成呢
    visper
        32
    visper  
       2022-09-21 08:59:14 +08:00
    代码不漂亮,但是业务功能好用啊
    sciel
        33
    sciel  
       2022-09-21 09:01:49 +08:00 via iPhone
    能探出是什么行业,具体什么服务吗?
    echoZero
        34
    echoZero  
       2022-09-21 09:11:41 +08:00
    又一次证明,业务赚不赚钱也开发的编码能力没有啥关系
    mknightoy
        35
    mknightoy  
       2022-09-21 09:26:56 +08:00
    完美诠释了技术跟盈利没什么关系
    不过维护的那几个弄不下去了可以连夜转行业务人员 [doge]
    Leonard
        36
    Leonard  
       2022-09-21 09:28:45 +08:00
    非技术驱动的项目,就是技术能用就行
    proxytoworld
        37
    proxytoworld  
       2022-09-21 09:53:37 +08:00
    能用就行
    pytth
        38
    pytth  
       2022-09-21 10:00:06 +08:00
    你就说这个代码还能不能跑吧!能赚 2000 万美元,拿点钱出来用现有的最新技术标准去用 go 或者 java 重构不也挺好的吗!
    littlewing
        39
    littlewing  
       2022-09-21 10:23:41 +08:00
    你就说你重构后能不能一年赚 2 亿美元,如果不能,重构他干啥
    eason1874
        40
    eason1874  
       2022-09-21 11:14:13 +08:00
    @pytth #38 为了追求新技术而重构,不会带来收益,只会带来风险

    我以前总是第一时间用新技术重构项目,有一次重构隐藏 bug 几个月后才知道,亏损 10 多万。如果不重构而是加机器来提高性能的话,花不了几千块

    其实省的机器钱都不够发工资😅,不如直接用重构和修 bug 的工资来加机器,那样还不用担心出 bug
    pusheax
        41
    pusheax  
       2022-09-21 11:53:26 +08:00
    粗略看了一下,可能存在一些安全问题:
    1 、老版本中间件的安全漏洞,如 PHP5 的%00 截断、Nginx 的一些 DOS 漏洞。
    2 、敏感文件泄露,看起来网站目录下可能存在 SQL.txt 、www.zip 之类的文件。会被目录扫描扫出来。
    3 、账户认证或者 XSS 、CSRF 一类的问题。
    至今没给黑产暴打,然后脱裤,也是难能可贵(也可能是被脱了没发现
    也许某一天被黑产盯上了,就不得不重构了。
    pindleskin
        42
    pindleskin  
       2022-09-21 12:03:27 +08:00
    很显然继续堆屎山,一直到堆不了为止。这种历史悠久的项目,有很多细节逻辑都在代码里,没有人能知道所有的细节,重构不知道会引入多少 bug 。引入版本控制是必须的,这也很容易。
    个人认为,在项目的早期可以重构,项目真正上线运行一段时间,除非有重大问题,重构都是风险远大于收益。所以项目一开始就要做好。
    avenger
        43
    avenger  
       2022-09-21 13:36:46 +08:00
    光看描述都快不能呼吸了……
    winglight2016
        44
    winglight2016  
       2022-09-21 13:44:29 +08:00
    nginx 配置居然能写一万行,谁还知道最终是什么规则在起作用?与其重构,不如重写
    ngloom
        45
    ngloom  
       2022-09-21 13:49:34 +08:00
    关键的不是代码,而是啥时间解决了啥问题
    leeggco
        46
    leeggco  
       2022-09-21 14:45:54 +08:00
    能赚钱为什么要改?
    BenbenXiong
        47
    BenbenXiong  
       2022-09-21 14:53:26 +08:00
    能跑吗
    Reficul
        48
    Reficul  
       2022-09-21 15:05:31 +08:00
    三个人就,但是 2000 万美元收入。所以这三个人工资怎么样?钱多的话这口屎我也可以。
    acthtml
        49
    acthtml  
       2022-09-21 15:11:20 +08:00
    这种程序员才是大智慧。

    他们三,没法替代。
    Joker520
        50
    Joker520  
       2022-09-21 17:20:16 +08:00
    能跑,能赚钱就行了
    ztxcccc
        51
    ztxcccc  
       2022-09-21 17:32:47 +08:00
    你笑那三哥们 junior ,别人笑你 naive
    yaphets666
        52
    yaphets666  
       2022-09-21 17:43:33 +08:00
    @watzds 请问这样的代码,如果不是业务专家,你敢添加一行代码吗?年轻和业务专业并不冲突。
    neutrinos
        53
    neutrinos  
       2022-09-21 17:51:31 +08:00 via iPhone
    老板看到得连夜裁员,笑哭
    watzds
        54
    watzds  
       2022-09-21 17:56:41 +08:00
    @yaphets666 #52 这项目估计是简单重复,只是时间旧了代码多,不是本身复杂。
    要是真复杂,他们怎么敢直接在生产环境开发的

    这文字说的是项目烂但是挣钱,不是这项目有多厉害
    yaphets666
        55
    yaphets666  
       2022-09-21 18:02:52 +08:00
    @watzds 复杂是复杂,你的意思是有可能没什么技术难度或者难点,这个我是认同的,但是这种屎山我深有体会,不懂业务真的动不了。
    wowawesome
        56
    wowawesome  
       2022-09-21 18:23:28 +08:00
    能挣钱,不寒碜
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3213 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:38 · PVG 19:38 · LAX 04:38 · JFK 07:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.