编程学习网 > 程序人生 > 你不得不看的我的实习总结
2016
03-25

你不得不看的我的实习总结


飞速发展的互联网已经代表了一个时代,其中移动互联网方向将是最主要的发展。我,一个一心想投入互联网行业的计算机专业的学生,终于在大三下学期的时候放弃Java决定要做iOS开发,怀揣着成为技术大牛的梦开始了每天的不玩游戏只撸码的路。

自学本身就是很难,但还是一直坚持下来了,期间学习效率也不太高,好歹自己当时有比较好点的Java基础,对OC语言上手还是比较快的,但是也由于时间问题导致大三结束的时候我也没有足够的信心去找实习,现在想起来还有点遗憾的。

后来经过努力我拿到了沪江的offer,感谢给每一个给我机会的人,本来跟leader说好元旦到公司实习。从来没有体验过正式的软件开发流程,而且公司的大牛多,以后遇到问题就有人问了,所以我对这个实习机会很期待,但是无奈家里的一些事情只能年后才能去公司实习了。

开始转变

年后的2月17号终于等到了,这将是我人生第一次实习的开始,也是磨练和改变我的开始,怀着期待的心情走进公司,leader安排晟哥带我,作为公司的iOS高级开发工程师的晟哥技术是全而精,晟哥给我发了一大堆新人入职的要求,第一天还有一大堆的账号权限要开通,接下来的时间就是熟悉公司软件使用,开发规范,办公环境等。当我看到公司开发规范,我发现我写代码从来没这么注意过,代码风格很随意,注释也是随便写,没用的多有用的少。还有远程git仓库,这对我来说都是很少用的。但现在不同了,我努力改变自己的代码风格,每个注释都要有用,尽量把自己写的项目上传到一个远程git仓库,这样对代码的安全和管理都是很棒的。

任务着手

过了两天我的正式任务终于来了,我负责横向的一个补丁包模块,刚开始要弄懂流程和功能,其实就是模仿JSPatch的SDK封装为符合我们自己的要求SDK。然后我就开始阅读JSPatch相关的一些文章,下载JSPatch的SDK写个demo用了一下,晟哥让我写流程图,过程中还要考虑加密的方式。有一次我去问晟哥关于加密方式一般都用哪些,晟哥直接说“这是让你研究的东西,不是我在整”,我当时真是被当头一棒啊,感觉完全不是我想象的那样,问个问题得到这样的回答。但到今天我不在这样想,我很幸运晟哥这样做,如果我向他问问题他把答案都说了,那我岂不是就知道怎么去进行这个加密,而为什么选取这样的加密,和其他有关加密的技术还是不了解,没有经过思考和深入研究东西永远不属于你。如果不给我当头一棒,我以后有问题就问那岂不是很恐怖,我还需要动脑子么?更何谈创造什么?

研究加密

我研究了一下别人使用JSPatch是怎么进行加密的,然后跟晟哥探讨可以使用他们的加密方式,然而又一次被否决了,晟哥说:“为什么要用别人的加密方式?别人为什么要用这样的加密方式?你有没有去研究一下其他的加密方式?”这些问题真心让我哑口无言,不知所措。接下来几天我就去研究加密的东西,说实话安全这门课的内容很深奥,我研究也就是几个常用的加密算法与使用方式,也懂得很多比如对称性加密,非对称性加密,摘要和数字签名等。说实话这些都是大学学的,但是感觉离自己太远全部都已经还给老师了。过了一两天又一次跟晟哥讨论加密,我说了我的方式一些其他加密方式配合使用数字签名保证传输安全,晟哥说保证传输安全为什么不使用HTTPS,确实HTTPS的出现就是为了保证传输安全的。

实现加密

调整了一下方案我开始写加解密demo,中间遇到了一个问题,公钥加密私钥解不开,我就去github上看issue,然后研究一下代码哪里有问题,最终还是解决了。当时我把补丁信息使用非对称加密后,对于APP端的私钥又使用了一次对称性加密,不让私钥直接存储到APP端,然后打包发给晟哥,一两分钟后晟哥破解跟我说可以直接看到对称性加密的密钥,所以还不是太安全。后来我又研究使用了cocoapods-keys对加密后的私钥又进行了一次加密存储最终可以了。说实话平时自己写东西从来没考虑过安全问题,所以一直感觉安全对我来说还是比较远,但没想作为开发人员,安全是必须要考虑到的。因为企业APP随时都有被攻击的危险。

开发文档

加密流程图搞定后,项目需求也确定了,下面就要着手开发了。晟哥把我接下来要做的东西列了个表,按着一步一步来。首先就是两个文档,后台API文档,SDK接入文档。SDK接入文档倒是不难,模仿着JSPatch写。但API文档我刚开始也不知道怎么去写,后来跟晟哥的讨论中知道API文档就是要怎么和服务器打交道“你告诉他什么,他返回给你什么”,最后去看了一下微博开发者接口文档,模仿了一下返回的json数据,虽然那样返回数据可行,但又被晟哥几个问题给问住了:“为什么要返回这个?有没有考虑有几个可能性,为什么一次要返回很多没用的数据?”。天!我以为方法能用就行,做出东西就行,但完全不是这样子,没用的东西为什么要有,有简单的方式为什么不用?不是没有更好更合理的方式,只是你思考的不深。

