说说我的近况,兼介绍一款优秀的异形DBG卡牌游戏

上一次更新博客,大约是在半年前了。实际上这半年不仅仅是博客停更,我很多项目都终止了,例如公众号,例如 Python 网课。唯一不变的是,这半年在持续的买游戏和玩游戏,其中买游戏的速度还远远高于玩游戏……这就导致库存积压,却有大量游戏仅玩过一两次、甚至一次没玩过。

以及,最近申请离职了,裸辞,下周五是 last day。米筐是国内 FinTech(金融科技)行业的头部公司,无论技术还是理念,都明显强于其他竞争对手,从这样一家公司离职,略有遗憾,但又没有遗憾。我从 2016 年的编程小白入门,到参与米筐几乎所有重要项目和重要组件的开发,再到现在带领测试开发团队,一路走来可以给自己打满分了,就是重新来过一遍,也不太相信身为文科生的自己能做到更好。离职的原因很单纯,就是现在的工作已经无法给自己提供更多的挑战;在可见的一两年内,米筐测试团队恐怕没机会到达20人以上,那么对我来说,带这样一个小型团队,工作量过低,也不能施展和锻炼自己的管理能力。

好了,下面说一说游戏。 前两天,我阅读了 Reddit/boardgame 板块上一篇文章《Learning to enjoy what you’ve got》,大意是,桌游玩家有两种乐趣,一种通过不停买新游戏来获取新鲜感,另一种则通过深入理解已购游戏、研究新策略来获取智力挑战的快乐。我深以为然,而且认为后者的乐趣其实远高于前者,一款游戏最少也要玩两三遍才能体会到其中玄机。故此,我会降低购买游戏的频率乃至完全不再购入新游戏,充分享受家里堆积的大小游戏。

今天,就会向各位介绍一款我购买已久、非常著名的牌库构筑式游戏——《Legendary: Encounters Alien》。 Legendary 是一个牌库构筑游戏(Deck-Building Game,简称 DBG)系列,其中最知名的是《Legendary: Marvel》,一款玩家扮演漫威英雄击败洛基、末日博士等等著名反派的 DBG,在 BGG 上的排名 138名、主题游戏类排名 45 名,已经可以算得上是佼佼者,在全球桌游爱好者之中享誉非凡。

View post on imgur.com

然而《Legendary: Encounters Alien》虽然名气略逊,但其 BGG 排名居然更加优秀,总排名 92 名,主题游戏类排名 21 名!而能够进入 BGG 前 100 名的游戏,都是『神作』! 《Legendary: Encounters Alien》(以下简称异形 DBG )可以由玩家挑选扮演若干《异形》系列电影中的角色,然后按照电影剧情一点点完成任务进而通关。整个游戏过程非常流畅,策略感十足,代入感超强。在游戏过程中,玩家就像重现了《异形》四部曲的关键情节。 (我使用了十几年的网络昵称「Alien」就来自于《异形》系列电影,看过无数遍)

View post on imgur.com

2016年,异形 DBG 推出了第一个大扩《Legendary: Encounters Alien Expansion》。这个大扩新增了两个剧情(共六个任务)、若干新的角色牌和异形牌,而最大的特点则是增加了「女王」模式!在该模式下,1个玩家扮演异形女王,对抗其他所有玩家。虽然在异形 DBG 基础包中,也有类似 PvP 的模式,甚至异形 DBG 还可以与同系列的铁血战士 DBG 进行联动,但其本质终归是合作游戏,强行改造为对抗游戏难免使游戏风味略有丧失。这个大扩则将对抗模式正式发展到一个全新层次,甚至给「女王」玩家提供了一张鼠标垫材质的牌垫,诚意十足!
然而一切并未结束。随着《普罗米修斯》和《异形:契约》的相继上映,异形宇宙的世界观逐渐成型,原有的四部曲已经显得颇为单薄,而异形 DBG 同样需要在剧情、游戏玩法、乃至风味上更上层楼。 在 2019 年 3 月的美国 GAMA Trade Show(游戏制造商贸易展)上,异形 DBG 的出版公司 Upper Deck 向大家展示了一张 2019 年路线图,图中明确标明了在 2019 年第三季度将会发行一个异形 DBG 系列新扩展《Legendary: Alien Covenant Expansion》!根据目前已有资料,该扩展很有可能是一个小扩,而它也有可能成为异形 DBG 系列的第一个小扩(漫威 DBG 的大扩小扩我已经数不过来了……) !

我这两天已经通过亚马逊海外淘,购入了「女王」扩展,在 Q3 势必要入一套「契约」扩展了。到时候,会再发一次新扩展的介绍。 下面是一些我在玩异形 DBG 基础包时候的照片。

View post on imgur.com


Tagged : / /

自媒体十日谈(20190722~20190731)

从2019年7月22日到7月31日,团队主要在公众号上发力,连续创作了多篇文章,风格和内容从追热点、学写亚文化、到老师傅口述等,都一一进行了尝试,数据上的结果不理想,但是帮助自己理清了很多思路。
 

收获1:产品质量是最重要的

在此之前,我认为保持较高更新频率是保障运营数据(阅读数、转发率等)的重要方法,理由是频繁更新会增加在用户面前的曝光率。然而经过实践,在文章质量不高的情况下,频繁的更新,会显著降低打开率。用户即便看到更新,似乎也缺乏足够的动力点击进入内容页,在「古老湿」这个号早前的强人格化基础上,也仅仅有7%的打开率。这个数据对于我收集已久的精准流量来说,实在过低了。
事实上,即便是拥有较大采编团队、文章质量基本能维持在水准以上的大号,依然不日更,一方面是需要对文章做反复打磨,另一方面很可能是大部分用户已经进入了对公众号的疲倦期,每次阅读后有较长的「CD时间」,在这个时间内,用户再次打开的频率会比平常低很多。

收获2:尽量不要转移领域

「古老湿」的定位,仍然是服务于3000人的Python学习社群,然而我个人对于教授编程技术的兴趣不大,而且这个领域盈利前景也有待考量。于是在几乎一年前,我就计划将公众号的内容转向职场领域。在上周的短暂常识后,发现用户对此类内容并不感冒,职场内容的数据尤其难看。
然而,由于目前我仅有300粉丝,所以数据有可能失真,而且我的测试比较粗糙,文章质量偏低,又处于日更阶段,因此数据差并不能完全证明这个方向的失败。后面还会继续观察,看情况如何。但已经可以得出「不要轻易转移领域」的教训,一旦开始转向,必然面临一段时间的数据雪崩。

收获3:不要模仿别人

在这10天内,最灾难性的一篇文章,是这篇《泡面是白领最后的尊严》,由我和同事共同创作,两种完全不同的文风揉捏到一起。这篇文章的初衷,是要模仿公路商店的亚文化扯淡风,看一看这种看上去传播性较强的文章,能否带来优质数据。结果,泡面一文是目前「古老湿」公众号里几乎所有数据都创新低的一篇。
问题在哪里呢?其实首先是文章质量过低。由于急于出稿,因此胡编乱凑了一篇出来,文章从配图到文字都有很多问题。其次是主题漂移的太严重,和编程毫无关联,甚至和职场的关系也仅仅是标题中出现了白领二字。
公路商店和beebee的文章我一直很喜欢,但是我的读者并不是为了看他们而来的,与其看这种不三不四的模仿文,还不如去读正主的大号。我自己的文章虽然趣味性不如这两家,但文章深度和质量却更高,对读者来说,我是一个活生生的人,距离他们反而更近。

收获4:团队目标必须明确

这是我在10天内,犯的最大的错误,直接导致一名成员退出团队。
事情是这样的:我制定的初期工作目标是社群运营+公众号写作,前者没有明确的指标,后者的北极星指标是转发数。然而在开始工作后,我频繁的调整公众号定位,一周之内尝试了太多方向和形式,导致这位成员对于工作产生了不确定性。加上他对社区运营并无兴趣,最后以离职告终。
在这件事情上,我做错了以下几件事:1. 在同事入职前未仔细确定对方的职业定位。2. 方向应该由leader来确定,如果必须测试,也应该将「寻找方向」本身作为目标并制定路线图,而不是无头苍蝇似的乱撞,避免成员信心崩溃。3. 善待同事,将心比心。在米筐工作期间,由于整个团队有非常良好的「和善」传统,人与人之间极为友善,因此我的管理方式在这个Buff加成下极为有效;但当我离开米筐时,却没能把这种和缓的气氛一起带走,在我身边工作的同事(甚至我家人)都能感觉到乌云压顶一样的巨大压力,这种压力会把自己的队友越推越远。

收获5:不要让对方「反省」和「思考」,要制定明确的标准

这是我的一个毛病,我喜欢让团队成员反思自己的工作成果,然后自己制定标准。事实证明,这样的方式可能会让其他人很痛苦,而我自己也很累。个人的成长固然重要,但是没有团队的成长,个人是不可能发展的。作为团队领袖,最重要的事情就是制定目标以及标准,这一步是不能跳过的。管理必须是明确、可预期的,这样才能让每个人都有稳定感。
 
这10天学到了很多,我非常感恩,能在初期就明白了这么多事情,显然会对未来产生巨大的帮助。希望后面的10天,能继续进步,见到一些成效!

Tagged : /

工作,有多重要?

文章转自我现在写的公众号「古老湿」,欢迎大家扫码关注!


我以前觉得,「工作」是生命中最不重要的东西,是「必要的恶」。
人的自由意志并不来源于所做的事情,一个图书管理员同样可以做个一统江山的梦。劳心者治人,劳力者治于人,工作就是打工,打工就是劳力,「治于人」的人生,不值一提。
工资?只是生存的必需品,出力干活、提高薪水、像机器人一样重复这个过程,就是工作的全部意义。
所以我以前经常处于一种奇怪的状态——会想各种方法、制作各种工具来优化自己的工作,但其实在心理上对工作的投入很少,工作于我而言仅仅是换取收入的途径。
改变,发生在我转职成码农之后。
入职的第一天,我就发现码农同事们的气场和以前我所见过的「职场」完全不一样——每个人认认真真的写着自己代码,偶尔互相开着玩笑,然后继续喝着咖啡盯着屏幕噼噼啪啪的敲打机械键盘。
如果说有什么不一样的地方,可能是这群新的同事在在实实在在的建造什么东西。或者说,他们对工作的态度,和我不太一样。
这可能和码农的工作方式有关:每个人维护一部分旧代码,同时每天生产新代码,这些新代码也自然进入「待维护」
状态。很多开发工作,不是不能转移给别人,而是成本实在太高——你需要给对方讲业务逻辑,测试方法,以及某些难懂的奇技淫巧;即便如此,对方也可能隔三差五过来问你这行代码什么意思、那行代码是否写错……
逐渐的,我对于自己负责的代码,也有一种「亲密感」,在那些平平无奇的字里行间,是我对产品的设计、思考和传承。工程师这个职业,甚至改变了我曾经的文科生懒散的思维习惯,变得理智和严谨。
也就是在写代码的工作中,我慢慢感觉到,工作不仅仅是混一份工资,也是把自己的生活与这个世界的某一部分连接起来的过程。你需要对自己的产出负责,你是一个手艺人。
以前,我觉得工作是自己的延续,你喜欢做什么,就找个工作完成自己的爱好;现在,我觉得工作更像是一块补全自己人生的拼图,找到这块拼图很难,但找到后,你会变成一个更完整的人。不仅仅为了薪水,还为了自己做了一些有意义的事情。
所以工作到底有多重要呢?
大概有这么重要吧:

开玩笑,比这大多了!
工作不仅给我一张饭票,也改变了我很多,让我变得完整,也是生活的指南针。如果你的工作没有给你这个感觉,或许是时候做点改变了?

Tagged : / /

成长,就是持续创造价值

我时不时会收到一些小朋友们的私信,问是否招实习生或者「程序员学徒」的,可以不要薪水。我一般回复「没有」,就不再多说什么了。并不是我高冷,而是觉得这样的小朋友恐怕并没有什么潜力值得去挖掘。
这么冷酷的结论,并不是拍脑门想出来的。经历了多次打脸,我最终明白一个道理——如果一个人把「廉价」甚至「不要工资」作为核心竞争力,那么他不仅对自己没有信心,其实也不会有任何主动性去发展自身。他们只期待一个武林高手从一招一式开始教起,像妈妈带娃一样照顾始终,而自己只需负责饭来张口即可,希望在人畜无害的气氛中,无能的成长起来。
显然这是做梦。即便这样一位「程序员学徒」不要工资,其他人为了培养他而投入的巨大精力和时间难道不值钱?武林高手有这个时间干点什么不好,不能去争一争武林至尊吗?为什么要把时间浪费在一个连学习知识技能都需要他人喂食的巨婴身上呢?这些幻想成为「程序员学徒」的小朋友明显算错了数,他们以为「不要工资」是自己的巨大优势,实际上这样的人带来的往往是负价值,对团队和项目都有巨大损害。
举一个我自己的例子。我曾经在一个水平相当低的工程师身上耗费了近半年时间,从 Google 搜索引擎和 stackoverflow 的用法,到代码规范,到 Python 各个标准库的用法,再到各类 Pythonic 代码的写法。之所以耗费这么大精力,是因为我是一个不错的老师,能把很多道理讲的深入浅出(例如我可以在 1 分钟时间里让任意一个无技术背景的人理解金融量化交易引擎的技术原理),经过我的细致培训,他一定有机会成为一个代码细腻而简洁的工程师。
直到被我劝退前,他都一直在用百度搜中文关键词并跳转到 CSDN 上看技术文。
这是什么概念呢?就是一个数学老师教了你半年的二项式展开,最终面对最简单的二项式题,你依然在掰手指数数。
这样的程序员带给同事的往往是噩梦。在他离职之后,我们依然时不时的从他代码中发现骇人的 bug,然而数据已经被污染,重新修正几乎不可能。由他引入的问题,很有可能直到公司破产都不会有人愿意去解决。这样巨大的负担,当年的我如果更成熟一点,是万万不会惹祸上身的。所以现在收到各类的「不要工资」的申请,心里都会默默的想,「你当我是傻子么」。
每个人都渴望成长,但成长不是商品,不是你用「不要工资」就能够换回来的。成长源于你一步一个脚印的学习,在学习过程中,你又创造出了价值。本质上,只有当你持续创造价值的时候,你才会成长;而不是反过来。
如果你技术不好、没公司要你,能否在力所能及的范围内,对开源社区做一点贡献?
如果你技术不好,能否仔细研究业务代码,试着花一个月甚至两个月的时间写一个简单但核心的模块?
如果你技术不好、又想找个老师,能否先帮这个老师做一点事情、哪怕只是帮他写单元测试?
……
可做的事情太多了,简直数都数不过来,而它们的共同点就是——持续创造价值,而不是持续索取关照。
所以,当我们对一件事情有了强烈的渴求时,最好先问问自己,能不能用已有的技能先创造一些价值出来。如果不能,说明你其实并没有那么渴求。那么,请不要再去骚扰那些工作量已经很饱和的工程师了,码农滞销,可怜可怜老乡们吧。

Tagged : / / /

给马蜂窝支招

互联网运营中,存在一种非常隐晦却不可不谈的手段,谓之「虚假运营」。虚假运营指用假数据,给用户或者竞品造成某种错觉,从而达到运营目标。从马化腾在 OICQ 上装女生陪用户聊天,到 Airbnb 将 Craiglist 的数据塞到自家网站上,再到新手玩吃鸡手游会匹配到人机、更容易获得胜利,都体现了这是一种隐匿而重要的互联网运营手法。
然而运营者必须对数据负责,对结果负责,对用户和产品负责。这次马蜂窝被爆 UGC 数据造假,其曝光方式异常简单,甚至无需专业人士出马,普通用户稍加观察,都能轻易发现端倪,体现出其运营团队低下的运营能力。
换句话说,造假都造不好,还能指望它「造真」么?
针对马蜂窝拙劣的运营手法,我提供一些技术方案,用开发手段解决运营问题,估算一下工程量:一个后端开发工程师 + 2 个运营专员,可以在一个月时间内搞定开发、测试、上线。如实在无能为力,也可请我作咨询,连开发带运营,我一个人就够了,给你们省点钱。
长话短说,解决马蜂窝的虚假数据问题,可分五步走:
  1. 对马甲和内容数据分类、打标签
  2. 对「有毒内容」进行过滤
  3. 调研真实用户行为特征
  4. 开发自动化内容发布系统
  5. 优化运营人力
 

一、对马甲和内容数据分类、打标签

在今天曝光的蚂蜂窝数据造假证据中,马甲人设来回变换、点评内容忽男忽女,即便是普通用户,只要稍微细心,都可以发现其造假实锤(例如刚和老婆在上海喝完咖啡,就带老公去深圳吃面)。
首先,批量生成小号,并对其打标签(如 25 岁白领单身女性,32 岁企业管理层已婚男性,19 岁广东省大学女生等等),其属性划分应该符合网站真实用户的正态分布(例如 80 岁老爷爷应该不太会是蚂蜂窝的主力用户吧)。
其次,对爬来的点评数据进行类似处理,按作者性别、年龄、婚姻状态等进行标签归类,便于未来发布内容时,「女性大学生」人设的账号不至于发布出「携老婆和丈母娘旅行」的内容。其中,最重要的属性是性别,在爬取数据应顺便解决性别数据,搞定性别,大约 90% 的点评数据不会出现严重错位。
这个步骤的意义在于,将马甲账号与点评内容关联起来,营造出真实用户的氛围。当马甲账号发布消息时,可通过相应的匹配规则获取符合其人物设定的内容,被现场抓包的问题基本可以解决。
 

