0%

事业部去年年底开始推前后端分离,到现在我参与了前端,也参与了后端。一点心得体会说一说。

首先为什么要前后端分离,其实原因没那么复杂,比较简单就一条。

  1. 试错,因为在这之前都是传统的研发,前后端不分家,至于是好还是不好,就不多说了,这个跟很多因素有关,比如客户场景、公司资源等等。既然有问题,所以就想试试新的玩法,看是否利大于弊。是否适合我们的公司和场景。

当然肯定不是随随便便的试错,试错是带有愿景的。

  1. 分流,清晰的职能划分,让大家更加专注,也给大家更多选择,当然还是尽量让专业的人做专业的事。
  2. 能跟上小步快跑的产品节奏,及时响应需求。
  3. 提升开发效率,并以此做好工程实践以及开发规范的落地。

目前来看愿景是基本上都达到了,只是有待精进。我要说的是,前后端分离后跟我们带来的最大的问题,即前后端的边界问题,哪些是前端干的哪些是后端干的。扯皮就从这儿拉开了帷幕。

前后端分离后很多友爱温馨的画面就出现了。

前端:这个字段能不能跟我处理一下.
后端:这个应该是前端干的,我不管。
前端:我顶你个肺,明明是后端处理更方便。
后端:我也顶你个肺,这个前端也能处理。
..........................

前端:这个数据能不能跟我转换一下.
后端:这个应该是前端干的,我不管。
前端:我顶你个肺,明明应该是后端处理。
后端:我也顶你个肺,这个明明是前端处理。
.................


后端:这个我这边不好处理,你多发一次请求自己组装吧。
前端:不应该是组装好了给我吗?
..........................

为什么会出现这样的局面,我认为究其原因就是前后端的边界不清晰,如果一开始没有一个前后端的《开发边界协议》,到后面就是各种甩锅的操作。前端抱怨后端,后端抱怨前端。慢慢的负能量。

我觉得边界的界定不是一刀切,应该是和公司文化、组织结构、业务场景等等契合的。在我们事业部,我认为可以从这些层面来作为划分边界的参考。

  • 业务场景:因为我们是做的APM,本身就是监控别人,这样的系统在客户那儿大概率就是个二线系统,那你就不能奢望客户能给你怎样怎样的资源,我们自己心里有数,要做到尽可能的少用客户的资源,并且要响应快速。

  • 人员配置:高层领导基于各方面的考虑,没有专门招聘更多专业的前端,而是从后端研发里抽调几人到前端,边学边做。

  • 前后端实现的复杂度。

我们是这么做的,首先的前提有两个:

  1. 所有的API跟着详设走,所有的前后端交互接口录入RAP,参数结构、返回数据结构、业务响应码、异常信息都做好了同步。
  2. 原则上前端只负责解析数据,后端负责组装数据。前端倾向于呈现。* 前端着重处理用户体验相关的问题;后端则倾处于业务逻辑、数据处理和持久化等。在设计清晰的情况下,后端只需要以数据为中心对业务处理算法负责,并按约定为前端提供 API 接口;而前端使用这些接口对用户体验负责-https://my.oschina.net/jamesfancy/blog/1604237*

但是有了这些前提之后前后端还是存在公共地带,有些是前端可以做后端也可以做。比如字段值得转换,某些数据的补点或者聚合等等,我们都会具体情况参照上面《开发边界协议》进行权衡。

1.比如需要前端多发请求的肯定移到后端,通过后端的tcp代替前端的http。

2.前端如果需要改多个地方,而后端只需要加一段代码的能实现的,由后端做。

3.业务逻辑尽量放在后端,前端聚焦于交互和样式。

4.前端不做复杂的运算,尽可能让前端小而轻,哪怕后端重一点也无所谓,因为后端有太多方案变快,但是前端页面、样式等就是一套,轻就是轻,重就是重。

5.参照伯斯塔尔法则,后端尽量严谨保守给数据,减少前端解析数据的多样性,前端做好数据解析的校验,尽量开放接收数据,不理想化。

其实说那么多,最重要的还是那句话,让专业的人做专业的事,让前端把大部分的精力都投入到交互、样式、以及优化上面。后端做好一切的兜底方案,前端要什么后端给什么就完了。

实际操作还是建议以前端为主导,因为前端是对用户负责。前端就像一个消息中心,研发阶段,対前连接产品、UCd、测试,对后对接后端服务提供方。所以前端主导后端兜底是比较合适的方案。

关键字解释

伯斯塔尔法则

源引:

背景

最近由于自己开窍,以及周围人对我的“捶打”,感觉是时候多读书了,不然以后成为头脑简单+四肢也不发达的人还不自知那就尴尬了。

我读书少,所以先学会读书。

开始

《如何阅读一本书》

阅读艺术的定义:这是一个凭借着头脑运作,除了玩味读物中的一些字句之外,不假任何外助,以一己之力来提升自己的过程

  1. 首先得端正你的态度:主动阅读,没有任何外力的帮助你就是要读这本书(真正的阅读)。

  2. 阅读的层次:基础阅读、检视阅读、分析阅读、主题阅读

    • 里面有个章节说到了一点:辅助阅读,也就是往往有时候你在读一本书的时候除了这本书以外需要借助一些外在辅助来源,比如其它相关的书,工具书、经验等

    • 我个人觉得这几个章节核心思想就是不要妄想书读一遍就掌握精髓了,通常有点东西的书至少得来个2-3遍,是个递进的过程,其实我们的老祖宗老早就说过

      温故而知新

  3. 一定要认真看每本书正文前的内容,比如序、目录等,这会让你更有代入感和针对性。能帮你梳理你读书的顺序。

  4. 读书大体分两种

    • 为了获得资讯
    • 为了增进理解
  5. 不同类型的书有不同的读法

    比如读实用性和读哲学的书肯定不一样,前者是要说服你采用特定的思想和行动,后者主要是引起你的思考。

    《张五常的读书方法》

读书是为知识而读书,不是为考试或者考核等读书,所以明确知识是读书的目的。

  1. 以理解代替记忆

    • 明白了基本概念和含义,比死记硬背强,因为理解的前提是书中的重点、章节等是需要贯通的,同时概念等的演变和递进也是需要清楚的,所以当你真正理解的时候你是几乎不可能在一段时间内就忘记书里的内容的。
    • 笔记记下不明白的比记下明白的更重要。
  2. 思想集中才有兴趣

    • 兴趣不是培养出来的。只有思想能上能集中,才能产⽣兴趣。可以培养出来的是集中的能⼒。所以无论读的书与你兴趣相差多远,只要你能对之思想集中,兴趣即盎然⽽⽣。(观点我是醍醐灌顶啊)要记着,只要能集中,读书所需的时间是很少的。

      • 培养思想集中力,

        第⼀,分配时间——读书的时间不需多,但要连贯。

        第⼆,不打算读书的时间要尽量离开书本—— 「饿书」可加强读书时的集中⼒。

        第三,读书时若觉得稍有勉强,就应索性不读⽽ 等待较有⼼情的时候——厌书是⼤忌。

  3. 问⽐答重要(此节选可能更适用讨教的场景,不过我觉得很有启发遂记录,很多人其实不知道怎么问问题)

    发问做准备功夫,便于分清楚「知」和「不知」,也能让问题更有针对性,准备功夫大致以下的三个步骤:

    • 第⼀,问题可分三类——A,「是什么」(What?);B,「怎样办」(How?); C,「为什么」(Why?)。要先断定问题是哪⼀类。A类问的是事实;B类问的 是⽅法;C类问的是理论。问题⼀经断定是哪⼀类,就应⽴刻知道⾃⼰的「不 知」是在哪⽅⾯的,因⽽可免却混淆。

    • 第⼆,要尽量去将问题加上特性。换⾔之,你要问的⼀点越尖越好。

    • 第三,在问其他人之前,要先问⾃⼰问题的答案是否可轻易地在书本上找到。若然,就不应花其他人的时间。⼤致上,⽤以上 的步骤发问,答案是⾃⼰可以轻易地找到的。

  4. 书分三读——⼤意、细节、重点

    这块跟上面说的阅读层次有异曲同工的感觉,切忌一上来就各种做笔记和记号。

    第一读是快读,读⼤意,但求知道所读的书究竟是关于什么问题或者主题的?。跟自己有关系吗(即真的有必要去了解去读吗)?

    第⼆读是慢读,读细 节,务求明⽩内容。可对不明白的地方做记号等

    第三读是选读,读重点。重点或者强调的记号是在这时候加上去的,因为哪⼀点是重点要在细读后才能选出来。

