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

吐个槽,顺便问问 v2 的兄弟

  •  
  •   zhaogaz · 2018-10-12 13:06:40 +08:00 · 4517 次点击
    这是一个创建于 2239 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 小公司,开发人数不到两位数。算上产品,十个人左右。公司上层原来是做大数据的团队,现在出来了几个人拿着原型,到处给别人展示。

    今天和上司讨论权限相关的东西,主要是给不同的人,展示不同的菜单,不同的人有不同的操作按钮。

    上司叫我,把菜单做成动态的。他说的动态,指的是从数据库读取菜单相关的数据,包括菜单的图片、菜单的链接、菜单的文字之类的。

    我问了问理由,他和我说:他之前做的所有的项目都是这么做的。

    我内心 OS:傻逼上司,真是一辈子外包,习惯真的改不了了。

    我的思考理由:动态的菜单适用的情况是,经常变化的菜单。什么时候才会经常变化呢?把做的东西卖给别人的时候。自己公司的项目怎么可能会这么随便变化呢?菜单加一个,减一个,对应的就是功能的变化了。

    反正我觉得,我上司就是这种外包做久了。水平也就那样了。。

    顺便问问大家怎么看


    补充一则与上司的交流

    之前和上司讨论什么是外包,交流的过程中上司这么说的

    [软件外包不算外包,只有人员外包才是外包,七成的公司都是靠卖项目赚钱活下去的]

    第 1 条附言  ·  2018-10-12 16:37:28 +08:00

    看了一下大家的回复。

    非常感谢大家批评和指导。

    我清楚了我哪里不足。

    我在最开始编程的时候,总是在想着扩展性,这边能不能扩展,那边能不能扩展,能不能做成接口,能不能用设计模式。

    这给我带来的一个问题是,写不出代码,想得美,但是下不了手。

    所以我现在把我的态度改变成了,先考虑现阶段可能的变化和常见的变化,这样,我不太懂得方面,我就不考虑。这让我的编程效率大大提高。

    由于我的目光短浅,经验较少。导致我不清楚这种程序设计的真正目的。

    楼里的几位老哥举例非常棒,感谢!

    38 条回复    2018-10-15 12:47:58 +08:00
    atonku
        1
    atonku  
       2018-10-12 14:21:16 +08:00   ❤️ 1
    前排占座
    moresteam
        2
    moresteam  
       2018-10-12 14:21:37 +08:00   ❤️ 1
    我觉得没啥问题,可能我也是外包思维&软件外包也是外包
    bobbychen
        3
    bobbychen  
       2018-10-12 14:25:17 +08:00   ❤️ 1
    没什么问题呀~~可能他的回答方式不太好
    Mogugugugu
        4
    Mogugugugu  
       2018-10-12 14:27:32 +08:00   ❤️ 1
    有什么问题么?总经理和员工能看到的菜单肯定不一样啊,不从数据库获取 难道前端写死?
    kamal
        5
    kamal  
       2018-10-12 14:30:43 +08:00   ❤️ 1
    这不是正常的权限组需求吗?别抵抗了
    rocksolid
        6
    rocksolid  
       2018-10-12 14:31:52 +08:00   ❤️ 1
    就算自己公司的项目,部门不一样看到的菜单也不一样啊
    snnn
        7
    snnn  
       2018-10-12 14:32:35 +08:00 via Android   ❤️ 1
    你说的对!!
    lllllliu
        8
    lllllliu  
       2018-10-12 14:37:51 +08:00   ❤️ 1
    ...权限和模块不都是这么做的么,,配置都是写到数据库里的。RBAC 了解下。
    zhaogaz
        9
    zhaogaz  
    OP
       2018-10-12 14:42:19 +08:00
    @kamal
    @Mogugugugu
    @bobbychen
    @moresteam


    你们说的有道理,但是我觉得,应该的实现思路是把这个东西写到 页面模板 里面 。权限控制不同的人看到不同的内容,权限越高看到的越多。如果说需要改 汉字 英文 的话,那就是 i18n 放到 properties 文件。也用不上放在数据库。。。

    当然也可能是我太年轻了(坦诚将,才干了 1 年多
    zhaogaz
        10
    zhaogaz  
    OP
       2018-10-12 14:45:28 +08:00
    @lllllliu 我们目前正在参考 rbac 做,但是由于上司的这个要求,我把 动态菜单和权限部分揉起来了。 发帖只是说了 动态菜单这部分。
    xuanbg
        11
    xuanbg  
       2018-10-12 14:49:42 +08:00   ❤️ 1
    可配置意味着代码写好就不用管了,而且菜单改个文案图标什么的改数据就行,不用改代码,而且改了就生效。

    楼主还是项目经验少了点,没想过以后别的项目可以复用这个权限框架。
    jnotnull
        12
    jnotnull  
       2018-10-12 14:52:17 +08:00   ❤️ 1
    这不是正常的权限组需求吗?别抵抗了
    xiaoxinshiwo
        13
    xiaoxinshiwo  
       2018-10-12 14:54:42 +08:00   ❤️ 1
    @zhaogaz 你说的写在页面模板里面也是一种配置不是?多思考少抱怨
    qq976739120
        14
    qq976739120  
       2018-10-12 14:57:45 +08:00   ❤️ 1
    难道写死?
    xiaohei233
        15
    xiaohei233  
       2018-10-12 15:02:47 +08:00   ❤️ 1
    段位不够啊 兄弟 菜单内容动态很正常啊,考虑了后面需求变化的可能没啥毛病
    zhaogaz
        16
    zhaogaz  
    OP
       2018-10-12 15:03:37 +08:00
    @xuanbg 是的,我确实是项目经验少。

    所以我能问问么?诚心求教。

    我这边有一部分复用,我们的复用方式是,把上一个项目的代码拷贝过来,删删改改,上一个项目相关的内容删掉,留下比较通用的,如登录啊,用户啊,这些。

    你说的复用权限框架是这样么?如果不是的话,你说的复用权限框架怎么做呢?能说说习惯做法么?
    DeutschXP
        17
    DeutschXP  
       2018-10-12 15:04:36 +08:00   ❤️ 1
    @zhaogaz 举个例子,页面模板里面写死了,增加一个菜单项怎么处理?减少一个怎么处理?菜单对应的权限有变动了?都改模板?你是怕前端的 KPI 完成不了,工资拿的不踏实?
    那如果想要允许自定义菜单显示顺序呢?
    xuanbg
        18
    xuanbg  
       2018-10-12 15:04:54 +08:00   ❤️ 1
    可配置还有一个好处,就是用户端得到的菜单可以按授权显示,前端拿到什么数据就显示什么菜单。这样前端就不需要根据用户权限来判断哪些显示哪些隐藏了。总之系统会复杂点,但好处也是很多的。

    我们是连路由都是配置出来的。做第一个项目的时候大家也有疑虑,但从第二个项目开始,开发进度远超原先的模式。大家只需要关注业务逻辑,再也不用管用户、权限这些底层的东西了。我们也算是互联网行业的,从我进公司以来,已经做了十几个项目了,全部是公司自己用的各种业务管理系统。
    xuanbg
        19
    xuanbg  
       2018-10-12 15:06:48 +08:00   ❤️ 1
    @zhaogaz 我们更进一步,封装了一个框架,新项目直接使用这个框架就行。当然你复制项目过来删掉无关代码也是一样的效果。
    takato
        20
    takato  
       2018-10-12 15:08:07 +08:00   ❤️ 1
    这不是很正常吗?比如说你现在用的很多大厂 app,页面的排版配置都不用经过开发了。。直接有权限的 PM 和运营就可以配置。
    aaaronwu
        21
    aaaronwu  
       2018-10-12 15:13:11 +08:00   ❤️ 1
    背后应该是简答 /负责算法吧,简单来说不同的人进来页面看到不同的功能菜单和对应的 Icon。所以先要获取登录用户的 ID 来对应权限,进而展示该权限下的菜单配置。大概这个意思吧。
    qce7
        22
    qce7  
       2018-10-12 15:13:32 +08:00   ❤️ 1
    项目刚上的时候第一件事情就是把后台权限系统这么搭建好,为得就是让运营以后别来烦我,自己配,所以放弃抵抗吧😂
    shiww
        23
    shiww  
       2018-10-12 15:15:36 +08:00   ❤️ 1
    @zhaogaz 你说的模板是文件,领导要是的数据库表,本质没区别,你是嫌要多写几个页面吧?
    visonme
        24
    visonme  
       2018-10-12 15:34:38 +08:00   ❤️ 1
    看到只是你们在权限的意见不统一,为未看出谁对错,可能我还停留在 XXXXX (崩溃中.... o(≧口≦)o

    以前我们多个项目也是按你这位上司的思维做的,唯一不同的地方,你们把它叫做权限控制的一部分,我们是把它从权限中剥离做成一个独立的配置子系统。
    whypool
        25
    whypool  
       2018-10-12 15:40:22 +08:00   ❤️ 1
    还是太年轻啊

    菜单文字,icon 都是可配置的,而且是动态权限,甚至还维护了一个权限路由表

    对内的报表,对外的活动配置,这玩意要用前端去配模板,那效率,是不是配完了还得 review 一次代码,各种测试回归一次?
    internelp
        26
    internelp  
       2018-10-12 15:50:08 +08:00   ❤️ 1
    有必要说上司是傻逼吗?
    wemore
        27
    wemore  
       2018-10-12 15:51:47 +08:00 via iPhone   ❤️ 2
    差不多,我司框架页面有啥按钮基本是写数据库的,web 开发界面上增加删除按钮,按钮事件也是写数据库的,页面样式也是写数据库的。写查询 sql 可以控制按钮的显示隐藏,也可以配置权限控制😂
    xiayebaibi
        28
    xiayebaibi  
       2018-10-12 16:06:08 +08:00   ❤️ 1
    楼主还需要在酝酿酝酿
    newtype0092
        29
    newtype0092  
       2018-10-12 16:51:00 +08:00   ❤️ 1
    你不足的不是见识少经验少,这种都是小问题,刚工作肯定都这样。
    你问题是自己觉得不对就觉得是别人的错,别人傻逼,你那点经验和人家比起来,外人按概率想想也知道谁的解决方案更可靠,何况人家是你领导,你再干两年是不是什么架构师 CTO 都不放在眼里了?和自己意见不一样的都是傻逼?
    你的想法和解决问题的思路都是基于你的知识和经验,然而自己多少斤两说实话自己不清楚么?
    三人行必有我师,何况是职场前辈,太把自己当回事的人很大概率走不远。。。
    zhaogaz
        30
    zhaogaz  
    OP
       2018-10-12 17:19:13 +08:00
    @newtype0092 您说的非常对,我也很赞同。

    不过另一方面我没把自己太当回事。坦诚讲,说上司傻逼并不恰当,准确描述应该是 不求上进的普通人。

    刚进公司的时候我菜的跟鸡一样,上司基本也没帮什么,他主要做了 2 件事。一是告诉你干什么业务,二是告诉我们以前哪个项目有类似代码。问他点东西,他搜搜搜国内的 csdn 给我扔过来一篇,我这边有空的时候看的官方资料才知道是怎么回事,然后告诉他这博客哪里写错了。

    半年多的时间,我自己做笔记,做总结,他们日复一日的做业务。结果是显而易见的。我平时甚至可以唬住上司做点东西。

    权限和动态菜单这部分我以前确实没做过,再加上我认为他很少做思考,只是把以前的经验用上一遍又一遍。

    经过我上面的描述,你应该理解我是什么心态了吧。很多时候就事论事,其他的背景渲染我都没有写。

    当然我也非常感谢您的好心提醒。
    heww
        31
    heww  
       2018-10-12 17:52:07 +08:00   ❤️ 1
    看上面大家的回复,但我怎么觉得 “菜单加一个,减一个,对应的就是功能的变化了” 这句话没有什么错啊!
    breezeFP
        32
    breezeFP  
       2018-10-12 18:01:29 +08:00   ❤️ 1
    你让我对自己产生了怀疑,虽然没在外包公司做过,但我有个外包的思维[手动滑稽]
    xsir2020
        33
    xsir2020  
       2018-10-12 18:02:00 +08:00   ❤️ 1
    @zhaogaz 一是告诉你干什么业务,二是告诉我们以前哪个项目有类似代码,搜搜搜国内的 csdn 给我扔过来一篇
    没毛病啊,就是这样做的。
    每个人都要手把手教,那不累死。还要进一步告诉你为什么这么做,为什么你那么做不行,和你做各种思想工作才能安排好工作,还得防着你不按公司的来做,哎,真的要累死。
    michaelcheng
        34
    michaelcheng  
       2018-10-12 18:04:52 +08:00   ❤️ 1
    如果业务很多的话,入库是比较优雅的方式了。

    我做业务很简单,你想要多优雅都成,只要给时间就行了,工作安排好了就行。
    zhaogaz
        35
    zhaogaz  
    OP
       2018-10-13 00:30:54 +08:00
    @xsir2020 看你回复的内容,应该就是针对我 30#写的内容吧。

    这么跟你说吧,转行之前,我做了几个月媒体。对于网络信息的真伪辨别是有一定考虑的。信息在传播的过程中容易出现偏差,更何况很多人在 csdn 之间抄来抄去。我个人养成的习惯是尽可能的找谁第一个说了这事,发布了文档。这种资料的质量要明显高于二三四手的东西。

    我上司这个人英语不太行,他极少极少看 manual 或者是 reference。他自己的理解基本靠 csdn 这些。他找着做一遍,成了就不管了。为什么这么做?出现不同的变化怎么改?他都不知道。

    我举个例子,昨天我们讨论了后端,如果部署多台服务器的话,session 共享怎么解决。

    他说:用 ngnix 配置一下就行了。
    我问:不用改项目中的内容么?,
    他说:不用。
    我问:那这个是什么原理呢?(我以前没做过,但是我猜了一下,真正的 session 共享肯定需要交互多个 server 的内容,如果项目中没有改东西,那么说明他说的 ngnix 配置只是把固定的请求转发到固定的 server 上,根本没有共享)
    他:随便搜一下就有(然后敲键盘开始搜)
    。。。。
    剩下的我就不说了,结果就是他承认 ngnix 那个配置不是共享 session

    你还有一个理解问题是,我压根没想说对方怎么怎么教,不知道你怎么理解出的这层意思。我本身材料专业,一路自学到这个份上,没必要手把手。

    我希望的是:上司能凭借自己的经验,自己对代码的理解思考,给我做一些指点。而不是随便找个 csdn 东西扔给我。那我问上司问题有任何意义么?

    我周围人包括上司,他们的行为特点是,会做 xxx,但是框架模型为什么这么做,为什么这么命名,对象有什么功能能力,有什么由历史原因沿袭下来的做法,没有思考。

    还有不少,想了想我就不打字说出来了。

    当然以上原因有可能是因为我所在环境太差了。哎
    xiaohei233
        36
    xiaohei233  
       2018-10-13 10:03:57 +08:00
    正常的,千人千面,遇到过非常 nice 的同事和上司,也遇到傻逼同事和上司,见怪不怪。我做 app 的,有时候不能理解产品的需求为啥要这么错,问产品他说老板让做的没啥本法。那就只能做了,麻烦是麻烦了点,后面维护就方便多了。
    yacolinqi
        37
    yacolinqi  
       2018-10-15 10:08:38 +08:00
    @zhaogaz 我想说毕竟是工作,一些需求下来领导能给你个大致的方向就不错了,不必去究根问底我觉得。毕竟工作是工作不像学习,可以有一种很浓重的学习讨论氛围。让我想起了那个段子,你一个砍柴的和一个放羊的讨论了一天的人生,他的羊是吃饱了但是你的柴呢? 既然觉得上司不行,周围环境不行,那就厚积薄发跳出去换个环境行的。
    ui92dk3
        38
    ui92dk3  
       2018-10-15 12:47:58 +08:00
    这样做是可以的,主要是要考虑数据缓存。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1132 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:17 · PVG 03:17 · LAX 11:17 · JFK 14:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.