游戏编程推荐
  • 【五】游戏向量运算
    【五】游戏向量运算
    在游戏开发中,确定目标的方位,朝向,夹角等相关数据需要用到向量间的计算,其中最常用到的就是点乘和叉乘。
  • 【四】游戏中点和向量
    【四】游戏中点和向量
    向量没有位置,只有方向(Direction)和大小(Magnitude,也叫做模或长度)。这听起来不可思议,但其实日常生活中很多量有大小(Size)和方向(Direction),却没有位置(Position)。
  • 【三】游戏多坐标系统
    【三】游戏多坐标系统
    为什么要使用多坐标系,毕竟任意一个3D坐标系都是无限延伸,可以包含任意点的。理论上只需要建立一个3D坐标系并把它宣称为"世界坐标系"就可以描述所有的点。
  • 【二】迪卡尔坐标系统
    【二】迪卡尔坐标系统
    笛卡尔坐标系就是直角坐标系和斜角坐标系的统称,相交于原点的两条数轴,构成了平面仿射坐标系。
  • 【一】图形引擎数学简介
    【一】图形引擎数学简介
    3D数学是一门与计算几何相关的学科,计算几何则是研究怎样用数值方法解决几何问题的学科。3D数学和计算几何广泛应用在那些使用计算机来模拟3D世界的领域,如图形学、游戏、仿真、机器人技术、虚拟现实和动画等。
  • 【五】游戏世界之摄像机
    【五】游戏世界之摄像机
    游戏世界之摄像机
  • 【四】游戏世界之渲染实体
    【四】游戏世界之渲染实体
    游戏世界之渲染实体
  • 【三】游戏世界之事件来源
    【三】游戏世界之事件来源
    游戏世界之事件来源

30岁游戏行业八年努力却无一款成功上线游戏,心力交瘁是否该转行?

2496

这个问题是一个共性的问题,如何在繁忙的工作中持续提升继续能力。

我个人从10年硕士毕业以后到现在已经工作了10年多了,绝大部分时间都在腾讯、搜狗等厂发展,,现在是搜狗的专家开发工程师。 我来说说我的看法~当你工作了以后,你会发现抽出时间来学习貌似是一件很困难的事情。现在很多公司都是996,早9晚9,12小时的高强度工作导致下班后根本不想再动脑子。

30岁游戏行业八年努力却无一款成功上线游戏,心力交瘁是否该转行?_求职汇总-游民部落(gamecolg.com)

当你工作了以后,你会发现事情不像你想象的那么美好,并不是时时刻刻都是在做高技术含量的事情。你的大部分时间将被工作上的各种琐碎的会议、业务需求、线上维护、bug处理所占据。当你工作了以后,可能感觉每天做的都是各种杂事。不单单技术感觉难以成长,就连年底的绩效考评成绩可能也是平平淡淡,没有亮点可言。你的自信也在一点一点的被磨没。这种情况下,怎么破局,来保证自己的技术能力能够持续进步,工作绩效能够突出? 


我觉得办法总比困难多,我来分享下我在工作中的技术成长方法,供大家参考。我分享的方法可以分成四步:

1.保持好奇,勤于在项目中发现问题我觉得第一点应该要保持一颗好奇心,多多去项目中发现问题。

我举两个我个人刚工作前两年时间里的两件事情。


第一件事情是在,2010年的时候,我在第一家公司还是一个新人,我发现我们所开发的客户端启动一次特别的慢。于是我开始思考Windows进程启动的过程中都干了啥,有哪些地方可以优化一下。后来进过系统的研究后我用了两个手段进行改进,将启动速度提升了15%左右。并总结成文反馈给了我的领导。

鉴于此类的工作输出比较多,刚工作一年多的时候,我的leader就准备提升我为副组长了。不过我还是更热爱互联网,于是婉拒了领导的挽留,我再2011年跳槽到了腾讯。


第二件事情是在腾讯内部我同样在工作中进行了深度的知识整理。当时老大给我分配到了一个模块,所有合作方数据源的图片下载模块。这个模块的需求描述起来也很简单,就是把合作方数据中的图片url摘出来,然后下载并存储到腾讯的服务器上。在这个过程中,引发了我很多的思考。比如新建一个空文件的话消耗磁盘空间吗?

一个文件夹下最多能存多少个文件?文件名太长了的话会影响系统性能吗?基于这些深度的思考我进行研究和学习,后来的技术方案就是为了提高性能,我们将文件通过hash的方式散列到三级目录结构下。保证每一次获取文件都很快完成。而且我还整理除了一篇热文,该文章在腾讯内部KM年度热文榜上登顶,而且在外网也是广为流传。现在这篇文章的地址是发表在了我的个人公众号里了,参见《Linux文件系统十文》。


也欢迎大家前来关注我的这个公众号:开发内功修炼,在这里我把我对网络、CPU、内存、硬盘等方向的深度思考都总结好放在了这里。



2.带着问题去深度思考、查各种资料在我思考的过程中,我需要回头去翻各种经典书籍、看Linux的内核源代码,以及其它各种网上的资料。

曾经有一次为了把一个内存的工作原理的问题弄明白,我嫌家里的书少,网上的资料不够,直接跑到国家图书馆待了半天。

