尝试通过俄罗斯方块解释程序员这个职业

news2025/1/18 4:35:13

每到毕业季和高考季,总会有相关的职业前景咨询环节等待着我,不管我愿不愿意~~。

每次我都会变着法向众人解释程序员这个职业,声泪俱下地描述互联网各种血泪史,先去考公不要进坑云云。可是效果非常不好,7、8月份这群人就会开始找我要《程序员自我修养》和各种面试指南。显然我没有能有效喝阻祖国的花朵走上这条不归路。今年想到了通过游戏方式来做通后来者的思想工作,通过“俄罗斯方块”——这个入门级游戏。

职业浅析

在这里插入图片描述

上图是传统俄罗斯方块的游戏界面

  • 游戏区域

    软件开发也是针对的特定业务领域的。更准确来说,软件是为特定领域赋能。除非是基础科学研究,程序员入行时,会选定一个业务方向。大概得在各自地业务方向上深耕多年才能比较从容地驾驭。

    比如说,电商领域和智能驾驶,这两个领域的程序员的画风可能差别很大,技术栈也相去甚远。这样很好解释我作为一个报表开发程序员,不懂重装电脑和美化QQ空间。

    虽然,游戏中你不可能把方块叠到其他区域上,但现实中如果不在主营方向上努力,把时间花在非主业上,也是不能算得分的。

  • 方块类型

    经过几十年的行业发展,软件开发虽未实现完全流水线标准化,但基本的开发套路是稳定。游戏中的方块,对应到软件开发也就是”用户需求“。通常会通过产品经理等类似角色分配到程序员手上。

    • “长条、方块”:这类看上去中规中矩的需求比较容易实现,通过CURD大法基本上能解决。
    • “L型、凸块”:这类虽有难度,巧用设计模式也能对付过去
    • “Z型、S型”:这种不规则块,就比较棘手了。随意摆放的话,后续会形成技术债务,要从架构方面考虑这部分需求的实现。兼顾开发进度和后续治理,是导致程序员头发稀疏的一大诱因。

    PS:虽然处理需求的难度各有不同,但实际工作中,正常业务中”困难级“需求的比例是不大的,也大多由架构师来解决。如果入职后,收到的都是各种困难需求。可能是遇到了一个天坑级产品,更大可能是进入了一个天坑级项目。

    行业分类,大型企业里简单需求会比较多,甚至只有简单需求(莫问怎么知道的)。小企业或外包则需求难度骤升,所以业内流传小企业锻炼人,大企业只需要螺丝钉的说法。

  • 提前提示

    游戏中右侧有三个后续方块的提示,玩家可以根据提示来规划方块的叠放方式。

    这也体现在软件开发的前瞻性,项目的生命周期和匹配的需求是固定的。需求评审之后是研发,研发之后是测试上线,项目上线之后是上报表,上完报表上优化。

    越资深的程序员,越适应这种套路,甚至已经提前做好应对的方案。刚入行的同学经历多几次,也会熟悉这个流程。知道后续任务后,就不要给后面的工作埋坑,大概率自己埋得坑还得自己填。

  • 得分规则

    游戏是消掉一层得一次分,同时消掉几层得分更高。

    软件开发上,得分点就是需求验收通过了。也是一个个验收,但需求再多也不会加奖金。需要注意的是游戏中可以艺高人胆大地设计成“万事具备等长条”。但实际工作中,很难有这种骚操作,通常要按项目进度逐次验收。更何况,项目有时候越到后期,交付时间越短。相当于游戏开了3倍速,能保证游戏不Games Over就不错了。

在这里插入图片描述

团队协作

  • 不是一个人的游戏

    打过排位的同学知道,通常团战赢是靠队友,输也是靠队友。

    软件开发从来就是团队模式,没有个人单刷。或许有很多远古大神,如Linus,求伯君,通过一人之力创造神话。但放到今天,如果公司里只有你一个程序员的话,大概率是黑心公司。

    想象下一个团队玩俄罗斯方块的话,团队中每个人负责叠自己负责那块,要等所有人都叠好某一层才能触发得分。一两个人还好,叠不好还可以互相支援下。如果是十人,甚至是上百人,这块就涉及团队管理。每个人叠方块的手法和速度都得按规范来做,不能玩个人主义,得配合团队进度。

职业瓶颈

玩过俄罗斯方块的同学都清楚,叠10层容易,100层也不难,但1000层乃至10000层呢?

俄罗斯方块也有吉尼斯世界记录。打破世界记录不仅需要时间,更需要持之以恒的耐心和良好的游戏操作。

一个项目开发上线,前期也是一番风顺的,需要也是有求必应。但需求迭代到一定程度后,前期累积下来的技术债务和设计缺陷会让项目难以为继,最终走向推倒重构。

推倒重来不可怕,可怕的是每次都因为相似问题导致游戏重开。只有不断积累和深化技能(比如能直接揉搓方块的形状)才能让走得更远。

author: jack.mark

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用docker compose 安装最新版neo4j

一、Neo4j和图数据库简介 neo4j是基于Java语言编写图形数据库。图是一组节点和连接这些节点的关系。图形数据库也被称为图形数据库管理系统或GDBMS。 Neo4j的是一种流行的图形数据库。 其他的图形数据库是Oracle NoSQL数据库,OrientDB,HypherGraphDB&am…

AIGC周报|下一个裁谁?老板:问问AI;OpenAI推出Shap·E;库克:AI仍有不少问题要解决

AIGC(AI Generated Content)即人工智能生成内容。近期爆火的 AI 聊天机器人 ChatGPT,以及 DallE 2、Stable Diffusion 等文生图模型,都属于 AIGC 的典型案例,它们通过借鉴现有的、人类创造的内容来快速完成内容创作。 …

