转眼间,已经是六月的尾巴,我的第一份工作也刚好满3个月整了。
今年虽然梦幻开局,虽然经过了超长的寒假待机,经历了居家隔离闷到爆炸,经历了孤身一人来到一个陌生的城市,一个人找房子,搬家,上班,经历了工作中被 C++ 各种花式吊打......
但是还好,一切都有一个不错的结果。房子顺利租到了,离公司不远,住着不算宽敞但也挺自在;工作也找到了,在一个很厉害的项目组,有一帮很厉害的同事;经过了前期 C++ 的毒打之后,我也逐渐可以上手项目了;工资够花,除了给家里打一些之外,还能买点自己喜欢的东西;博客也重新开始写了,内容也得到了不少粉丝们的认可。
事情都在向着好的方向发展。
0x01 工作方面
入职三个月,经过了从学校到社会,从学生到职场人的转变,感触不可谓是不大。
在学校可能自己参与过的最大的项目,也就是自己的毕业设计了吧,但是在公司的这种正规的、商业的、大型的、工业级别的项目面前,完全不够看。而且实际做起来就是两种完全不同的思路。
1. 代码规范性
此前做的基本上都是一两个人合作完成的小项目,代码风格如变量命名,函数命名,代码排版等等方面并没有特别去注意。而这种大项目,祖传的代码,至少经过了几批程序员前辈的维护,若是每个人都用自己的风格来写,早就改的稀烂了。所以在我第一天上手写代码的时候,老大就叮嘱我:你可以有自己的风格,但是在项目中必须按照项目的代码规范,符合项目的代码风格。
2. 代码易读性
此前做的小项目,只需要考虑功能的实现,没有bug即可。而在这种大型项目中,时刻要考虑的一点就是团队合作,写的代码要让同事,让接手代码的人能够看懂;变量名和函数名要能够表示它的含义和功能;有意义的数值要定义成常量或者宏;常用的功能或代码段要抽象成函数;要写代码注释等等。就是一点,好代码的标准不仅是没有BUG,还要有良好的易读性和易维护性。
3. 代码鲁棒性
真是不做不知道,在这种大型项目中,产生异常数据的情况真的是太多太多了,本地资源文件丢失,网络延迟,服务器脚本错误,配置文件错误等等,都会带来异常数据,如果处理不好,轻则界面显示异常,重则程序直接奔溃。所以每次写一个功能的时候,80% 的精力用在处理异常数据上,需要细扣每一处可能出问题的地方。要保证,不管客户端收到的是什么样的乱七八糟的数据,至少程序不能崩。
我知道,这些都是各位前辈们在项目开发中摸索出来的宝贵经验。
我也相信,这些经验远比我学一门语言学一个框架,要更有价值的多。
0x02 学习方面
很多加我好友的粉丝都喜欢喊我 “大佬”,请教我一些代码方面的问题,以及问我学习有没有什么方法的。
“大佬” 二字真的是受之有愧。闻道有先后,术业有专攻罢了。我也是一名普通的程序员,只是我博客中分享的某些内容,恰好解决了大家的需求而已。
至于学习方法,我确实有几点感悟想跟大家分享。
1. 培养执行力
这个是我认为最重要一点。
执行力就是你如果决定要做一件事,就风雨无阻地去坚持完成它。买了书那就安排时间读完它,想学新东西那就找教程去学,想旅游了那就赶紧找攻略找时间安排起,制定了计划那就坚决地执行下去。
说起来很简单,甚至有点老生常谈,但是真的很少人能够做到。
执行力方面,我其实挺佩服一个人叫 stormzhang 的,多的不说,光是最简单的每天坚持发朋友圈,坚持写文章输出自己的观点,一年两年三年,有多少人能坚持下来,这样的执行力和自律能力是相当恐怖的。
去年起我开始有意地练习自己的执行力,挑战过刷题,读书,日更博客,都失败了(讲道理坚持真不是一件简单的事情),但是即使这样,带来的收获依然让我非常受用。
刷题一个月左右,我成功通过了校招面试,拿到了人生中第一份 Offer。
日更博客坚持了两周左右后失败了,但是写博客做分享的习惯留下来了(目前频率大概在周更)一年左右积累了 60 余篇文章,300多粉丝,600多收藏(我其实更看重收藏数,因为访问量可能是误点或者刷量,但是收藏的一定是读者觉得有价值的)
所以,练习培养自己的执行力,即使你跟我一样坚持不下来,但是至少在放弃之前尽量多坚持几天,带来的收获真的很大。
2. 坚持输出
最开始想到写技术博客,是一个偶然的机会。
在我实习的时候,带我的老大喜欢把项目中遇到的小难点拆分出来让我们研究。然后就经常有其他项目组的人过来问我某某问题该怎么解决。同样的问题回答多了也就有点烦了,于是把问题原因、解决办法详细地整理了几个文档。再有人来问,直接甩一个pdf 过去,啥问题都没了。
然后就一发不可收拾地开启了我的写博客生涯,上课记的笔记,下来整理好发个博客;有什么新的想法了,记下来发个博客;学到什么新的知识点了,整理出来发个博客;解决什么新的难点了,解决过程整理发个博客;项目完成了,做下复盘发个博客......
坚持写博客输出,给我带来的帮助也是特别巨大的。
① 后续如果遇到同样的问题,我不需要网上到处搜解决方法,翻翻自己的博客就可以了,节省了很多时间和精力。
② 养成了复盘的习惯,每完成一件事情,我都会习惯性地做一个复盘,思考整个过程中有没有走弯路,有没有更好的解决方法。
③ 形成自己的 “人设” ,因为我经常在博客中分享关于爬虫的知识和教程,所以身边的同学朋友,只要遇到爬虫相关的问题,第一反应就是来跟我交流,有关于爬虫的项目,也会第一时间会想到我。
④ 通过写博客,在网上也结识了一些志同道合的读者朋友,真乃人生一大幸事。
⑤ 通过帮别人解决问题,定制爬虫,以及读者朋友的打赏,我也开始有了一些额外的收入。
不知道我的经历有没有给你带来一些启发。
如果你是做技术的,我建议,一定要养成写博客的习惯。
3. 搜集信息的能力
研究生期间,我有一个很强烈的感受,老师布置了一个作业,让大家去网上自行找资料学习完成。有的同学苦苦搜了几天依然没有找到相关的内容,而有的同学甚至已经搜到了原题目。
能考上研究生,大家的学习能力差距并不大。说白了拼的其实就是一个信息差。别人找不到的资源你下载到了;别人解决不了的问题你搜到解决办法了;娱乐圈的瓜别人刚开始吃,你已经捋清楚整个前因后果,这不是人生赢家嘛。
你有更强的信息搜集能力,那你处理解决问题的能力就越强。
太高级的搜索术我就不说了,毕竟我也不懂,我就斗胆分享几点个人经验。
① 平时注意搜集网站,不同类型的问题都有比较顺手的网站。比如说编程遇到问题,简书去搜,有条件的话,可以去 Google,StackOverflow,SegmentFault 等;要看源码就去 GitHub 找找;要刷题就去 Leetcode,牛客网等。
② 如果是搜一个专业名词,搜不到结果的话,可以试试搜它的英文,以及英文对应的不同版本的中文翻译词。很可能同一个东西表述不同,搜到的结果截然不同。
③ 学会过滤无用的信息,否则很容易陷入其中迷失方向。就像在微博上追热点吃瓜一样,没点修为的人,很可能进去翻几个小时都捋不清楚到底发生了什么。
希望大家可以重视这个技能的培养!
0x03 其他方面
聊一些轻松的话题,
- 这个月,经过艰难的努力,我的王者荣耀段位终于上了王者。然鹅当我兴高采烈的准备带妹的时候,才发现只有野王和ADC才有资格带妹,我苦心练的一手辅助此时显得如此苍白无力。
- 在亮亮大佬的带领下,我购买了云服务器和域名,开始捣鼓自己的个人网站。然后经过了长达半个多月的备案审核,网站终于备案成功了,从此我也是有网站的人了。
- 我的云服务器上被别人通过 Redis 漏洞植入了挖矿病毒,只要一启动服务器,CPU 立马跑满,然后访问阻塞。同时还通过某个端口频繁地向外发起请求。主要是我刚接触 Linux 哪儿见过这场面,直接傻掉了。在我慢慢的摸索中,最终找到了这个罪魁祸首,kill 掉病毒进程的一瞬间,CPU 占用从 98% 直接降到 1%,世界清爽了。
- 我发现,办公桌面能反映一个程序员的江湖地位。显示器多不一定代表技术牛批,但是把副屏竖起来看代码的,一定是大佬。
- 记得去年我看着手机里60多个粉丝跟室友说,什么时候我粉丝能够100啊,没想到现在已经有两百多了,哈哈哈哈。