程序员的成长之路

2023-05-16

1. 初识编程

  清楚的记得2008年上大学,当时学的第一门编程语言是汇编语言,第一堂课上,老师就说这个学科的挂科率是最高的,大家做好心理准备,后来证明,这并不是下马威,因为真的有很多同学挂在了汇编上面。

  由于觉得汇编的交互性不好,所以后来学习 visual c++ 课程的时候,异常喜欢,虽然也选修了java编程,但是只介绍了简单的语法,现在只记得那个老师年轻帅气了,哈哈哈哈。因为觉得 c++ 的指针、链表都蛮有意思的,就在课余时间对 c++ 侧重进行了学习和了解,当时 c++ 的书是学院编写的,后来我还去找了谭浩强老师的《c++程序设计》来学习,再后来还学了MFC,不记得是选修还是必修了,虽然界面不好看,但好歹是图形化的界面。

  基础课程里让我印象深刻的学科有:计算机导论、算法设计、数据结构、数据库、密码学,这些课程学习对于编程这件事情上还是有很大的指导意义的。

  毕业设计的时候,选了基于JPEG的图像压缩算法实现的课题,也是用c++编写的,记忆犹新的是当时做完压缩算法后,不知道如何将霍夫曼编码后的数据存储为图像,然后在图书馆泡了一周,翻了很多书籍,然后有天睡觉在梦里突然的灵光一闪,第二天起床依旧思路清晰,于是在宿舍花了1个小时就把这个功能完成了,成就感简直爆棚。

2. 求职回忆

  依稀记得大三上学期,我跑去参加了学校的大四毕业生的校园招聘会,看了很多的招聘的岗位要求,对于 c/c++ 的岗位要求进行了了解,还在小本本上做了记录,顺便还找了几个用人单位的技术做了简单的沟通,提前接受了打击,想着早点知道自己的不足,总归好过真正找工作的时候发现问题吧,那次本不属于我的招聘会,给我留下了深刻的影响,也让我提前积攒了一些经验。

  后来基本上找的都是 c++ 研发岗的职位,参加了南京的华为、烽火科技、润和、中电二十八所、国电南瑞,杭州的浙大中控,上海的宇信易诚等公司的招聘会和面试,由于中电二十八所主要是java岗,虽然对研究所有不错的印象但综合考虑还是放弃了这个offer,还因为地域的原因放弃了一些其他的offer,最终决定和同学一起去了杭州的浙大中控 c++ 开发岗,现在想起来,当时我们学校去杭州的人还蛮多的,大部分是去的海康,现在的海康发展也越来越好了。

