我时不时会收到一些小朋友们的私信,问是否招实习生或者「程序员学徒」的,可以不要薪水。我一般回复「没有」,就不再多说什么了。并不是我高冷,而是觉得这样的小朋友恐怕并没有什么潜力值得去挖掘。
这么冷酷的结论,并不是拍脑门想出来的。经历了多次打脸,我最终明白一个道理——如果一个人把「廉价」甚至「不要工资」作为核心竞争力,那么他不仅对自己没有信心,其实也不会有任何主动性去发展自身。他们只期待一个武林高手从一招一式开始教起,像妈妈带娃一样照顾始终,而自己只需负责饭来张口即可,希望在人畜无害的气氛中,无能的成长起来。
显然这是做梦。即便这样一位「程序员学徒」不要工资,其他人为了培养他而投入的巨大精力和时间难道不值钱?武林高手有这个时间干点什么不好,不能去争一争武林至尊吗?为什么要把时间浪费在一个连学习知识技能都需要他人喂食的巨婴身上呢?这些幻想成为「程序员学徒」的小朋友明显算错了数,他们以为「不要工资」是自己的巨大优势,实际上这样的人带来的往往是负价值,对团队和项目都有巨大损害。
举一个我自己的例子。我曾经在一个水平相当低的工程师身上耗费了近半年时间,从 Google 搜索引擎和 stackoverflow 的用法,到代码规范,到 Python 各个标准库的用法,再到各类 Pythonic 代码的写法。之所以耗费这么大精力,是因为我是一个不错的老师,能把很多道理讲的深入浅出(例如我可以在 1 分钟时间里让任意一个无技术背景的人理解金融量化交易引擎的技术原理),经过我的细致培训,他一定有机会成为一个代码细腻而简洁的工程师。
直到被我劝退前,他都一直在用百度搜中文关键词并跳转到 CSDN 上看技术文。
这是什么概念呢?就是一个数学老师教了你半年的二项式展开,最终面对最简单的二项式题,你依然在掰手指数数。
这样的程序员带给同事的往往是噩梦。在他离职之后,我们依然时不时的从他代码中发现骇人的 bug,然而数据已经被污染,重新修正几乎不可能。由他引入的问题,很有可能直到公司破产都不会有人愿意去解决。这样巨大的负担,当年的我如果更成熟一点,是万万不会惹祸上身的。所以现在收到各类的「不要工资」的申请,心里都会默默的想,「你当我是傻子么」。
每个人都渴望成长,但成长不是商品,不是你用「不要工资」就能够换回来的。成长源于你一步一个脚印的学习,在学习过程中,你又创造出了价值。本质上,只有当你持续创造价值的时候,你才会成长;而不是反过来。
如果你技术不好、没公司要你,能否在力所能及的范围内,对开源社区做一点贡献?
如果你技术不好,能否仔细研究业务代码,试着花一个月甚至两个月的时间写一个简单但核心的模块?
如果你技术不好、又想找个老师,能否先帮这个老师做一点事情、哪怕只是帮他写单元测试?
……
可做的事情太多了,简直数都数不过来,而它们的共同点就是——持续创造价值,而不是持续索取关照。
所以,当我们对一件事情有了强烈的渴求时,最好先问问自己,能不能用已有的技能先创造一些价值出来。如果不能,说明你其实并没有那么渴求。那么,请不要再去骚扰那些工作量已经很饱和的工程师了,码农滞销,可怜可怜老乡们吧。
作者: Alien
给马蜂窝支招
- 对马甲和内容数据分类、打标签
- 对「有毒内容」进行过滤
- 调研真实用户行为特征
- 开发自动化内容发布系统
- 优化运营人力
一、对马甲和内容数据分类、打标签
二、对「有毒内容」进行过滤
三、调研真实用户行为特征
四、开发自动化内容发布系统
五、优化运营人力
万智牌的几种娱乐规则
最近有空就会打一两盘 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 了。
程序员年龄增大后的职业出路是什么?
这篇文章是我在知乎上的的一个回答,讲的略微有点深。另外感觉自己这两年越来越左翼,越来越觉得马克思不愧是20世纪最伟大的思想家之一。
今年 30 了,也开始考虑年龄问题了。
不过虽然 30 岁,但我实际作为程序员、以编程为业,也只是最近两年的事情(关于我的编程职业经历,在这个回答里写的比较详细:知乎用户:自学编程的人,都是怎么找到第一份软件开发工作的?)。因此对编程这个职业的理解,可能还不如一些 90 后小朋友深,写的不对的地方贻笑大方,请见谅了。
注:以下叙述,不局限于程序员,实际上包含所有职业。
中国的程序员在市场中的地位,不客气的说,随便翻开《1844经济学哲学手稿》里描写产业工人的段落,把这些一百年前的论断放到程序员身上,都言之凿凿:
例如:关于程序员的先进生产力与其对应的可怜回报
「的确,今天由于有了新的动力和完善的机器,棉纺织场的一个工人往往可以完成早先 100 甚至 250-350 个工人的工作。在一切生产部门中都有类似的结果,因为外部自然力日益被用来加入〔X〕人类劳动。如果说为了满足一定量的物质需要必须耗费的时间和人力比现在比过去减少了一半,那末,与此同时,在不损害物质福利的情况下,给精神创造和精神享受提供的余暇也就增加一臂。但是,在我们甚至从老克伦纳士自己领域中夺得的虏获物的分配方面,仍然取决于像掷骰子那样盲目的、不公正的偶然性。法国人有计算过,在目前生产状况下,每个有劳动能力的人平均每日劳动五小时,就足以满足社会的一切物质利益……尽管因机器改进而节省了时间,工厂中奴隶劳动的时间对多数居民说来却有增无已。」
例如:关于「越工作越贫穷」这一现象的分析
「工人生产的财富越多,他的产品力量和数量越大,他就越贫穷。工人创造的产品越多,他就变成廉价的商品。物的世界的增值同人的世界的贬值成正比.劳动不仅生产商品,它还生产作为商品的劳动自身和工人,而且是按它一般生产商品的比例生产的。」
例如:关于程序员异化为程序的奴隶
「因此,工人在这两方面成为自己的对象的奴隶:首先,他得到劳动的对象,也就是得到工作:其此,他得到生存资料。因而,他首先是作为工人,其次作为肉体的主体,才能够生存。这种奴隶状态的顶点就是:他只有作为工人才能维持作为肉体的主体的生存,并且只有作为肉体的主体才能是工人。」
以上,并不是呼吁大家都去读马克思,我也无意挑起关于马克思的政治经济学的争论(也希望大家尊重题主和读者们,不要做跑题辩论),只是希望各位静下心来想一想,我们和百多年前的纺织工人的区别,到底是什么?
伴随一个产业工人或程序员的老去,不可避免的是工作时长与强度的降低、工资的刚性提升(正常来说只能升不能降)、对家庭福利需求的增高(例如需要公司为家人购买保险)等等。而普通工人(程序员)的工作效率增长速度一旦无法达到其福利需求的增长速度,在公司里即成为累赘。换句话说,辞退你、换新人,对公司有很大好处,而这对资方来说是一个巨大的诱惑。
多亏劳动法和近二十年来的互联网产业红利,程序员的处境已经远远优于当年的工人,不用时刻担心被辞退,但是当到达了一定年龄后,大多数程序员的个人价值已到峰值,收入封顶,但生活压力却越来越重。这是「年龄-收入」的悲剧冲突核心,也是大量程序员夙夜忧叹的唯一原因。
而这种悲剧,集中式的出现在中国,其直接表现就是程序员的薪酬过低(例如在美国,普通工程师拿个十几万刀的 package 并不算天方夜谭,这种问题也就并不严重。)。
所以程序员老了怎么办?唯一靠谱的解答,就是脱离自己的产业工人身份,直面残酷的市场食物链,尽一切可能向上爬,脱离这个「产业工人诅咒」。
那么程序员以上的食物链有哪些?最直接的就是技术管理层、公司中高层,再次是资本方,最后是权力方。故而其方法也分外直接:要么争做管理层并获取股份、股权激励等非劳动收入,要么以资本进行投资、让别人为你打工,要么当个省委副书记、起码乡镇干部之类(这一条过于奇幻,当做笑话吧)。
但凡符合上述逻辑的职业规划,都是靠谱的,区别仅在于风险大小。
至于计算机领域的、乃至其他各行各业的技术专家,这是一类我非常崇敬和羡慕的人群,他们往往已经获得了超额收益,故而不在我上述论证范围内。我所说的一切,仅仅针对你我这样的普通职员。
所以,程序员们,不要为自己掌握先进的知识而沾沾自喜,这个世界并不属于知识劳动者,所有利润最终将归属资本和权力……
……和猫。
合作类DBG桌游《XenoShyft: Onslaught》测评
最近买了一盒 CMON 出品的卡牌构筑机制的1-4人塔防类游戏《XenoShyft: Onslaught》,一个人试玩了一下,觉得比领土好玩多了。又意外获赠了一盒该游戏第一个大扩《Xenoshyft: Dreadmire》在2016年 Kickstarter 上众筹中回报的 KS 独享扩展卡包,内容丰富,很大程度上提高了可玩性。非常意外,非常感动。
游戏特点
XenoShyft 的主题是合作防守,玩家们扮演星际战士对抗外星异种,游戏的目标并不是杀光异种,而只要在一定时间内保持不死即可——要么坚持9轮后游戏胜利,要么鏖战中途基地生命值降到0而失败。由此可见,游戏的难度颇大,异种怪物的可怕攻击力与特殊能力会给玩家们带来非常大的压力。在这样的主题下,玩家之间通过各种形式的合作进行快速战斗,游戏节奏异常的快,与《领土》类 DBG 完全不同。
昨天下午,我和几个朋友连开2局《Xenoshyft: Onslaught》,游戏过程非常紧张刺激,几个人都很过瘾。虽然2次尝试都以失败告终,但也终于见识到了 DBG 这个老套、繁琐、慢速的游戏机制,如果加以微调,完全可以支持快节奏的卡牌战斗游戏。
Xenoshyft 整体节奏非常流畅,速度极快,四个玩家共同合作防守基地,游戏过程中能够互相支援部队、道具等等,这样的设计打破了领土创造的经典但乏味的『二人埋头理牌』模式,不同玩家的互动极为丰富,这种配合贯穿游戏全程,即便不在自己的回合内,依然可以使用自己的即时效果牌和特殊能力部队进行协助;再加上所有玩家共享生命值,每一个人的成败都关系到所有人,任何一路被突破都会对基地造成破坏,因此可以说全程无尿点,基本没有 downtime 困扰。
另外需要提一下的是,XenoShyft 本身是一个变化颇多的游戏,玩家选择不同的部门(如医疗部、武器部、科学部等等)有不同的特殊技能和初始牌库,游戏 Setup 过程中随机出现可购的强大道具,以及8种从弱到强、能力各异的兵种互相搭配,使得每次游戏都具有巨大的差异性,可玩性极佳。同时由于游戏的高度合作性,不同玩家的策略区别极大,可以说基本很难玩出2局雷同的游戏。
(上图为游戏后期 Wave3 的一条战线,异能强大的「电震兽」和防守反击能力爆表的「海伯利昂突击装甲」在面对面的对抗)
(上图是游戏中期经常遇到的一种恶心的敌人,可以将我方阵亡士兵直接变成他们的提线木偶。这游戏的美术真是有点惊悚,而且相当血腥,儿童不宜。)
KS 卡包带来的变化
上一篇文章说到了,朋友赠送了我一套《XenoShyft: Dreadmire》的 kS 专属卡包,虽然由于部分卡牌涉及到「天气」这个新机制、而我仅有基础版、故而无法使用,但是其他牌的扩充实实在在的拔高了游戏的耐玩度。
举个例子,这个 KS 卡包提供了些崭新而简易的增强规则。一个我方士兵如果经历了战斗而未阵亡,则可在下一回合升级为英雄(居然还是闪卡……)。每个兵种只有一个英雄,这些英雄相比普通士兵具有更为强大的能力,是战场上的中坚力量。同时,装备物品也有类似的「传奇」版本,比原本的武器更加强大也更加稀有。
除了士兵在战斗幸存后可升级为「英雄」外,还出现了4个具有强大能力的崭新兵种,目测强度略高于基础版,但面对同步增强的敌人,似乎显得并不算过分。
另外,XenoShyft 基础包中每一波有2个Boss级大怪,一共6个Boss;而这个 KS 包里则一口气为每个波次提供全新的全彩大画版本大怪6只,合计18只!这意味着,在玩家部队得到增强的同时,外星异种也在同步增强!下图中,第一张图是基础包中 Wave1 的2只 Boss,第二张图则是 KS 包附带的 6 只 Wave1 大怪!
除了船新版本的士兵、装备、怪兽外,分支机构也有了更多选择,同时相比原来的常规尺寸卡牌,做了一套「超大尺寸版本」,这样放在桌子上,就不会淹没在卡牌大海之中了。
在新增分支中,我最喜欢的是 Xenos Containment,可以翻译为「异种收容所」之类意思,但我习惯称之为「动物园」。它的能力也非常有趣,除了游戏开始前可以将任意2张3费以下的护甲或科学卡牌加入牌库外,每次部署部队时可以从异种牌库中抽取一张牌作为自己的士兵、部署到任意玩家的战线上,同时将其能力更换为每轮可以替其他士兵抗伤害一次。这样有个很大的好处,就是降低了对士兵数量的需求,可以将购买士兵的资金用于购买装备然后对己方4路战线同时进行防守。万一抽到一只大怪,就赚翻了,不仅等于消灭了一个大怪,还可以为己所用,成为巩固防线的一道工事。
在 DBG 这个大类之下,无论是早期的《领土Dominion》还是前两年推出的科幻战斗主题《星域奇航Star Realm》,都是桌游圈的传奇产品。但是 DBG 的缺点也很明显,如领土,节奏过慢,几乎毫无代入感;如星域奇航,虽然节奏快了很多,但战斗过程颇为枯燥,并未脱离自「领土」以降的线性的「买牌、构筑、Combo」的窠臼。
《XenoShyft: Onslaught》则刷新了我的 DBG 游戏排行榜,结结实实的成为我目前玩过的最佳 DBG 游戏,甚至在合作类游戏里也能排到前三名。激动之下,慌忙去亚马逊下了一单《Clank!》,想尝试一下另一款传奇 DBG,看一看坊间流传的将 DBG 与 Rouge Crwaling 完美结合的游戏到底是什么样,它和《XenoShyft》相比,二者谁能更胜一筹呢?
最后贴一下我定制的一款《XenoShyft》牌垫,我玩卡牌游戏喜欢做牌垫,在网络上找到素材后,直接淘宝定制一个,3天送达,相比基础包自带的纸卡牌垫来说,体验好了不止一点点。素材来源 BGG。
技术部门团队管理的一点心得
最近半年公司一直在对整体业务后端数据存储做大修改,由我负责开发核心的数据存储、拉取组件,这个组件以 gRPC 为协议,完全重构了早先的 Java 业务,即将部署到公司线上产品以及机构产品。除了数据存储拉取以外,其他组件之间也统一使用 gRPC 协议,这种情况下,需要一个简单易用的 gRPC 接口测试框架对各个接口进行压力测试。
而此时,我刚开始管理公司的测试开发团队,团队的常规任务是完成开发团队的测试需求,但最重要的任务是为开发团队提供简单易用的测试工具。总的来说,更偏重于开发而非测试。因此近期测试开发团队的最重要任务就是搭建一个上述框架出来,保障即将上线的新产品顺利交付。
目前团队只有我和另一个新入职的测试工程师(正在招聘手工测试员一名)共二人,由于测试工程师并无开发经验,刚开始上手开发有一些障碍,因此对稍微复杂的开发任务表现出无力感。
在这种情况下,团队管理出现几个挑战:
1. 新入职员工对工作内容不熟悉、以及技术上有欠缺,无法独力完成项目
2. 团队人数较少时,人事关系容易出现扭曲,表现为团队负责人与成员过于亲密或过于疏远,这两种情况都会伤害团队未来的发展。
3. 新成立的部门往往被委以重任,甫一成立就会面对攻坚战类型的技术难题,而此时恰恰是作为新生儿的团队最脆弱的时候。
针对挑战一,我的解决方式是,结伴编程快速提升工程师的基础开发能力,并使之在短时间内熟悉公司的技术栈和代码规范。这段时间压力会很大,学习内容也会很多,但是要求并不能放松,需要管理者持续关注工程师的进度和心态,对成员烦躁、失落的情绪及时进行安慰和疏导,同时在某些环节进行必要的技术辅助。
针对挑战二,首先避免过分亲密的关系,保持普通的社交距离,同时也在处理「挑战一」的时候让对方感受到你的关心。张弛有度,会使双方关系有序的发展下去,也为团队的长远发展打下基础。
针对挑战三,要和部门的上级主管进行沟通,确定部门的目标方向,然后主动将目标按优先级一一列出,根据实际情况向上级索要资源(要么给人,要么给时间,要么降低任务量)。以我的经验,能够主动索要资源的团队,往往是资源最充沛、进度最快的团队;对于管理者来说,一个能够合理索要资源的下属,也大概率是一个有思考深度和执行力的团队成员。
在数年前做运营的时候,团队管理就是一个我很重视的问题,每个工种对人有不同的影响。例如运营部门的基础运营成员往往看不到职业发展的前景,进而转行到其他行业;一线工程师则埋头于技术,疏于梳理工作内容和工作前瞻。这样其实给团队管理提出了很大挑战:作为管理者,到底能在多大程度上纾解这些职业对成员的负面影响、并提高团队运行效率?
在前些天给 CTO 提交的一份测试开发团队工作计划书中,我提到了进行人才梯度建设。虽然测试开发团队人数不多,以后最多也不会超过5人,但是由于分工不同,必然产生事业层次的高低。在团队内部明确人才梯度,告知每个人未来的上升渠道,指明上升的途径,不仅成员会主动成长,人员流失率也会得到降低(软件测试行业的流失率非常高)。一旦形成稳定的循环,那么这个部门将能够实现「无人驾驶」,几乎自动化的在公司内部高效运转。这也是我未来的工作目标。
最近买了一款 CMON 出品的卡牌构筑类的塔防主题游戏《XenoShyft: Onslaughter》,感觉比领土好玩很多,无论美术或游戏机制都远远超过其先辈们。先贴几张图以飨读者,后面会写一篇文章,来介绍和评论一下这款游戏(前两张图是我拍的,图中还乱入了我的猫「三十」。最后一张游戏图是 Google 来的,仅供示范)。
我是怎样自学编程并找到第一份工作的
这是今天我发布在知乎上关于『自学编程的人,都是怎么找到第一份软件开发工作的?』的一个回答,链接在这里,喜欢的老铁可以去帮我点赞刷一波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,与工程师直接联系(例如腾讯那场面试,如果我走正常招聘程序,不可能获得面试机会)。
基本上我就是这样在自学编程后找到第一份开发工作的,到现在,工资数倍于入职的起薪,深深觉得米筐给我的东西,远远多于我给米筐的,很感激公司同仁的宽容与善良。写代码是一项实践性的工作,不进入生产环境,很多东西自己是搞不懂也不会接触到的。希望各位自学编程的人,都能早日找到工作,快速学习和成长,不断进化和突破,最终超越自己。
steemit 流量哪里去
最近连续看了一些 steemit 的介绍文章,我也动了上去写作的念头,毕竟博客被墙久已,访问量不高,实际上纯粹是一个日记本。
在读了 steemit 的官方入门指南后,我发现想要在这里有出众的访问量,还真是需要花一番心思。研究了一下中文写作的榜单,似乎目前 steemit 仍处于开荒阶段,大家的写作内容也偏向生活和琐碎,很像新浪博客和新浪微博刚刚兴起时候的样子,高流量贴的主题性并不强,看起来整个 steemit 上,大家更喜欢窥探彼此的生活(这里专指中文写作者,英文内容则相对丰富的多)。
在这个流量逐渐兴起的领地内,主题性强、写作领域较集中的作者,或许会在漫长的优胜劣汰中取胜(也许并不漫长),而日记型作者将逐渐成为边缘。这是网络流量的特性导致的,所有以内容获取流量的网络圈地运动,无不以『主题』为圈地的围栏,即便如微博、知乎等巨量流量的集散地,其内部也是如此——流量在比特海中寻找着相似的彼此,然后聚合到一起,形成了相对封闭的流量圈子。
steemit 的无审查机制(其实也是有审查的,low rating 文章会被隐藏)与现金鼓励机制的对冲,可以实现在无人值守的情况下,尽可能保障文章内容质量,这是一个很好的、但有漏洞的机制,一旦发布 low rating 内容的收益高于发布 high rating 文章的打赏收益(例如 @alexanova 发布边缘色情内容,会被打上 NSFW(Not Safe for Work) 的标签并默认『折叠』,需点击两次才能打开),则大家会忽略被隐藏的风险,尽可能多的发布类似内容。好在 steemit 的社区讨论气氛很棒,大家彼此讨论规则的合理性,这是社区区别于中心化的审查、实现自我进化的重要方式。
例如关于垃圾留言,就有这样的讨论:https://steemit.com/steem-help/@charles1/how-spam-is-killing-steemit-and-what-to-do-about-it
而作为中文读者和写作者,最需要担心的仍然是政策风险。steemit 这样的内容聚合网站,一旦规模到达某个量级,势必会遭遇防火墙。当然,这并不是网络自我审查的理由,政治写作者仍然会愿意通过一切平台表达政治异见,但想靠流量赚钱的人却要早做准备、未雨绸缪。
流量在 steemit 上仍野性的游荡着,屈指可数的几位中文『大V』,很有可能会被新出现的写作者夺走流量,这是内容迭代的趋势。所以各位写作者,留给诸位调整内容方向的时间可能并不多了,抓紧走专业化道路吧!
树莓派3初体验之一:搭建 Python 开发环境
最近新买了一个树莓派3(购买前还考虑了 Orange Pi 等 Linux 开发板,但最终仍然选择了树莓派),主要目标是想通过折腾这个信用卡大小的 Linux 电脑,学习一下 Linux 系统知识,熟悉服务器的各项操作,顺便给自己搭建个 Web Server。
安装步骤很顺利,通过官网下载了 NOOBS 版的 Raspbian 系统,并复制到 TF 卡中,然后启动树莓派,一路 Next,很快就可以看到图形界面。然后看了一下树莓派内置的 Python 版本,发现是 2.7.9 以及 3.4.2,于是机智的我马上制定了第一个任务——把树莓派的系统自带 Python 3.4 升级到最新的 Python 3.6.2。
升级的过程是这样的:
1. 从 Python 官网下载 Python 3.6.2 的压缩包。
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
2. 解压编译
cd ./Python-3.6.2
./configure
make
sudo make install
3. 将 /usr/bin/python
的原文件删除,然后link到刚编译好的Python3命令上
rm /usr/bin/python
ln -s /usr/bin/python ~/Python-3.6.2/python
结果是虽然我把原本是2.7.9版本的python
命令变成了3.6.2,但是配套的pip等工具却乱套了,一运行就会报语法错误,看来这样生变过去是不行的,于是想恢复回去,几经尝试后失败,遂格式化TF卡,重装系统。
第二次我不再 link /usr/bin/python
, 而是机智的换成了/usr/bin/python3
,但是依然出错,具体什么错误已经不记得了。再次格盘重装。
第三次终于成功,在命令行输入python3
指向了/usr/local/bin/python3
,我还没搞明白是怎么弄得,反正搞定了,明天去问问同事在哪里设置……
后来才想起来,要改环境变量里面的$PATH……这是刚学 Python 时候就遇到的问题,现在居然都想不起来了……
此时又遇到了第二个坑——Rsapbian没有安装若干必要的库,需要手动安装。
顺利配置好 Python3.6 后,我试着pip3 install requests
,结果出现ssl module in Python is not available
的报错,几经搜寻,发现是由于 OpenSSL 等库没有预置在 Raspbian 中,而 pip 则需要访问 https 加密的地址,故而报错。
首先,apt-get 安装这些库:
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
然后重新编译一次 Python 即可解决问题:
cd ~/Python-3.6.2
./configure
make
sudo make install
于是经过不知多少次编译,我终于装好了 Python3.6。后来又安装了 PyCharm,但实际运行中感觉延迟严重,所以这样大型的 IDE 可能无法在树莓派上顺畅运行,如果需要写代码,可以考虑轻量级编辑器(同时还有一个问题没有解决,就是如何卸载 PyCharm ……)。
最后说一下树莓派的整体感觉。
开箱之后的树莓派需要自己安装散热片、风扇、外壳,当然这些配件都需要另外购买。组装过程很简单,把散热片粘到处理器上,然后一层一层安装外壳,最后在外壳上方固定和连接风扇。如果有过装机经验,那么整个过程即为简单。组装完成后,我通过一根 HDMI 转 VGA 线,将树莓派连接至一个古董19寸显示器。
我(也是大多数树莓派素人)选择的是官方推荐的 Raspbian 系统,是 Debian 的树莓派分支。其实树莓派有大量的系统版本可以选择,例如 CentOS 的 ARM 版、Ubuntu Mate等等,可按需选择。Raspbian 的 GUI 没有 Ubuntu 那么炫酷,但是能在这么小的板子上运行如此完整而流畅的桌面版 Linux,也让人很欣喜。
目前我已经把若干连接线(视频线、鼠标、键盘)从树莓派上移除,仅剩供电线路并连上 WiFi,通过 Mac 远程登录进行管理。本来想设置一下 DNS 实现通过 hostname 直接访问主机,结果家里没有多余的机器做 DNS Server,华硕路由器的官方系统又不原生支持 DNS、我还懒得再折腾路由器,所以只是通过改本地的 hosts 来实现 hostsname 登录(我给树莓派起的名字叫做 footboy)。以后可能会在树莓派上搭建几个服务,通过 supervisor 管理;或者做几个 Cronjob 的定时任务。
暗黑科技物语——跑团游戏《祸不单行》原创剧本
祸不单行这个游戏,我已经跑过挺多次了,但其实依然不太熟练,因为规则泛用而限制极少,所以反而需要人们约束自己在跑团时的想象力,否则就会发生天马行空、同时让人容易出戏的剧情。例如我最近一次跑团,就生生把一个解密剧情跑成了科幻恐怖,脑洞固然够大,但是乐趣也相应的被扯淡所替代。
Pathfinder和DND的成熟之处在于大家共享一个成熟的世界观,有DM作指导,不会出现太奇葩而损坏故事背景的情况(例如牧师念了一段咒语召唤出了一架UFO)。这是泛用轻规则跑团游戏面临的共同困境。所以我对刚刚结束众筹的《命运Fate》核心规则保持审慎客观态度,虽然支持了众筹,但并不是特别看好。而即将开始众筹的《龙蛋物语》,由于具有温馨的主题和统一的世界架构、且规则简单易学,则更容易让玩家感受到跑团的乐趣。
下面这里贴出来的,是我原创的《祸不单行》剧本,以现代科技行业为背景,交织了复仇、阴谋、科幻等等元素,大致上可以发展出两三个故事走向。当然,具体玩成什么样,要交给玩家了。目前我还没有测试过这个剧本,如果有朋友对该剧本进行了测试,请让我知道,我会表示自己的深深谢意。
(图文无关,这是万智牌史上最有名的一张牌——黑莲花,算是卡牌游戏里面的黑科技吧……)
简介
2017年4月下旬,某市科技园区……
你站在楼顶,看着四周环绕的密密麻麻的写字楼,对未来充满茫然。科技初创公司像野草一样在这块土地上疯狂的生长,有的人一将功成、成为了坊间的神话,有的人堕入地狱、永世不得翻身。贪婪的种子慢慢侵袭每个人的心灵,而喧嚣兴旺的表面以下,则有一股潜藏的力量正在崛起……
此时,你正站在巨大漩涡的中心……
由声音最像机器人的玩家高声朗读
电影之夜
美剧《硅谷》,电影《黑客帝国》《硅谷传奇》《社交网络》
关系
亲属:① 亲兄弟(姐妹)② 命运交叉的远亲③ 夫妻④ 岳父(岳母)与儿媳(女婿)⑤ 祖孙关系⑥ 被遗弃的孩子和父亲(母亲)
竞争对手:① 两个初创公司的CEO② 黑客与网络安全专家③ 新手销售和精明的客户④ 政府官员和叛乱分子⑤ 情敌⑥ 彼此抢夺优质投资项目的风投基金经理
阴谋诡计:① 破坏分子及同伙② 叛徒③ 口蜜腹剑的『朋友』④ 卧底⑤ 某个重大秘密的共同知情人⑥ 富豪与马屁精
同一家公司:① 同为核心工程师② 技术总监职位的两位候选人③ 相同信仰或彼此高度认同的非专业人士④ 亦师亦友,面临类似的困境⑤ 你们认为彼此的工作毫不相关,事实上却恰恰相反⑥ 职场新人和公司老油条
感情纠葛:① 爱过,现在却是路人② 炮友③ 因某个原因产生了巨大裂痕的情人④ 情敌⑤ 新婚夫妇,其中一人怀有秘密⑥ 幸福美满的同性伴侣
历史渊源:① 世仇② 大学同学③ 曾经最好的朋友④ 分手的情侣⑤ 赌徒与债主⑥ 同一场战争的幸存者
需求
发财:① 通过公司上市② 通过劫富济贫③ 通过干掉某人④ 通过伤害大量无辜的人⑤ 通过盗取知识产权⑥ 通过成为网红
获得尊重:① 使所有人怕你② 大家都为你着迷③ 获取权力④ 让自己成为英雄⑤ 变成行业权威⑥ 人们不会再提过去的事情
毁灭:① 毁灭证据② 毁灭某人的机遇③ 毁灭一家公司④ 毁灭一个人的声誉⑤ 自我毁灭⑥ 毁灭这个行业
逃离:① 努力忘掉曾经的惨剧② 逃离障碍重重的职业生涯③ 安静的逃出垃圾处理厂④ 逃离猛烈的围攻⑤ 逃离巨大的骗局⑥ 在警察发觉前逃离这座城市
复仇:① 向凶手复仇② 为老百姓复仇③ 击败曾经羞辱你的对手④ 因嫉妒而摧毁他人的生活⑤ 为情所伤,向曾经的爱人复仇⑥ 拿回你应得的东西
查明真相:① 凶杀案的真相② 某项高科技的真面目③ 那些钱到底去哪了④ 自己究竟是谁⑤ 服务器里到底存储了哪些内容⑥ 那项合同背后的阴暗面
地点
办公场所:① 键盘声噼噼啪啪的办公室② 满地烟头的楼道吸烟区③ 有淡淡臭味的厕所④ 安静的会议室⑤ 安保监控室⑥ 日光充足的顶楼
声色犬马:① 夜店② 美国人开的桌游吧③ 高档自助餐厅④ 喧嚣的派对⑤ 高尔夫球场⑥ 按摩店
商务场所:① 铺着大理石地砖的豪华谈判室② 简陋的路演现场③ 市长办公室④ 顶级科技巨头的总裁办公室⑤ 大学实验室⑥ 到处是创业者与投资人的咖啡厅
闹市:① 兰州牛肉拉面店② 量贩式KTV③ 廉价的私营幼儿园④ 烧烤摊⑤ 便利店⑥ 公共停车场
法律:① 法院庭审现场② 收费高昂的律师事务所③ 到处是鲜血的杀人现场④ 法院物证处⑤ 街道派出所⑥ 工商局
私密的地方:① 寂静的豪宅② 私人办公室③ 存放大量现金的秘密仓库④ 狭小的出租屋⑤ 神秘的宗教仪式场所⑥ 更衣室
物品
电子产品:① 一台被入侵的服务器② 人工智能机器人③ 崭新的苹果手机④ 据说可以连接人脑与电脑的『脑波模拟器』⑤一枚优盘 ⑥ 脏兮兮的机械键盘
武器:① 钝斧头② 手枪③ 丝袜④ 一行破坏力惊人的代码⑤ 剧毒氰化物⑥ 古代宝剑
一句话:① 『既然如此,那就再见吧……』② 『让我们一起改变世界!』③ 『你……是救世主……』④ 『都是谎言。』⑤『他们觉得你不行,我不这么认为。』 ⑥ 『对不起。』
秘密:① 伪造的合同② 针孔摄像机③ 奢华酒店的房卡④ 程序里的『后门』(即故意留下的漏洞)⑤ 塞进某人口袋的潦草字条⑥ 一小袋钻石
动物:① 草泥马② 烈犬③ 野猫④ 蛇⑤ 兔子⑥ 食人鱼
服饰:① 夜行衣② 高级西装③ 防弹衣④ 破旧的T恤⑤ 红色的斗篷⑥ 假发