π酱,19届硕士女一枚,先后学习单片机/模式识别/图像处理,最后以C++工程师入职,然后成功成为一名PHP后端开发工程师。
π酱对自己三年一换专业的命运一直耿耿于怀,但是迫于生计,不得不向现实低头。于是,怀揣着既来之,则安之的心态,经过一年磕磕绊绊的工程实践和项目开发,π酱终于能够顺利的阅读Laravel码源,安心做个CV(ctrl + c / ctrl + v)工程师。渐入佳境的π酱甚至觉得每天的阳光都明媚了起来。
但是,魔咒怎么可能轻易被破除呢?就在π酱入职一年半之后,由于部门业务变更,全部切java技术栈。这便意味着,一切回到了2年前。新的语言,新的框架,新的生态系统,全部都来一遍。
当时π酱的内心os: 欣喜(终于可以切到长盛不衰的java栈了,再也不用站在开发语言的底端被鄙视),焦虑(担心在短时间内无法举起整个spring 生态系统)。不过,对于低序列的程序员来说,切换语言栈的成本并不算高,毕竟高阶和资深工程师也是要切的,从职场收益和短期发展来说,越资深的程序员切换的成本越高,这么想想自己也就没有什么可担心了,未来的日子还长(毕竟要工作50年才退休),不差这一年半年的。
后来,π酱的师父说,对于我们以业务开发为主的程序员来说,语言并不重要,慢慢你就会发现,能力你都get到了,马上就至少拥有PHP、C++和java的三栖天赋了(不得不说,还是师父会说话,虽然π酱半信半疑)。
这确实是一个新的开始,但又不完全是一个新的开始。因为,两年前的π酱,也是同样的处境,但是两年前的π酱,完全没有互联网知识背景和学习经验。每天π酱站在西二旗路口等红绿灯的时候,都在想,如果我看的多一点,吸收的再快一点,多好;如果我一个月前就能够理解到现在这个程度,多好。可是,π酱不得不承认,每个人都有自己的成长步程,受限于自己的精力,理解能力,这就是所谓的与生俱来的天赋,我们无能为力。
那我应该怎么办?怎么复用之前的经验,怎么提高我吸收新技术的能力?怎么提高我的开发效率?每天我都在思考这一点,因为我必须提高我的技术能力,保持竞争力,我必须提高我的开发效率,使我的年终绩效不太难看。所以就是每天按部就班的看自己买的各种视频,查阅当天遇到的没有理解的知识点。参加公司的技术学习小组,但是学了的东西,很快就模糊了,像回家的列车外面摇曳而过的风景,但是,这条路上,我没有终点。我只能日复一日的训练我的思维意识,和当初在学校训练神经网络一样,我唯一坚信的就是,我们的大脑和神经网络是一样的,有一些模糊的深层次意识,会在后来的重复中慢慢被唤醒(是不是感觉挺玄乎的),所以不要着急。除此之外,别无他法,直到前两周,我一个重构项目开始写大批量的java代码的时候,我突然明白了。
"科研与工作的区别"
如果把工作拆开来说的话,就是 工作 = 创新 + 重复,创新是什么意思,就是从翻译需求到技术设计,到编写代码的过程。这个过程中,我们需要根据业务去设计技术架构,比较常见的就是所谓的高并发,分布式锁机制等等,其余剩下的就是重复的代码,因此通常戏称程序员为CV工程师。也许有人会问,我们为什么要重复?因为目前机器人或者AI还干不了这活儿,等他们能干了,我们也就失业了。所以说,越是年轻的人越有精力,越能卷。
而科研的话,很大的比重就是专门在搞创新,提供一种实现方案的新思路,代码实现占比很小。
因此,在工作中,我们需要的是一种快速交付的能力。整个过程中会淡化个人能力,目标是保障团队收益的最大化,所以要求我们要稳定持续靠谱的输出。用更残酷的说法,除了工作中需要创新的部分,在写大量的重复代码的时候,最好跟机器人一样,统一的风格,格式,命名,等等,最重要的,不要出错!!!
"什么是合格CV的工程师"
所以才有了CV这一说。π酱刚入职的时候,以徒手使用linux原生命令为荣,然后被教会用可视化编辑器。在一次code review 会上,临时改一个变量的时候,π酱手写了变量名,另一位同事居然惊讶的说到,“天哪,她居然手写变量”。后来才知道,直接CV既可以节省时间,也可以避免手动拼写引起的错误,对团队来说,这是最有益的,在项目交付上,我们更关注质量,而不是程序员的个人情怀,因为我们需要对我们研发的系统负责。
往大了点说,CV也就是CV另一个人的经历。在职场,可以CV(参考)别人的经验,CV(汲取)别人的思想,然后快速成长和成功。用文雅的说法,就是站在巨人的肩膀上。有时候,觉得很奇怪,有人甘愿相信小红书上不靠谱的加了精修图的攻略,居然对前辈给予的教导嗤之以鼻,人生攻略和旅游攻略有区别么?还是嫌弃程序员的攻略没有修图呀?
转自微信公众号【程序媛的被窝】原创文章,关注公众号获取更多精彩