V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dbfox
V2EX  ›  职场话题

工作上比较蛋疼的一些地方 —— 组员之间的工作对接

  •  
  •   dbfox · 2015-04-28 15:25:49 +08:00 · 3383 次点击
    这是一个创建于 3505 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自身是web程序员,工作中发现一些问题
    但是公司没有良好的技术氛围,
    很难去解释一些技术问题,
    去解释的时候,非web人员未必听得懂,反而会让他们觉得在推诿

    事例:

    有一个PC客户端项目,需要调用 web api ,返回数据格式是 json
    web 程序员 去实现数据调用的 api
    C++程序员 去实现 PC客户端,需要调用到 api
    客户端频繁的修改,不断的出新版本,需求也在不断的修改



    问题来了:

    PC客户端有一个软件列表页,软件有用户评分,满分10分,
    PC端根据API提供的JSON数据,会给分数大于8.5的软件图标上加一个“推荐”的标记


    今天,新增了一些需求,需要在这个软件列表页上面增加一些广告
    WEB程序员新写了一个广告 API,交付给PC端程序员,

    需求是:要把广告搞成和“推荐”的软件一样,看起来是一个软件,有“推荐”的标记,实际是一个广告,点击会自动下载安装。

    由于是广告,API 中是没有评分这个字段的

    但是,PC客户端程序员想让加一个评分,让评分默认值是9分,这样他好把广告都设置成“推荐”的标记。

    客户端为了实现这么一个小功能,API 需要跟着做调整,WEB程序员觉得这样做并不妥。

    WEB程序员觉得API在设计的时候,尽可能灵活简约、有意义,无论客户端怎么变API不用变,尽量避免一次性API。

    各位v友怎么看?


    如图:
    第 1 条附言  ·  2015-04-29 09:50:46 +08:00
    真理掌握在少数人手中,而大多数人无法理解。

    在这种环境中,前者比较苦逼也在所难免。
    12 条回复    2015-04-29 09:29:14 +08:00
    owei
        1
    owei  
       2015-04-28 15:40:39 +08:00
    web端做没有什么问题呀?数据源在你这里,你肯定要满足需求的,而且你可以动态调整给端的数据呀,再加一个后台管理,呦呦,让他们玩去
    sumhat
        2
    sumhat  
       2015-04-28 15:45:23 +08:00
    这要看 PC 端知道什么数据了,如果 PC 端知道那是广告,直接把分数改成 9 就行了;如果 PC 端不区分广告和非广告,就需要在服务器端修改。
    dikcen
        3
    dikcen  
       2015-04-28 16:30:31 +08:00
    只有我认为这样做广告很不好么?
    dbfox
        4
    dbfox  
    OP
       2015-04-28 17:02:25 +08:00
    @dikcen 我也觉得不好,不过我不能决定方向
    mcfog
        5
    mcfog  
       2015-04-28 17:25:47 +08:00
    开发何苦为难开发

    这种情况明显应该去咬产品汪啊

    列表和广告混在一起节操掉一地啊
    列表还要去除已在广告中出现过的entry简直没法实现啊
    汪汪汪喵喵喵啊

    去和PC端的战友较个什么劲呢
    Ghoul2005
        6
    Ghoul2005  
       2015-04-28 17:35:13 +08:00
    这是一个典型的分工问题,客户端开发希望这个功能由web开发实现,而web开发希望功能由客户端开发实现,两边的理由都有道理,就是为了自己这边的逻辑更简单,更易于维护。

    这种情况建议上升到更高层次领导去决策,你们应该有一个类似技术主管的人,这两边的人都归他管,由他决策。

    客观一点,决定逻辑归属哪个模块,主要考虑开发和维护成本,哪边成本低哪边做。
    dbfox
        7
    dbfox  
    OP
       2015-04-28 19:52:31 +08:00
    @mcfog

    公司产品高于一切,某种程度上,产品经理说了算,说实话这种情况挺悲哀的,

    算了不说了,活在一个旋涡中,没辙,谁硬听谁的。
    dbfox
        8
    dbfox  
    OP
       2015-04-28 19:53:04 +08:00
    @Ghoul2005 呵呵,我们没有,各据一方
    vivisidea
        9
    vivisidea  
       2015-04-28 22:51:17 +08:00
    @dbfox

    就这个需求来说,个人觉得确实是web这边做比较合适的,理由就一个,灵活

    如果下回产品说改个排序规则什么的,在客户端做的话就要重新发布客户端
    在web这边实现只要改下输出逻辑就行了
    RemRain
        10
    RemRain  
       2015-04-28 22:59:27 +08:00
    建议放到 web 端来实现,使 web 变重,客户端变轻。理由很简单,web 升级总是比客户端容易、更迅速、更灵活,web 的版本可以统一;而客户端每次升级都很伤,降低用户体验不说,每次更新总有人会不升级,或者升级失败。

    实际上 web 应该控制更多的业务逻辑,而客户端只管展示。就拿 LZ 这个例子来说,客户端只应该添加一种类型,web 直接在原有接口上插入数据即可,这样 web 可以灵活控制广告投放的数量、位置等。万一产品改了,需要显示更多广告、或者要在正常的列表中中插入广告的话,也是接口一改就完事,不用客户端做什么。

    如果新增一个接口,让客户端单独实现的话,试想一下会带来哪些问题:
    1. 显示位置和数量固定,没法灵活调整
    2. 两个接口加载耗时不一样,可能导致一块先加载出来了,另一块还是空白
    3. 单个界面需要加载太多的接口
    4. 有人没升级,广告出不来
    dbfox
        11
    dbfox  
    OP
       2015-04-28 23:54:21 +08:00 via Android
    @RemRain
    @vivisidea

    我不赞同放web
    比如广告形式变了,新版本不要广告了,同时要不影响老版本

    按照你们说的需要客户端每个请求都加上版本号

    web接收版本号进行判断返回数据,

    如果长期这种下去,

    web端程序要做很多版本兼容的api

    web端会变得超级臃肿 ,代码估计没法看了
    jackyliudm
        12
    jackyliudm  
       2015-04-29 09:29:14 +08:00
    从逻辑上来说,广告里面加个用户评分没有实际意义. 这是典型的为了编程方便来更改需求, 不可取.

    不过你们的API确实需要重新设计, 从需求上来看, 这种广告类似于原生广告, 广告APP和非广告APP应该混在一起显示,而不是所有广告APP都放在最上面显示. 因为都放在最上面显示,几次之后用户就知道这是广告了...

    你们应该重新设计一个API, 返回所有APP. 其中广告APP应该返回类似于推荐样式,推荐图标的字段; 其他APP返回用户评分.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2824 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:24 · PVG 20:24 · LAX 04:24 · JFK 07:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.