程序员的成长之路

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(使用前将#替换为@)

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

  • Android Studio 使用jni调用第三方so

    源码部分 项目需要调用第三方so函数 xff0c 由于需要调用的函数不符合jni规范 xff0c 这里用jni调用编写的native方法 xff0c native方法再调用三方so函数 Android mk LOCAL PATH 61 ca
  • 4年产品点滴心路——谈谈形而上的3个产品素质

    我是一名互联网产品人员 xff0c 曾供职过多家互联网公司 xff0c 包括一些员工数千的老牌龙头企业和一些初创公司 排除老生常谈的产品技能以及方法论 xff0c 我最近对一些大型企业初创项目 新型领域创业公司的产品人员的工作软实力有很大兴
  • 四年产品点滴心路(二)——互联网公司的组织规模与产品特点浅析

    新年伊始 xff0c 让我们放慢脚步 xff0c 回溯互联网服务长河的源头 xff1a 计算机技术 2000年以来 xff0c 国内普通大学里 xff0c 一位只要对计算机 软件有兴趣并打算在此行业长远发展的大学生 xff0c 大都经历过在
  • 云之彼端,牵手未来—— “我思故我在”—我眼中的第四届中国云计算大会

    一 xff0e 满怀激动踏征程 第四届全国云计算大会初体验 2012年5月23日至25日 业界瞩目的第四届中国云计算大会 xff08 以下简称 大会 xff09 在京隆重举行 本次大会由国家发展和改革委员会 工业和信息化部 北京市人民政府及
  • 落花渐欲迷人眼,移动前景看用户

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

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

    前几天前往微软win8开发者马拉松大赛 xff0c 对于微软中国有了一些了解 xff0c 也有了一些体悟 xff0c 在这里稍微记录一下 首先一点就是微软对于开发者的态度 在会场看到了许多沙发和抱枕 xff0c 还有毛毯等 xff0c 另外
  • C/C++ | g++ 编译指定了链接库路径,仍报错找不到函数:Undefined reference

    题外话 xff1a 这次是被编译顺序坑了很久 还是基础学的不扎实 实验背景 xff1a 用g 43 43 编译cpp文件 xff0c 依赖于opencv 待编译的cpp文件cv test cpp内容如下 xff1a include 34 o
  • 什么是end-to-end的模型

    端到端的模型目前很流行 xff0c 那么什么是端到端的模型呢 xff0c 有没有一个很比较明确的解释 xff1f 在 1 中 xff0c 作者是这样说的 The entire model is trained jointly from sc
  • 排序算法系列:归并排序(Merge sort)(C语言)

    通俗理解 xff1a 运用分而治之的思想 xff0c 编写递归函数 xff0c 将大数组排序转化为小数组排序 xff0c 最后再将其合并 void merge sort int p int low int high int mid 61 l
  • Android 框架问题分析案例 - 谁杀了桌面?

    写这篇文章的契机是因为一个实际遇到的问题 这个问题其实不难 不过在分析了这个问题然后写日记的时候 我突然觉得这个问题分析的过程有必要记录一下 分享给大家 分析过程中有用到一些工具 一些方法 也从另外一个聪明的小伙伴那里学到了一些分析技巧和工
  • C#操作xml文件的方法

    xml文件格式如下 xff1a lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt userdata createuser 61 34 false 34 gt lt datac
  • 程序员跨越式成长指南

    我的 GitChat 达人课 程序员跨越式成长指南 xff0c 更新了三篇文章 xff0c 现在完成的内容如下 xff1a 导读 xff1a 开发路上的两次关键跨越 第01课 xff1a 如何做到选择大于努力 第02课 xff1a 开发者的
  • 库文件libmng.so.1缺失解决办法

    在Ubuntu14 04下装DC版本K 2015 06 xff0c 发现不能找到以下一个或者多个库文件 xff08 以一个为例 xff09 xff1a libmng so 1 找不到是因为库比较新 xff0c 而你的工具所需要的库比较老 x
  • 产品管理精华:第十一,数据的思维方式

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

    xfeff 最近一段时间在准备信息系统项目管理师 的考试 xff0c 在备考复习过程中 xff0c 通过系统学习和理解项目管理相关知识 xff0c 发现项目和产品管理联系很密切 项目过程是伴随着产品过程而生 我们先来了解一下项目的定义 xf
  • 产品管理精华:第十六,品味

    美感是第一道关卡 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 对移动互联网产品架构 运营管理有较为深入的管控能力 欢迎大
  • Android P 增加系统属性必读

    如何增加属性 Android P 对属性配置有很严格的要求 xff0c 不建议增加system 分区内的属性 xff0c 建议增加的属性都在nonsystem分区 Non system 分区的限制 Android P 为稳定的exporte
  • 产品管理精华:第一,谁是优秀的产品经理?

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

    因为需要 xff0c 让我更加完美 佚名 产品经理都会遇到 客户 用户 这两个概念念 xff0c 它们谁更重要也一直争论不休 用户 近乎苛刻的需求可以不断产品体验和质量 xff0c 同时产品投入市场之后都会遇到变现这个问题 xff0c 总需
  • IBM LinuxONE Community Cloud 免费试用申请教程

    在某乎上看到IBM上可以免费使用VPS的福利 xff0c 正好这一时间需要一台CC服务器 xff0c 所以记录一下 xff0c 分享给各位 因为oralce 亚马逊一年的白嫖都用过了 xff0c 阿里白嫖一个月也到期了 xff0c 所以只要
  • 使用IPV6+DDNS连接内网主机

    0 前言 IPV6已经普及多年 xff0c 但是作为互联网用户好像并没有在实用性上有更多感受 xff0c 或者说IPV6并没有让普通用户感觉到改变 我作为网络从业者其实也没有过多关注 在工作中普遍遇到的还是基于IPV4的网络 xff0c 比
  • HFish蜜罐的介绍和简单测试(二)

    目录 1 HFish使用说明 1 1 部署模型 1 2 添加 删除节点 默认节点 新增节点 删除节点 1 3 添加 删除蜜罐 直接修改蜜罐服务 创建模板 xff0c 应用到多节点 1 4 查看攻击 2 卸载 2 1 卸载Linux管理端 2
  • HFish蜜罐的介绍和简单测试(三)

    目录 0 HFish平台管理 0 1 报告管理 0 2 系统配置 1 蜜铒配置 1 1 什么是诱饵 1 2 蜜铒使用场景 1 3 蜜标使用场景 诱饵定制 分发接口 告警信息 在学习蜜罐时 xff0c HFish是个不错的选择 首先是免费使用
  • 网工神器:PNETLab模拟器踩坑过程

    目录 0 前言 1 PNETLab介绍 2 下载安装 2 1 下载 2 2 导入 2 3 启动 2 4 注册和登录 3 汉化 4 镜像 5 下载实验 6 控制台 5 1 HTML控制台 5 2 默认控制台 7 总结 0 前言 由于工作需要
  • 无线攻击笔记

    第11章 无线攻击 任务50 xff1a 无线渗透 exe 802 11只涵盖了下面黄字部分的2层 xff0c 802 2定义了LLC层 802 11 下面的协议组 xff0c F是正式标准 xff0c 大写 xff0c abcde小写是在
  • Jumpserver入门介绍

    大多数的安全设备都接触过 xff0c 只有堡垒机没有深入了解 xff0c 所以一直想了解一下堡垒机的安装和使用 市面上好多商业化的物理设备堡垒机 xff0c 目前没有接触 xff0c 幸好有有开源的堡垒机 Jumpserver 今天安装测试
  • Centos 7.6 源码编译安装 MariaDB 10.5.9

    文章目录 准备工作创建用户和组创建数据库相关目录删除数据库相关文件 安装相关包安装依赖库安装编译包 编译安装 96 MariaDB 96 配置 96 MariaDB 96 本文主要记录如何在 CentOS 7 6 中编译安装 MariaDB
  • 如何打开LK打印信息

    diff git a apps proc bootable bootloader lk include debug h b apps proc bootable bootloader lk include debug h index 59e
  • Activity的onConfigurationChanged函数调用时序

    Activity的onConfigurationChanged函数调用时序 时序图如下 xff1a 注1 xff1a 向当前系统中所有处于激活状态的进程发送 CONFIGURATION CHANGED 消息 当该消息被 Applicatio
  • Button点击事件的三种实现方式

    Button控件表示按钮 xff0c 它继承自TextView控件 xff0c 既可以显示文本 xff0c 又可以显示图片 xff0c 同时也允许用户通过点击来执行操作 xff0c 当Button控件被点击时 xff0c 被按下与弹起的背景
  • 【校招】面试_华为_通用软件工程师_二面

    1 面试信息 面试形式 xff1a 视频面试 面试时间 xff1a 2020 03 25 11 30 00 AM 面试时长 xff1a 40分钟 面试职位 xff1a 软件技术开发部 通用软件工程师 xff08 无线网络产品线 通用软件开发
  • 杂项(2)-Ubuntu故障修复(1)-记一次Ubuntu GNOME3图形界面与tty均崩溃的修复

    本节目录 问题描述系统环境问题复现操作过程恢复tty的正常使用 xff08 玄学操作部分 xff09 基本操作原则笔者实际操作 xff08 仅供参考 xff09 修复图形界面 总结 问题描述 网络上有很多关ubuntu于图形界面 xff08
  • Linux kernel development

    这几天一直在读经典的linux入门书 Linux kernel development 第三版即LKD xff0c 这是我第一次读英文版的技术书 xff0c 颇有些高兴 之所以读 xff0c 一是因为学过操作系统的理论知识 xff0c 想看
  • Windows + Ubuntu双系统开机选择界面美化

    美化开机界面 1 下载主题2 进行安装 1 下载主题 GRUB主题网址 xff1a https www opendesktop org s Gnome browse cat 61 109 amp ord 61 latest 点击左侧GRUB
  • 程序员的成长之路

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