锐捷网络C++开发实习有感

​ 为期两个多月的实习就结束了,还是颇有体会的,于是想写一篇博客记录一下,也防止自己忘记了。(6月29日-9月9日)

带我的导师是一个年龄不大的老哥,也比较随和,第一次见面就感觉比较轻松。但是,程序员一般都不是很会讲话,所以常常就是比较沉默的看代码思考问题。然后就是带我领了一下电脑然后到工位上。因为去年也有来这里实习,所以有的流程就比较熟悉了

下午三点的时候阿姨会把水果和小点心放在茶水间给大伙做补给,然后晚上可以吃一顿免费的加班餐,有熏鸭粉、炒饭、炒面、拌面扁肉、玉米香肠套餐或者是两素一荤的套餐等,分量我觉得刚刚好(白嫖还要什么自行车)。

​ 我实习所在的是做的云桌面产品,简单来说就是远程控制电脑的软件,利用服务器资源在本地上使用。

​ 开始的两周基本上就是带薪学习,导师叫我按照文档学习qt相关的内容(比如事件循环、UI之类的),于是就在B站上找了一些qt的视频看了一下,顺便跟着敲了敲代码。学习过程中发现QT啥东西都是在之前加个Q,比如QVectorQList之类,后来查了一下qt出来的时间比stl还早。

​ 第一个分配的任务就是比较简单cv(CTRL+C ,CTRL+V),就是将程序换颜色,也就是将程序的qss文件中的颜色都改变掉,qss有一点很不舒服,就是没有错误提示,没有效果就得自己找错误,这里也学习了用git的对比差异工具方便了排查代码的错误。

​ 第二个分配的任务是修复一个复选框点击到间隙的位置会使得前面点击的都被取消掉,解法大概是用一个更大的checkbox套住原来的checkbox,扩大checkbox的点击范围。但很遗憾的是,花了大概两周没能做出来,后来导师亲自做完之后我看了一下代码,添加了一共六十多行代码,发现代码都是能看懂,但是对于整个项目代码了解不足,并且实际编码经验不足,导致我根本没法写出来。

​ 之后又被分配做了一个网络状态不佳的气泡提示框,这次倒是做出来了,一共就添加了两行代码(可以说是整个代码的一小步,对于我来说是一大步哈哈哈)大概的思路就是,在定时更新网络状态的函数里面写一个if语句判断,如果网络状态不佳的时候,就弹出提示。

​ 第四个给的任务就是实现MacOS上,点击程序复选框,要完成设置程序开机自启动。当时基本的思路就是:

1.  要先获取此时程序是否为自启动状态,来确定复选框是否勾上
2.  选择自启动的时候,要将程序加入开机启动列表;没有选择的时候,要从开机启动列表去掉。

但遗憾的是这个功能也还是没有完成,只是完成了添加删除程序到自启动列表(用的是QProcess 调用 AppleScript)

​ 最后接手的一个任务是修复macOS上菜单项图标和文本间距过大的bug,不过看了下代码,不太好改,如果要改得重新写一个组合的Widget作为菜单项才能控制间距,一方面编码功力还不够,而且临近开学了,于是就不了了之了。

​ 还有就是因为程序开发mac版本,于是就是用了几周的Mac,感觉上面的操作逻辑都跟win反着来,刚刚上手的时候非常难以习惯,我还想着明年换一台mac,感觉其中习惯的成本至少要1个月时间打水漂,这已经有点打消我明年买mac的冲动了,打算秋招找到工作之后再说吧。

​ 编码之外,我也参加了一些软件测试,发现测试也确实是门需要耐心和细心的活,并且也是需要一定的方法,不然是很难找到bug。但同时我也发现,能透析代码,才能更好的去测试,所以说测试也并非是很简单的。我还测试了一些驱动方面的问题,测的是上信息课时候的那种控制学生屏幕的软件,测试其进程防杀死(各位上电脑课肯定都有试过脱离控制),因为涉及到了硬件,就会是个体力活,一直要在不同机器上插拔设备,要在各种系统版本之间都测试一遍确保没有出现bug。

​ 其他学习到的就是 git的使用,比如常见的git pullgit pushgit clone之类的操作;在MacOS上实常会用到一些简单的linux指令,比如cpcd 之类。