⽽需要先经两读的主要原因,就是 若没有经过⼀快⼀慢,选重点很容易会选错了。

试着小结一下

以上的两块内容同时有提到的我认为很重要的几点:

  1. 选书比读书更花时间,什么都读读一大堆,说好听是博览群书,说难听是“半壶水”。
  2. 读书需要分类,不同种类的书读法会有不同,不能一概而论。
  3. 读书一上来就咔咔咔记各种笔记,并且第一遍就要仔细读完的,最终效果大多不好,当然一些资讯类的书除外。
  4. 好的书通常都要读几遍。读书是一个递进的过程,理想状态下每一遍会进入不同的层次。

本文引用的内容,如有侵权请联系我删除,给您带来的不便我很抱歉。

在看《少有人走的路:心智成熟的旅程》这本书之前,从来没细究自律的概念,就觉得自律就是自我约束,比如一天50个俯卧撑,不能因为某天朋友叫打游戏就把这50个省了,一定得做。这就是我理解的自律,但是看了《少有人走的路》之后,书中对自律的定义,我觉得我还是太年轻了,想的太粗糙。首先这本书正文没开始之前就说了,每个人或多或少的心里都有病,只是轻重和早晚不同而已。

如果从规避、逃避问题就是人类心理疾病的根源这个点来讲的话我是认同的,至少我没发现我也不认为,这个社会上存在有人是从来没有规避和逃避过问题的。所以如果你承认自己有这样的问题,那你还是看看这本书吧,以下是我的一些摘抄,算不上笔记。

首先要想心智走向成熟,你得学会自律。

自律是解决人生问题最主要的工具,也是消除人生痛苦最重要的方法

首先什么是自律?

所谓自律,就是主动要求自己以积极的态度去承受痛苦,解决问题。

自律有四个原则:推迟满足感、承担责任、忠于事实、保持平衡

  • 推迟满足感

    不贪图暂时的安逸,先苦后甜,重新设置人生快乐与痛苦的次序:首先,面对问题并感受痛苦;然后,解决问题并享受更大的快乐。在充满问题和痛苦的人生中,推迟满足感是唯一可行的生活方式。

对于这个点我是深有体会的,我妈从小就教育我,先苦后甜,所以小的时候特别想早点长大,因为太穷了生活也太痛苦了,觉得长大了应该就是甜了,当然事实是脸被打的piapia的。现在想想其实小时候的想法不就是为了逃避问题么。所以其实所谓的先苦后甜,指的不是时间的先后,而是解决问题之前和之后。所以核心在于你得面对问题并解决它才有所谓的先苦后甜。不过要注意:解决问题缺乏耐心、想让问题马上解决这样的态度是不切实际的。另外根据破坏性的是希望问题自行消失,这显然是自欺欺人,问题永远都在,如果不解决它将阻碍你心智的成熟。所以唯一能做的时直面问题,并尽可能早的面对问题。

  • 承担责任

    这是我的问题要由我来解决。力图把责任推给别人或组织,就意味着我们甘愿处于附属地位,把自由和权力拱手交给命运、社会、政府、独裁者和上司。

这一点我认为是比较重要的一点,承担责任对于我,稍微值得高兴的是,我一直在努力学会承担责任并做到不逃避责任,当然这样的选择对自已是相当痛苦的。因为你会发现在如今的社会,你所在的圈子,有越来越多人的在想办法规避或者逃避责任,为什么?因为他们不愿意承担不想承担。因为承担可能就代表着认输,代表着损失,代表着受虐。所以你可以想象如果你选择了不逃避责任可能不仅仅是你承担一些痛苦,可能还会招来白眼、孤立….。所以我觉得大多数国人的生活质量是上来了一些但是心智成熟方面还是有很大的提升空间。不过我还是想说自己的问题自己解决,勇于承担该承担的责任最起码你会让自己看上去没那么逗比和拙劣

  • 忠于事实

    我们要实事求是,越是了解实事处理问题就越得心应手,对事实了解的越少,思维就越是混乱。

    我们对现实的观念就像是一张地图,凭借着这张地图我们才能了解人生的地形、地貌、和沟壑,指引自己的道路。如果地图准确我们就知道自己的位置也知道要到什么地方,以及怎样到达;如果地图失真,漏洞百出,我们就会迷失方向。所以我们需要让自己的地图足够准确足够完整,怎么做呢?努力程度越高地图会越大越完整,对事实认知的更加清楚,准确性就会更高