30岁游戏行业八年努力却无一款成功上线游戏,心力交瘁是否该转行?_求职汇总-游民部落(gamecolg.com)


3. 别偷懒,加上动手验证实测

但其实这个时候你的理解深度还远远不够。而且还有可能是你查到的资料是片面的,甚至有可能都是错的。这时候的动手实际测试显得尤为重要,用各种性能测试工具也可以,自己直接亲手写一段代码也ok。反正就要用实践检验理论是否正确。不正确的时候,再去别的地方搜其它的解释。


如此往复迭代,直到把疑惑彻底消灭掉为止~我曾经为了搞懂一条TCP连接消耗多大的内存,一台机器到底能不能突破65535条连接而进行了大量的实验,理解了TCP连接的实现以后,客户端的并发也爆发了!百看不如一练,动手测试单机百万连接的保姆级教程!


4. 将你的成果用起来,提升项目效果最后这一步是点睛之笔。 

只有对实际工作提升的技术才是有价值的技术。把你的深度思考的结论应用到项目中,将项目的效果进行提升。举个我几年前的小栗子,当时接手了前任开发留下来的一个推送模块,推送一次要跑将近12个小时。经过我剖析业务逻辑后发现主要耗时都花在了用几百万的imei到一个几千万条记录的数据库里查询了,大量的网络IO加随机磁盘IO。我把业务逻辑进行了改造,而是一次性将表中数据全查下来。然后在本地机器上在执行顺序读取遍历查询。这样大量的网络IO、大量的远程mysql server的随机磁盘IO全被我干掉了。在mysql上和本地服务器上全部都是磁盘顺序IO。整体耗时直接从12小时下降到了20分钟左右。

30岁游戏行业八年努力却无一款成功上线游戏,心力交瘁是否该转行?_求职汇总-游民部落(gamecolg.com)

5.时间管理最后再聊聊时间管理吧。

住的尽可能离公司近一点,如果实在受成本限制,那就想办法把路上的时间利用起来,听一下技术音频课程,或者是包里随身带两本书。我个人的做法是我在公司的工作时间之内完成公司的开发需求。等到下班或者早上,反正每天固定要抽1-2个小时围绕工作中的技术点进行深度的思考,然后都写成技术文章并分享出来,


开发内功修炼当你每次都能用你深厚的技术能力把工作效果提升好几倍的时候,你其实就达成了一种技术和工作互相促进的良性循环。


最后,如果公司确实全年都把你的时间打到每天连1-2个小时都抽不出来,一个月只休息两三天。那可能还是趁早换一家吧。


特别声明:本文仅供交流学习 , 版权归属原作者,并不代表游民部落赞同其观点和对其真实性负责。若文章无意侵犯到您的知识产权,损害了您的利益,烦请与我们联系vmaya_gz@126.com,我们将在24小时内进行修改或删除。

相关推荐:

图形学推荐
  • 【八】MySQL操作表中数据
    【八】MySQL操作表中数据
    MySQL提供了功能丰富的数据库管理语句,包括向数据库中插入数据的INSERT语句,更新数据的UPDATE语句,以及当数据不再使用时,删除数据的DELETE语句。
  • 【七】MySQL约束、函数和运算符
    【七】MySQL约束、函数和运算符
    约束是一种限制,它通过限制表中的数据,来确保数据的完整性和唯一性。使用约束来限定表中的数据是很有必要的。
  • 【六】MySQL数据表的基本操作
    【六】MySQL数据表的基本操作
    数据表是数据库的重要组成部分,每一个数据库都是由若干个数据表组成的。换句话说,没有数据表就无法在数据库中存放数据。
  • 【五】MySQL数据类型和存储引擎
    【五】MySQL数据类型和存储引擎
    数据表由多个字段组成,每个字段在进行数据定义的时候都要确定不同的数据类型。向每个字段插入的数据内容决定了该字段的数据类型。MySQL提供了丰富的数据类型,根据实际需求,用户可以选择不同的数据类型。
  • 【四】数据库设计
    【四】数据库设计
    数据库设计是根据用户的需求,在某一具体的数据库管理系统上,设计数据库结构和建立数据库的过程。
  • 【三】MySQL数据库的基本操作
    【三】MySQL数据库的基本操作
    MySQL安装好之后就可以进行数据库的相关操作了。数据库就像车库一样,每一个小区里都有很多车库用来存放车,它们都有唯一的车库号。同样,在MySQL中也可以创建多个不同名称的数据库存储数据。
  • 【二】MySQL的安装和配置
    【二】MySQL的安装和配置
    MySQL数据库原来隶属于MySQLAB公司,在2008年1月16日,被SUN收购。在2009年SUN公司被Oracle公司收购。随着MySQL数据库功能的不断完善,该数据库几乎支持所有操作系统,同时也增加了许多
  • 【一】数据库入门
    【一】数据库入门
    简单来说,数据库就是一个存储数据的仓库,它将数据按照特定的规律存储在磁盘上。为了方便用户组织和管理数据,其专门提供了数据库管理系统。通过数据库管理系统,用户可以有效的组织和管理存储在数据库中的数据。