在工作中学习

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

【来信】

贺老师,您好:

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

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

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

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



    

目录
相关文章
|
9天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
7天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
357 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
7天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
348 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
20天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1338 8
|
1天前
|
存储 JSON 安全
加密和解密函数的具体实现代码
加密和解密函数的具体实现代码
189 136
|
6天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
19天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1429 87
|
6天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。