外包避坑经验小结

简介: 机缘巧合,近距离接触了一个比较坑的外包团队,长了一丢丢扯皮的经验,写个小结,填坑。了解对方开发情况提前申请好 fabric、Bugly 等集成监控工具的账号,让对方开发过程中全程都集成这些工具,develop 版本和 release 版本用不同的 id,这样可以区分出 Bugly 中显示的崩溃是 release 版本中影响用户体验的 bug,还是开发过程中程序员为了测试故意触发的 crash。

机缘巧合,近距离接触了一个比较坑的外包团队,长了一丢丢扯皮的经验,写个小结,填坑。

了解对方开发情况

提前申请好 fabricBugly 等集成监控工具的账号,让对方开发过程中全程都集成这些工具,develop 版本和 release 版本用不同的 id,这样可以区分出 Bugly 中显示的崩溃是 release 版本中影响用户体验的 bug,还是开发过程中程序员为了测试故意触发的 crash。

Bugly 是可以精确记录崩溃发生的各种信息的,包括设备型号、系统版本、触发崩溃的代码等,这样在无法复现 bug 的时候也有证据和对方谈,不至于让对方赖账。fabric 可以做到实时统计,根据开发版本的应用活跃程度,可以对对方的开发过程有一个大概的估计,至少当你看见 fabric 显示 app 没有任何动静(app 启动次数、session length),那肯定对方是没在进行客户端调试的。

谨慎考虑技术方案

有些外包团队的技术人员,是毕业之后培训两三个月就上岗了那种,能力比较成问题,在技术的选择上也会很随意,可以尝试从以下几个角度来去把控:

  • 通过 git 来时常查看他们的代码提交记录,不要让他们每次都把代码打包发过来,这样方便项目后续交接给其他人继续开发。
  • 对于他们大量使用了,而自己又不太熟悉的第三方框架,多去查一下,看看这些框架有没有不成熟、或者已经不再维护的问题,否则框架本身出现 bug,后期可能一时移除不掉,他们又没有自己修改框架的能力。
  • 技术上最好选择通用、最好可移植平台的方案。比如同等情况下,在 Win 桌面端尽量选择 C++ 而不是 C# 去开发,后期可以移植其他平台;后端尽量用 C++ 或者 Java 去实现,否则他们用 PHP 做了之后,以后找人接手项目也比较麻烦。
  • 假如想要用 React Native 去做客户端开发,要考虑这样是不是相对原生开发可以省下接近一半的费用?如果可以的话,后期找人接手这个 RN 项目,短期是不是可以找得到会 RN 的人?

有效传递反馈意见

一方面,对方可能会有赖账的想法;另一方面,有些程序 bug 确实是偶发性的,不好复现。于是就可能出现,你说程序有问题,对方不承认的问题。所以要多注意:

  1. 在反馈 bug 的时候,通过 Bugly 等工具,告知对方,出问题的代码在哪
  2. 在不至于导致崩溃,但某些机型上又表现不正常的时候,尽量在测试时,全过程录视频,给乙方反馈的时候,直接截取出那一部分视频,就不存在推脱责任的问题

产品设计问题与 bug

在和外包团队接触过程中,遇到这样一个问题:有些动态的东西,比如滑动列表时隐藏搜索框,这些相对细致的内容,可能无法在原型设计中得到充分的体现。

而你又无法依赖对方的人员素质,来让他们自行优化这些细节。就要充分考量实际开发情况,在原型不方便体现细节的时候,用文档或其他方式进行充分的说明。否则最后产品做出来,你觉得某个地方不合理,是他们应该修复的 bug,但是由于原型、设计稿没有体现,他们可以认为这些是需求变更、二次优化,再找你收一次钱。

签订合同的时候,要严格定义出“交付项目的要求”,项目还没交付的时候,产品设计有问题(交互、逻辑等)算是双方沟通不够深入,项目交付之后,任何改动都是新需求,都要再算一次钱。又比如所有功能都开发完成,但是 bug 很多,用户体验极差,可不可以交付项目;以及开发过程完成后,需要产品成功上架 App Store 与国内各大安卓应用商店,否则你这边觉得东西做完了,之后屡屡被 App Store 审核团队拒绝,也没地方说理。


