时光荏苒,如白驹过隙。
一转眼从毕业开始做技术已经五年。
每当夜深人静的夜晚,我轻轻抚摸着越发光亮的脑门,就会在思考,这些年,我得到了什么,又失去了什么呢?
作为一个自然语言处理工程师,这么几年下来,似乎做的很多事情跟自然语言处理也没有多大的关系,编写工程代码,设计架构,甚至前端也都在做,所以技术好像也没有那么集中,好处是什么都了解一点点,但是要想给自己做个总结,还真的是一个很难的事情,不知道从何说起,我想技术上的积累大概大家都会有很多的心得,那就把一些小的tips拿出来分享一下吧,关于我的一点想法,我踩过的坑,忽视的事情,记录下来,时刻警醒自己不要再犯,如果能够对你有帮助,那也是一种荣幸了。
- 我爱学习,学习使我快乐
- 关注技术动态
做技术,总是要学习的。技术的更迭速度实在是太快,我想也跟爱学习的程序猿有关系。就说这几年自然语言处理的发展速度,从传统机器学习到深度学习,从word2vec到fasttext,从ELMO到BERT,发展的速度让人应接不暇。
原本我是没那么爱关注新技术的,总觉得那些东西似乎离我很遥远,与我所做的,所用到的差的很多。很长一段时间,我就只有在关注我正在用的那一点点技术,就好像一个井底之蛙,不知天空之大。但是在工作了一段时间之后,我跟同样做NLP的同学在一起,我发现已经没有什么好交流的了,那就像一个古代骑马的人看现代人骑摩托一样,对的,技术的发展就是这么快。所以学习是要长久的,稳定好自己的基础,必须要适时的去了解一下新技术的发展情况。
- 提升综合能力
但是,我这里想说的其实不单单是技术的学习,在学习技术的同时,一定不要忽视了其他方面的知识增长。还应该多学习一点实用的东西,比如如何制作一份让人震撼的PPT,对PPT很重要的。再比如如何心平气和的和产品经理聊需求?比如如何在恰当的时机向boss提出升职加薪?嗯,我只是想说,对于一个工作中的人来说,周边能力也很重要,这些看似没用的东西往往能决定技术所能达到的高度。
- 丰富课外读物
当然,除了最核心的技术,除掉最现实的英语和PPT,还应该多涉猎一些其他内容。因为我们的技术,不单单是凭空存在的技术,我们的技术一定会在某个业务,某个场景,某个领域落地,发挥了作用,才是真正有价值的技术。我大概是一个充满好奇心的人,平时就喜欢看一些“没什么用”的书,比如禅与摩托车维修艺术,比如论人类社会不平等的起源和基础,再比如酒鬼旅行指南,但是这些东西却能够在自然语言处理的理解上提供一些意想不到的的思路。
- 忘了你的技术吧
做起技术来,很容易自嗨,容易陷入到自己对技术的沉醉中无法自拔。然后就开始仔仔细细的钻研自己做的那一点事情。可是技术的发展并不是一直延续一个方案,对于同样的事情可能有很多其他的方案可供选择,就像谷歌所推崇的十倍原则:不要问自己这个东西还能不能提升1%,而要跳脱局限去思考,这个东西,能不能提升十倍?十倍的提升必然不是原有的方案所能解决的,那就得从其他方向去思考了。就像打败康师傅方便面的竟然不是白象,不是日清,不是统一,而是外卖,更优的解决方案往往来自于意想不到的地方。所以,学习的时候先把之前的技术忘了吧,去寻找那个更好的方法。
最后,做好终身学习的打算,才能在技术这条路上越走越远,越走越宽。
- 日积月累,做好记录。
- 如何处理头疼的周报月报季报年报以及各种汇报
简单来说,那就是写日报。
很多时候做事是遵循20/80法则的,有些时候甚至是2/98法则。比如说工作总结,年度计划,这些事情做得时间很少,可能都远远不能占到你工作的2%,但是一旦要做,却是致命的工作。但是,还有一点至关重要,不管是20%,还是2%,这些都是跟剩余的80%,98%息息相关的,平日大量的日积月累,才会在关键时刻快速的完成这些事情而不必过多的头疼。
工作本来就是相对枯燥和单调的,坐在办公室里码代码的日子一晃而过,可能事后很快就记不起来自己做了什么了。不像出去旅行,可能都已经过去好几年了,说起来你还能眉飞色舞的描述当年的场景。所以工作的时候要做好记录,每天抽出一点点时间,回忆自己都做了什么,遇到了什么问题,对问题做了哪些尝试,明天又准备去做什么。
随着我这中年人年纪越来越大,容易忘事,自打用了这个方法,再也不怕忘了产品安排的需求了,不怕领导安排的会议了,写周报也有劲了,不会出现那种感觉自己好像一直在忙碌,却怎么都想不起来这周都做了什么啦。
- 写好技术文档
程序猿加班似乎是一个稀松平常的事情。每天看着一到下班时间产品经理就收拾东西走人了心里很不爽,而自己手里还有无数个产品给提的需求。所以经常就是忙于写好项目代码,而忽视了注释和技术文档。做的少的时候,脑子还能记得清自己做的什么项目,可是年岁稍微长一点,一些小项目就记不得了,一些冗长的遗留代码就不明白为什么要这么写了。
想想这样一个故事吧,我花了两天时间开发了一个服务接口,要从CCTV网站上去爬取节目表,然后传给另外一个人。这是一个一次性的接口,打那之后接口一直运行良好,相安无事。可是过了一年半,天杀的CCTV网站竟然改版了,显然我的服务不再有效,业务方的反应很快,没多久就找上来了,说你的接口挂掉了获取不到数据,可是我却一脸懵逼的看着他说,什么接口?
于是,我又从头学习了一遍这是一个什么样的需求,然后花了几天时间才把这个接口重新实现了一遍。而如果我写好了文档和注释呢?那情况似乎就不太一样了,把文档拿出来看一看,大概就能了解做法,更快的修复接口的问题吧。
- 做好技术总结
在工作中,总是会遇到各种各样的问题。小到一个参数的配置,大到一个项目的实施,每一个环节都有可能成为卡住进度的绊脚石。有时候上网去搜解决方案,可能有的有效有的无效,看了很多文档之后把问题解决了,之后就把它丢到一边去了。可是过了没多久,又遇到一个类似的问题,但是解决方法却记不清了,看过的网页也不知道在哪里,又要重新搜索一遍,浪费了很多的时间。
所以,在工作中,解决了一个问题不要着急进行下一步,而要做好总结。如果是一个博客介绍的内容就可以解决问题,那就把博客剪切下来,有道云笔记或者evernote能够帮很大的忙。但是很多时候只是依据网页上说的方案,那就得自己动手记下来,以防下次找不到,一些成熟的方案也可以写到博客上,分享给大家。
- 如何跟产品经理融洽相处?
网上经常爆出五个程序猿合伙杀了两个产品经理;一个需求引发的血案;产品经理和程序员的日常互怼。好像产品汪和程序猿天生就是死对头一样。
然而这往往就是两个方向引起的问题,一方面是产品不懂技术实现,另一方面是技术不懂产品。
其实我觉得,作为程序猿有两个事情是可以去做的。
- 第一个就是多沟通,多沟通,多沟通。
重要的事情说三遍。做技术的似乎不太愿意太多的去交流,像我大概就是一个内向的人,还记得刚毕业那会儿,很多产品可能不懂技术,关起门来跟boss一讨论就拿出一个反技术的原型图,所以一定要跟产品汪多沟通,产品也是人,大家都是受过教育的人,所以要靠依靠沟通尽量的参与到产品的产生过程中,产品的迭代过程中,和产品通力合作,互利共赢,才能做出一个优秀的产品。
- 第二个是要用产品思维去思考问题。
因为产品技术的矛盾一方面是产品不懂技术,而另一方面就是技术不懂产品。有时候一个产品增加一个形态上很简单的东西,技术上要增加很多开发量,所以这个时候还是要从产品的角度去考虑一下,为什么要有这个功能?这个功能给用户带来了什么样的价值?给公司带来了多少收益?有没有更好的替代方案?想明白了这些问题,做还是不做就不再是一个问题了。
从产品的角度出发,还有一层意思,那就是把自己的工作产品化。可能很多后端的同学,算法的同学会觉得这很遥远,似乎跟我没什么关系,但是不是的,就因为在后端,在写算法,这些别人很难看到的东西,更需要去从产品的角度考虑,我做的东西,能不能可视化,能不能展示给别人,能不能体现到用户价值上,我觉得这也是一个很重要的能力,能够把你的工作展示给产品经理,展示给boss,展示给更多不懂技术的人,让他们能看到你的工作,看到你的价值。
- 最后,注意身体。
虽然这句话很短,但是这句话很重要。我们首先应该关注自己,关爱自己,才能去做好工作。如果一个人一来就说工作最重要,这种人一般是不能通过的,你信吗,太假。工作很重要,但是生活更重要,技术要提升,身体更需要提升。如果没有身体,那这一切还有什么意义呢?我在上大学,踏入计算机专业的第一课,我的老师就讲了,你的身体是1,而你的技术,你的能力,是许许多多的0,如果没有身体这个1,那剩下的0都没有意义。
为了能够继续做技术,一定要把身体锻炼好。
好了就到这里吧,产品又来提需求了。
网友评论