背景讲解:
一般的互联网公司团队中,同一岗位的软件开发人员会配置2-3人,其中往往有一个中坚,两位副手,这种配置会比较稳定,不容易出现高频率的人员流动。
而有的公司往往无法达到这样的要求,会发生“一人顶一岗”的情况,
这样其实很不利于程序员的职业发展,毕竟作为开发人员,一直在一个人写代码,无法在工作中得到灵感和启发,学习的时间成本较大。
那么这种情况下,项目经理的重要性就体现出来了,
项目经理要凭借自己的工作经验和编程积累,让研发成员在遇到思路和技术困难时,及时的启发和引导他们,起到团队润滑剂的作用。
好的项目经理,绝不是那种只会提需求和压工期,却在程序员遇到困难时只会让他自己google的人。(虽然他自己也要负责一大堆事务出各种报告跟客户沟通需求忙得很等等等等。。。)
接下来就专门讲讲最近遇到的几个技术案例,
我是怎么帮开发人员解决技术瓶颈的——
1.IOS地图事件
事件重现:
众所周知,苹果端的应用市场审核非常严格
之前我们的即时通讯APP项目数次申请审核,
都被驳回
返回邮件显示
“你使用的第三方SDK有的版本过于老旧”
角色一览:
Moking(正是在下)
东东(IOS)
事件经过:
兹事体大,
看来本座要亲自出马了:
我先让IOS再上传一遍,
以期重现问题,
结果果不其然,成功重现。
(好吧其实就是想着如果这次上传成功就能少费很多功夫了)
然后我让IOS把百度地图的SDK版本告诉我,
是2.3.1版本。。。
(正好我半个月前刚用过百度地图,默默吐槽了一句,现在已经3.7.1了好嘛。。。)
接着查了查该版本的时期:
(引用自百度地图官方SDK文档)
2013年11月28日 百度地图Android SDK v2.3.1发布
【 新 增 】
几何图形绘制中,新增凹多边形绘制能力
类:Geometry()
........................中间省略N行..........................-200:服务端数据错误,无法解认证析服务端返回数据。
其他返回请参考:http://developer.baidu.com/map/index.php?title=lbscloud/api/appendix
我去!
居然是三年前的版本。。。
然而,我还是要硬着头皮解决这个事,
于是我坐在IOS旁边,一步一步指导她:
1.把项目里百度地图的集成包删掉
2.删掉后,项目会显示大量报错,注释掉所有的Import依赖行+报错的业务代码
完成以上两步,
总共花了一个半小时,
....................................
接着在真机上跑一下,
发现布局文件留下了地图控件的位置,
不过已经变成空白,不显示地图了。
接着IOS把改过之后的项目再次打包、上传,
两天之后,
IOS报告:审核成功,可以下载~
得知消息,我的心情是这样的:

自恋一下,哈哈哈!
言归正传,作为这次事件扭转局面的主角,
我在遇到问题之后的思路是这样的:
所以,
即使是此次删除完百度地图代码之后,上传审核不成功,
我还是有新办法,能把问题解决掉。
思路很重要~
2.AS转项目事件
事件重现:
自从Android Studio横空出世之后,许多资(da)深(lao)安卓开发工程师不得不从eclipse转向AS,而2015年google宣布:停止对eclipse进行技术支持
众多基于eclipse开发的项目
都需要转换成Android Studio的项目结构
角色一览:
Moking(又是在下)
成业(Android)
事件经过:
第一天,我交待成业:
“把这个源代码导入到AS里吧,这是个eclipse的Android项目”
“遇到问题给我说。”然后我就去忙别的事。
当天下班前得知,导入之后遇到了.9图报错,
于是成业花了两小时,把所有报错的.9图都重新绘制完毕。
接下来,
又遇到了依赖库报错。。。。
成业又花了一下午,科学上网把官方的各种版本Gradle依赖库都下了一圈,
然而,
依然报错。。。
而且AS的提示栏还弹出了二十多行各种各样的error。。。
努力了这么久,
居然还有一大群问题没解决,成业坐在那里的样子就是这样:
于是,本座又一次亲自出马——
第一轮:状况问询
“小李,这项目是怎么import到AS里的?”“就是这样.”然后给我看导入方式,如下:
我一看,没问题啊,不就是导入项目么。
接着去查报错信息,
各种问题十多个。。。
蛮棘手的。
第二轮:逻辑重构
作为主导者,我开始思考时间成本的问题:
1.如果把这些报错一一解决,以成业的技术至少还需要两天,
然而我们当前最紧要的是后续开发,如果两天还是解决不了问题,那时间成本就大了;
2.现在回归eclipse开发,固然是个保险的选择,但是成业并不熟悉eclipse,
而且让他熟悉这个老旧的IDE也会让他产生倦怠情绪,耽误开发进度;
3.所以,那该怎么办?
短暂的梳理逻辑之后,我做出了决断:
“来让我看看你AS界面”
果然,AS最新版新增了“导入非AS格式项目”的功能~
第三轮:换个思路
之前使用的方法,是用eclipse生成项目的Gradle文件,然后在AS中直接导入"标准AS格式的项目"。
然而,AS版本迭代很快,eclipse老旧的生成方式很容易在AS上造成不兼容问题。
所以我尝试把没有Gradle文件的原生eclipse项目源代码,用“导入非AS格式项目”的方式导入到AS中。
文字表述太麻烦,上图
原理就是这么简单
按照这个方法,导入一波,直接成功!
事件解决~
3.灵异!幽灵报错事件
事件重现:
某日,测试发现在“修改密码”页面完成修改之后,自动切回主页面之后会不停的弹出“旧密码错误”Toast,
更诡异的是,成业查了很多遍项目的String字符集和相关页面的java源代码,都没有发现这几个字。
角色一览:
Moking(正是在下)
成业(Android)
事件经过:
得知如此神奇状况,我短暂的在脑子里过了一遍逻辑。
我需要先确定位置,然后Review跟这个位置有关的其他代码,包括前后端,
应该就能够找到问题所在。
那么,第一步要解决的就是:
“这段字符哪儿来的?”
1.客户端 2.服务端
还有第三个么?
貌似没有了。
好,那就查一查项目:
1.我用eclipse全局搜索项目的所有文件,
大概用了十分钟,确定确实没有“旧密码错误”这五个字
2.我用Zend Studio全局搜索PHP服务端项目源码,果然~
找到了!
在判断修改密码的语句里,在else{}括号中追寻到了这句提示,一字不差,“旧密码错误”。
第一站已经成功,接下来——
是时候展现真正的车技了!
“没时间解释了,快上车!”
我直接坐在成业旁边,两人一起Review“修改密码”的客户端业务代码,如下:
注意倒数第四行,modifyPwdOther()方法
而打开具体的modifyPwd()方法后,我们发现倒数第一行start()的上一行,重复出现了modifyPwdOther()方法。
(该截图为改后截图,modifyPwd()方法具体位置在start()方法上两行)
“循环调用!!!”问题已被发现。
删掉了modifyPwd()方法后,安装、测试,
世界清净了。
从得知这个问题,到确定代码位置,完全解决问题,
仅用时20分钟。
神秘的“旧密码错误”Toast
再也没有出现
全文完
完结撒花~
本文通过三个实际案例,展示了如何解决iOS地图SDK过时、Android项目迁移及幽灵报错等问题,体现了项目经理在技术难题面前的应对策略。
1万+

被折叠的 条评论
为什么被折叠?