3. 编码趣事

  还记得毕业工作的第一年还是用MFC对工业软件进行新功能的开发和维护,现在估计听说过 MFC 的程序员都不多了,那时候为了提高技术能力,翻遍了侯捷写/译的一系列书籍,由于书籍太贵,还和同事一起买了“便宜”的影印版《STL模板源编程》等,最多的时候1个月能刷3-4本书,当然不包括像《C++ Primary》这类的工具书,另外吐槽下当时我觉得这本书,根本就不Primary,后面的1/3看起来太吃力了,工作初期基本上是啃不动的。

  当时我们有个同期入职对MFC很熟悉的同事,我在遇到问题的时候,会问他,后来我领导发现后,找我进行了谈话,遇到问题要多尝试自己解决问题,最好是网上查资料、读源码、多Debug,后来我也按领导的指导,更加独立的进行了代码开发,也是我影响非常深刻的事情,后面证明,面对问题多思考和独立解决,是提高自己能力的最快速有效的途径。

  对于第一家工作的公司,还是有着非常独特的感情的,还有个印象深刻的事情是进行代码评审,对list进行for循环的下标访问,根据同事的建议,调整成了使用迭代器进行访问,同时还对编码规范进行了沟通,及时发现问题和修复问题,养成了良好的编码习惯。

  工作的前三年,一直是全职做 c++ 的开发,也算是做了不少的积累。

  后来换工作去了惠普,面试的时候问了tcp/ip、sql等技术,也问了 c++ 的技术,面试官知道我写过MFC后,感叹会MFC的人已经不多了,我也感叹MFC写起来,有时候真的是会心累,再后来入职后,哦豁,基本是写java,万变不离其宗,多学习学习,继续码代码吧,在惠普的2年里一直在重庆PM带的一个项目里面,除了项目开发外,还会组织技术分享,提高大家对技术的热情。

  在项目开发的过程中有个非常有趣的事情,当时根据需求,需要对一个 c++ 模块进行功能调整,由于我写过 c++ ,所以PM安排我来做这件事情,将原来每分钟调用频次100内的模块,根据调整的需求,同时调用频次从每分钟100提高到了每秒钟1000次不止,想着原来的代码应该没有太大的问题,就按需求在原来的基础上进行了开发,在测试的时候,发现连续运行24h后有内存泄漏的现象,于是我就开始进行问题排查,我将所有的手动new和delete的地方都进行检查,没有发现问题,由于是一个工业软件的一个插件模块,差不多代码量在2w行以上,所以我将模块里面核心实现的几个部分都拆解出来,感觉时间不够用,所以我就申请在家办公,花了3天,每天肝到凌晨四五点,后来使用valgrind内存泄漏检测工具,发现以前的代码在调用正则表达式的三方库以后,没有进行释放,从而导致了内存泄漏,当然,后来我去看了三方库的源码,觉得也不能完全怪之前写代码的同事,因为用来释放内存的函数命名也不明显,让使用的人认为调用了clean就算结束,其实不然。

  下面附上一张当时加班拍的照片,看背影都能感受到头发有多凌乱,让人更加悲伤的事情是,现在的头发,已经没有了以前的浓密,写到这个地方,作者留下了心酸的泪水。

最强加班狗

  后来去了做人工智能的公司,主要技术栈是java/python/vue,进去的第一反应是我大 c++ 竟然不配拥有姓名,虽然最开始用 c++ 写了一个机器人的调度模块,后来用的机会也少了,根据我们CTO的指点,去学习了python数据分析、搜索引擎等技术,阅读了不少的书籍,除了带项目外,自己也写一些模块,这两年,每年都有一小部分产品开发中需要用到 c/c++ ,去年基于freeswitch做了mod_asr的开发,今年基于mrcp框架集成了一个mrcp server,还在源码的基础上,写了个测试工具,对 c++ 真的是又爱又恨,比起java/python/golang写起来实在是太耗时了,很多功能都要自己去实现,好处是灵活性强,坏处是花的时间多,且稳定性非常依赖程序员的个人能力。

