毕业前几年一直干C++相关的工作。刚毕业时使用的 MFC 做 windows 上的客户端开发,我记得当时看的好像是侯杰的《深入浅出MFC》,当时啥感觉呢?就是感觉软件开发这么难吗?写代码感觉怎么这么别扭,实现个功能要搞这么复杂。相关的资料都是古董级别的。那时候工资还低,在招聘网也没几个岗位。后面机缘巧合远程面了一家上海的公司,是一家外企,去了发现用C++的地方不多,主要就是 windows 上的动态库可能会用,大部分使用公司自己定义的脚本语言写点简单字符串处理相关的功能。这家法企还是很爽的。十点去五点走,下班基本不会找你,年假15天,这段时间把上海各个地方逛完了。当时网上看软件开发数据库基本都要用,我想用C++操作数据库实现个报表的功能,当时用c++操作excel和数据库让我觉得真蛋疼,这里埋下隐患。后面公司被收购了,我们这块业务裁了不少,当时本来也想走,还拿好几个月赔偿,笑嘻嘻签字了。当时拿着点钱跑去跳伞泡澡了。后面又去了两家公司,一家证券相关的。技术栈主要是linux+纯C语言+db2。当时由于linux也不熟悉,那边调试都是gdb,整个项目编译一次几十分钟,报错都是天书,干了三个月跑路了,另外一家安全类的说实在的也没写多少C++代码,大部分招的还是java。我一个c++在项目组后面兼职运维了。k8s环境搭建、机器加内存、磁盘扩容。这段时间网上看了下java的资料。我才发现,卧槽,原来写代码这么简单。之前用c++动不动环境搭建都搞一两天,给人家发个动态库还要分windows、linux。linux内核版本太低还有可能用不了。网上找个第三方库用还得自己编译。编译一会make、一会camke等等的,搞死了。调试更麻烦、公司发的windows,还得自己装虚拟机,vscode 远程linux难用的很。自学了一个月java,我就直接起了一个 SpringBoot, 那感觉真酸爽。读个配置文件在 C/C++ 我可能就要写一天。这边引入个第三方包用 maven 加个配置就行了,还能自动下载代码和反编译。线程池、读文件、开线程语言自带了,完全不用考虑啥操作系统api。空指针报错日志直接告诉你哪一行,再也不会一个指针进程直接退出,抛出一堆乱七八糟操作系统的东西了。(另外C/C++代码还分debug版本和release版本)。我在想同样是干活,C/C++的一天可能主要是搞环境,编译库,debug 反复试错, 写代码的时间不超过10%。java可能 90% 时间都在写代码。
自学了半年,在那公司实在不想呆了,天天整运维的东西。当时很水,八股文几乎都不会,什么 hashmap 底层实现、线程池交替打印、数据库索引啥也不会。面了ebay外包和腾讯分公司都挂了。后面熟人招聘java,就进去了,也基本属于平薪进去的。当时记得面了一堆八股文,最后让我写了个数组排序的题。我问可以用标准库吗?面试官说可以,我一上来 Arrays.sort()。因为后端leader是熟人,我还是进去了。进去开始还很惶恐,以为做不好。没想到干了半年,发现真也就crud,没啥意思。微服务、中间件是比单体复杂,但工作中落到写代码也就调个库,加个注解。@Cacheable,加个缓存。@Transactional 加个事务。这些玩意如果用c++干那真的十天半个月还一堆bug。基本这家公司一天干活两小时、摸鱼六小时。java给我的感觉工作内容还是比干c++爽。资料多、关注业务本身就行了。好景不长,12月1号通知我裁员,我也没磨蹭,12月2就走了。这家公司后面搬到漕河泾上班太不方便了,工资快两年也没涨。
现在发现c/c++找工作比java简单了,可能学的少、C/C++的工作和行业又强相关,面试也不需要面很多八股。但说实在的,我现在也不考虑回去了。毕竟入职了java干活比c/c++爽多了。另外同样是写算法、用c/c++写算法当时让我感觉和奥林匹克差不多,链表的指针绕来绕去,内存要分配要释放,堆还要手写。后面转java了居然很快就入门了,虽然现在也是菜鸡吧,关注算法本身而不是语言特性让我基本能看懂思路就能写出来。再说去大厂面试人家只关心你做出来没有。
不加班、钱多(可适当放低要求,但不能很少)、离家近的工作有吗?没有我就拿失业金度日了,卷没有意义,只想早点退休。