其实这一部分还提到一个概念叫移情,这个移情可不是移情别恋的移情,书中对其的说明我大概的传递一下:一个人把年幼时对世界的感知以及对世界作出的反应方式,照搬到成年后的环境中,虽然这些方式已经不再适用于新的环境。我觉得通俗点说就是活在自己的世界逃避现实,对外界的变化视而不见听而不闻。这样的人是拒绝更新自己的地图的,那当然就会经常迷路。所以可以看出面对现实不像想象的那么简单,现如今又有多少人愿意面对现实,忠于事实,并迎接挑战呢?迎接挑战是唯一能确定我们的地图是否与事实符合的方法。埋头刷抖音刷头条,各种交友软件各种游戏中各种直播中扮演着牛逼哄哄的样子,沉迷于虚假的舒适中,不想奋斗不想上班不想努力,一问他会有一堆的原因,买不起房,政府没用,没有技术等等,那你都知道这么多问题围绕着你了,你他么还不想办法解决,在等什么呢?等着被抛弃被奴役?

要想在组织或集体中发挥大的作用,就要注重表达意见的时间、场合和方式。换句话说,一个人应该有选择的表达意见和想法

  • 保持平衡

    这一条其实更多是教我们怎么基于前面几条讲的做到自律,即自律本身就是把持得当。

这一点没什么好说的,说白了主要还是自己把握好度,比如对待生气的事情,什么情况下改表现出发怒,什么情况下改表现出隐忍…..
文中有一小节讲到放弃与新生,要学会必须放弃旧的、过时的观念和习惯诸如生活环境、个人欲望、处世态度这样的东西,才能得到心智的成熟,才能获得新生。说的有点玄,不过确实是如果你始终执念于你的某些过时的观念或者习惯,容易让自己以及周边的人陷入痛苦。因为这意味着你不想放弃,哪怕那是不好的,这往往会为自己以及周边人带来痛苦或者伤害。所以需要学会在不同的人生阶段放弃某些东西,比如身为父母的阶段,要学会放弃父母的权威等。最终你获得的永远比放弃的多。

书中的部分句子

“我是个有价值的人”-像这样对自我价值的认可,是心里健康的基本前提,也是培养自律的根基。对自我价值的认可是自律的基础,因为当一个人觉得自己很有价值时,就会采取一切必要的措施来照顾自己。自律是自我的照顾,自我珍惜,而不是自暴自弃

自律能让我们承受问题带来的痛苦,并最终解决问题。

你不能解决问题,你就会成为问题。

*为了躲开责任带来的痛苦,数不清的人甘愿放弃权力,实则是在逃避自由 - 《逃避自由》 *

这段时间被“中美贸易战”的各种文章和声音吵得恶心,不知道为毛那么多喊麦式的文章后面还有那么多跟着喊麦的吃瓜群众,那么没有营养的内容一个个读的陶醉不已,不得不感叹现如今信息传播的可怕。我看了篇说实话的文章,结合着那篇文章我也在这儿发表发表比较粗犷的感言。

醒醒吧,我其实搞不懂,中国人哪来那么深厚的底气,觉得自己哪哪都是牛x的,谁都干不过,后来经过中美贸易战这段时间,我大概知道,各种所谓的大V、自媒体、甚至所谓的官媒,都他么传递着各种鸡汤、各种所谓的正能量、各种吹嘘、各种爱国情怀、各种川普吓得尿裤子….。一遍又一遍一波又一波的洗脑着咱们老百姓,这种就是典型的误人子弟,害人害己,关键是老百姓也爱信也爱看啊。中兴那么明显的例子,大家都装作看不到。平时营收上百亿上千亿的企业,人就跟你断个芯片啥的,你就歇菜了,典型的外强中干,这应该让国人意识到,我们与美国在高新技术领域的差距还是比较明显的,当然如果再给个10来年,可能就赶上了,但是人美国不干啊,为什么这个时候弄你,因为他们顿悟了啊,发现被中国忽忽悠悠的就改革开放了40年,再不下手弄就真的弄不动了。

