Pengfei-xue.GitHub.io

programming your life!

Home ~/

View My GitHub Profile

  • new workflow confusion

    最近遇到了一些管理上的混乱,新流程的引入,导致了管理的灾难,主要出现的几个问题:

    所有产品线的排期都统一管理,开发周内容安排会议上,混乱,无法精细地了解每个产品线的开发内容。产品 层面上来说,对产品线没有很好的定义,导致的问题是,几乎每个需求都会牵扯到所有的产品线。对于Feature owner来说,需要了解每个产品线的事情,成本太高。而且,目前我们的情况是,没有足够的leader来承担这项 职责。

    目前的开发流程,带来的额外问题是,开发人员安排有些难做,一个需求在早期安排了人员参与后(从目前的实 践看来)之后再调整人员,会遇到很多配合方面的问题。上周,就有一个leader跟我说了这个情况,但是,我 也表示比较无奈,需求早期安排人员的时候,没法得知这位同学,在接下来的迭代里面具体会有多少任务量。 于是,出现临时换人属于很正常的事情,我不太理解的是,在开发开始前,更换了开发圆圆,如果产品需求之 前都已经讨论的很好了,那么,基于这个已经确定的需求,开发刚开始的时候换人为什么会导致配合的问题呢。 相应的同学,看一次文档,再了解一下不就ok了么?

    人与神话中,有关于进度落后,增加人员的讨论,在过程中增加开发人员,很可能会更加拖后开发的进度,因 为,人多之后组内沟通,对需求理解的一致性以及培训的成本非常大。所以,在开发过程中,需要去尽量避免 掉这个问题,在项目早期就合理预估好开发资源,避免中途出问题。这个对于新人加入团队也有值得参考的意义, 特别是对于临时抽调人员支持的情况。新人在加入团队时,最好安排一些完整的内容去做,另外,新人在早期 需要给他们营造一个单纯一些的环境。主要是,让新人有足够的时间,足够的资源去做好交给他的任务。尽量 把产品需求讲解清楚,明确告诉新人需要做什么。如此做,对新人来说,心理压力会笑很多,任务完成的质量 也会相应提升。对于临时抽调的人员,一个教训是,之后调试,debug的时候,如果他已经被调派回去了,那么 最终,还是要让你来替他完成一些擦屁股的事情。

    针对资源安排,jira已经完全应付不了我们的新流程了,所以,只能做了额外的工作去跟踪迭代周期内的开发 内容,比如,在wiki上单独维护一个开发内容列表,里面包含了所有迭代内容,以及相应需求对应的开发,测 试资源。每次需要人员去维护,原本的jira sprint管理也就完全不适用了。

    新流程已经使用了差不多3个迭代,但是,有很多同学不知道当前这个版本在做什么,发版的内容是什么, 新版本发出去之后,不知道更新了哪些内容。对后端同学来说,不在乎版本,版本是没有意义。但是,对于客户端 同学来说,版本很重要,他们需要明确的版本号。其实,我们去维护版本号是没有太多成本的,jira的版本功能 已经相当完善,多一个sprint可以归结到某一个版本上去。我最早的想法是将版本与迭代需要分开,但是,由 于测试引入了一个新的工具,导致,版本还是只能跟迭代搅和在一起,有点无奈。

    我们启用新流程,关于版本的事情有一个引子,产品部分不想自己去维护产品版本。在我看来,就是产品没有 短,中,长期的规划,导致的一个问题是,需求零散,很多需求没有长期规划,一个需求很可能一个迭代之后 就会被撤掉,而且撤掉的原因不是说试错,我们发现问题主动去下掉这个功能,而是产品没有想清楚,新上 feature之后需要怎么发展。(当然了,也有一些拍脑袋的需求,或者政治类的需求,必须要做)

    最近的几个迭代发现,测试成为了我们的瓶颈,开发这边有资源做,但是,测试资源紧缺,无法测完所有内容。 我们目前太依赖于人肉测试,测试团队需要对没想功能都手动去执行测试用例,导致的测试效率以及成本都比较高。 另外,部分同学的开发完成度不高,导致,我们的开发内容提测后,有些实现跟产品需求没有完全对上,或者, 有严重bug,导致测试同学完全没法继续执行下去。所以,现在业务这边在推的几个事情是,完善接口文档,把 项目接入ci做持续集成,帮助测试同学完善自动化测试工具。

    接口文档,之前由于人手不够的原因,导致很多接口都没有问题。最早的时候也有一些文档,是按照版本来给 接口文档,对于客户端同学来说非常友好,但是,一个小小的弊端是,对于一个接口的完整性来说很难看,对 于一个接口,比较难确定目前的最新状态是什么样的。我们之前的文档是在gitlab上做的,维护性不是很好, 现在已经迁移到confluence,可以自动生成接口列表,按照特定的规则排序,分类等,维护效率要比之前高很多。 现在,每个迭代都会抽一部分时间去让大家完善文档,希望在8月中下旬的时候完成所有的接口文档。目前ci已经 成功接入,最早的时候也结果ci,但是,当时的使用姿势不太对,导致很难去推这个事情,而且大家在本地做 一些测试也不方便。现状是,ci这部分已经完全搞定,我们的ci一直再跑。但是,对于接口这部分,测试同学 对框架,还有几本的自动化测试技术不太了解,导致ci跑测试的时候,由于测试脚本的问题挂掉。这部分需要技术 这边给测试做一些基础的培训,让测试同学了解最几本的单元测试,技术以及测试框架的使用方式。

    新流程的一些其它问题:

    • 会议时间大大增加,需要一周的时间去开会,对于team leander来说,会议时间过长
    • 我们没有足够多的负责人去跟所有的需求,跟进需求的进度,完成的质量等
    • 大量的重复性工作

    这几项不太想继续展开说了,之后,有时间再来阐述。

  • talk with fresh tech guy

    周六加班,去聚餐路上跟团队内一位新来得同学随便聊聊,看看他来了这边一个礼拜后得感想。 他来得时间点比较尴尬,正好是我们要做大促的时候,于是,压力比较大。一来就接活,没有 太多适应时间。下文中用A来代表这位同学。

    A同学说,本来代码早就写完了,不过,想写得漂亮,于是尝试了元编程。结果很多地方都不能 通用,最后,还是得一个功能一个功能去写。给我得感觉是,偏纯技术,其它得东西不在意。新 人都有这个问题,想起来,自己刚开始实习,工作得时候,也是想把代码写得漂亮,能不能完成 则另说。写得时候,一定要想办法用一两个模式,没有适用场景也得早就一个出来。结果,把程 序写得特别复杂。现在如果去写,肯定是找最简单得方式完成。我自己得理解是,技术可以钻研, 但是一定要有业务需求,通过业务需求去不断提升自己得技术,去了解,尝试不同的解决方案, 找最合适当前业务场景得技术方案和手段来解决问题。

    A同学跟我说到面试得事情,说是他面试过得最有意思的一次,他懂得面试官都懂。之前面试过 其它家,很多都在吹牛皮,没有实实在在得东西。之前也看到过一些文章,说越难加入得团体, 新人加入后,就会越忠诚,越愿意把自己融入这个团体,以这个团体为荣。比如说,美国得兄弟 会,对新人来讲,会经历各种折磨,去做一些丢人得事情,但是一但通过了,那这位新兄弟就会 特别忠诚于这个团队,不离不弃。还有一个列子就是军校新人,新人得锻炼都比较苦逼,各种受 老兵排挤,欺负。但是,融入团队后,他就再也离不开这帮兄弟了,复原时,一顿痛哭。

    业务这部分,更加注重的是对需求得理解能力,跟各方得沟通能力,技术上有要求,但是,不会 那么高。A同学得想法是,为什么做业务还找技术牛逼得呢。直接找一些水平一般得人过来,不 就行了么。这话也不错,但是,公司得不同阶段,对技术的要求也不一样。我们到了一定得阶段 之前得技术栈很有可能适应不了新得业务需求,所以需要多考虑,怎么去升级我们得技术栈,来 适应新得挑战。另外,做技术,不一定是要在纯技术得道路上前行,需要结合业务需求来培养自己 多方面得能力,而不只是把自己限制在了技术上,其它能力没有发展。做业务,也有很多需要技术 来解决得事情,比如,如何提高我们框架得开发效率,如果做更好得工具让大家提升开发效率,等 等,有很多事情可以做。

  • 美國行

    今年五一得時候去得美國,到現在才寫一些後感,有點晚,還好得是,在美國 得一些經歷記得還比較完整,記錄一下。

    我們從北京出發,途徑加拿大,到達美國拉斯維加斯,在加拿大機場等了差不多2個小時, 算是來過加拿大了,肤浅得感受是,这两个国家完全没必要分开嘛 :/ 抵达拉斯维加斯差不多 下午5,6点得样子,感觉还早,取了租得车后,就直接去奥特莱斯了,在奥特莱斯逛了不到 2个小时,店面就都开始关门了。买了几件nike,timberland得衣服其它都没有 时间看了,哎,现在想想很可惜,这次基本没怎么购物。在付款得时候,发现美国人找零得方式 跟我们不一样,他们找零时,是计算得你购买物品得钱加找零等于你总付款。而我们国内,计算 方式都是,你付的钱减掉你购买商品得钱等于找零。

    之后直接开车在拉斯维加斯赌场附近开车兜了几圈,有很多停车场都标记了free parking,但是 到了之后,才发现是上当了,也许这个停车场的名字就叫free parking吧。美国的停车场特别 大,人少,开进去后,感觉怪怪得,受了其他人得影响,觉得晚上人少得地方不安全,我们就特别 快地开走了。

    到达酒店得时候,已经快11点了,在酒店得自助停车场内开了好久才找到停车位,下车再去酒店得时候, 又饿又困,简直要挂。问了几个酒店服务人员后,最终到了我们住得酒店,威尼斯人,酒店底层都是赌场, 夜里了,人还是特别多,我们穿越了整个赌场才到check in得地方,办完手续后,找了一家最近得餐厅 补充一下。我点了披萨,确实是电视中那种特别大份得披萨,国内也有站点披萨,不过味道,国内要差点。

    吃完,就会酒店了,过程中,感觉美国拉斯维加斯这边得酒店,绝对是超5星了,酒店大厅特别大,金碧辉煌, 玩意儿也多,很多地方都有蓝天幕布,刚看到得时候,以为是玻璃拱顶,不过仔细看了,才知道,那个是幕布, 感觉特别帮,就像是把室外得蓝天白云给腾挪到室内了,给人特别豁亮得感觉。我们自己得房间也特别帮,很便宜, 但是属于大套房,最喜欢得是超级厚,柔软。浴缸也特别赞,在里面泡了很久,有点刘姥姥进大观园得意思。 第二天起床后,在酒店吃完坑爹得早餐,加消费估计有300了,跟之后吃得免费早餐差不多 :/ 吃完后, 去了凯撒酒店,描述有点困难,酒店大厅里面就跟室外得罗马大广场类似,有很多罗马得雕塑。

    跳跃一下,我们最后一天,是从波兹曼飞到拉斯维加斯,在金字塔酒店看了blue man的演出。金字塔酒店 外形跟埃及金字塔一模一样,酒店外面还有狮身人面像,金字塔得顶部打了一束光,直耸云霄,可以用蝙蝠侠里面 得召唤光束类比。酒店入口是几个大型雕塑,酒店内部特别开阔,特别高得厅,是我见过得最牛逼得酒店了,国内 五星酒店完全没法比。

    第二天下午,我们就开车走了,路上去了一家射击馆,american shooters,我们打了150发子弹,玩了两种手枪, 还有一把粉色得来复枪。来复枪得子弹比较小,差不多2-3个瓜子大小,射击得后坐力特别小,不过命中率特别高, 基本都在打进9,10环。手枪就不一样了,后坐力特别大,我老婆开第一枪得时候,都口不动扳机,射击时,有点 把不住枪。走的时候,看了一下枪得价格,一般都是400刀左右,一些牛逼得枪,包括冲锋枪,狙击枪等都有点卖, 就是比较贵一些。打完枪,我们去旁边得日本馆子吃饭,老板娘很热情,非常客气,最后吃饭付账得时候,给了小费, 最终还是给我们退回来了,好像说是,日本饭馆不收小费。这时候,想起早晨帮我们取行李得服务员,我们没给小费时 得瘪嘴样,感觉怪怪得,这也怪我们没有完全适应给小费得文化习惯吧。

    在美国开车,发现路上基本很少能看到重样得车,改装车特别多,欧洲豪华车基本看不到,都是美国牌子得车,个头也 特别大,感觉要比国内得车大一圈。之前又在澳洲开车,觉得澳洲人开车特别文明,不着急,如果你车速慢,后面得 车基本不会嘀嘀你,也不会耐不住超车。但是,美国这边完全不不一样,只要你稍微开慢点,救回被嘀嘀,而且,这边 开车基本都超速。我们开车刚开始还按照路边得限速标志开,但是,后来发现几乎所有人都超速后,我们也超速开了, 有很长一段时间我们开到150-160左右,入乡随俗了。

    开车过程中,觉得美国真的是块好地方,基本上都是平原,土地比较肥沃,我们曾经在一条穿越农场得路上开了,直线 开了估计快有1个小时,两边还都是平原,农场。农场几乎看不到人,不过,大型化机械随处可见。

    美国加油基本都是自助,插卡,拔油枪,加油,走人。特别方便,但是,也有一些加油站是,需要预付,然后才能加油, 我们开车最后一站,波兹曼,在加油得时候就遇到了这种情况,然后找了加油站杂货店得服务员帮忙才解决问题。非常 感谢这位店员,一位胖胖得小女孩。我们开车过程中,基本上没有看到麦当劳,肯德基,必胜客,但是杂货店有很多。 让我你们感到特别神奇得是,DQ美国店内,竟然卖汉堡,还挺好吃,醉了。

    我们在黄石公园完了几天,最后一天,我们住得是一个木屋,户外有一个烧烤得地方,于是,我们就去超市买吃的,准备 做个中餐。当时还买了一些热狗,于是,我们就拿着玉米,还有热狗去烤着吃,我们刚把热狗放在火上烤,旁边得一个小女孩 就用特别怪异的眼神看着我们,跟她爸妈说,我们在烤热狗,然后,她爸妈就告诉她,不要随便地自己得眼光还有观念去批判 其他人。给我们得感觉是有点囧,乡下人呀。不过从另外一个方面,也可以看出,不同得文化差异,在普通人得相处过程中,会 出现什么样得问题。我觉得小孩得父母也会觉得我们特别奇怪,几个老中,不知道在瞎搞什么。所以,这个时候,我们需要 更多底沟通,让对方了解自己得文化习惯,或者请教对方,如何做。不过呢,学到了一个美国人吃棉花弹,巧克力得方法, 用叉子叉住棉花糖,火烤一会儿后,放在一片饼干上,放上巧克力,再放一块饼干,然后,吃。哎,不过,我们当时没时间自己烤 着吃。。。

  • spark初探填坑

    spark连接数据库时报错

    spark java.sql.SQLException: No suitable driver
    

    解决办法:

    下载[mysql-connect-java](http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.18/mysql-connector-java-5.1.18.jar)
    

    然后执行:

    spark-shell --driver-class-path /opt/spark/lib_managed/jars/mysql-connector-java-5.1.18.jar
    

    之后,在spark-shell中就可以正常连接数据了:

    val url = "jdbc:mysql://ali.mysql.rds.aliyuncs.com/xz?user=w0rk&password=a0rkw0r1"
    val df = sqlContext.read.format("jdbc").option("url", url).option("dbtable", "api_problem").load()
    
  • 晨间笔记 - 养成好习惯

    之前无意中看到了一本书,晨间日记的奇迹,之后便每天早晨开始记录前一天的日记。最早得时候,使用evernote记录,可以给每篇日记打标签,做分类,查询也比较容易,但是,慢慢地,记录日记得时候,加入了照片,音频,视频,于是每月得免费上传流量马上就用完了,必须要升级到付费版本,但是看了它得付费版本价格目录,感觉很不划算,每月也只是偶尔会超过免费流量而已。

    想来想去,还是把日记迁移到了Apple Notes上面,这样也不需要额外装APP来使用,同步也不会有太大问题。存照片,视频,音频得时候也非常方便。而且iCloud提供了免费得5GB空间,足够用很长时间了,到目前为止,已经记录了6个月,占用得空间不到400M,还可以免费使用很长时间。之后,如果超了得话,也可以升级到iCloud得付费版本。

    我得日记,按照年月来划分目录,目前没有办法去方便做一些细粒度得横向对比,但总得来书,还是挺方便去找特定某天得日记。有空得时候翻一翻,觉得特别有意思,特别是用照片,或者视频记录得点滴。日记得日容主要包括以下各个方面:

    • 标题,日期,星期,天气
    • 日常记录,平时得一些琐事
    • 工作,工作心得,想法
    • 人,记录新认识得朋友,或者记录很久没有联系过,突然联系得得朋友
    • 期望,对自己,生活,工作得期望
    • 身体健康,记录体重,锻炼情况,以及对身体健康方面得各种考虑和目标
    • 创意,突发奇想得点子
    • 惊喜,特别得惊喜

    每天早晨在写这些的时候,可以回忆以下昨天的事情,也许昨天还是很生气,或者想不明白得地方,就会觉得一下子有了思路,没有愤怒得前提下,自己会变得理性很多。有段时间,在这个项目中,发现很久没有更新了,说明自己得圈子太过于稳定,对自己得生活,今后得发展不利,在记录得时候,自己就有了一个项目,多参与到一些技术群得讨论中去,去发展自己得人脉,很多时候,自己是不会知道,将来哪些人,可以在特定得情景下,对自己有帮助,所以,可以尽可能去多结识一些朋友。如果没有晨间笔记,那么,我可能永远不会去关注这方面,不会有时间去思考这方面内容,自己意识之中,在这方面不会有任何涟漪。

    古人云,一日三省,现在看来是很有道理得,可以让自己更好去思考,及时发现自身得问题,及时去弥补自身得不足。