​ 开发中还认识到实际的商业程序中不只是简单的几个.cpp 和几个.h,还有好多的动态链接库、Lua脚本,bat批处理程序,.sh脚本程序等等。我接触到的一个类似于百度云盘的的程序,代码统计时大概是1万行左右,而且功能还不算是非常多,这就可以想象百度网盘这种应用的复杂情况和代码量更加庞大。同时,我接触到的程序如果完整编译出包一次都要接近30分钟的时间,与自己学习的时候相差还是很大的。

​ 阅读公司项目代码时,我发现代码中大量用到了宏定义,而且封装代码真的是一层套一层,而且也会写许多宏函数,许多其他的特性也同时让我复习了许多C++特性,并且程序一大起来,各种调用,继承关系就会非常多且长,逻辑就必须要非常的清楚,如果不清楚的话,根本不可能进行进一步的开发。

​ 想借用侯捷老师书上的一句话:

参观飞机工厂不能让你学得流体力学,也不能让你学会开飞机。但是如果你既会开飞机又懂流力学,参观飞机工厂可以带给你最大的乐趣和价值。

​ 在测试期间,发现女同志就偏多了,这看起来行业不同岗位上性别占比也是很不同的。像开发那边就一个前端的姐姐,其他全是汉子,对了,还有新来的一个应届生的妹妹,居然是西电的,一想到自己这研究生和本科都是双非,看起来想到时候应届进这家公司还是有点难度的(o(╥﹏╥)o)。其实我还是挺想去这家公司的,毕竟这家公司就在自己家附近,坐地铁回家也就半小时,而且听他们说正式员工工资都挺不错的。

​ 离职之前,问了mentor几个问题:

问:如果想走C++客户端开发的话,在学校里我能做些什么准备呢?

答:重点还是打好基础,qt这个框架可以多学习。然后设计模式可以学习一下。然后深入之后有各种方向比如网络协议,音视频这些方向。

感悟

​ 公司里会有专门的项目经理来督促程序员和测试按期完成测试和开发修复任务,这一点很值得我思考,进度管理有时候是非常重要的,我在考研已经对此有所体会。对于明年即将到来的秋招,需要有一个进度表,在什么时间点要完成哪些任务,而不是简单的学到哪里算哪里,一定要以任务为导向,有些书(比如基础的数学,或者UNP、APUE,虽然这些很重要很经典)就得放一放,把握主次。上半年我就因为读了C++Primer花费时间太多,导致五月份,看了点视频跟敲了点代码就去投简历找实习,导致面试准备都不是很充足,一面就废,这确实需要反思。

​ 在刚到公司第一天和师傅吃午饭的时候,我问他有读哪些C++相关的书来学编程吗,他回答到并没有刻意去读那些书,而是学校里学了一点,然后就开始边做边学。在解决bug时,我也发现自己时常看着代码却没法写出代码来,可想而知,编程实践还是要多进行,理论书籍当然也要读,但毕竟编程是工学,不是纯粹的理论科学,毕竟:纸上得来终觉浅,方知此事需躬行啊!

​ 还有就是网络上现在盛行客户端没前途的观点,之前我也是人云亦云,但是直到实习才知道,客户端也并非那么容易就能精通,如果真的精通这块编程,学得的知识便能够复用到新的领域,一些事件类型编程思想和面向对象的程序设计思想至少目前还不会淘汰。

​ 加班似乎这个是计算机相关行业的常规操作了,不过,公司里大部分老哥也都是早上九点半之后才到的,晚上在企业微信看他们基本也就是要做到8点左右走,也算还好,未来还是希望整个行业上班时间能够往前挪动一点,这样晚上也可以做点别的事放松,对人的发展会更好一点 。

​ 我希望自己也能够真正的进入程序开发的行业,当然通过这次实习我也感受到了一定的困难,而且有一门手艺总也是一个人能安身立命的根基。

最后

​ 希望自己能坚持写博客,虽然目前写的和流水账一样(害,从小养成的习惯~)。最近看了余秋雨还有汪曾祺先生的书,感觉他们的文字真的是行云流水一气呵成,希望自己的文字也能和他们一样流畅,但罗马并非一日建成的,在技术上也不是一蹴而就的,都是需要经过不懈的努力才能达到我们想要的结果。但是我相信 “骐骥一跃,不能十步;驽马十驾,功在不舍”,我相信,只要肯坚持,总会多少有点收获的。

​ 这个实习也算是给研一的学习画上一个句号把,但是真正的奋斗还未结束,下一年的学习和秋招仍然在前面等待着我。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值