同行热议:游戏程序员们写代码这么烂,真的是常态吗?
要问当下最热门的就业方向是啥,那必然无出程序员之右。在本科阶段,计算机专业的报考竞争强度就高居不下,从B站到小红书再到各类技术论坛,更是无处不见“转码”经验贴,分享非计算机专业人士跨行走上程序员道路的心路历程。
为啥如此火爆?除了信息时代急速扩大的程序员缺口外,更重要的原因是远高于平均水平的薪资水平,这注定让不少人眼红。一名就职于大厂的技术类应届生,拿到三四十万的年薪,如今都不是什么罕事。而游戏公司们花费高价雇佣的,也必然是顶尖人才……而这真的是这样吗?
在Reddit的游戏开发者聚集地板块r/gamedev,就有这么一位程序员对自己的同僚们产生了一些怀疑。这名名叫prooheckcp的程序员在Reddit上发出这样的灵魂质问:“难道大部分程序员的代码水平都这么烂吗?”
prooheckcp自述称,他拥有较为丰富的开发经验:他曾经作为一名个人游戏开发者工作过五年,并在两年前加入了一个100人左右的独立工作室进行全职游戏开发。而在最近两个月,prooheckcp入职了一家3A游戏开发商担任程序员。然而,他举目四望,却发现过往一并工作过的专业同僚们似乎不如自己曾想象得那么“高大上”。
prooheckcp表示:“自从我开始成为职业程序员以后,我发现90%的人都完全搞不清楚自己在干什么。每天我都要应付一堆塞满2000行垃圾代码的文件,不遵守公司制定的风格规范的代码、乃至干脆就是水平得一塌糊涂的代码。我一起共事过的人里面,绝大多数新手和中级程序员都压根不知道怎么写代码,有些资深程序员还会时不时表现得一无所知。我有一次说出‘单例模式’这个词,居然还有一个资深开发者问我这是做什么用的。这可是有着超过1000个员工,有大型3A作品的大公司啊!到底是我运气不好还是怎样。”
乍一看,这一经历似乎和我们的常识相违背——能够进入3A游戏公司的似乎都是经过层层面试筛选的代码大神,怎么还能出现这样的问题?但GameLook立刻联想到R星的一个著名翻车案例:自发售以来,《GTA 5》联机模式超长加载时长曾经遭遇过无数玩家的吐槽。过半玩家反映,游戏普遍需要进行3-6分钟的加载,部分人甚至曾经历过超过15分钟的加载时长。
而在《GTA 5》发售长达7年后,才由一名民间黑客探寻出这一问题的成因:在“屎山”代码中,一个if语句被了运行19.8亿次!这一错误之低级让发现这一问题的黑客都忍不住发出嘲讽——要知道,R星的一名资深程序员年薪可是轻松超过10万美元!
显然,不少Reddit上的开发者同僚们也对此感同身受。这条帖子下获得1500赞的最高赞回答就如此说道:“我的专业不是游戏开发,但我的领域里80%的人都是工程师。在我的经验里,我有一半的同事压根不知道自己在干什么,另一半的同事里有很聪明但没什么上进心的,又或是单纯为了升职加薪而拼命的‘卷王’。只有极少数一部分人是真正又聪明又能够做好工作的。这甚至治好了我的自卑感——哪怕这个领域里有很多创意天才,我依然能保持头部10%的产出。”
另一名高赞回答也经历了类似的“幻想破灭”的过程:“我还记得很多年前,年幼无知的我从‘那个人有着这个职位,那他一定是个领域内的专家吧!’到惊恐地发现‘我们人类菜成这样,迄今为止到底是怎么办成任何一件事儿的’这么一个转变的瞬间。”在回复中,有来自兽医、金融咨询、心理治疗师行业的Reddit网友都纷纷表示,他们在他们的行业也观察到了类似的现象。
这一情绪的广泛出现甚至也很难被称为海外独有。无独有偶,在多年前的S1论坛,国内也曾经诞生过一个著名的“草台论”:“我工作以后才发现,大家都是草台班子。企业草台,我也草台,大家都草台,凑合赚钱过日子。一个企业,看着像一台奔驰在高速公路上的豪华轿车,里面其实是几个人蹬着自行车顶个壳。路上的车都是这样,大家谁都不戳破。”
究竟为何会出现这样的落差感?GameLook也斗胆提出一个理论。科幻作家西奥多·史特金曾经提出过一个史特金定律,即任何事物,90%都是垃圾。换句话说,90%的人都并非天才。
成长于互联网一代的新程序员们在知识获取和成长过程中长时间仰望着行业顶端的大神——无论是技术达人或是各路“神童”——但我们往往忽视了,他们是高速流动的互联网层层洗牌后屹立不倒的尖子。这些万里挑一的牛人拉高了我们对个人能力的预期,但当我们回归现实生活,我们依然无法逃离史特金定律的掌控,认清生活最真实的样貌。
但正如这条回复下另一些人所指出的,这样的看法恐怕也可能是另一种傲慢的体现。一名网友自称他所就职的公司开发的游戏在过去5年连续保持Steam在线人数前50名,而在他眼中,用代码的整洁程度和格式来判断代码能力很不公平。
他表示,很多的项目,尤其是长期运行的游戏项目,往往拥有数十成百名程序员贡献的代码,这其中想要保持代码的一致性和整洁性,这本就不可能。而更重要的是,代码质量本身更重要:“如果你开发的代码架构能容纳个别无能的程序员,并且能在十个思路和想法各异的程序员手上还能运转良好,贡献有价值的服务,那么这个代码就是极为成功的。”
另一名认证为3A工作室程序员的Reddit网友也指出3A游戏开发的复杂性。在3A游戏的开发中,项目的进展往往受到严格的控制,这导致大多数代码往往是在较为紧迫的死线中赶写出来的。尤其是在项目后期,从Alpha走到Beta阶段,开发组往往需要加班加点进行飞速开发。在这种情况下,代码的风格和整洁往往不是项目的关注重点,让开发者回头检查校对自己的代码更是不可能。而对于一个项目来说,更重要的目标是保证各项功能能够如期上线。
以这个Reddit问题为镜,我们听到了各种各样的声音。读者们也可以借此自省:在一方面,还在学习阶段,因担心技术不过关而陷入焦虑的读者们可以以此进行一些宽慰,适当放低预期,以免自己陷入无意义的精神内耗。但这并不意味着我们就可以以此为借口,逃避学习和自我提升——毕竟在互联网上,我们始终逃不脱小马过河的误区,而在总体上,3A开发公司依然代表了行业最领先的程序和图形学水平。而作为个人,我们依然需要不断向行业中的领头羊们看齐,毕竟“取法乎上,得乎其中”的道理,永远不会过时。
如若转载,请注明出处:http://www.gamelook.com.cn/2023/03/511395