4. 永远在路上

  现在回想,也许正是因为经常在工作使用 c/c++ ,通过面向对象编程的思想,在面对问题和分析问题的时候,帮助我进行了更加细致和全面的思考吧。

  当然,平时在工作中秉承着,用最合适的工具去做最合适的事情,编程语言只是一种工具,如果你手上只有锤子,那么看哪里都是钉子,千遍一律的去敲,多掌握一些技术并不是坏事,大家都知道,想要把事情做好,工具越齐全,在多数情况下,能事半功倍。

  当然,每个人的精力都是有限的,个人觉得比较好的做法是先精通一门语言,一般在前3年的成长比较快,然后在掌握了自己主要的这门语言后,再去学习几门其他语言,这样面对事情会更加的得心应手。当然,从励志成为程序员的那一刻开始,就可以多看看设计模式相关的书籍,能够帮助我们进行更好的设计。

  说了这么多的经历,个人觉得支撑我到现在,一直持续学习的,如果一定要只归功于一样东西的话,那就是热情吧,因为有热情,所有的付出都是喜悦,就算Debug到凌晨的过程是艰辛的,但是最后的结果也一定还是喜悦。

  虽然现在也学习了管理相关的知识,觉得也挺有意思的,但是对于技术的热爱,应该是永远的不会消退的。就让处于信息时代的我们,一起创造出一个更好的互联网科技时代吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序员的成长之路 的相关文章

  • 落花渐欲迷人眼,移动前景看用户

    火红的深秋10月 xff0c 万众瞩目的第三届中国移动开发者大会于19日在北京国家会议中心如期举行 本次大会邀请到了诸多互联网巨头公司中相关项目负责人及移动互联先驱精英 xff0c 百家争艳齐聚一堂 xff0c 共同探讨在移动互联网高速发展
  • 新员工总结

    感谢29 日下午张宁主编为我们移动频道新员工安排的培训 通过本次员工培训 xff0c 在工作目标和方向上有了较为清晰的认识 xff0c 主要总结如下 xff1a 1 明确移动频道工作重心 xff1a 移动 应用 开发 围绕这三点 xff0c
  • 微软Win8开发马拉松感悟

    前几天前往微软win8开发者马拉松大赛 xff0c 对于微软中国有了一些了解 xff0c 也有了一些体悟 xff0c 在这里稍微记录一下 首先一点就是微软对于开发者的态度 在会场看到了许多沙发和抱枕 xff0c 还有毛毯等 xff0c 另外
  • 基于prometheus的网络指标监控

    1 网络指标监控 网络设备 交换机 路由器 防火墙 本身并没有太多的监控方式 xff0c 常规的是使用snmp xff0c 通过oid去采集网络设备的指标 xff0c 例如 xff0c 流量或者错包 xff0c 不过近年来也出现了新的采集方
  • 【解决】UART问题

    UART和USART区别 UART xff08 Universal asynchronous receiver transmitter xff09 xff1a 通用异步收发器 USART xff08 Universal synchronou
  • 小白也能配置VScode的C/C++环境

    必要软件的下载 前往下方Github链接下载 xff0c 选择这里下载 下载地址 xff1a https github com SDchao AutoVsCEnv WPF releases latest 2022 9 25 更新 xff1a
  • 网络协议栈0:从一个例子开始

    最近因工作需要写一个网卡驱动 xff0c 晕倒 xff0c 没有任何网络知识 xff0c 就写网络驱动 xff01 可是 xff0c 为了五斗米糊口 xff0c 不得不从啊 于是 xff0c 打算从网络协议栈开始 xff0c 把网络搞一搞
  • Ubuntu 18.04 Intel RealSense D435i 相机标定教程

    1 D435i相机简介 RealSenseD435i 是一款立体视觉深度相机 xff0c 如下图所示 xff0c 其集成了两个红外传感器 xff08 IR Stereo Camera xff09 一个红外激光发射器 xff08 IR Pro
  • 使用IDEA创建Servlet项目

    使用 IDEA创建Servlet项目 原料 xff1a IDEA 2016 xff0c Tomcat8 0 步骤如下 xff1a 1 创建项目 File gt New gt Project gt Java Enterprise 如下图所示
  • px4基本知识

    1 PX4自驾仪 PX4是与平台无关的自动驾驶仪软件 xff08 或称为固件 xff09 xff0c 可以驱动无人机或无人车 它可以被烧写在某些硬件 xff08 如Pixhawk v2 xff09 xff0c 并与地面控制站在一起组成一个完
  • React尚硅谷115-126(setState、Hooks、Fragment、context、组件优化、renderprops、错误边界、组件通信方式总结)

    115 项目打包运行 npm install serve g serve build 116 setState setState是同步的 xff0c 但是引起页面更新动作是异步的 xff08 状态的更新是异步的 xff09 相当于this
  • 程序员跨越式成长指南

    我的 GitChat 达人课 程序员跨越式成长指南 xff0c 更新了三篇文章 xff0c 现在完成的内容如下 xff1a 导读 xff1a 开发路上的两次关键跨越 第01课 xff1a 如何做到选择大于努力 第02课 xff1a 开发者的
  • 树莓派一些传感器的使用

    树莓派一些传感器的使用 Part 1 树莓派GPIO编号方式和引脚说明 参考 xff1a 树莓派开发系列教程9 树莓派GPIO控制 1 功能物理引脚 从左到右 xff0c 从上到下 xff0c 左边基数 xff0c 右边偶数 xff0c 1
  • centos 安装Git-cola

    首先安装Git sudo yum y install git 找到 git all noarch 安装这个 sudo yum install git all noarch 61 61 61 61 61 61 61 61 61 61 61 6
  • C++继承总结

    继承的概念 继承机制是面向对象程序设计使代码可以复用的重要手段 xff0c 它允许程序员在保持原有类特性的基础之上进行其他扩展 xff0c 增加功能 xff0c 这样产生的新类 xff0c 称之为派生类 继承呈现了面向对象程序设计的层次结构
  • 读完《大数据时代》的一点儿心得

    工作一段时间之后 xff0c 总喜欢读读书 xff0c 这是多年养成下来的一个习惯 读书使人避恶 xff0c 读书使人向善 xff0c 读书使人聪慧 xff0c 读书使人高尚 xff0c 我们都是聪明人 xff0c 对吧 xff1f 哈哈哈
  • 产品管理精华:第十一,数据的思维方式

    xfeff xfeff 数量庞大 增长迅猛 种类多样的数据已经成为企业在大数据时代发展不得不面临的现实境况 这是挑战 xff0c 也是机遇 基于客户需求 xff0c 提供领先 全面 有效的解决方案 xff0c 帮助企业获取商业洞察力 xff
  • 产品管理精华:第十四,产品炼成?

    xfeff 最近一段时间在准备信息系统项目管理师 的考试 xff0c 在备考复习过程中 xff0c 通过系统学习和理解项目管理相关知识 xff0c 发现项目和产品管理联系很密切 项目过程是伴随着产品过程而生 我们先来了解一下项目的定义 xf
  • glib简单记录包括字符串,主循环,回调函数和xml解析

    一 将最近用到的glib字符串功能整理了下直接用程序记录比较好看懂 define MAX LEN 100 gchar demo char msg gchar pcfgfile 61 NULL para 61 NULL va list arg
  • 产品管理精华:第十六,品味

    美感是第一道关卡 xff0c 丑陋的数学在世界上无法生存 G H 哈代 xff0c 一个数学家的道歉 品味 xff0c 如今很少听到这个词了 xff0c 可能被一些新的 xff0c 流行的叫法替代了 很长一段时间 xff0c 谈论品味这玩意

