写在前面
首先,这篇文章的标题绝对是标题党石锤了。
写这篇文章的动机,完全是因为在每日逛 SF 的过程中,发现了 一起分享你的故事 这个活动,出于标题处小姐姐爆表的颜值让我有了恋爱的感觉以及对于奖品中 T-shift
的渴望,我无情地抛下了手头的工作(明天还给做 hotfix 发布),写下了这篇文章。
话说 SF 简直贴心,文章大纲都给列好了,那我就无情的 copy 过来好了,这样的话,肯定不会因为和主题无关而取消获奖资格的(机智脸)。
可以先介绍下自己
我叫 littlelyon,最早是在一家不知名美国公司做黑盒测试和自动化测试,之后转型做了 java 开发,后来由于和公司部门领导有一些冲突,辞职跳槽到一家创业公司做 python 开发并慢慢转向了前端的工作,之后为了寻找更好的发展空间就又跳槽了。当前是一名全栈工程师,偏前端方向的,主要负责公司各个项目的前端架构以及优化工作,有空的话,再帮帮后端童鞋分担下工作咯。
比较熟悉的技术栈包括各种前端内涉及的框架、编程思想及工具等等,后端的话,主要是 python
和 java
,最近在学习 go
,因为新的项目要来了。日常除了养家糊口的工作以外,就是刷刷技术论坛,看看博客,折腾折腾新的技术,回答回答新人小白的问题什么的,比较闲的话,也会做一些个人项目以及看一些开源项目的源码。
个人优点的话,应该是我这个人很有耐心,做事效率也很高,总之就是比平均水平快,缺点的话,我觉的应该反应比较慢,这个在刷题的时候,提现尤为明显,很多算法看答案都要理解很长时间。个人爱好的话,平日无聊会弹弹吉他,做做饭,刷刷动漫什么的。
等等,怎么一种面试自我介绍的既视感,不过我觉的当做自我介绍应该差不多了吧。
聊一聊那些年你作为程序员遇到的尴尬事儿
仔细想了想,似乎也没有什么尴尬的事儿,很多事情遇到其实没什么,大不了重来就是了。还记的刚用 linux 的时候,前前后后重装了不下十几次吧,不是因为 sudo rm -rf
给系统文件删光了,就是因为改了很多默认的配置文件导致系统起不来了,总之犯过很多很愚蠢的错误,好在现在不再犯了。
可能比较尴尬的事情就是和产品经理沟通?这真的是我的真实感受。
怎样提高自己的战斗力
程序员提高战斗力的方式?这个按我自己的理解应该每个人都有自己的一套方法吧,我就简单分享下我印象中,当前职业生涯中几个战斗力提升比较快的时间点以及原因吧
养成了学英文的习惯
由于第一家公司是一家美国公司,所以英语肯定是必备的,其实我自身的英语水平还算可以了(好歹也是过了 4 级的水平,滑稽脸)。但到真实的使用场景下会发现很不够用,主要体现在以下几点:
- 和外国人沟通比较费劲,经常发现无法表达自己的真实意图
- 看国外文章速度很慢,这个慢主要体现在,一些比较长的句子,读一次无法明白含义,需要读多次,然后还有一些高频单词不认识
- 公司组织的一些以英语为语言的讲座只能通过文字来汲取知识,然后还受制于第二点
所以当时为了解决这些问题,我就下定决定要改善下自己的英语水平,之后就随便找了个学习英语的 APP,每日坚持背单词、看英文新闻和练听力,之后大概坚持了 3 个月左右吧,然后就显著地发现上面 3 个问题都不是问题了。
然后由于看英文文章不受约束了,技术水平随着阅读量的提升也提升了不少。这里可能有人会问了,你英文不好可以看中文文章啊,不也可以提升吗?话是没错,但当时吧,其实真正优秀的中文文章并不像现在这么多,不论原创还是翻译的。同时,我一直觉的,很多东西,还是看原文比较好,因为如果你看的是别人翻译过来的文章,就好比别人吃下去的东西再(此处省略 1 万字 …)。除非翻译的人的水平很高,不然大量阅读译文是一件学习效率很低的事情。
不要忽视那些看似微小的时间片段
这一点主要是想说一下日常工作中,尤其是使用电脑,编程时的一点感受,就是快捷键。这里的快捷键是广义上的快捷键,包含但不限于 alias、宏命令、脚本等等,总之就是能节省时间的若干方式罢了。
我还记的当时做自动化测试的时候,由于写测试用例的脚本语言是公司自己开发的,同时公司内部也没有对这个脚本语言提供各种编辑器的插件,当时的工作的面向文本的,对,你理解的没错,就是完全靠手打和人工校对,完全不存在什么自动补全、自动跳转之类的。当时我做了两天我就发现这是个很严重的问题,正巧当时 vscode 也刚发布,就在上面实现了支持这个脚本语言的插件(为了证明我没有吹牛逼,repo 在这里),但当我向公司内部推广这个插件的时候,部门领导给我泼了一盆冷水说,你那些自动跳转和自动补全能节省多少时间啊,也就 3 秒 5 秒的,我粘贴复制一下,不是一样的效果?后续又在很多方面起了很多争执,最终因为意见不合我就离职了。
我这里说这个事儿,是想告诉大家,不要轻视这 3 秒 5 秒的时间片段,如果在工作中,一个高频动作,每次执行时,都可以节省几秒钟,日积月累,真的不容小觑。我这里分享下我认为平时比较高频的操作以及节省时间的方法:
- 一些软件的使用,主要就是花一些时间整理并编写相应的 alias 或者脚本了,比如 git 可以通过 alias 功能有效提升效率
- 开发环境的配置,现在各种开发环境都支持热更新、热部署、增量更新等方式提升效率,赶紧用起来咯
- 使用正确的工具,现在容器化已经成为主流,如果每次部署还是手动来完成,是时候该了解下类似 docker 这样的工具了
这样,这里节省 1 秒,那里节省 3 秒,那里又节省 5 秒,日积月累你就会明显感觉自己的时间变“多”了,然后就可以去做其他事情,比如学英语。
避免重复地做一件事情
上半年招聘的时候,陆陆续续来了很多人,简历上都写的工作经验 7 8 年的,都比我工作年限长,但面试之后,给人的最大感觉就是,其实这个候选人的工作经验就也 2 3 年,剩下的时候都在做同质的工作,然后重复了很多年。这其实是程序员很容易陷入的一个怪圈,就是我明明工作了很多年,但是却感觉自己的技术不再提升?最主要的原因,是因为一直在做同样的事情,我们只有尽可能的做不同的事情来挑战自己,才能不断的提升战斗力。
还是讲我自己印象中比较深刻的一件事。当时曾经为开发过一款用来管理部署环境状态的 chrome 插件,最开始,这个插件就是写着玩玩,自然没有使用任何的框架,直接原生 js 撸,虽然获得了团队内部的一致好评,但随着需求的增多,使用原生 js 已经无法满足开发效率,之后就引入了 jquery,然后发现并没有改善多少,然后又引入了 angularjs,第一次体验到了使用框架的快感,之后又陆陆续续使用了若干框架来重构了这个项目,每次重写都会有不一样的感受,比如从 angularjs 换到 react 的时候,第一次感受到了 prop/state 这种单向数据流的清晰感,集成了 rxjs 之后体会到了响应式编程的优雅等等,总之就是来来回回的折腾。
说实话,我感觉现在前端工作做的得心应手,很大程度是因为当时在创业公司时,来来回回折腾这个 chrome 插件造成的,这里非常感谢当时的团队领导给予了我自由支配自己时间的机会。
送给即将成为程序员的经验
经验的话,大概就一下几点,一些上文也提及了:
- 学好英语
- 大学的基础课程,要好好学习,大有益处,不然日后还是要还债的,比如数据结构和算法、网络等
- 戾气不要太重,要 peace,不要学我一言不合就和上级翻脸离职,裸辞的风险还是很大的,我很快找到一家靠谱的创业公司有很大的运气成分,不然现在估计不会在这里写文章了
先找个女朋友
如果还有一次选择职业的机会,你还会选程序员吗?为什么?
答案当然是不会啊,有重来的机会,当然是干不同的事情了,不然和咸鱼有什么区别。
写在最后
本文纯属个人观点,不喜轻喷,如有雷同,纯属巧合。
其实还有很多没说的话,但是鉴于要去改 bug 了,所以就写到这里了,有什么想问的、想了解的,可以写到评论中(虽然可能没有)。
本文参与了 SegmentFault 思否征文「一起分享你的故事」,欢迎正在阅读的你也加入,一起分享。