二、对「有毒内容」进行过滤

把爬取到的评论中附带的竞品名字(大众点评/美团/携程等),按照渠道来源,直接替换成自己的产品名,(例如从大众点评爬来的数据,统一把「大众」「大众点评」「点评网」等关键词替换为「马蜂窝」),虽然有可能产生内容不精确问题,但是远好于被读者及同行抓现行。
同理,爬虫在爬取数据时被对方以「插入推广链接」等方式「反爬」、导致存在部分脏数据,应及时清理。
运营人员还需要定期抽样检查数据,对存在的问题进行跟踪,发现问题后可以制定数据修改规则,使用脚本对数据进行批量修改,定期对规则进行迭代。
 

三、调研真实用户行为特征

暂停所有马甲账号发布,对真实用户进行为期一个月的行为观测,统计网站用户的真实活跃时间、频率和点评数量。
 

四、开发自动化内容发布系统

按照已被揭露的马蜂窝虚假内容发布时间来看,大概率是运营团队花费了大量人力在其工作时间段内发布,而这毫无必要。后端提供写入接口,并使用脚本或服务定期定量的写入数据,可以将大量人力工作直接转化为自动化任务。
后端开发工程师应该为运营部门提供两个组件:按标签获取点评内容的消息队列,以及写入内容的接口。然后设置定时任务进行批量写入操作,时间规则参考上一条用户真实行为特征,且写入时间可随机做小幅波动,尽量贴近真实用户行为。
 

五、优化运营人力

通过上述方法解放出来的运营人力,应该全力负责下述方面:
1. 如何用更好的方法将马甲账号与爬取到的内容匹配起来?
2. 怎样持续优化点评内容质量、以及迭代检验内容合格与否的标准?
3. 持续观察真实用户行为,要对自己的产品和用户有更更更更深入的理解。
4. 与工程团队对接,寻找优化这套「自动化发布系统」的方法,应有运营专员负责该系统的需求与迭代。
 
做到以上几个方面,我相信很少有用户用户或机构可以再通过运营数据观测到虚假运营。因为虚假运营的本质就是模拟用户真实行为,面面俱到,则可最大限度减少破绽。当然虚假运营的手段多处于灰色地带,而一家正经企业也不能一辈子鸡鸣狗盗,其最终目标依然是获取更多「真实用户」并提高其活跃度和消费额,将「假数据」转变为「真数据」。广大互联网运营人士,应以蚂蜂窝为鉴,时刻提醒自己,在实战中要更专业、更专注。
Tagged : / / / /

万智牌的几种娱乐规则

最近有空就会打一两盘 MTGA(《Magic The Gathering: Arena 万智牌:竞技场》),一套红蓝法术师我来来回回可能已经打了一个月,而由于预组套牌强度过低、而我仅氪金了 5 美金的欢迎套餐,故而缺少大量强力单卡,距离我下一套套牌尚有不小差距。

红蓝法术师的基本思路,就是上场几个低费法术师生物,使用咒语去除对方生物甚至烧脸,以此触发灵技(灼灵法师)和法术师群体类灵技 buff(烬火之风艾德莉兹),快速造成大量伤害;中后期则依靠大茜卓和红神消耗对方资源(甚至可以直接使用红神弃牌打2的异能打脸)。这套牌法术力要求低,二三回合即可展开局面,在低水平对局中相当高效,对战大多数二三线套牌都有极强的速度优势。然而当面对一线套牌的时候,前三回合如果无法形成足够的威胁,那么很可能就会在四五六回合被对方碾压。
灼灵法师 烬火之风艾德莉兹
目前在攒的,一套是一线套牌「纯绿快攻」,一套是娱乐套牌「红绿炸地」,前者依靠优质生物快速占领场面优势、随后迅速输出大量伤害、并自带了若干解以应对各种去除;后者则纯粹娱乐为主、竞赛为辅,各种生物、法术以炸掉对方的地为己任——这样的套牌,就算输了,也能炸对手几个地,足够让对方大吃一惊了。
钢叶斗士 地动变境

不过最近最让我着迷的并不是 T2 赛制的这些套牌,而是阅读了威世智官方以及旅法师营地的相关文章,发现的一些有趣的赛制,在此记录一下。
以下赛制均为娱乐赛制,主旨是「廉价」「多变」「好玩」。

打单包 (Mini-Master/Pack War)

这是几个赛制中运行起来最简单的,游戏速度也非常快。游戏方式是,每人开一包补充包,不看牌面,每种颜色的基本地各加入三张,形成一套大约30张牌的牌组,然后开始对战。这种玩法的好处是快捷简单,有撕包的乐趣,而费用相对低廉,很适合在环境初期来上几盘。
打单包还有变体,就是直接将补充包中的所有牌作为手牌,每回合可以从游戏外施放一张任意颜色基本地。此时玩家没有牌库,也不会因无法抓牌直接判负,同时各种抓牌异能视为无效。
打单包的缺点是牌库过于随机、且玩家完全不知道自己的牌库内容,节奏往往非常缓慢;优点则是融合了打牌与撕包,使整场游戏过程充满爆棚的惊喜感——谁知道你下一张牌会不会是一张环境内的最强鹏洛客呢?

温斯顿轮抽(Winston Draft)

这是我最早学会的二人变体轮抽,一名香港牌手在牌店百无聊赖的等人时教会我的。
牌池可以是任意 cube/block 甚至牌店捡来的银铁盒。首先随机组成一堆 90 张牌的牌池,然后在桌子中央面朝下的放三张牌,这就形成了初始的 A/B/C 三个公共牌库。甲选手首先不公开牌面的翻看 A 牌堆(此时 A 牌堆只有一张牌),如果不满意,则在 A 牌堆上加一张牌,然后看 B 牌堆,如果满意,则将 B 牌堆的牌全部拿走,然后在 B 的空位上补上一张牌。两个玩家循环往复,直到牌池全部被拿光。如果玩家看完了 A/B/C 三堆后依然不满意,则代表放弃牌堆,从公共牌池中拿走一张牌。
这个玩法非常适合银铁盒轮抽,思路相对耿直,速度快,还非常有补充包轮抽的感觉。当然,更好玩的方法是配合一定的 cube,这样可以打出更炫目的 combo 或者套路,比补充包轮抽更有趣味。