网络基础之应用层协议,组织方式,自定义协议和http协议https协议简单介绍

网络基础之应用层协议 应用层介绍应用层是什么 组织方式序列化反序列化常见的自定义序列化方式 HTTP协议——超文本传输协议(最早就是用来传输web网页传输的)HTTP协议的特性HTTP协议的格式: HTTP 请求请求行HTTP常见HeaderHTTP常见状态码 HTT…

asp.net+C#公交线路换乘查询系统

系统功能结构图 (1)用户查询模块 在用户查询模块中,主要是查询出用户自己所需要的线路信息,这也是整个系统最主要的功能模块。主要包括: ①查询车次信息:输入要查询的车次进行搜索,可以查询出于它相应的站点名和站点描…

unity航点寻径

一、游戏框架:设置了六个路标,角色会在这六个路标之间一次移动,当移动到第六个路标后又会返回第一个路标,继续依次移动。 road: 道路,由五个立方体组成 sign:路标,由六个胶囊组成 …

系统集成项目管理工程师 下午 真题 及考点(2020年下半年)

文章目录 2020年下半年试题一:第10章 项目质量管理,规划质量管理过程的输入试题二:第9章 项目成本管理,典型:EAC ACETC AC(BAC-EV)/CPI BAC/CPI试题三:第18章 项目风险管理&#x…

Grafana 系列-统一展示-3-Prometheus 仪表板

系列文章 Grafana 系列文章 知识储备 Prometheus Template Variables 你可以使用变量来代替硬编码的细节,如 server、app 和 pod_name 在 metric 查询中。Grafana 在仪表盘顶部的下拉选择框中列出这些变量,帮助你改变仪表盘中显示的数据。Grafana 将…

【Java EE】-Servlet(四) Cookie和Session

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享: 寂寞会发慌,孤独是饱满的。——史铁生《命若琴弦》 主要内容:Cookie的理解,Cookie是什么?Cookie从哪里来&#x…

【消息中间件】kafka高性能设计之内存池

文章目录 前言实现创建内存池分配内存释放内存 总结 前言 Kafka的内存池是一个用于管理内存分配的缓存区域。它通过在内存上保留一块固定大小的内存池,用于分配消息缓存、批处理缓存等对象,以减少频繁调用内存分配函数的开销。 Kafka内存池的实现利用了…

怎么在本地运行umi框架的生产模式

怎么在本地运行umi框架的生产模式 第一种 先使用build进行编译构建, 在webstorm软件上可以在package.json文件上点击运行;或者直接在命令行上敲max build进行构建, 构建好后就会多个dist目录,里面就是编译好的静态文件。 然后在package.json中添加 "serve&qu…

UDP通信机制详解

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

Helm常用命令记录

问: 到哪里去搜索helm package? 答: artifacthub.io helm versionhelm repo add bitnami https://charts.bitnami.com/bitnamihelm install my-release bitnmai/mysqlkubectl get po --all-namespaceshelm uninstall my-release 安装monitoring,推荐kube-prometheus-stack&am…

【SWAT水文模型】SWAT水文模型建立及应用第三期:基于世界土壤数据库HWSD建立土壤库

SWAT水文模型建立及应用:土壤库建立 1 简介2 土壤数据下载2.1 数据下载方式2.1.1 世界土壤数据库HWSD数据2.1.2 中国土壤数据库 2.2 数据下载 3 土壤数据的准备3.1 SWAT土壤数据库参数3.2 提取HWSD中土壤参数3.3 土壤类型分布图的处理3.4 土壤质地转化3.5 土壤参数的…

人工智能浪潮中,AI如何为企业降本增效?

人工智能浪潮下,企业应如何抓住机遇,用AI降本增效?如何选择适合自身产业的人工智能服务?如果你想了解更多,本文或许能给你提供一点思路。 一、企业如何利用AI降本增效 在人工智能浪潮下,已有多款AI产品问世…

京东APP百亿级商品与车关系数据检索实践 | 京东云技术团队

导读 本文主要讲解了京东百亿级商品车型适配数据存储结构设计以及怎样实现适配接口的高性能查询。通过京东百亿级数据缓存架构设计实践案例,简单剖析了jimdb的位图(bitmap)函数和lua脚本应用在高性能场景。希望通过本文,读者可以对缓存的内部结构知识有…

一文带你写好:项目说明文档README.md

1、前言 公开项目中,一个好的 README 能帮助我们的公开项目,在 GitHub 上的众多项目和开发人员中脱颖而出;商业项目中,一个好的 README 能帮助部门同事更好理解用途和项目进展。下面我们一起讨论什么是 README 自述文件以及如何编…

如何使用node发布自己的包

一、新建文件夹 gzmTestNode二、npm init {"name": "gzmTestNode","version": "1.0.0","description": "处理不同日期函数组件","main": "index.js","scripts": {"test&quo…

从爆火的“哇呀挖”,思考我软件开发的人生意义何在?

【 在什么样的花园里面,挖呀挖呀挖,种什么样的种子,开什么样的花,在小小的花园里面,挖呀挖呀挖,种小小的种子,开小小的花,在大大的花园里面,挖呀挖呀挖,种大大…

springboot+vue火车订票管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的火车订票管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

String [中]

目录 一、 string 的深浅拷贝 0x00 构造函数与析构函数的实现 0x01 拷贝构造 0x02 赋值 0x03 整体代码 二、 string的实现 0x01 引入 0x02 c_str 0x03 默认构造函数 三、size()与operator[]的实现 0x01 size()的实现 0x02 operator[]的实现 0x03 遍历实现 四、迭代器…