去看看中美的贸易额你就知道,很明显的中国对美国的依赖更强,如果真的继续干下去,大家都等着勒紧裤腰带过日子吧。继续干下去,受伤的都是老百姓。当然美国也会有损失但是相较而言,中国是更吃亏的。所以求那些所谓的各种扯淡大V之流,别他么再瞎歪歪挣流量了,坐下来静静的想想怎么让国人能对自己的国家有更准确的认知。我也希望我们老百姓能有时间看看一些国外的报道,以及国内有正经背景的经济学家、社会学家等发表的文章或者演讲、采访等,少他么花时间在抖音啊、今日头条等App上。

我之前看王煜全先生的一个采访,我觉得他说的挺有道理,主要内容是:中美贸易战实际就是你打我一拳我踢你一脚,如果不想办法解决问题,最后就会变成互殴,这样又受伤(受伤最多的还是老百姓)又解决不了问题。正确的解决方式是,找到问题的解决办法。为什么美国会出手,很明显是不满是抱怨中国不地道嘛,那咱们就坐下来好好谈谈,怎么滴能解他的怨气嘛。或者委婉点,川普不是代表工人阶级嘛,美国不是就是就业问题很严重吗,那咱们中国政府牵头推一批一批的企业去美国建厂提供就业嘛,我们就是在国外建的厂太少了,所以影响力太小,你想想如果我们在美国早早建立了很多企业,提供了大批就业,川普还敢通过现在的方式弄我们么?还没出手,估计国内就一波波游行示威了。别不信,中国很多企业是有能力在美国建厂的,只是缺少经验,同时缺少政府的支持。比如曹德旺先生就是比较成功的例子。

其实你看那小日本为啥那么恬不知耻的跟着美国,毫无节操,地地道道的狗腿子,因为人家知道美国能弄它,而且他禁不住弄。当然我们不需要像日本那样,而且也不会也不能像日本那样。我们有底气啊,有人,有地盘,有一大堆钱砸出来的黑哥们,有党,有钱,某些方面还是有技术的。所以不需要像日本一样。但是我们得有自己的认知,不天天一副无敌是多么寂寞的样子,老祖宗几千年传下来的,我们要谦虚,谦虚使人进步。

本文纯属扯淡,随便看看。

前段时间读了《乔布斯传》这本书,一是因为好奇这个人,二是因为想了解下苹果的历史。不得不承认,苹果的产品应该是目前世界上最好用的产品之一,至少我是这么认为的。

这本书看的过程中其实会觉得有些无聊,不是说书不好,基本上都是源于个人的原因,一个可能是本身我不是乔布斯的信徒,再一个是因为看这本书会对我有一种局限,局限来源于从小到大接触的教育、社会环境、人文环境等有关,读了该书,我就有种感觉如果乔布斯或者是书中提及的与乔布斯有交集的一部分人,如果生在中国。我估计绝对会首先被贴上一个问题少年、怪胎等标签,然后遭受各种来自老师、同学、亲戚朋友等的白眼,大家根本不会看到或者不会在意他们身上的闪光点或者天赋,早就把他们扼杀的不能再扼杀了。当然这是我的个人见解不代表广大群众,下面简单的记录一下这本书带给我的感悟。

拿取