渣金轮抽(Reject Rare Draft)

万智牌每个系列都有大量平时用不到的金牌,称之为渣金。每个玩家贡献出 45 张渣金,洗匀后做成 15张/包 的补充包,然后就像补充包轮抽一样,开始玩。
渣金玩法,其实我很早就自己尝试过,只不过是以温斯顿轮抽的方式进行。优点是各种没用过的金牌都能尝试一下,缺点是这些渣金往往非常卡手,没有了作为基底的银铁牌补充,对战时会很不流畅,节奏也偏慢,给我的总体感受是不如银铁盒轮抽,除非你想一次性体验大量冷门稀有牌。
我有一个渣金 Cube,但迄今只打过一次。

九宫格轮抽

这种玩法很像温斯顿轮抽,有机会我想试试。
首先将牌库的九张牌摆成九宫格,第一个玩家选择拿走一行或一列,第二个玩家再拿走一行或一列(此时有可能拿 3 张或 2 张),然后清除剩余的牌,摆出一个全新的九宫格,直到双方将牌库形成的 10 个九宫格(默认双人游戏时 cube 牌池为 90 张)全部抽完。
据说九宫格轮抽会比温斯顿轮抽的速度慢一点,所以如果时间不富裕,可以考虑下面这种「神掏」规则。
九宫格

神掏

这种玩法从来没试过,但是由于节奏非常快,所以目测会很娱乐。
游戏双方使用同一组牌,不需要地牌,每人起始手牌只有一张,但拥有无限法术力。所以如果你运气够好,第一回合掏出了「不休饥渴钨拉莫」并直接下地,对手基本可以 GG 了。
不休饥渴钨拉莫

Tagged : /

程序员年龄增大后的职业出路是什么?

这篇文章是我在知乎上的的一个回答,讲的略微有点深。另外感觉自己这两年越来越左翼,越来越觉得马克思不愧是20世纪最伟大的思想家之一。

今年 30 了,也开始考虑年龄问题了。
不过虽然 30 岁,但我实际作为程序员、以编程为业,也只是最近两年的事情(关于我的编程职业经历,在这个回答里写的比较详细:知乎用户:自学编程的人,都是怎么找到第一份软件开发工作的?)。因此对编程这个职业的理解,可能还不如一些 90 后小朋友深,写的不对的地方贻笑大方,请见谅了。

注:以下叙述,不局限于程序员,实际上包含所有职业。

中国的程序员在市场中的地位,不客气的说,随便翻开《1844经济学哲学手稿》里描写产业工人的段落,把这些一百年前的论断放到程序员身上,都言之凿凿:
例如:关于程序员的先进生产力与其对应的可怜回报

「的确,今天由于有了新的动力和完善的机器,棉纺织场的一个工人往往可以完成早先 100 甚至 250-350 个工人的工作。在一切生产部门中都有类似的结果,因为外部自然力日益被用来加入〔X〕人类劳动。如果说为了满足一定量的物质需要必须耗费的时间和人力比现在比过去减少了一半,那末,与此同时,在不损害物质福利的情况下,给精神创造和精神享受提供的余暇也就增加一臂。但是,在我们甚至从老克伦纳士自己领域中夺得的虏获物的分配方面,仍然取决于像掷骰子那样盲目的、不公正的偶然性。法国人有计算过,在目前生产状况下,每个有劳动能力的人平均每日劳动五小时,就足以满足社会的一切物质利益……尽管因机器改进而节省了时间,工厂中奴隶劳动的时间对多数居民说来却有增无已。」

例如:关于「越工作越贫穷」这一现象的分析

「工人生产的财富越多,他的产品力量和数量越大,他就越贫穷。工人创造的产品越多,他就变成廉价的商品。物的世界的增值同人的世界的贬值成正比.劳动不仅生产商品,它还生产作为商品的劳动自身和工人,而且是按它一般生产商品的比例生产的。」

例如:关于程序员异化为程序的奴隶

「因此,工人在这两方面成为自己的对象的奴隶:首先,他得到劳动的对象,也就是得到工作:其此,他得到生存资料。因而,他首先是作为工人,其次作为肉体的主体,才能够生存。这种奴隶状态的顶点就是:他只有作为工人才能维持作为肉体的主体的生存,并且只有作为肉体的主体才能是工人。」

以上,并不是呼吁大家都去读马克思,我也无意挑起关于马克思的政治经济学的争论(也希望大家尊重题主和读者们,不要做跑题辩论),只是希望各位静下心来想一想,我们和百多年前的纺织工人的区别,到底是什么?
伴随一个产业工人或程序员的老去,不可避免的是工作时长与强度的降低、工资的刚性提升(正常来说只能升不能降)、对家庭福利需求的增高(例如需要公司为家人购买保险)等等。而普通工人(程序员)的工作效率增长速度一旦无法达到其福利需求的增长速度,在公司里即成为累赘。换句话说,辞退你、换新人,对公司有很大好处,而这对资方来说是一个巨大的诱惑。
多亏劳动法和近二十年来的互联网产业红利,程序员的处境已经远远优于当年的工人,不用时刻担心被辞退,但是当到达了一定年龄后,大多数程序员的个人价值已到峰值,收入封顶,但生活压力却越来越重。这是「年龄-收入」的悲剧冲突核心,也是大量程序员夙夜忧叹的唯一原因。
而这种悲剧,集中式的出现在中国,其直接表现就是程序员的薪酬过低(例如在美国,普通工程师拿个十几万刀的 package 并不算天方夜谭,这种问题也就并不严重。)。
所以程序员老了怎么办?唯一靠谱的解答,就是脱离自己的产业工人身份,直面残酷的市场食物链,尽一切可能向上爬,脱离这个「产业工人诅咒」。
那么程序员以上的食物链有哪些?最直接的就是技术管理层、公司中高层,再次是资本方,最后是权力方。故而其方法也分外直接:要么争做管理层并获取股份、股权激励等非劳动收入,要么以资本进行投资、让别人为你打工,要么当个省委副书记、起码乡镇干部之类(这一条过于奇幻,当做笑话吧)。
但凡符合上述逻辑的职业规划,都是靠谱的,区别仅在于风险大小。
至于计算机领域的、乃至其他各行各业的技术专家,这是一类我非常崇敬和羡慕的人群,他们往往已经获得了超额收益,故而不在我上述论证范围内。我所说的一切,仅仅针对你我这样的普通职员。
所以,程序员们,不要为自己掌握先进的知识而沾沾自喜,这个世界并不属于知识劳动者,所有利润最终将归属资本和权力……
……和猫。