随机推荐

  • 《产品管理精华》目录

    产品管理精华 目录 本文是这个目录 xff0c 可以快速找到你需要的内容 xff1a 产品管理精华 xff1a 第一 xff0c 谁是优秀的产品经理 xff1f 产品管理精华 xff1a 第二 xff0c 工具 xff0c 适合自己的最好
  • 电商分销的社交化运营实践

    最近一段时间专注于研究社交化的电商分销运营体系 xff0c 如何最大化利用碎片化社会资源来整合营销渠道 目前最有代表性的电商分销就是全民分销概念 xff0c 它的最大特点在于通过社交网络 xff08 大部分是通过微信商城开店 43 三级返佣
  • 《产品管理精华》序

    今日事 xff0c 今日毕 xff01 xff0c 说起来容易 xff0c 做起来难 知道为什么要去做一件事 xff0c 这样做了哪些人都受到实惠 xff0c 领悟生活的趣味 xff0c 自己是否也得到了快乐和满足 xff0c 每一份付出都
  • 个人简介

    经验丰富的产品设计师 xff0c 专门从事与产品设计相关的研究 趋势分析 理念探索和产品研发 专注于政策脉搏和市场趋势的研究 xff0c 成功研发多个互联网相关领域产品 xff0c 对移动互联网产品架构 运营管理有较为深入的管控能力 欢迎大
  • 产品管理精华:第一,谁是优秀的产品经理?

    34 人因为梦想而伟大 34 英格丽 褒曼 每个人的心中都有一个梦想 xff0c 梦想是美好的 xff0c 但是实现梦想的道路是曲折的 xff0c 无数人在实现梦想的道路上遭遇了无数曲折 xff0c 尽管如此 xff0c 他们依旧大步向前
  • 产品管理精华:第三,需求调研,从用户出发

    因为需要 xff0c 让我更加完美 佚名 产品经理都会遇到 客户 用户 这两个概念念 xff0c 它们谁更重要也一直争论不休 用户 近乎苛刻的需求可以不断产品体验和质量 xff0c 同时产品投入市场之后都会遇到变现这个问题 xff0c 总需
  • 第1章 概述--PADS的历史版本

    1986年 xff1a PADS PCB xff0c DOS操作系统 1989年 xff1a PADS Logic xff0c DOS操作系统 1990年 xff1a PADS 2000 xff0c DOS操作系统 1993年 xff1a
  • docker安装图形化界面

    分享第一份Java基础 中级 高级面试集合 Java基础 xff08 对象 43 线程 43 字符 43 接口 43 变量 43 异常 43 方法 xff09 Java中级开发 xff08 底层 43 Spring相关 43 Redis 4
  • 嵌入式软件开发岗面试题

    1 单片机IO口开漏输出和推挽输出有什么区别 xff1f 答 xff1a 开漏输出 xff1a 开漏输出只能输出低电平 xff0c 如果要输出高电平必须通过上拉电阻才能实现 就类似于三极管的集电极输出 推挽输出 xff1a 推挽输出既可以输
  • pytorch 查看模型结构 网络参数

    用法比较简单 xff0c 不过容易忘 xff0c 记录一下 假设已定义好模型 xff0c 名为model 查看模型结构 xff1a gt gt gt print model 查看网络参数 xff1a for name parameters
  • 【Linux网络编程】select函数实现TCP并发服务器

    I O多路复用 应用程序中同时处理 多路 输入输出流 xff0c 若采用 阻塞模式 xff0c 将得不到预期的目的 xff1b 若采用 非阻塞模式 xff0c 对多个输入进行轮询 xff0c 但又太浪费 CPU 时间 xff1b 若设置 多
  • 【校招】面试_华为_通用软件工程师_二面

    1 面试信息 面试形式 xff1a 视频面试 面试时间 xff1a 2020 03 25 11 30 00 AM 面试时长 xff1a 40分钟 面试职位 xff1a 软件技术开发部 通用软件工程师 xff08 无线网络产品线 通用软件开发
  • 你必须会的启发式搜索算法--A*算法

    一 算法原理 A 算法 xff0c 就是解决在一个平面 grid地图中寻找起点到终点的最短路径问题的算法 xff0c 类似于Dijkstra算法和BFS算法一样 xff0c 属于广度优先搜索 实际上它还是一个启发式搜索算法 xff0c 什么
  • C/C++/LINUX 资源网站

    C C 43 43 LINUX 资源网站 本博客记录学习 开发中常用的网站 http www cplusplus com c 43 43 官网 xff0c 包含c 43 43 介绍以及一些简单的使用样例 目前主要用来查询 STL 的使用 h
  • 焊接单片机最小系统板,驱动lcd1602

    今天分享一些我制作单片机最小系统板的过程以及遇到的问题和解决办法 本人萌新一枚 xff0c 写文章就是我们大家互相学习交流 之前学习的是郭天祥的tx 1c单片机 xff0c 书中的例程都写的差不多了 xff0c 就想着自己焊接一个最小系统板
  • [ROS]极简开发环境建立流程(新手适用)

    ROS开发环境的建立 一 前言二 操作系统环境1 Ubuntu2 VMWare 可选 三 ROS运行环境1 ROS2 ROS周边设置3 ROS开发包及帮助获取方式 四 ROS开发环境1 建立工作空间 workspace2 Original开
  • 伽马函数与贝塔函数的定义

    伽马函数 称以下函数 61 0
  • Linux kernel development

    这几天一直在读经典的linux入门书 Linux kernel development 第三版即LKD xff0c 这是我第一次读英文版的技术书 xff0c 颇有些高兴 之所以读 xff0c 一是因为学过操作系统的理论知识 xff0c 想看
  • Windows + Ubuntu20.04双系统详细安装教程

    Windows 43 Ubuntu20 04双系统安装 1 制作启动盘1 1 从ubuntu官网下载ubuntu ISO文件1 2 下载启动Rufus1 3 将ISO文件写入启动盘1 3 1 设备 xff08 Device xff09 1
  • 程序员的成长之路

    1 初识编程 清楚的记得2008年上大学 xff0c 当时学的第一门编程语言是汇编语言 xff0c 第一堂课上 xff0c 老师就说这个学科的挂科率是最高的 xff0c 大家做好心理准备 xff0c 后来证明 xff0c 这并不是下马威 x