精华内容
下载资源
问答
  • 单兵作战只能胜任分发到自己的模块,团队协作才能让产品快速而质量上线. 有正必有反 想要提升团队协作效率,先分析哪些事物阻碍了开发进度. 一般情况下,项目预估的时间相对的紧凑,如果发挥正常,则上线时间...

    原文链接: https://dsx2016.com/?p=661

    单兵作战只能胜任分发到自己的模块,团队协作才能让产品快速而高质量上线.

    有正必有反

    team

    想要提升团队协作的效率,先分析哪些事物阻碍了开发进度.

    一般情况下,项目预估的时间相对的紧凑,如果发挥正常,则上线时间不会相差太远,中途有什么变化,也会根据反馈实时调整进度.

    但有时候,代码能够稳定的发挥其固定的作用,人就不一定了,不同的行为会导致差别极大的影响.

    负面作用

    全局干扰

    干扰

    最近的一个项目中,进入到提测阶段的时候,一些新版的功能都已经通过第一轮测试.

    但是在代码没有改动的情况下,测试忽然提出了一堆的bug,一些以前的功能部分都不能正常使用了.

    请注意,一旦遇到类似的情况,几乎没有改动主要功能代码的前提下,忽然发生大面积的bug,于前端而言,不是后台挂了,就是某个兼容性问题,特定手机机型或者系统版本等.

    还有一种不应该发生的错误,就是团队的其他分支代码影响到整个项目的全局,从而导致你的功能异常,如css样式覆盖,js变量覆盖等操作.

    现在回顾一下,当时我的操作是先排查功能异常的原因,发现是vuexvue-router传参parmas失效,但是为什么莫名失效,google了好久,定位到怀疑人生.

    由于之前已经有过协作导致错误类似的经验,加上对自己代码机制还残留一点点信心(技术的熟练度决定排查问题的思维和方式),转而开始查看gitlab的日志记录

    在查看同事的日志中,发现一段才提交不久的代码,这段代码的定义就是在全局路由做了一些操作.

    在这里,我也犯了一个错误,看到对方的注释写的是仅在第一次登录xxx,然后就没有往下看代码的作用了,然后又开始怀疑人生.

    当时间耗时超过半小时后,就应该想办法解决当下无法解决的问题,和同事交流或者稍稍放松,换个思维方式等,当排查超过一个小时,于是去问了同事.

    同事说前不久是在ios上进行了全局操作,因为需要开发一个新功能,所以在ios上每次页面切换时,把vuexvue-router传参parmas给重置了.

    在这里,先不提排查和定位问题的能力,只能提醒在座的各位,如果明知道自己的代码会对全局有着影响甚至是颠覆的作用,请一定要在群里声明,或者至少和同事口头声明.

    当然,尽可能不要产生对全局不可控的代码,没有谁能保证自己的代码不会对以前的功能或者同事的模块造成影响,解耦是一种能力,声明是一种态度,也是协作的方式.

    tips:

    有一些团队会进行codeReview,一个是提交时review,一个是提交后review.

    不论哪一种,都是对代码的质量负责,像上述这种错误,如果进行了review,在发布测试前就会被发现和拦截,这种错误不应当出现.

    团队没有review的流程,也没关系,大多数时候不要养成别人定了规则才会去执行的习惯,一定要有自己的独立思维,要有自己的优秀习惯,团队没有,但是不妨碍自己定期的review.

    前几期讲了提升效率的方法和技巧还可以加上一条,加班时或者定期review,及时看看自己的代码和同事的代码,查漏补缺.

    协作时间

    协作

    前一段时间,测试在没有任何告知的情况下,周六加班冒烟测试,前后端的都不加班,也不知道要测试.

    于是产生了几个严重的影响,同样也是人为的不该犯的问题.

    一是由于没有邮件或者群里正式声明周六提测,导致前端没有发布最新的测试版本,周六测试的是上上个不知道什么时候打包的版本.

    这种情况几乎可以说测试是白测了,所幸测试的版本恰好功能上都符合,只有一些样式没有跟上进度,所以没有造成极大的时间浪费,影响不大.

    二是正常工作期间,前后端每次发版的时候,很少有人会主动在群里提起或者正式邮件声明(虽然有时候不需要太正式)

    导致测试测着侧着就提示网络错误,或者用旧的标准在测试新的代码(如忽然改一个新需求和ui,但是测试不知道),导致提出bug或者被中断测试流程(如下单)

    其实在发版前群里告知一下是基本的沟通义务,也是最起码的工作态度,就效率而言,能避免很多不应该出现的问题,仅仅是一句话的事情.

    其次,与人方便也是为自己方便,发版时也可以注明当前版本,发布内容(更新了哪些功能等),以及一些其他说明,让事物有据可查,有别人更容易理解.

    但是在好几家公司发现,不论是刚入职的小白,还是混久的老油条,都不会去过多的关注一些团队和沟通的细节,或者说懒得操作,宁愿事后甩锅也不愿事前留心.

    tips:

    国内没有倾向于使用邮件的习惯,即使是重度有工作属性的职场.

    如果不强制要求,别说邮件了,连聊天软件都懒得回复,如非需要,甚至口头内容都不会有.

    建议大家多使用邮件,最少也应该使用有聊天记录的群或者沟通工具.

    其实说到底,首先是一个工作态度的问题,愿不愿意协作和配合,其次才是工具的使用.

    其次,要注意的事,最好的工作时间是全员都在的时候,有问题一定要及时处理.

    不可能等到别人下班再去解决,这样也解决不了,事情要分轻重疾缓.(很重要,思维方式)

    建议上班的时候解决要和人协作的问题,个人不太紧急和重要的问题可以留到临近下班或者加班或者解决合作问题之后.

    权限问题

    权限

    测试的过程常常需要反复去操作一个流程.

    但是一个流程往往操作后就固定了数据状态,再次操作不可能再创建一个账户或者每次叫后台清空数据(仅前端).

    虽然假数据也可以,但是有些逻辑仍然需要真实的反馈,如登录,短信验证,身份识别,提交订单等等等.

    一般开发,有本地环境,测试环境,正式环境,至少在本地环境和测试环境,数据是可以临时操作的.

    如果有管理后台建议获取操作测试环境后台面板,针对自己开发的模块做一些流程设定操作,如更改用户状态等.

    如果没有管理后台,使用sql等直接操作数据库也行(前提是要会一点点数据库和对表结构了解~具体可以问后端)

    前提是避免一个功能测试需要很多遍,但每次都要找别人来重置数据,别人也可能一直在忙,没有时间帮忙或者留意到你的需要.

    其次是,直接操作数据库是一个很大权限的事物,哪怕只是本地环境,一定要尽可能避免产生脏数据,影响其他流程.

    有的时候需要去复现一个bug,必须走完一些流程,操作繁琐且很难定位,通过后台和修改数据库会快很多.

    总的来说,就是测试有的权限,你尽量也要有,如管理后台,数据库等,没有,就只能让相关模块的人尽量配合.

    避免有时间但是流程卡住无法操作的情况,这种现象是真正的极大浪费时间,而且一废就是大半天.

    tips:

    当然还会有一些其他权限,如代码合并的权限,发布测试和线上的权限.

    这就涉及到技术和态度意外的因素,要留心那些你有时间有技术但是你无法操作的事物.

    正面作用

    正面

    正面的方法可以简单概括为

    • 分工合理,责任明确,模块化

    • 高效的沟通机制(聊天软件,任务面板,邮件等)

    • 定期检查,及时调整(codeReview,日报,周报,大小会议)

    比起正面作用,更倾向于排除负面作用,哪怕正面作用不大,但至少不会影响效率和进度.

    要知道吖,大大小小的公司,其实最混乱的,最致命的,也最为核心的.

    从来不是技术和能力,而是团队管理和协作,是人与人之间的沟通和行为.

    tips:

    正面作用下一期文章再细说.

    展开全文
  • 如何提高软件开发团队的协作效率

    千次阅读 2021-12-16 07:13:55
    由此,如何提高团队协作效率便成为大家共同关注的话题。我们请到三位嘉宾将结合自己的实践经验与大家一起探讨。 金仕达卫宁软件科技有限公司首席架构师李枫:审时度势,及时调整 分工合理,责任明确 团队是由个人...

    软件开发是一项团队活动,必然需要团队成员间的交流与协作。由此,如何提高团队协作的效率便成为大家共同关注的话题。我们请到三位嘉宾将结合自己的实践经验与大家一起探讨。

    金仕达卫宁软件科技有限公司首席架构师李枫:审时度势,及时调整

    分工合理,责任明确

    \

    团队是由个人组成的,团队中的个人往往经历不同、背景不同、性格有差异、水平有高低。在团队形成后、正式开工前,首先应该进行合理分工,要结合每个人的特点和爱好,充分发挥出每个人的特长。因为如果工作不愉快、不顺手的话,效率自然低下。分工完成后,每个人对应的职责也就确定了。这时应该同每一位团队成员进行明确申明,最好以文字形式落实到个人并与日常绩效考核挂钩,以避免互相推诿、相互等待的情况出现。

    制定高效的沟通机制

    分工完成后团队即开始工作,此时必须保证信息在整个团队内的畅通,特别是互相之间有工作关联的同事,在发现问题时需要及时提出,以免造成不必要的工时浪费。 但软件开发本身是一种需要精力集中并且安静的工作,多次临时性的打断会造成开发思路的停滞,因此团队负责人最好能够每天在固定的时间段内组织大家进行沟 通,并了解工作的进度。而固定的时间也会让大家形成习惯,使效率得到提升。

    发现团队瓶颈

    大家往往会陷入一种误区,认为团队中每个员工效率发挥到极致的时候就是这个团队效率最高的时候。但经过企业管理实践不断的论证,这种想法其实是非常可怕的谬 论。正确的做法应该是将整个团队看成一个整体,再去谈效率问题。团队的分工协作就好比是生产的流水线,流水线的整体生产效率不取决于流水线上效率最高的环节,而取决于效率最低、速度最慢的环节。当流水线上某一环节出现故障而停滞时,整个流水线也就停滞了。这也是常说的木桶原理。所以我们必须时刻去发现团队 中的短板,尽一切力量帮助它,提高它的效率。这样,也许会牺牲局部某些个人的效率,但经过一段时间的实施后,你可能会惊奇地发现整个团队的效率变高了。

    定期检查,及时调整

    流水线的机器是死的,而程序员们是活的。因此团队的瓶颈也许会因为调整而发生变化,这时需要团队负责人审时度势,及时进行调整。也许需要修正前期的分工,也 许需要改变正在使用的技术,甚至是更换无法胜任的团队成员。让整个团队的工作效率保持在一个较高的并且能够相互匹配的水平,这样做非常重要。

    总结

    团队是一个整体,不能靠每个员工进行单打独斗,要始终牢记团队的最终效用取决于团队中效率最低的环节。进行合理分工是预防瓶颈发生的前提,而建立高效的沟通 机制则是发现瓶颈的有效方法。当瓶颈环节出现后要尽团队最大力量去发挥其效用,而当瓶颈发生变化时需及时做出调整,才能提高团队协作的效率。

    杭州云图科技有限公司研发总监,资深项目管理专家涂勇:提升研发团队协作效率的四个秘诀

    \

    要提升研发团队的协作效率,我认为可从目标、规则、沟通和工具四个方面入手。

    目标,让团队成员有明确的前进方向

    清晰明确的团队目标可以对团队高效协作形成很强的牵引力,更重要的是,团队目标是团队成员个人目标制定的前提。要让团队高效率的协作,最好的方法就是让团队 所有成员每时每刻的工作都围绕团队目标开展。需要指出的是,将团队的目标分解成近期目标、中期目标和远期目标是一个值得推荐的做法。此外,少数优秀的团队 管理者甚至能够将团队的远期目标上升到团队使命感和价值观的高度。要做到这点,管理者需具备卓越的领导力。

    具体到研发管理,对项目而言,明 确项目目标并不困难,诸如产品发布、系统上线等这些都可以作为项目目标,并且项目经理也可以很容易以项目计划的形式来加以落实。但对职能部门的管理者而 言,制定好职能部门的目标就很考验管理水平。职能部门的经理不应忽视部门目标的重要性,而这可以与团队成员的个人职业发展目标结合起来考虑。

    规则,让团队成员始终保持住队形

    高效率团队运作,一定有良好的团队规则做保证。明确告诉团队成员,什么样的行为是团队所不能容忍的,并将其形成制度。制度违反者都应受到相应的惩罚,并做到 及时(第一时间)、公平(一视同仁)、公开(团队内部)。制度是团队的高压线,不坚决执行的制度还不如没有制度,记住这点很重要。

    如果说制度告诉团队什么事不能做,那么规范就是告诉团队成员尤其是新进入团队的成员应该怎样做。文档规范、编程规范、原理图设计规范等开发规范,是团队高效率协作的保证。规范不是制度,可以容忍一时不遵守规范的情况,但应该让团队在遵守规范方面做得越来越好。培训、优秀案例和反面教材宣传等都是推行规范的好实践。 另外,规范不是高压线,不赞成对违反规范的成员进行惩罚,最好的方式是对在规范方面做得优秀的人进行公开表扬。

    制度和规范都是针对的人,对事来说规则即是流程。没有高效率的工作流程,也就没有高效率的团队。对于牵涉多人协作的工作,即使是一个设计不完备的流程也比没有流程好。值得指出的是: 流程应该随着团队内外部的环境变化而做持续优化,在一些大公司中甚至会成立专门的流程改进小组,足见流程持续优化的重要性。

    沟通,让团队成员凝聚成一个有机的整体

    良好的沟通对一个高效率团队有多么重要,熟悉Scrum的朋友对此会有更深刻的体会。“坐到一起,每日站立会议,Review会议”,Scrum在团队沟通方面推崇的最佳实践都体现了沟通的重要性。为什么很多公司搬入新办公大楼后就开始走下坡路?下面的这个分析很可能就是主要原因:团队成员在新办公区的座位 会比以前拉得更大,以前与团队成员坐在一起的主管们搬入了独立的办公室,而这会导致团队间原来形成的良好沟通氛围消失,其后果严重到足以给企业带来致命打击!好吧,我承认这听起来有点骇人听闻,目的只是想借此强调一下沟通的重要性。

    通过开会来达到团队沟通的目的是一种好的方式吗?有人会说是,有人会说不是。其实,开会这种方式,无所谓好与不好,关键就两点:是否有必要开会以及开个什么样的会。我的个人感触:一人用嘴大家用耳的会应该是表彰大会;开了跟没开一样的会最好是批判大会;如果开会有人睡着了,大多数情况下是因为会议本身具有催眠效果。

    相比开会这种沟通方式,我更喜欢现场管理和看板管理。

    工具,是团队高效率协作的倍增器

    这方面最容易让人想到的也是大多数团队目前所采用的方法就是:引入适合团队的协同软件。前面介绍的明确目标、制定规范和加强沟通等方面的措施,如果能有合适的团队协同工具支持和配合,推行起来则要顺利很多。

    如何选择一款合适的协同软件呢?引入的协同软件贵在精而不在多,功能完备集成性好的协同软件可以避免引入过多系统而产生的信息孤岛。侧重自上而下管控的IT 系统只会在规范团队方面起作用,要提升团队协作效率,更应该选择实现注重协作性的系统。免费的协同软件大多不如付费的,但价格昂贵的协同软件对多数团队而 言并不适合。

    优秀的管理者的工具箱中,总是会有各种各样的宝贝。诸如团队绩效、团队竞争等都是激发团队成员潜能和斗志的好方法,实施得好的话,可以显著提升团队成员间的协同效率。

    如果你正好在带团队,不妨尝试一下上面提到的这些方法,相信你的团队的协作效率一定会越来越高。

    Pragmatic.ly 联合创始人,Teahour.FM主播系统架构师叶玎玎:创业型开发团队的协作心得

    \

    毫无疑问,Stephen R. Covey的《The 7 Habits of Highly Effective People》和David Allen的 《Getting Things Done: The Art of Stress-Free Productivity》是个人管理类的超级畅销书,让我们学会如何才能成为高效能人士。然而,即使团队里的所有人都是高效能人士,这个团队也不一定是 个高效能团队。我们常说“一个和尚有水喝,两个和尚挑水喝,三个和尚没水喝”,正是出于这个道理。顾名思义,团队协作是指所有团队成员之间协同、合作,里 面会有分工、沟通、协调,甚至会有妥协,所以我们需要一些规则和工具来帮助团队提高协作效率。本文的一些心得和实践来自于我在小团队(<10)的经验,并且在团队内部相互信任、目标一致的基础上,所以不涉及办公室人事管理,适合于创业型开发团队。

    目标一致

    不仅要确保团队的长期目标一致,还要确保短期目标一致。如同在足球场踢球,刚开始比赛时,大家战术和思想都是一致的。而一旦进球后,就会出现有人想守,有人 想攻的情况,这种不一致会造成局面被动并可能导致输球。创业团队也是如此。所以在任何时候,团队成员都要保持一致意见:现阶段的目标是什么,什么事情对团队最重要,然后所有做的事情都配合这个目标来完成。

    合理安排

    小团队人少,永远有做不完的事,所以在做计划时总是害怕资源出现闲置而添加过多任务。我们一开始也是如此。但慢慢发现,这样不仅弄得团队身心俱疲,不停地赶进度,而且也会因为不停地延期导致团队很沮丧、压力过大影响工作的心情和状态。因此,现在每次迭代只会给大家80%~90%的工作量。有意思的是,很多时 候时间都是刚刚够。

    易者优先

    如果讨论时遇到意见分歧,且这些不一致的意见不涉及对错,那么会很容易陷入各自试图说服别人接受自己观点的困境,纯属浪费时间。所以我们采用易者优先原则,设置了单任务最长讨论时间。 一旦超过讨论时间又无法达成共识,就会选择最简单的方案,先做出来,然后大家测试,最后再做改进。

    免扰模式

    确定项目计划后,我们就基本启动了免扰模式。我们不鼓励在工作时随意地打断别人,即使是一起在办公室工作时。在我们看来,每一次粗暴的打扰(例如电话、 IM)都是对效率的损害,我们更需要的是100%专注在要做的事情上。因此,我们要求每个人如果需要讨论,就先想清楚整个问题,然后在 Pragmatic.ly或者Hipchat里发出来。短时间来看可能回复会有延时,但从长期来看反而能让大家都能更深入的思考、更专注的工作。

    尽量避免会议。只有一个例外是遇到困难需要头脑风暴时,因为开会比起文字是效率更高的选择。但只有任务涉及者才需要参与,而不需要浪费其他人的时间。

    状态同步

    团队人越多,沟通成本越高,尤其是需要知道团队的当前状态时,例如目前进度如何,接下来有哪些事情要做,做完的时候需不需要其他成员帮忙审查,或者有没有卡 在某些地方需要帮助。这些状态和信息同步是非常耗时的,我们更倾向于用眼睛看代替嘴巴说,而 Pragmatic.ly就很好地满足了这点。项目里的所有信息和状态都会实时地同步给整个团队。

    代码审查

    作为开发团队,我们不一定能保证每个任务都有充足的测试覆盖而且也不追求100%覆盖率。但每一段代码、每一次修改,都必须有其他人来审查,通过后才能进入 主干。代码审查中可以发现当事者没考虑过的设计细节和一些实现上的Bug,保证了软件质量。通过代码审查,每个人可以学习到其他人好的思维方式和编码方 式,也会提出做的不好的地方和改进意见,是整个团队在代码级别的另一种沟通和思考,促进了团队的成长。代码审查也能避免单点故障,万一出了问题,即使代码 编写者不在,仍然有其他人能立刻去修正。

    过程审查

    除代码需要审查外,过程也是一个很有审查必要的事情。所以我们会不定时地一起进行一次简单的回顾,各自对这个周期的一些工作提出意见,然后在下一个周期里有针对性地改进。整个工作过程就是这样不断地在迭代式调整和改进,让我们根据自身的情况,实践出最适合团队的方式。

    健康工作

    要想工作好,身体先练好。一个健康的成员才可能高效地工作。在Y Combinator有个理论,在产品发布前,你应该专注并只专注两件半事情,1开发+1跟用户聊天+0.5锻炼身体。而在产品发布后,你应该专注并只专 注三件事情,0.5开发+1跟用户聊天+1运营+0.5锻炼身体。可见锻炼身体的重要。我们团队每个人基本每天都会有专门的运动时间,跑步、游泳,或者健身房,已然成了我们工作的一部分。

    展开全文
  • ONES可以有效帮助企业的研发项目管理团队效率倍增,具体是如何帮助企业协作和工作效率提升呢?主要体现在以下几个方面: ①辅助项目设立清晰的目标和任务: 设定目标是任何项目工作中的第一步,也是最重要的一步。...

    ONES 可以有效帮助企业的研发项目管理团队效率倍增,具体是如何帮助企业协作和工作效率提升呢?主要体现在以下几个方面:


    ① 辅助项目设立清晰的目标和任务:
    设定目标是任何项目工作中的第一步,也是最重要的一步。如果一开始就出现了目标和任务不确定且含糊不清的问题,每个人都会以自己的方式理解目标和任务,从而引起争论和错误。
    所以管理者在设定目标时首先要秉持「SMART原则」——具体的(Specific)、可衡量的(Measurable)、可达到的(Attainable)、有一定的相关性(Relevant)、有明确的截止期限(Time-bound)。
    在具体的任务上,可以借助项目管理软件清楚地描述任务的各种属性,并实现任务信息的透明化,使大家对任务有一个共识,减少扯皮。比如 ONES Project,自定义配置属性,想要多具体就可以多具体。而且因为大家都能看到任务信息,一旦有什么歧义,可以及时沟通。

    ONES Project

     

    ②根据目标划分优先级
    在平时的工作中,诸如电子邮件审阅、计划外的研讨会、办公室对话和日常会议等等琐碎的事情占用了大部分的工作时间。更糟糕的是,很多成员“喜欢”这种状况,因为这些事情很容易完成。所以在一开始分配任务的时候,有必要确定任务的优先级并确保成员开始处理最重要的任务。
    优先级一定是根据团队的目标而划分的,这样才能使所有的成员保持一致的目标和节奏,将成员的工作效益最大化。

    ONES Project 任务优先级设置及提醒

     

    ③帮助团队决策者更合理安排资源
    只有合理地分配资源,团队才有可能取得最优化的工作效果。除了资源分配,也要特别注意防止成员工作倦怠,最直接的办法就是查看成员的工时情况,我们是用 ONES 的工时报表来量化资源投入的。

    ONES 资源管理

     

    ④帮助更好地保持团队信息透明
    一个信息透明的工作环境可以在管理者和成员之间建立相互的信任,让团队的工作氛围更好,成员也更有创造力。当成员对一个项目信息有较高的可见性,并且也清楚自己以及其他成员在项目中所扮演的角色,就可以培养成员的责任感和相互之间的信任感,而这些能有效地提高团队的工作效率。
    要想保持团队内信息透明,可以借助项目管理类的工具,比如看板、甘特图、燃尽图等。我们用的是 ONES 系统,除了项目的可视化,还有严格的权限管理,分工更有序,信息也更安全。

    ONES Project 甘特图

     

    ONES Project 敏捷看板

     

    ONES 企业级研发管理工具包括 ONES Project(项目进度管理)、ONES Plan(项目集管理)、ONES Wiki(知识库管理)、ONES TestCase(测试用例与测试计划管理)、ONES Pipelline(持续集成与交付管理)等专业研发管理协作工具,以此产品矩阵贯穿整个研发流程,促进工程师及产品开发的各角色成员进行良好的协作,提升个人创造力与团队效率,从而提升产品交付质量,帮助企业更好更快发布产品。

    ONES 报表

    展开全文
  • 前后端的分工协作

    2015-07-16 18:56:52
    前后端分工协作是一个老生常谈的大话题,很多公司都在尝试用工程化的方式去提升前后端之间交流的效率,降低沟通成本,并且也开发了大量的工具。但是几乎没有一种方式是令双方都很满意的。事实上,也不可能让所有人都...
    
    2014-08-03 01:06 by Barret Lee, 3214 阅读, ... 评论, 收藏编辑

    前后端分工协作是一个老生常谈的大话题,很多公司都在尝试用工程化的方式去提升前后端之间交流的效率,降低沟通成本,并且也开发了大量的工具。但是几乎没有一种方式是令双方都很满意的。事实上,也不可能让所有人都满意。根本原因还是前后端之间的交集不够大,交流的核心往往只限于接口及接口往外扩散的一部分。这也是为什么很多公司在招聘的时候希望前端人员熟练掌握一门后台语言,后端同学了解前端的相关知识。

    一、开发流程

    前端切完图,处理好接口信息,接着就是把静态demo交给后台去拼接,这是一般的流程。这种流程存在很多的缺陷。

    • 后端同学对文件进行拆分拼接的时候,由于对前端知识不熟悉,可能会搞出一堆bug,到最后又需要前端同学帮助分析原因,而前端同学又不是特别了解后端使用的模板,造成尴尬的局面。
    • 如果前端没有使用统一化的文件夹结构,并且静态资源(如图片,css,js等)没有剥离出来放到 CDN,而是使用相对路径去引用,当后端同学需要对静态资源作相关配置时,又得修改各个link,script标签的src属性,容易出错。
    • 接口问题
      1. 后端数据没有准备好,前端需要自己模拟一套,成本高,如果后期接口有改变,自己模拟的那套数据又不行了。
      2. 后端数据已经开发好,接口也准备好了,本地需要代理线上数据进行测试。这里有两个费神的地方,一是需要代理,否则可能跨域,二是接口信息如果改动,后期接你项目的人需要改你的代码,麻烦。
    • 不方便控制输出。为了让首屏加载速度快一点,我们期望后端先吐出一点数据,剩下的才去 ajax 渲染,但让后端吐出多少数据,我们不好控。

    当然,存在的问题远不止上面枚举的这些,这种传统的方式实在是不酷(Kimi 附身^_^)。还有一种开发流程,SPA(single page application),前后端职责相当清晰,后端给我接口,我全部用 ajax 异步请求,这种方式,在现代浏览器中可以使用 PJAX 稍微提高体验,Facebook 早在三四年前对这种 SPA 的模式提出了一套解决方案,quickling+bigpipe,解决了 SEO 以及数据吐出过慢的问题。他的缺点也是十分明显的:

    • 页面太重,前端渲染工作量也大
    • 首屏还是慢
    • 前后端模板复用不了
    • SEO 依然很狗血(quickling 架构成本高)
    • history 管理麻烦

    问题多的已经是无力吐槽了,当然他依然有自己的优势,咱们也不能一票否决。

    针对上面看到的问题,现在也有一些团队在尝试前后端之间加一个中间层(比如淘宝UED的 MidWay )。这个中间层由前端来控制。

        +----------------+
        |       F2E      |
        +---↑--------↑---+
            |        | 
        +---↓--------↓---+
        |     Middle     |
        +---↑--------↑---+
            |        |  
        +---↓--------↓---+
        |       R2E      |
        +----------------+

    中间层的作用就是为了更好的控制数据的输出,如果用MVC模型去分析这个接口,R2E(后端)只负责 M(数据) 这部分,Middle(中间层)处理数据的呈现(包括 V 和 C)。淘宝UED有很多类似的文章,这里不赘述。

    二、核心问题

    上面提出了在业务中看到的常见的三种模式,问题的核心就是数据交给谁去处理。数据交给后台处理,这是模式一,数据交给前端处理,这是模式二,数据交给前端分层处理,这是模式三。三种模式没有优劣之分,其使用还是得看具体场景。

    既然都是数据的问题,数据从哪里来?这个问题又回到了接口。

    • 接口文档由谁来撰写和维护?
    • 接口信息的改动如何向前后端传递?
    • 如何根据接口规范拿到前后端可用的测试数据?
    • 使用哪种接口?JSON,JSONP?
    • JSONP 的安全性问题如何处理?

    这一系列的问题一直困扰着奋战在前线的前端工程师和后端开发者。淘宝团队做了两套接口文档的维护工具,IMS以及DIP,不知道有没有对外开放,两个东西都是基于 JSON Schema 的一个尝试,各有优劣。JSON Schema 是对 JSON 的一个规范,类似我们在数据库中创建表一样,对每个字段做一些限制,这里也是一样的原理,可以对字段进行描述,设置类型,限制字段属性等。

    接口文档这个事情,使用 JSON Schema 可以自动化生产,所以只需编写 JSON Schema 而不存在维护问题,在写好的 Schema 中多加些限制性的参数,我们就可以直接根据 Schema 生成 mock(测试) 数据。

    mock 数据的外部调用,这倒是很好处理:

    typeof callback === "function" && callback({
       json: "jsonContent"
    })

    在请求的参数中加入 callback 参数,如 /mock/hashString?cb=callback,一般的 io(ajax) 库都对异步数据获取做了封装,我们在测试的时候使用 jsonp,回头上线,将 dataType 改成 json 就行了。

    IO({
      url: "http://barretlee.com",
      dataType: "jsonp", //json
      success: function(){}
    })

    这里略微麻烦的是 POST 方法,jsonp 只能使用 get 方式插入 script 节点去请求数据,但是 POST,只能呵呵了。

    这里的处理也有多重方式可以参考:

    • 修改 Hosts,让 mock 的域名指向开发域名
    • mock 设置 header 响应头,Access-Allow-Origin-Control

    对于如何拿到跨域的接口信息,我也给出几个参考方案:

    • fiddler 替换包,好像是支持正则的,感兴趣的可以研究下(求分享研究结果,因为我没找到正则的设置位置)
    • 使用 HTTPX 或者其他代理工具,原理和 fiddler 类似,不过可视化效果(体验)要好很多,毕竟人家是专门做代理用的。
    • 自己写一段脚本代理,也就是本地开一个代理服务器,这里需要考虑端口的占用问题。其实我不推荐监听端口,一个比较不错的方案是本地请求全部指向一个脚本文件,然后脚本转发URL,如:
      原始请求:http://barretlee.com/api/test.json
      在ajax请求的时候:
      $.ajax({
        url: "http://<local>/api.php?path=/api/text.json"
      });

      php中处理就比较简单啦:

      if(!isset($_GET["page"])){
        echo 0;
        exit();
      }
      echo file_get_contents($_GET["path"]);
    • Ctrl+S,保存把线上的接口数据到本地的api文件夹吧-_-||

    三、小结

    本文只是对前后端协作存在的问题和现有的几种常见模式做了简要的列举,JSON Schema 具体如何去运用,还有接口的维护问题、接口信息的获取问题没有具体阐述,这个后续有时间会整理下我对他的理解。


    我的总结,文章主要分享前后端技术协作相关技术问题的解决方法,主要包括前后期开发接口确定等,需要先验知识为ajax、mock、json等。

    ajax:Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

    Mock:通常是指,在测试一个对象A时,我们构造一些假的对象来模拟与A之间的交互,而这些Mock对象的行为是我们事先设定且符合预期。通过这些Mock对象来测试A在正常逻辑,异常逻辑或压力情况下工作是否正常。
    引入Mock最大的优势在于:Mock的行为固定,它确保当你访问该Mock的某个方法时总是能够获得一个没有任何逻辑的直接就返回的预期结果。
    Mock Object的使用通常会带来以下一些好处:
     
    隔绝其他模块出错引起本模块的测试错误。
    隔绝其他模块的开发状态,只要定义好接口,不用管他们开发有没有完成。
    一些速度较慢的操作,可以用Mock Object代替,快速返回。
    对于分布式系统的测试,使用Mock Object会有另外两项很重要的收益:
     
    通过Mock Object可以将一些分布式测试转化为本地的测试
    将Mock用于压力测试,可以解决测试集群无法模拟线上集群大规模下的压力。

    JSON:(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。

    JSONP:(JSON
    with Padding)是
    JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于
    server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。

    展开全文
  • 只有一个例外是遇到困难需要头脑风暴时,因为开会比起文字是效率更高的选择。但只有任务涉及者才需要参与,而不需要浪费其他人的时间。 状态同步 团队人越多,沟通成本越高,尤其是需要知道团队的当前...
  • 如何提高团队协作效率

    千次阅读 2013-10-11 13:08:23
    如何提高团队协作效率 发表于19小时前| 3027次阅读| 来源《程序员》| 7 条评论| 作者李枫 《程序员》杂志2013年10月刊管理 创业团队 摘要:软件开发是一项团队活动,必然需要团队成员间的交流与协作。...
  • 效率为王!11款最高效的团队协作工具 2015/08/18阅读 5.1k 评论 5收藏 124 再不改变,你就老了。用加薪后的2天薪资来投资自己,做个优秀的产品经理 开始改变! 每个团队都有协作办公的需求,对协作类工具...
  • 横向分工与纵向分工

    千次阅读 2018-06-24 15:21:39
    相比于大部分动物的个体觅食,分工是一种社会行为,如果不算动物本能的社会行为,主动的分工合作是人类智慧的产物。    分工能够完成个体不能完成的工作,或者工作量超过了个人能够完成的范围,或者所要求的技能...
  • 由于工作分工、工作进展的不同,团队内部的信息往往需要及时同步,然而伴随着团队经营规模的不断扩大,在线协同、多人协作,以及软件项目管理等问题将会接踵而至,成为制约企业高效发展的瓶颈。 市面上,可多人在线...
  • 互联网行业角色分工越来越精细化,产品经理、项目经理、开发人员、测试人员,前端开发人员之间的协同性要求越来,相互之间需要具备团队协作的能力,减少无效沟通。 1.合理进行人员分工 合理的进行人员分工是提高...
  • 是任务太多还是你的效率...是你没有找到正确的方法还是你不懂得变态,又或是...... 职场上,比你出色的同事并不比你聪明,只是他们有好的小窍门又或者是懂得那些小窍门,可以快速提升自己的工作效率。很多...
  • Excel是我们办公中常用的工具 ,它几乎能我们处理大部分数据,友好的交互界面、丰富的公式函数和易于上手的图表我们在数据统计方面提供了不小的帮助,但经过一段时期运行,就会出现下面的情况: 这样多...
  • 在上一篇博文中我们聊到 微服务的本质 就是一种新的协作机制,可以加速分工、促进合作,但为什么微服务有这种效用呢?今天我们来聊聊其背后的原因。 在业务互联网化之前,我们建设的大部分IT系统都是供内部员工使用...
  • 【原创】“人机协作”从概念到趋势的解析(一):从协作机器人的前世今生说起文章来源自:高工机器人网2017-02-21 16:44:22阅读:27003摘要本文将协作机器人的发展分为概念提出、初步发展、快速发展三大阶段。...
  • 分工协作,团队

    2009-10-24 23:08:00
    随之后来参与了各种类型的团队开发工作,有的是通过网络沟通协作的团队,有的是独立任务分配式的工作,正式进入工作后,则在一个固定开发环境下相对固定的团队。但是这种英雄式的思想始终存在,想必这也是大部分...
  • 图集原标题:在第十九届中国国际工业博览会上,机器人新产品传递出行业发展新动向——人机协作引领机器人产业新趋势在第十九届工博会上,中国工程院院士倪光南(右一)在遨博智能科技有限公司展台观看其展出的具有自主...
  • 智办事是杭州互次方科技公司创业团队研发的一款神器,专属于自身企业的个性化管理软件,让团队协作真正高效率适应性。 集成团队管理、任务待办管理、项目跟踪管理等,有较强的计划、日程、进展汇报等功能,...
  • 信息技术环境下基于协作学习的教学设计赵建华李克东摘要:协作学习目前已经成为课堂教学与互联环境下一种非常重要的教学模式,它对于培养学生的创造能力、求异思维、批判思维、探索发现精神、与学习伙伴的合作共处...
  • 基于网络环境下的协作学习研究第三组成员:曾钰莹 巢依宁 龚帆 伍静盈 杨宇 吕怡霞 崔欣然摘要:随着信息技术的发展,网络环境已经成为学习者学习的重要环境之一,基于网上资源利用的小组协作学习是网络教学中非常...
  • 为什么需要学习并发编程?

    千次阅读 2020-02-12 22:00:25
    其实并发编程可以总结三个核心问题:分工、同步、互斥。 所谓 分工 指的是如何高效地拆解任务并分配给线程,而 同步 指的是线程之间如何协作, 互斥 则是保证同一时刻只允许一个线程访问共享资源。Java SDK并...
  • 本文来自作者 glenwang 在 GitChat 上分享 「敏捷教练 V 形六步法实战:从布朗运动到深度协作」,「阅读原文」查看交流实录。「文末高能」编辑 | 哈比在达人课 《图解敏捷教练和 ScrumMaster》 中,我们介绍了敏捷...
  • 为什么需要协作机器人 协作机器人的起源 协作机器人与传统机器人有什么区别   为什么需要协作机器人?  协作机器人的兴起意味着传统机器人必然有某种程度的不足,或者无法适应新的市场需求。...
  • 第6章 高效率质量 6.1 什么高效率服务 高效率的服务,作为一种用户体验,往往在用户心中占据很重要的位置,因此做到高效率的服务,对服务工作十分重要。 那么,什么高效率的服务呢?我们从约瑟夫和威廉的...
  • 1.接口的特性 以及java8新提出的一些接口特性 2. 抽象类和接口的区别以及存在的意义、使用场景 3. 为什么要使用接口
  • 过去一个月,在门店销售过程中,为什么顾客没有买宜家的厨房家具?过去一个季度,有哪些增长的潜在2B客户?2B客户的市场规模和增长情况如何?诸如此类的问题,在原有的运作模式及工具体系下,并没有一个很好的答案。...
  • 区块链的本质究竟是什么?如果区块链只是一个简单的分布式账本,凭什么在全世界的所有国家、商业领域掀起一浪又一浪的轩然大波,而如此多的精英人士不顾一切的争相入场? 假设比特币是第一张多米诺骨牌,区块链究竟...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,224
精华内容 4,889
关键字:

为什么分工协作效率更高