Tagged : / / /

合作类DBG桌游《XenoShyft: Onslaught》测评

最近买了一盒 CMON 出品的卡牌构筑机制的1-4人塔防类游戏《XenoShyft: Onslaught》,一个人试玩了一下,觉得比领土好玩多了。又意外获赠了一盒该游戏第一个大扩《Xenoshyft: Dreadmire》在2016年 Kickstarter 上众筹中回报的 KS 独享扩展卡包,内容丰富,很大程度上提高了可玩性。非常意外,非常感动。
1

游戏特点

XenoShyft 的主题是合作防守,玩家们扮演星际战士对抗外星异种,游戏的目标并不是杀光异种,而只要在一定时间内保持不死即可——要么坚持9轮后游戏胜利,要么鏖战中途基地生命值降到0而失败。由此可见,游戏的难度颇大,异种怪物的可怕攻击力与特殊能力会给玩家们带来非常大的压力。在这样的主题下,玩家之间通过各种形式的合作进行快速战斗,游戏节奏异常的快,与《领土》类 DBG 完全不同。
昨天下午,我和几个朋友连开2局《Xenoshyft: Onslaught》,游戏过程非常紧张刺激,几个人都很过瘾。虽然2次尝试都以失败告终,但也终于见识到了 DBG 这个老套、繁琐、慢速的游戏机制,如果加以微调,完全可以支持快节奏的卡牌战斗游戏。
2
3
4
Xenoshyft 整体节奏非常流畅,速度极快,四个玩家共同合作防守基地,游戏过程中能够互相支援部队、道具等等,这样的设计打破了领土创造的经典但乏味的『二人埋头理牌』模式,不同玩家的互动极为丰富,这种配合贯穿游戏全程,即便不在自己的回合内,依然可以使用自己的即时效果牌和特殊能力部队进行协助;再加上所有玩家共享生命值,每一个人的成败都关系到所有人,任何一路被突破都会对基地造成破坏,因此可以说全程无尿点,基本没有 downtime 困扰。
另外需要提一下的是,XenoShyft 本身是一个变化颇多的游戏,玩家选择不同的部门(如医疗部、武器部、科学部等等)有不同的特殊技能和初始牌库,游戏 Setup 过程中随机出现可购的强大道具,以及8种从弱到强、能力各异的兵种互相搭配,使得每次游戏都具有巨大的差异性,可玩性极佳。同时由于游戏的高度合作性,不同玩家的策略区别极大,可以说基本很难玩出2局雷同的游戏。
5
(上图为游戏后期 Wave3 的一条战线,异能强大的「电震兽」和防守反击能力爆表的「海伯利昂突击装甲」在面对面的对抗)
6
(上图是游戏中期经常遇到的一种恶心的敌人,可以将我方阵亡士兵直接变成他们的提线木偶。这游戏的美术真是有点惊悚,而且相当血腥,儿童不宜。)

KS 卡包带来的变化

上一篇文章说到了,朋友赠送了我一套《XenoShyft: Dreadmire》的 kS 专属卡包,虽然由于部分卡牌涉及到「天气」这个新机制、而我仅有基础版、故而无法使用,但是其他牌的扩充实实在在的拔高了游戏的耐玩度。
KS pack
举个例子,这个 KS 卡包提供了些崭新而简易的增强规则。一个我方士兵如果经历了战斗而未阵亡,则可在下一回合升级为英雄(居然还是闪卡……)。每个兵种只有一个英雄,这些英雄相比普通士兵具有更为强大的能力,是战场上的中坚力量。同时,装备物品也有类似的「传奇」版本,比原本的武器更加强大也更加稀有。
9
8
除了士兵在战斗幸存后可升级为「英雄」外,还出现了4个具有强大能力的崭新兵种,目测强度略高于基础版,但面对同步增强的敌人,似乎显得并不算过分。
15
另外,XenoShyft 基础包中每一波有2个Boss级大怪,一共6个Boss;而这个 KS 包里则一口气为每个波次提供全新的全彩大画版本大怪6只,合计18只!这意味着,在玩家部队得到增强的同时,外星异种也在同步增强!下图中,第一张图是基础包中 Wave1 的2只 Boss,第二张图则是 KS 包附带的 6 只 Wave1 大怪!
11
12
除了船新版本的士兵、装备、怪兽外,分支机构也有了更多选择,同时相比原来的常规尺寸卡牌,做了一套「超大尺寸版本」,这样放在桌子上,就不会淹没在卡牌大海之中了。
14
在新增分支中,我最喜欢的是 Xenos Containment,可以翻译为「异种收容所」之类意思,但我习惯称之为「动物园」。它的能力也非常有趣,除了游戏开始前可以将任意2张3费以下的护甲或科学卡牌加入牌库外,每次部署部队时可以从异种牌库中抽取一张牌作为自己的士兵、部署到任意玩家的战线上,同时将其能力更换为每轮可以替其他士兵抗伤害一次。这样有个很大的好处,就是降低了对士兵数量的需求,可以将购买士兵的资金用于购买装备然后对己方4路战线同时进行防守。万一抽到一只大怪,就赚翻了,不仅等于消灭了一个大怪,还可以为己所用,成为巩固防线的一道工事。
10
在 DBG 这个大类之下,无论是早期的《领土Dominion》还是前两年推出的科幻战斗主题《星域奇航Star Realm》,都是桌游圈的传奇产品。但是 DBG 的缺点也很明显,如领土,节奏过慢,几乎毫无代入感;如星域奇航,虽然节奏快了很多,但战斗过程颇为枯燥,并未脱离自「领土」以降的线性的「买牌、构筑、Combo」的窠臼。
《XenoShyft: Onslaught》则刷新了我的 DBG 游戏排行榜,结结实实的成为我目前玩过的最佳 DBG 游戏,甚至在合作类游戏里也能排到前三名。激动之下,慌忙去亚马逊下了一单《Clank!》,想尝试一下另一款传奇 DBG,看一看坊间流传的将 DBG 与 Rouge Crwaling 完美结合的游戏到底是什么样,它和《XenoShyft》相比,二者谁能更胜一筹呢?