从书中能拿取到对我有启发的如下:

  1. 专注

    乔帮主以及他招揽的那帮人,那种对自己所做的事的那种专注,真的是你从字里行间都能感受到强大的力量,专注到最后就是成功。所以你自己选择了你现在做的事,那就保持专注吧,至少你提高了成功的机率。

    这个点是我需要提升的,我只好码代码时最专注的,其它事情好像都容易走神,所以我现在都在自我训练。
    自己每天定个目标列表,必须完成,在有限的时间,你不专注根本完不成,完不成,你看到你的目标全是没划掉的那种感觉很憋屈。

  2. 现实扭曲立场

    说的通俗点我觉得是一种感染力、一种吸引力,他就像太阳一样,不但发光发热而且你不自觉的还得围绕着他转,他会让你相信他并跟着他干。其实在书中这个“现实扭曲立场”这个词语不一定就是褒义的,有的人就比较反感,因为他们有时候会感觉一种压迫感。我们事业部的ceo在我看来就是有点“现实扭曲立场”的感觉,总是自信并能感染人,给人一种力量。我希望今后我也能给人一种感染力和自信,那其实是挺美好的一件事。

  3. 简单

    这个对我们这行的来说,其实这个一直是我们的最大的追求,我们现在所做的一切努力都是为了让事情变得更简单,能更快响应外界的变化。乔帮主一直在追求这样一种极致的简,为此付出了多少人力物力都不管。所以很多时候面临问题时,你得想办法把他简单化,复杂化其实很简单但是最后很痛苦,简单化他很难但是很舒畅。

    特别是在我们工作中往往都会让问题变得越来越复杂化,其实我们停下来,静静思考一下,分析清楚利害关系,往往有个更简单的解法。

  4. 营销

    从书中你会发现其实乔帮主真的时一位营销专家或者叫产品推广专家,每次发布的产品,文案、发布会都会亲自参与,对产品你说他吹毛求疵都忍了,一个广告方案他也能吹毛求疵。当然最终的结果大家应该印象都很深,苹果的广告用美轮美奂、创意十足…等词语来形容都不过分。包括苹果的发布会的造势、发布会的主题、演讲内容、方式等都是精心设计的。所以每次苹果有新产品发布都是世界的一场大讨论,当然买那么好核心在于产品好,但是不得不说苹果那么有影响力有很大的一部分原因是因为推广的好。包括公司困难时他重新回来,为了挽救当时的苹果,他定的广告方案完全就唤起了大家对苹果的热情,所以你不得不服他在营销推广方面的实例,

    所以现在真没有酒香不怕巷子深了,好东西就是要秀出来,对待自己也是,老是抱怨自己默默无闻,那你想过没有如果你通过很多方式输出自己认为好的东西,并且帮助一些人,到时候你会发现你其实还是挺牛的(哈哈,当然前提是你自己得有实力),别觉得自我营销就是一个贬义词。

  5. 完美

    乔帮主一直追求——产品必须是科技和人文的完美融合。这种始终如一对完美的追求,才有了现在的苹果,但是在现在的社会好像追求完美变成了不太像褒义词的褒义词,总感觉如果说出这个词语马上就会有人给你怼回来。我觉得追求完美他就是一个褒义词,我们应该提倡,但是执着与完美可能就容易陷入痛苦。

  6. 坚持

    从书中你可以看到乔帮主有一种盲目的坚持,最大的体现就是在于他的癌症,很多人都讲,如果他不那么坚持对待工作而选择懈怠癌症这件事,可能结果没那么糟。所以我会这么认为:可能做到“坚持”和知道什么该坚持什么不该坚持相比较的话,做到坚持肯定更容易一点点,大家都知道力得用对。

前后端关于CMDB的交互决定选用GraphQL,因为第一次听说就抓紧时间了解了以下是个什么东西。

GraphQL干嘛的?

GraphQL语言致力于提供一种直观的弹性语法系统,用以描述客户端程序设计时的数据需求以及数据交互行为。

说的直白点就是能让API设计变得更加的灵活,你想要什么数据就给你什么数据,不多不少。

实践

目前只有CMDB那一块使用的GraphQL,其它的前后端交互还是用的传统的方式。

不过这并不影响我对它的兴趣,新东西总是喜欢琢磨琢磨,更何况GraphQL有大厂的背书,那证明它的潜力是巨大地。

  • 传统的api设计,如果想要多种场景公用一个接口,比如都是获取用户信息,A场景需要name,B场景需要name+sex,C场景需要name+introduction,很显然都是获取用户信息,但是每个场景要求的数据不一样,如果简单粗暴的直接返回整个用户信息,很显然不太科学,极端一点假设用户有20个字段,调用方只需要一个字段,你给20个字段完全是浪费,另一种方案是写三个接口,但是三个接口很显然太冗余了,所以通常是公用一个接口,但是共有一个接口就肯定免不了一堆逻辑判断,此外,这样还会造成不同业务之间的耦合,每次发布都需要各个业务场景一起测试和回归。

这种时候痛点就出现了,不重用接口则没法提高开发效率,重用接口则会有这些问题。

这个时候GraphQL就体现它的优势了,我认为它的出现就是为了解决上面的痛点。出现上面的问题的根本原因我认为在于,前端不能直白的告诉后端我要什么数据,必须通过后端经过对应的翻译转换,因为前端没有合适的方式来告诉我们A只需要name,B只需要name+sex,它可能就给我们一个userId然后给个businessCase然后我们根据businessCase来进行逻辑判断,进行数据查询,进行数据筛选以及过滤。

GraphQL

花点时间写这个,是因为觉得GraphQL算是开阔了我的技术视野,我们其实还用的很浅,他的一切皆是图API无版本(某些场景)的思想,以及schema、别名、片段、指令、mutation、元字段等概念让GraphQL灵活的像猴哥,至少目前我们没有遇到有什么场景是满足不了的,至少对于技术浅薄的我来说是有开到脑洞。

我为什么要放弃RESTful,选择拥抱GraphQL

graphql工具社区

学习地址:

这是我用nodejs实现的很简单的demo:

这是通过howtographql搭建的demo

https://flaviocopes.com/graphql-vs-rest/

本文引用的内容,如有侵权请联系我删除,给您带来的不便我很抱歉。

这两天看了有人推荐的约翰·伯格在BBC的纪录片《观看之感》,这部纪录片开始通过讲艺术中的绘画(油画),然后讲解油画的内容,最后过渡到当今(70年代)社会的海报(广告)。

我这人是个粗人反应也比较慢,看到最后瞬间才如醍醐灌顶般了解这个纪录片讲述的东西,想在这儿写下感想….

但是资历太浅写不出来,后面想通了再回来补,现在就记录下现下我的思考。

感触

一听到艺术都觉得那是个高层次的是在生活之上的,其实可能不是我们传颂的那样,它的内容最终都是反馈到世俗生活中的,所以这样传统的认知是值得商榷的(约翰·伯格甚至是批判这种认知),整个纪录片我得到的信息是,告诉我一个词叫“欲望”,其实不管是油画还是其复制品还是现在的海报背后都隐藏着人们对某一方面的欲望。

所以其实你会发现现实中很多东西其实是被设计的,在比较深层次的地方他们可能会很可怕的引导你的思维方式、你的诉求、你的认知…,表面上可能会影响你穿什么、吃什么、喜欢什么…,这让我想到了一本书《娱乐至死》,大家有兴趣可以看下我觉得很有意义的一本书。

节目最后伯格大叔也说了,纪录片仅代表他的观点,具体怎么看还是取决与我们自己。所以我们活着一定要多些思考,多换角度思考,多想想为什么,不要轻易听信别人,也不要懒得思考…

本文引用的内容,如有侵权请联系我删除,给您带来的不便我很抱歉。

以前我对code review是抗拒的,原因在于两方面:

  1. 总感觉有点脱光了让人看的感觉,没脸。
  2. 觉得是浪费时间,研发周期时间都不够还做什么code review。

不过后来发现之前的自己是多么愚蠢

Why

  • 倒逼团队成员写出更有质量的代码

    (基于编码规范等),让代码可以更好的组织起来,有更易读,有更高的维护性,同时可以达到知识共享,找到bug只是其中的副产品

  • 确认自己的设计和实现是一个清楚和简单、正确的

    并且通过review找到问题代码,减少错误和暗坑

  • 让更多的人了解你所写的模块,并能促进相互学习对方的长处和优点。

  • 提前暴露影响性能和安全的问题

When

  • 自动化测试之后,提测之前
  • 前后端联调之后(如果自动化测试还没实现)

What

评判标准

  • 编码规范(比如后端《阿里编程规范》,前端ESLint)
  • 需求覆盖度是否100%
  • 测试用例覆盖度至少满足80/20原则

How

  • 提升团队意识,让大家知道code review的好处和重要性,切忌别把时间安排与code review拿在一起说,它们是两回事,时间够不够条件够不够跟code review好不好无关。
  • code review落实到产线的专项目标,指定责任人。
  • 组件core view 团队,定义code view的关注点,持续改进。

首先为什么需要详设?

肯定有人会喷,现在都谈敏捷了,你那是瀑布那一套了,现在谁还弄详设,然后就被鄙视了。如果是这样我就想问下,什么是敏捷?什么时候应该敏捷?先回答好了这两个问题再BB,哥也是经历过敏捷的人,13年在一家做数字工厂的创业公司,被公司副总忽悠做项目经理,当时作为一个码农的我来说,本身比较迷茫感觉天天敲代码不是我要的,觉得白富美离我太远。所以就想做产品经理,憧憬做一个响当当的产品出来,享誉中国,当然我得解释一下,此产品经理不是被玩坏的那种UE产品经理,而是正儿八经的产品经理。刚好遇到此副总,跟我聊了后就看上我了,美其名曰看上我的才,觉得我有当产品经理的潜力,然后我就飘飘然的去了。去了之后就让我先从项目经理干起,这儿的项目经理只管项目(需求调研、文档编写、项目资源协调…)不管技术。副总当时推得就是敏捷,因为本身干的是传统行业,一开始都是瀑布过来的,副总觉得瀑布有很多问题,所以准备推敏捷,我当时也是第一次接触敏捷,所以老大丢给了我一堆书,其中一本我记得是叫《敏捷项目管理》的书,然后就让我抱着啃,也恬不知耻的跟着其它项目组体验了敏捷的落地…。那段时间是我悠闲、迷茫的时光,一开始用latex跟公司弄宣传册,然后跟项目,去鸟不拉屎的地方,夏天跟客户喝着“枝江”聊着需求,其实挺怀恋的…。