后续遇到新型扯皮,再继续更新……

目录
相关文章
|
存储 编解码 小程序
抖音小程序开发中遇见的坑点
在抖音小程序开发中,需注意10大坑点:遵守小程序限制与规范;解决兼容性问题;优化数据加载速度;适应分享功能限制;处理视频播放挑战;优化图片加载显示;管理资源文件;提升用户体验;考虑安全性;及时更新维护。通过测试、优化和遵循官方文档,可克服这些问题,打造优质小程序。
|
移动开发 JavaScript 前端开发
分享111个JS文字特效,总有一款适合您
分享111个JS文字特效,总有一款适合您
447 0
|
Shell 测试技术 Linux
通过shell脚本进行linux服务器的CPU和内存压测
通过shell脚本进行linux服务器的CPU和内存压测
554 0
|
2月前
|
算法 搜索推荐 API
API让电商“活”起来:动态定价策略的革新力量
在电商竞争中,动态定价策略通过API实时调整价格,响应市场变化,提升利润与竞争力。本文解析其原理、技术实现与应用,探讨API如何重塑电商生态。
142 1
|
机器学习/深度学习 人工智能 数据可视化
首个全自动科学发现AI系统,Transformer作者创业公司Sakana AI推出AI Scientist
【9月更文挑战第11天】Sakana AI公司近日推出全球首个全自动科学发现AI系统——AI Scientist,实现了人工智能在科学研究领域的重大突破。AI Scientist不仅能独立完成从假设提出到实验设计、数据分析及论文撰写的全过程,还能通过模拟评审提升研究成果的质量。该系统已成功应用于机器学习的多个子领域,并产出达到顶级会议标准的论文。尽管其高效性备受赞誉,但也引发了关于研究可信度和潜在风险的讨论。Sakana AI强调,系统具备可追溯的决策过程与严格的评审机制,确保了研究的可靠性和透明度。论文详情参见:[链接]。
213 6
|
弹性计算 运维 安全
《幻兽帕鲁》游戏服务器搭建全攻略:不懂技术也能轻松上手!
随着2024年《幻兽帕鲁》和《雾锁王国》等热门游戏的火爆上线,越来越多的玩家渴望与小伙伴们共同探索游戏世界,享受团队合作的乐趣。但如何快速搭建一个稳定、流畅的游戏服务器,成为了许多玩家的难题。幸运的是,现在有一种方法(阿里云),即使你不懂技术,也能在短短一分钟内完成服务器的部署。
63560 87
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第19天】在人工智能的浩瀚星海中,卷积神经网络(CNN)如同一颗璀璨的星辰,照亮了图像处理的天空。本文将深入CNN的核心,揭示其在图像识别领域的强大力量。通过浅显易懂的语言和直观的比喻,我们将一同探索CNN的奥秘,并见证它如何在现实世界中大放异彩。
|
6月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
存储 C++
【C++数据结构——树】哈夫曼树(头歌实践教学平台习题) 【合集】
【数据结构——树】哈夫曼树(头歌实践教学平台习题)【合集】目录 任务描述 相关知识 测试说明 我的通关代码: 测试结果:任务描述 本关任务:编写一个程序构建哈夫曼树和生成哈夫曼编码。 相关知识 为了完成本关任务,你需要掌握: 1.如何构建哈夫曼树, 2.如何生成哈夫曼编码。 测试说明 平台会对你编写的代码进行测试: 测试输入: 1192677541518462450242195190181174157138124123 (用户分别输入所列单词的频度) 预
188 14
【C++数据结构——树】哈夫曼树(头歌实践教学平台习题) 【合集】
|
11月前
|
人工智能
添加一个Stable Difussion图像生成应用,通过向AI助手简单的提问,即可快速搭建Stable Diffusion应用至自己的网站中,大幅提升开发效率。
添加一个Stable Difussion图像生成应用,通过向AI助手简单的提问,即可快速搭建Stable Diffusion应用至自己的网站中,大幅提升开发效率。