最后贴一下我定制的一款《XenoShyft》牌垫,我玩卡牌游戏喜欢做牌垫,在网络上找到素材后,直接淘宝定制一个,3天送达,相比基础包自带的纸卡牌垫来说,体验好了不止一点点。素材来源 BGG。
13

Tagged : / / /

技术部门团队管理的一点心得

最近半年公司一直在对整体业务后端数据存储做大修改,由我负责开发核心的数据存储、拉取组件,这个组件以 gRPC 为协议,完全重构了早先的 Java 业务,即将部署到公司线上产品以及机构产品。除了数据存储拉取以外,其他组件之间也统一使用 gRPC 协议,这种情况下,需要一个简单易用的 gRPC 接口测试框架对各个接口进行压力测试。
而此时,我刚开始管理公司的测试开发团队,团队的常规任务是完成开发团队的测试需求,但最重要的任务是为开发团队提供简单易用的测试工具。总的来说,更偏重于开发而非测试。因此近期测试开发团队的最重要任务就是搭建一个上述框架出来,保障即将上线的新产品顺利交付。
目前团队只有我和另一个新入职的测试工程师(正在招聘手工测试员一名)共二人,由于测试工程师并无开发经验,刚开始上手开发有一些障碍,因此对稍微复杂的开发任务表现出无力感。
在这种情况下,团队管理出现几个挑战:

1. 新入职员工对工作内容不熟悉、以及技术上有欠缺,无法独力完成项目
2. 团队人数较少时,人事关系容易出现扭曲,表现为团队负责人与成员过于亲密或过于疏远,这两种情况都会伤害团队未来的发展。
3. 新成立的部门往往被委以重任,甫一成立就会面对攻坚战类型的技术难题,而此时恰恰是作为新生儿的团队最脆弱的时候。

针对挑战一,我的解决方式是,结伴编程快速提升工程师的基础开发能力,并使之在短时间内熟悉公司的技术栈和代码规范。这段时间压力会很大,学习内容也会很多,但是要求并不能放松,需要管理者持续关注工程师的进度和心态,对成员烦躁、失落的情绪及时进行安慰和疏导,同时在某些环节进行必要的技术辅助。
针对挑战二,首先避免过分亲密的关系,保持普通的社交距离,同时也在处理「挑战一」的时候让对方感受到你的关心。张弛有度,会使双方关系有序的发展下去,也为团队的长远发展打下基础。
针对挑战三,要和部门的上级主管进行沟通,确定部门的目标方向,然后主动将目标按优先级一一列出,根据实际情况向上级索要资源(要么给人,要么给时间,要么降低任务量)。以我的经验,能够主动索要资源的团队,往往是资源最充沛、进度最快的团队;对于管理者来说,一个能够合理索要资源的下属,也大概率是一个有思考深度和执行力的团队成员。
在数年前做运营的时候,团队管理就是一个我很重视的问题,每个工种对人有不同的影响。例如运营部门的基础运营成员往往看不到职业发展的前景,进而转行到其他行业;一线工程师则埋头于技术,疏于梳理工作内容和工作前瞻。这样其实给团队管理提出了很大挑战:作为管理者,到底能在多大程度上纾解这些职业对成员的负面影响、并提高团队运行效率?
在前些天给 CTO 提交的一份测试开发团队工作计划书中,我提到了进行人才梯度建设。虽然测试开发团队人数不多,以后最多也不会超过5人,但是由于分工不同,必然产生事业层次的高低。在团队内部明确人才梯度,告知每个人未来的上升渠道,指明上升的途径,不仅成员会主动成长,人员流失率也会得到降低(软件测试行业的流失率非常高)。一旦形成稳定的循环,那么这个部门将能够实现「无人驾驶」,几乎自动化的在公司内部高效运转。这也是我未来的工作目标。


最近买了一款 CMON 出品的卡牌构筑类的塔防主题游戏《XenoShyft: Onslaughter》,感觉比领土好玩很多,无论美术或游戏机制都远远超过其先辈们。先贴几张图以飨读者,后面会写一篇文章,来介绍和评论一下这款游戏(前两张图是我拍的,图中还乱入了我的猫「三十」。最后一张游戏图是 Google 来的,仅供示范)。
WechatIMG55
WechatIMG56
Xenoshyft-Board

Tagged : / / / / / /

我是怎样自学编程并找到第一份工作的

这是今天我发布在知乎上关于『自学编程的人,都是怎么找到第一份软件开发工作的?』的一个回答,链接在这里,喜欢的老铁可以去帮我点赞刷一波666

Link: https://www.zhihu.com/question/25034235/answer/295451575

