【来信】

贺老师,您好:

  我是一名刚刚毕业的大学生,大学期间自学的C++,简单的数据结构,看过vc的视频教程,当时理解不懂书上的知识,学长就告诉我要多读几遍书,我就死记硬背的看了好几遍。但是缺少编程实践,没有做过什么项目,自己也没有写过什么小软件(类似图书管理系统的),我自己写过实现一些功能的小程序(比如用mfc实现的计算器),学了1年多了,就知道看书、看视频,没有很好的编程实践。

  现在我被一家小的游戏公司录取了,我想改变我现在的现状,我不想做码农,但是我遇到了几个问题?还望贺老师能百忙之中帮我解决一下

  1、实践很重要,但是怎么去开展实践呢?目前我练习的是您博客中http://my.csdn.net/sxhelijian中的习题,做起来收获,难道我自己就不能设计并开展自己的编程实践吗?非要做别人写好的题目?但是我不知道怎么去展开实践?编程是我的一个梦想,大学报考计算机专业分数不够,家里也没钱给我调系,我就一直坚持着学C++,走了很多的弯路。

  2、我是很幸运的,毕业以后一家刚刚创业的编写棋牌类游戏的公司(一共14个人)收纳我当C++游戏程序员,我就有一点C++的基础,项目经理人挺好,让我直接看麻将的代码(大概一万行吧),说这是最快的提高方式,我很听话的看代码,从前我只看过200行以内的代码,开始时,不知道怎么阅读代码头很晕,然后慢慢的自己理清逻辑思路知道函数调用关系,然后深入到具体功能的函数内部看是怎么实现相应功能的,这些都是在一个月之内学的。问题是:现在公司要我改游戏中的bug(很多是逻辑错误,比如麻将的分数算错了),我改的很慢,而且有时候改好了这里,又引起了一系列的其他的错误,然后我人就懵了,但是那些代码我还真能看懂,但是为什么遇到bug以后就是改不好呢?

  3、我处理不好工作和学习的关系,我曾经带着vc的视频到公司去看,太2了,项目经理找我谈话告诉我作为一个程序员,要知道怎么样在工作中去学习,但是如何究竟如何在工作中学习呢?

  9:00-5:30是我们的上班时间,我算是比较刻苦的,早上6点起来晚上11点左右睡,但是我根本看不清自己的努力方向,浪费了时间却没有什么成效。工作中我们主要就是阅读代码,修改bug,难道我不能在上班时间看点技术方面的知识吗?我们用的游戏引擎是HGE,真的很迷茫,真心希望贺老师能为我指点下迷津

【回复】

  你是一位很求上进,也很人毅力的年轻人,很遗憾的是,学长当年为什么不加一句,多看书之后还要多实践,哪怕是将别人写好的自己再重做一遍也算。其实,你应该也知道,问题就是“死记硬背的看”,“缺少编程实践”,现在的工作中,你必须在学习方式上有所改变。

  有点不理解的是,“不想做码农”让我意外,是否只是笔误?或者,是你我对“码农”含义理解的不同。正在这个自己喜爱的事业的起步阶段,不要给自己太多灰暗的提示。

  1、开展实践的问题。我博客中的题,适合初学者,是否对你现在合适,我不好判断。可以挑着做一些,挑那些需要做些思考才能做出来的题目,以能帮助自己会想问题为目的。

  2、阅读代码的方法,可以往搜索框里输入“如何阅读代码”,会得到有很多经验分享。但现在我的感觉是,你在使用调试工具方面至少还不熟练。在修改程序的时候,也没有注意到各个模块之间的耦合关系,这可能还是因为代码没有真正看明白。改 bug带来的种种问题,一方面,应该是实践少带来的后遗症。如果在学编小程序的过程中,是经过该有的实践的,见识过分布在小程序中的各种问题,现在的很多问题就不是问题了。这是看懂和会做之间的区别。另一方面,你该看看软件工程方面的书了,轻松一些看,将其中涉及到的设计、实现、测试原则和你现在遇到的问题结合起来,看书时不要硬往脑袋中塞,可以看快一些,但要找到共鸣。要做程序员,仅凭着一门语言的功底,真不够。

  3、看VC视频,也是一种学习,但这种学习仍然是一种被人灌的方式,其内容更基础,工作了,确实更适合自己悄悄看,如果有必要的话。在工作中学习,就是结合着工作内容去学。我感觉你还是没有去放开,认为学习就一定是要照着哪本教材哪段视频,而实际上最重要的是将你已经学到的东西和目前阅读、调试代码中的内容结合起来。如果看到的那一段内容不明白了,或者通过调试工具,或者通过查看手册(而不是课本)搞清楚。还可以将这一段代码分离出来,单独设计一个测试函数进行调试,避免不当的修改影响全局。

  还有一种感觉,不一定对,你是一个很认真的人,但也是一个依赖性很强的人,并不习惯自己独立去面对一些事情。有人给你做些指导,你会认真去按这个指点去做,有人说什么了,自己也就这样认为。别人说的对不对,适不适合你,你首先要有个判断,然后按自己的理解去体验后再得到结论,要勇于这样去做,要习惯这样的一种思维。现在参加工作了,更是这样。看书、看视频、听人指点,都需要由你自己与自己的实际结合起来。再一个,可能也出于你太认真了,你可能忽视了你周围能够帮助你的资源。你的来信中的很多问题,实际你是可以得到你的同事的帮助的,这种帮助并不是一定要某领导开个会,或专门安排个辅助什么的,可以就是在一起去饭厅的路上,但一定不能是人家正忙着的时候,问话之前带个张哥、李姐之类的称呼,很容易地就开口了。彼此是同事,上下班、休闲时间的非正式交往,这是职场里不可以缺少的内容,也是最宝贵的资源。和同事们搞好关系,玩好,而不是一天到晚将自己闷起来学,这样的进步更快,也让自己能轻松一些。

  一切围绕着手边正在做的事,用好网络和手册,利用非正式的交流获得团队的支持,缺什么补什么,注意效率,不能再一味地储备,这大概是你需要的调整。

  我的观点,也仅供参考,切不可以全盘接受。这样做,相信你能在工作中找到自己。