使用模块

经过千修万改文档终于确定了,正式开始写demo,晟哥的要求是将补丁的更新下载模块和补丁使用模块分开,做到低耦合方式。先不管这么多,先写补丁的使用模块,写这个模块不怎么吃力,因为前几天已经把最难搞的加解密搞定了,这次直接用上就行了,唯一就是第一次开发SDK库,cocoapods的配置也遇到了很多问题,各种找不到符号,linker command failed with exit code 1等错误,其实就是自己的podfile或者podspec配置的问题,或者没有pod install的问题。

补丁的使用模块没什么大问题了,我开始在里面代码中加入下载代码,被晟哥看到又说“你干嘛去研究下载,这些东西都是别人研究好的,你要研究的是别人没有研究过的东西,让你做到低耦合,你干嘛还要在使用模块加入下载?”。这这这。。是的晟哥说的非常对,研究别人的研究过东西永远都是在别人的思想下,只能用别人的成果,走在别人的后面。研究别人没有研究过的东西才能在技术的世界有自己独有的位置。

模块设计

接下在的更新下载模块的接入讨论又让我明白许多,谁依赖谁,谁要调用谁,又怎么去调用,这些东西都需要明白,既然要把模块分开就不能像以前把所有东西写在一个模块中的方法,刚开始我确实不知道怎么设计,最后我突然明白,那就是调用模块的接口,返回需要的值,每个模块肯定要有自己暴露的接口,这些接口就是模块与模块之间合作的桥梁。每次和晟哥讨论,他从来不给我说最终答案,每次都说你要这样,你该怎么做,为什么要这样做,我刚开始很难回答,最终经过引导和讨论还是找到了答案,这个过程确实能让你明白很多,为什么要这么做!

下载模块

确定好的方案接下来就开始写更新下载模块,写这个模块就是在晟哥写的资源管理SDK上加上一个patch的更新下载解压模块,既然要在原有的库中添加模块,那么就要看懂这个资源管理SDK做了什么,结构又是怎么样,看懂了库才能知道怎样往里面添加自己的东西。看了一天多,晟哥也介绍了一遍,感觉差不多了,就着手写。写的过程就是仿着写,经过两三天写的差不多,测试数据不行,然后就跑过去问晟哥,发现是我自己代码写的问题,人家解析的是数组,我返回的是字典,能解析才怪。后来我改成字典也不行,我就一层一层深入代码找解析代码,真心是一层一层又一层,终于找到了解析代码,才知道自己返回的数据没有加返回的状态码等其他数据,这一点其实在公司规定的接口文档中有说明。

写的过程中我对这个资源管理SDK理解越来越深,添加一些自己需要的功能也越来越顺手, 果然看三天不如写一天啊,期间我也问了一些白痴的问题,都是因为没有好好看懂代码,晟哥跟我说:“以后问问题,自己先把代码研究透了,哪里出的错,为什么出错,解决不了再去问他,不要有个问题就去问,浪费我们两个的工作时间”。所以现在我遇到了问题,再不轻易问别人,其实大部分都可以自己解决的,只是自己没有去研究,没有用心去找这个错。

模块整合

终于在努力下写好了patch部分的功能,中间有些问题跟晟哥讨论,发现我想到的办法都不是太好,可能还是经验少吧,敲的代码还不够。最终终于把使用模块和更新下载模块结合起来了,经过不断的调试,代码也在一步一步完善。

项目写的差不多,我把整个资源管理SDK分析了一下,画了一个类图,搞明白每一个类负责不同的功能,父类与子类的层级关系等,感觉这样也会对我将来代码的设计有一定的帮助。

总结

不知不觉到今天我已经实习了一个多月了,现在对技术的看法已经和当初有太大的改变了。技术的提高不是去问别人,而是自己去研究;软件并不是能写出来就行,关键是要有思想;能写软件的有很多人,但真正成大牛的都是一些有思想的人。尤其是跟公司大牛接触后,还有每次听公司内部的技术分享,我发现他们的思想都很宽阔,想到的点都很多,专研的也很深,确实我目前还无法达到这种高度,但我会努力向着这个方向前进。

也感谢leader给我安排晟哥这种重量级大牛带我,晟哥平常严厉的引导有时我感觉确实不舒服,但回头想想晟哥也可以不管我,只要我做出来东西就行,不管好坏,学到与没学到什么都是我自己。但晟哥却没有这样,他把整个开发流程的思想教给我,也包括不要看中文的东西,Google搜索,遇到错误要搞清楚为什么出错,做什么事之前要考虑有没有用,必不必要等,确实改变了我很多,很幸运我技术之路能有一个这个好的开端!感谢沪江,感谢陈旺leader,感谢罗晟大哥,将来我会更加努力!!!


文/沸沸腾(简书作者)
原文链接:http://www.jianshu.com/p/535f053506dc


扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取