扯远了,后来在现在的公司,公司又请人做了一次敏捷培训,内容其实跟我之前看的书差不多,只是里面有一个概念是我比较深刻的就是讲师说了一个词语叫“小瀑布”,大概意思就是取敏捷和瀑布的各一部分。为什么呢?就是因为传统的瀑布确实是太重周期太长了,而且对客户的要求高,因为瀑布都是白纸黑字写好合同定功能需求的。你想想客户如果没想好,那是不是就麻烦了。但是事实是往往客户是不可能百分百知道自己要什么的或者说不可能百分百描述清楚自己要什么的。这个时候敏捷就有优势了,敏捷在我看来其实就是工作理念的转变,讲求的是快速迭代,讲求用户参与,讲求跨职能,这样就能很大限度的避免走偏。

小瀑布在我们团队是咋用的呢,主要包括:

  1. 首先团队是跨职能的,需求、产品、测试、研发都同属于一个团队,且团队的目标是一致的。
  2. 前期除了User Story,还会进行需求评审,会出UCD文档,研发会出详设。
  3. Daily Scrum不强制要求。
  4. 没有Sprint Review

为什么我们会这样是因为我们本身不是一家互联网企业,对快速响应要求没那么高,我们是一家传统的toB企业,有自己的产品,很少接项目做,有稳定的渠道,不过也存在瓶颈,在这样的情况下,做新产品,我们则采取了现在的小瀑布的形式。至少目前来讲是很适合的。

ok,扯得有点多了,我们还是来说说详设。

0.1版详设

因为之前的详设没有一个特别正式的模板,接着0.2功能迭代需要写详设,领导让我和另外一个同事整一个详设的样板出来,跟领导过了几次,搜集了一下意见,最终中心思想只有一个,让新旧研发、测试、技术大佬都能看明白。

所以最终出的模板是这样滴:

这个模板稍微复杂了一些,但是他的好处在于说明了上下文,说明了依赖项,说明了核心逻辑,所以基本上出来的东西大家都能看懂,也能而且能评估难度和工作量等。

0.2版详设

这版详设是在产品0.3.3迭代后出现的修改,是在0.1基础上的一些精进,精进了依赖项和核心逻辑说明。

  • 0.2把外部依赖项单独拎出来,这样能更加清晰表述自己所需要的支持,并且让对方知道。
  • 0.2把核心逻辑也着重提出来,0.1核心逻辑更多在于文字描述和UML图,0.2的要求是用伪代码+UML的形式进行核心逻辑的说明,核心思想就是贴近代码让详设更加实用。

详设最实用的地方:是为了让你思考更加缜密,并且获得反馈。

未来的期望:

当然这版详设也不是最终版,以后会持续精进,最终的目标是直接不要文档。

甚至我们刚进的一个架构师提出的愿景是:全部用类似单元测试的代码+注释的形式写详设,详设是否存在问题,看单元测试是否通过,我觉得是很美好的…..路很长。

名词解释

Sprint

可理解为一个迭代

Scrum

Scrum 可以理解成是一个框架,此框架让产品管理和工作技术的相对成效更加清晰地显现出来,以便您可以持续改进产品、团队和工作环境。

Daily Scrum

每日站会

User Story

用户故事,可以理解为一个场景或者一条需求。

兽爷的《疫苗之王》原篇。做个保留,作为一名小女孩的爸爸,仅以此文诅咒他么的长生生物之类的不良商家以及背后的各种势力各种任务,滚你妈的祖宗十八代。诅咒他们得癌症了发现能治,然后吃药发现吃的是假药,然后就只有等死。气死老子了,一想到自己女儿就气不打一处来。