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

关于工程质量的思考

  •  
  •   pabno · 2020-02-22 00:30:17 +08:00 · 2453 次点击
    这是一个创建于 1737 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近做了一个很赶的需求,需求只有一份简单的 excel,其他逻辑全靠问,兼顾开发和测试。本来经过沟通梳理,已经把需求吃透了,代码也自认为写的非常简洁易懂,测试用例也覆盖的很周全。本想着可以优雅上线了,但是上线依然不顺利。

    1. 由于不同环境使用的是不同的配置文件,有些配置在开发和测试配置,但是生产没有配置
    2. 发布后发现有个基础库配合使用有问题,场景是使用公司封装工具类先从请求获取 IP,然后调用工具类获取 IP 的国家城市信息阻塞将就 10 秒。
    3. 关键流程没有加日志,要定位到底哪里阻塞需要重新发布带日志版本

    个人总结: 1 的话暂时只能靠自己细心发现了,不过感觉应该有技术手段可以避免,不知道大家公司是怎么样的流程? 2 的这个锅我不背 3 作为一个工作多年的人,确实不应该出现这种错误,另外一方面也是因为项目启动不久,监控工具还没有接入。今天果断接入了 skywalking,不知道大家都是用什么性能监控工具?

    另外为了保证项目稳定运行,个人觉得对于涉及到外部系统调用的地方应该要充分考虑对方宕机阻塞的情况

    不知道有没有关于工程质量方面的书籍推荐?

    今天的上线实在是有点不爽,抛开外部原因谈觉得应该还能更顺利点的,也算是发下牢骚,也引发了一个思考:代码优不优雅,其实很难体现出一个人价值,对于业务部门甚至乎直属领导来说,你写的功能有没有出问题这个才是最重要的。至于你写的代码赚不赚钱,那更不是我们需要考虑的了

    14 条回复    2020-02-28 22:40:25 +08:00
    Girlphobia
        1
    Girlphobia  
       2020-02-22 01:33:38 +08:00
    1 的部分是 devops 了吧。我司有专门的运维负责各种环境的 puppet 更新,统一调配。上线有新配置要求直接 puppet_push -u。
    2 个人感觉无解。
    3 没有经验,等楼下给一些启发。
    wangkun025
        2
    wangkun025  
       2020-02-22 01:40:33 +08:00
    一个人做的事情太多了。
    很多事情分拆开,就很容易了。
    ericgui
        3
    ericgui  
       2020-02-22 02:59:37 +08:00
    没什么书籍

    完全就是时间,钱,质量这个不可能三角,你只能最多选 2 个,不能三个都要。既要节省成本,又要周期短,又要质量高,只能去死了。

    所以你不需要质量。你需要问清楚,对方在这三者中选哪 2 个?
    ericgui
        4
    ericgui  
       2020-02-22 03:00:03 +08:00
    最后一句更正:

    所以你不需要什么书籍。

    你只需要问清楚,对方在这三者中选哪 2 个?
    laminux29
        5
    laminux29  
       2020-02-22 05:27:58 +08:00
    1.如何开发软件,题主可以找找软件工程之类的书籍,科班把这一块内容放在本科层次,内容不难。

    2.即使你再怎么牛逼,面对大工程,没按软件工程的步骤来,急于编码,必然后期会有各种各样的问题。

    但是!

    项目质量,与是否赚钱,并不成正比。
    wd
        6
    wd  
       2020-02-22 07:08:10 +08:00 via iPhone
    写测试用例吧,覆盖到 80% 以上
    xiqingongzi
        7
    xiqingongzi  
       2020-02-22 07:11:03 +08:00
    你应该有自己的一套体系(或者叫方法论,或者叫脚手架),在任何开发时,优先套入这个体系,借助一些固定好的,写死的东西,来优化你的整个流程。
    ElmerZhang
        8
    ElmerZhang  
       2020-02-22 09:15:56 +08:00 via iPhone
    1. 发布工具来管理环境配置,发现某个环境的配置项缺少的,警告或者阻塞发布
    2. 新项目上线前必须有压测报告
    3. 就像你所说的,统一接入 skywalking 之类的 tracing 系统可以解决一部分日志需求。比较方便搞无缝接入的日志基本就是性能、输入输出、error 这三类,具体方案要根据你们自己的情况来具体分析,没有最好的
    sumarker
        9
    sumarker  
       2020-02-22 09:35:45 +08:00   ❤️ 1
    需求很赶这个前提本身就不是一个一两句话就能解决的问题,然后又是一个人全干的工程师,
    那其实首先吃透需求就不容易,各个环节还需要细心加耐心,开发有一定的成本,不过作为一个工程师,这个难度应该不高,相比开发可能沟通的成本会更高。
    blless
        10
    blless  
       2020-02-22 09:48:22 +08:00 via Android
    领域驱动设计 你会发现大部分概念都是解决工程问题
    duan602728596
        11
    duan602728596  
       2020-02-22 11:44:55 +08:00 via iPhone
    我是觉得不管需求着急还是不着急,基础的东西要做好,所谓“磨刀不误砍材工”。基础的东西没考虑全,后面就会出现各种各样的坑,耽误的时间更多,有时候甚至没办法优化。
    我写项目按就接近开源项目的标准来做,感觉不论开发还是维护都舒服多了。
    pabno
        12
    pabno  
    OP
       2020-02-28 22:33:52 +08:00
    @wangkun025 确实,线程切换上下文都有性能消耗,人也一样
    pabno
        13
    pabno  
    OP
       2020-02-28 22:37:51 +08:00
    @ericgui 领导就想三者都要,虽然知道事情很难做的非常完美,但还是想着能否借助他人的经验来尽可能的做好
    pabno
        14
    pabno  
    OP
       2020-02-28 22:40:25 +08:00
    @xiqingongzi 有道理,以前有总结过一套上线 check list,后面有段时间没接触过生产漏了这个步骤了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   991 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.