每到毕业季和高考季,总会有相关的职业前景咨询环节等待着我,不管我愿不愿意~~。
每次我都会变着法向众人解释程序员这个职业,声泪俱下地描述互联网各种血泪史,先去考公不要进坑云云。可是效果非常不好,7、8月份这群人就会开始找我要《程序员自我修养》和各种面试指南。显然我没有能有效喝阻祖国的花朵走上这条不归路。今年想到了通过游戏方式来做通后来者的思想工作,通过“俄罗斯方块”——这个入门级游戏。
职业浅析
上图是传统俄罗斯方块的游戏界面
-
游戏区域
软件开发也是针对的特定业务领域的。更准确来说,软件是为特定领域赋能。除非是基础科学研究,程序员入行时,会选定一个业务方向。大概得在各自地业务方向上深耕多年才能比较从容地驾驭。
比如说,电商领域和智能驾驶,这两个领域的程序员的画风可能差别很大,技术栈也相去甚远。这样很好解释我作为一个报表开发程序员,不懂重装电脑和美化QQ空间。
虽然,游戏中你不可能把方块叠到其他区域上,但现实中如果不在主营方向上努力,把时间花在非主业上,也是不能算得分的。
-
方块类型
经过几十年的行业发展,软件开发虽未实现完全流水线标准化,但基本的开发套路是稳定。游戏中的方块,对应到软件开发也就是”用户需求“。通常会通过产品经理等类似角色分配到程序员手上。
- “长条、方块”:这类看上去中规中矩的需求比较容易实现,通过CURD大法基本上能解决。
- “L型、凸块”:这类虽有难度,巧用设计模式也能对付过去
- “Z型、S型”:这种不规则块,就比较棘手了。随意摆放的话,后续会形成技术债务,要从架构方面考虑这部分需求的实现。兼顾开发进度和后续治理,是导致程序员头发稀疏的一大诱因。
PS:虽然处理需求的难度各有不同,但实际工作中,正常业务中”困难级“需求的比例是不大的,也大多由架构师来解决。如果入职后,收到的都是各种困难需求。可能是遇到了一个天坑级产品,更大可能是进入了一个天坑级项目。
行业分类,大型企业里简单需求会比较多,甚至只有简单需求(莫问怎么知道的)。小企业或外包则需求难度骤升,所以业内流传小企业锻炼人,大企业只需要螺丝钉的说法。
-
提前提示
游戏中右侧有三个后续方块的提示,玩家可以根据提示来规划方块的叠放方式。
这也体现在软件开发的前瞻性,项目的生命周期和匹配的需求是固定的。需求评审之后是研发,研发之后是测试上线,项目上线之后是上报表,上完报表上优化。
越资深的程序员,越适应这种套路,甚至已经提前做好应对的方案。刚入行的同学经历多几次,也会熟悉这个流程。知道后续任务后,就不要给后面的工作埋坑,大概率自己埋得坑还得自己填。
-
得分规则
游戏是消掉一层得一次分,同时消掉几层得分更高。
软件开发上,得分点就是需求验收通过了。也是一个个验收,但需求再多也不会加奖金。需要注意的是游戏中可以艺高人胆大地设计成“万事具备等长条”。但实际工作中,很难有这种骚操作,通常要按项目进度逐次验收。更何况,项目有时候越到后期,交付时间越短。相当于游戏开了3倍速,能保证游戏不Games Over就不错了。
团队协作
-
不是一个人的游戏
打过排位的同学知道,通常团战赢是靠队友,输也是靠队友。
软件开发从来就是团队模式,没有个人单刷。或许有很多远古大神,如Linus,求伯君,通过一人之力创造神话。但放到今天,如果公司里只有你一个程序员的话,大概率是黑心公司。
想象下一个团队玩俄罗斯方块的话,团队中每个人负责叠自己负责那块,要等所有人都叠好某一层才能触发得分。一两个人还好,叠不好还可以互相支援下。如果是十人,甚至是上百人,这块就涉及团队管理。每个人叠方块的手法和速度都得按规范来做,不能玩个人主义,得配合团队进度。
职业瓶颈
玩过俄罗斯方块的同学都清楚,叠10层容易,100层也不难,但1000层乃至10000层呢?
俄罗斯方块也有吉尼斯世界记录。打破世界记录不仅需要时间,更需要持之以恒的耐心和良好的游戏操作。
一个项目开发上线,前期也是一番风顺的,需要也是有求必应。但需求迭代到一定程度后,前期累积下来的技术债务和设计缺陷会让项目难以为继,最终走向推倒重构。
推倒重来不可怕,可怕的是每次都因为相似问题导致游戏重开。只有不断积累和深化技能(比如能直接揉搓方块的形状)才能让走得更远。
author: jack.mark