工作上比较蛋疼的一些地方 组员之间的工作对接 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dbfox
V2EX    职场话题

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

  •  
  •   dbfox 2015-04-28 15:25:49 +08:00 3930 次点击
    这是一个创建于 3908 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自身是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     Solana     3866 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 05:14 PVG 13:14 LAX 21:14 JFK 00:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86