前几天结束了两个多月的实习,感觉体会到的东西还是不少的,就随便写写吧。

Cons

大公司没那么完美

我这次实习是在国内的一家大型互联网公司,本来会觉得大公司在技术方面会很厉害,应用很多新技术,拥有很多先进的工程经验。然而事实却不是这样,大公司会有很多很厉害的轮子,比如存储、服务器、通信协议等,毕竟是要支持亿级服务的,但是业务代码以及文档方面却是完全没有想象中那样严谨。

各个不同组件的代码有时候差别很大,已经71022017年了,竟然还有的代码是用的GBK编码,缩进也不统一,有制表符也有空格。大多数公共组件的文档虽然不算很详细,但也勉强可以看,但是基本上所有的业务代码都没有可用的文档,只能去看代码。

关于构建和部署也没有想的优雅,也许是为了减少编写Makefile的时间,基本上所有的项目都会有一个通用的Makefile,它做的就是把目录下所有的源文件都编译成目标文件然后全部链接起来。另外,因为测试环境、运营环境和开发环境的库版本不同,为了避免兼容性问题基本全部采用静态链接,导致最后的二进制文件体积巨大。

工具陈旧

因为我所在的组负责的是有一定历史的业务,因此VCS还是用的svn,开发机GCC版本还停留在4.4.3,连C++11的特性都支持不完全。很多人常说:工具并不重要。这句话虽然很有道理,但是我认为不代表可以完全忽略工具的作用,新的工具支持新的特性,开发起来效率更高,性能更好,让人心情更愉悦

可能会很无聊

大概也是因为我的组负责的是比较稳定的有历史的业务,因此平常工作就是做做产品需求,维护一下已有的功能,说实话并没有什么会驱使你去学习的东西,也没有什么激动人心的东西,工作内容基本还停留在舒适区。

留给自己学习的时间不多

一天在公司花八个小时甚至以上的时间编写没有什么意义的业务代码会大大地挤压学习和自我提升的时间,下班回家后洗漱一下就快要睡觉了,周末也只想着能多休息一下,不能像在学校里一样每天能有大把的时间用来学习新知识。所以工作之后如果没有超人的毅力来牺牲自己的休息和娱乐时间,那么几年都没有什么提升是绝对很有可能的。

Pro

开了眼界

见识到了真正在现网运营的后端的基础架构是什么样的,以及大公司内部使用的轮子是怎么设计的。

学了一些新东西

学习了如何编写shell脚本;深入地了解了一下Makefile的语法;锻炼了VIM的使用。