我本科专业是政治学,28岁开始学习编程,29岁找到工作,现在马上30岁。现在一家互联网创业公司里做 Python 后端开发,写了非常核心的后端组件,也完成了公司90%的自动化测试,简单的、难的项目都参与过。其实我是编程弱鸡,仰仗同事帮忙,这一年学了很多。
我清楚,从自学编程到找工作,这是一个很痛苦的过程。
从学习第一行代码开始,你就很清楚自己和科班程序员有巨大差距,随着学习深入,会发现这个差距之大,以我们普通人的资质和勤奋水平,真的很难弥补。及至你终于鼓足勇气找工作,却发现竞争对手全是你仰望的『科班选手』(在我这个岁数,还会发现他们都比你年轻),会气馁,会沮丧。
心里默默念叨:真的没什么优势啊……
转行前,我在深圳一家互联网公司做运营总监,成绩斐然,搞了一些业内独一无二的运营策略,做了很多现在看来依然牛逼的运营项目。由于项目中涉及大量自动化工作内容,而我们只能人工完成,于是2015年底决定自学 Python 希望降低团队工作量,不久后做了『教练,我想写代码』的打算并离职,2016年1月开始正式脱产自学。9月开始找工作,2016年10月31日正式入职现公司,专职后端。
从找工作到入职,一共面过3家公司。

第一家公司:位于华强北附近的行业数据公司,主要工作是写分布式爬虫。

我对此毫无概念,面试的时候问用没用过数据库,回答没用过,然后做了一份笔试题,有一道题印象很深,问从1+2+3+…+100怎么计算,于是我写了个 for loop了……;还有很难的题,例如让我写一下分布式爬虫架构……最后让我回家等消息,当然是没消息。通过这次面试,知道了数据库这东西很重要,于是回家后马上买了一本 SQL 入门书快速读了一遍,学会增删改查。至于这家公司本身,我看了现场气氛后没太大兴趣,对工作内容也并不感冒,所以没有很遗憾。

第二家公司,腾讯。

能混到腾讯面试,我也很意外,居然没有被刷简历刷掉。我没有通过腾讯的社招平台投简历,而是在 V2EX 上看到了腾讯云工程师发的招聘贴,于是把直接发简历到腾讯云工程师的 QQ 邮箱里面,附带了一封求职信。某一天接到电话,说定个日期来一次电话面试。腾讯的这场电话面试是我最紧张的一场面试,电话期间被问及冒泡算法的复杂度,我脑子一片空白,完全想不起来,当然是遗憾收尾。对面工程师说,其实觉得我的工作态度非常好,而且之前的运营工作经验说明我善于利用工具解决问题,只要技术水平达到他们的最低标准,就很乐意让我加入,只不过……

重点说说第三家,现公司,米筐。

最早在拉勾看到米筐的招聘信息,投了然后被拒。然后在 V2EX 上(又是 V2EX,想找工作的朋友一定要重视这种社区)看到他们的招聘贴,继续发简历,同时附上了求职信(这封求职信起了关键作用,后面会细说)。去公司所在地(当时公司在深圳一个别墅区里租了几间房子)面试,和 CTO 简单聊了一下自己学过的东西、写过的代码,然后给我留了一个作业,就是在2周内学习冒泡、插入、选择、希尔、归并、堆、快速,桶排序,并用代码实现。
接下来的2周我足不出户,靠着一本红色的《Algorithms》、一本《算法导论》以及网上的零散内容,大致知道什么意思,然后面向 Google 编程,最后实现了。发邮件回复 CTO 后,1小时内得到回复,说不错,但是没有函数、没有继承,就是一堆命令的堆积,让我用 类 来改写一遍,时限1周。
继而又是兵荒马乱的1周。CTO 第三次发来邮件说不错,但是有几个技术细节和我讨论一下,然后再让我把排序内容输出为表格并增加自动化测试进行验证,时限又是1周。
这次稍微简单一些,但是从没写过测试,也没输出过表格,所以学习了几天,然后实现之(这里有个插曲,我当时的『表格』就是在命令行里绘制一张表格出来,现在想想 CTO 可能是想让我输出成 csv 之类的文件)。这次邮件之后,CTO 通知我第二次面试。这次面试我自觉带上了开发用的 Mac,现场也确实用到了,简单讨论后,CTO 说恭喜你加入米筐。
以上是我仅有的三次面试的经历,第三次就找到工作,只能说自己运气不错,另外求职技巧也有一些可以分享的。
技巧1:良好的邮件习惯
标题写个人基本信息、应聘岗位等,正文简要介绍自己,附件包含 docx 和 pdf 格式的简历各一份,然后附上一封像老朋友面谈一样的诚恳的求职信。
技巧2:求职信
从投腾讯简历开始,我在太太的帮助下认真的写一封求职信,详细介绍自己的优势、劣势、以及对新工作的期望,在信中表达出极为诚恳、诚实的态度,而非吹牛逼、忽悠。记得在给米筐的求职信里我写过『知道自己的水平和其他工程师有差距,所以并不要求工资水平和别人一致,只求多一点实战机会、多一点成长』。因为我也面试过不少人,深知市场上的聪明人太多,老实踏实的人太少,所以装一装老实,可能算是一个蛮突出的『竞争优势』吧。
技巧3:不要海投,不要投 HR 邮箱,直接发简历到工程师邮箱
我们这种自学编程的人,绝大多数水平真的不行,没有相关工作经验,没有相关学历。类似我当年不会用数据库、不知道多线程多进程的区别和用途,海投简历只会收获海拒。因此最好能绕过 HR,与工程师直接联系(例如腾讯那场面试,如果我走正常招聘程序,不可能获得面试机会)。
我的工位
基本上我就是这样在自学编程后找到第一份开发工作的,到现在,工资数倍于入职的起薪,深深觉得米筐给我的东西,远远多于我给米筐的,很感激公司同仁的宽容与善良。写代码是一项实践性的工作,不进入生产环境,很多东西自己是搞不懂也不会接触到的。希望各位自学编程的人,都能早日找到工作,快速学习和成长,不断进化和突破,最终超越自己。

Tagged :