我是怎样成为一个程序员的

我是怎样成为一个程序员的

首页模拟经营如何成为一名程序员更新时间:2024-08-01

开始更新公众号内容以来,我就一直想整理我的技术变更路线;想理一理,我是一个怎样的程序员。

这比记录生活琐碎难,我一周又一周的推迟,一次又一次的提笔放下。按理说,自己有一个工作内容列表,将它们列出来,便会是一份儿成长历程。那是什么一直在阻延我呢?是回想不起某个时间段对敲代码的态度?是对自己所掌握的工作技能不自信?是认为自己深度不够?

最初,我是想将自己做过的系统一一列举出来,并在每一项后面添加一些感悟。但发现并不能对所有代码都有感悟,于是换成本篇内容,按照一些印象深刻的节点讲述。

电脑是什么?

初次接触电脑是初中的微机课,记不起来上课内容。能记住的是,当年很期待上微机课,在同学帮助(印象中的我,对各种操作都会战战兢兢,不敢点)打开游戏后,操控上下左右与空格,打飞机。

高中在同学带领下去过两次网吧,坐在网吧看电视、聊QQ。

大学之前,电脑对我来说,是一个可以玩游戏、聊QQ、看电视的奢侈工具,只存在于网吧与微机房。

Hello World

高考结束报志愿,可以选择六个专业。听说土木、建筑很好,便选择土木、建筑;剩下的专业,在看起来顺眼的名称中挑选。最终被调剂到软件工程,这程序员生涯开端,起于调剂。

大学学习的第一门编程语言是C 。听过课程简要介绍之后,第一次上机课程需要在控制台输出“Hello World”。正确输出之前,错误过许多次,打开VC6.0,建立工程,敲正确每一个字母……虽说按照教程操作,但一步一个坎。

#include <iostream> using namespace std; int main() { cout << "Hello World!" << endl; return 0; }

当第一次将Hello World输出到控制台的时候,有些欣喜。即便只是在一个黑框框中显示一行字。

大一经常去学院公用实验室练习打字,待到能够不看键盘盲打,感觉自己好厉害,进入一个新阶段。

许多课程

大学的课程有许多。

《程序设计基础》、《信息系统基础》、《离散数学》、《面向对象程序设计》、《软件工程导论》、《计算机网络与 通信》、《数据库原理与设计》、《数据结构与算法》、《Web开发技术》、《软件需求分析》、《操作系统原理》、《软件测试理论与方法》、《软件架构与设计模式》、《软件项目管理》,等等等等……

当时的目标是,每一门考试都及格。许多的课程,当时学起来,似乎能够懂得,但历经变迁,大部分课程,最后能留在脑子中的,也就只剩下它们的名字。浅尝辄止。

现在的认知中,许多的课程设计目的,只是为了让我们知道有某一种技术方向。以一本书进行举例,大学的课程,只是前言(序)部分,正文内容还未开始。

除了上述专业课,还会有政治、历史、数学、英语等,会选修另外的一些语言(如Java)课。已经忘记是由于什么原因,当时认为写C 是一件很酷的事情,所以许多的作业,都用C 完成。

编写过许多的“玩具程式”后,能够一口气敲出没有语法错误的代码,便很是开心。

Unity3D

第一份实习工作,在一家游戏公司,他们使用Unity3D引擎进行开发。初次接触Unity3D,转为使用C#语言编程。其后的一两年时间,都使用Unity3D做东西。

看Unity3D官方文档,某一瞬间忽然意识到:哦,原来Update函数是每帧都调用的啊,每一秒钟会执行30帧,Start函数会在GameObject创建时候执行。其后的很长一段时间,都感觉自己理解了Unity3D的运作规则。并没有去想想这些规则是如何实现的。

时隔六七年,现在已经不太记得当时写的代码长什么样子。不过那个时期,似乎主要目标只是将功能实现,并不太注重效率。会稍微注意一下代码可读性,对以大量的abcd、中文变量命名有些嫌弃,对在U3D中将几十个GameObject放在一个层级感到烦心。

模糊的感觉到当时做的东西,不精致。

语言

随着工作(项目)变更,使用过C 、C#、Java、Python、Lua、JavaScript。

C 很酷。

C#和Java看起来一样。

使用Python,感受到不一样,不用写变量类型,只需要注意缩进,写起来很爽。

……

有一段时间,又觉得自己很厉害:语言都是类似的;一门新的语言,给我一点时间,让我稍稍熟悉下它的关键字,便可以开始做项目。

不过近期,思维有了变化。之前的“觉得”太过自信。每一门语言都是博大精深的,都需要许多时间去学习、研究;需要知道它们的内部实现原理,胸中自有丘壑后,才能敲出更好的代码。

写逻辑

不算实习期的内容,毕业后到现在,已经工作七年半的时间。细细想来,已经好长的时间过去。

那这些年做的最多的事情是什么呢?写逻辑!

什么是逻辑?我的理解是:

需求方(项目经理、游戏策划)提出当时项目所需要的各种需求,它们会随着项目死亡而湮没在某个不知名的硬盘角落。

随着做的项目多起来,许多需求,都是相似的、生命周期是短暂的。

到最后,程序员的工作,便是许多重复内容。

这些需求所对应的程序实现,这些重复的代码,就是逻辑。

而逻辑写多了,不加总结,就真正成为搬砖人,只是重复劳作。一直写逻辑的我,有那么两三年,一直在原地踏步。

走在前面的人,真的非常厉害。他们为了减少重复劳作,提高代码复用率、可读性、易于扩展,提出了设计模式。

最近几年所跟的项目,用到了许多的设计模式。但在我有意识的去学习设计模式之前,我并不知道那就是设计模式。

三四年前,项目中的导师让我去阅读《重构》这一本书,书中讲述了许多优化代码的具体方法。不知道从什么时候开始,脑子中有了这个印象:

按照一些规则将代码进行重构,重构后的代码,就会是设计模式的具体展现。

新知识的学习

程序员,就是一个需要不停学习的行业。想为这“不停学习”写两句话,到落笔时刻,我只能左右食指轻轻敲击F与J。

我敲啊敲,敲啊敲……

一个词语出现在我的脑子中:学以致用!

我想学习的新技术有许多,熟练的却很少。

按照我的学习经历,如果要真正的熟练掌握一项技术,便需要真正的在工作中用到它,经常的用到它。否则,便会很快忘记这些内容。嗯,要学以致用。

但是,新知识又是必须学习的,不能只在工作需要时临时抱佛脚。我现在的理解,有这么一点:

学习一项新技术后,虽然不能完全的记在脑子中,但是可以借助笔记。学习当时,用自己的语言将其总结记录,待需要时候,翻一翻。

举例说一说此前的学习经历:

Shader

作为一个游戏程序员,刚开始接触Unity3D,就知道要学习渲染。

这么多年过去,即使按照一份教程敲过一遍代码、研究过一段时间游戏中效果表现。但现在印在脑子中的清晰内容,也就只剩渲染流程。

awk指令

线上运行的项目,往往需要进行一些数据统计。看见大佬们刷刷刷的搞定,于是模仿。

使用多次后,我也能够刷刷刷的统计出结果。

未来

作为一枚普通程序员,需要学习的东西还有很多,且前行~

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved