反思一下最近的状况
写于2018年01月08日

发现一个规律,一到晚上大脑就会想很多东西。严重的时候还会睡不着,大家可以看看这篇哈哈哈人啊,怎么一到黑夜,就开始矫情?
今晚上又是一个不眠之夜,于是爬起来反思反思最近的事情。

烦人的代码

最近总是不想写代码,想起那些繁琐的业务逻辑,那个折腾人的 CSS 心理就很烦,能拖就拖。写完一个项目后,感觉整个世界都轻了,感觉又有了大把时间可以咸鱼。

后面我想了想,让我烦躁的其实是,那些不熟悉的东西。最近学编译原理的时候,边看flex的文档,边写正则,会让我感觉很怵。我英语虽然还行,看个文档能凑合用,但是看到大段大段的英文还是会让我烦躁起来。再加上flex本身就是一个陌生的东西,更是让我感到焦虑,总是感觉读了半天还是整体并没有一个概念。

写 CSS 的时候也是,其实我 CSS 还算熟悉,给个效果大部分情况下都能用 CSS 给你还原出来。但是,CSS 本身就让人感觉是个设计不足的东西,让样式实现上面有太多的 trick,没有一套比较规范的布局设计(看看那个原本用来实现图文包围的float属性却被拿来布局你就懂了)。这就使得,这个代码可能在这个浏览器上能实现这个效果,在另外一个浏览器上效果会有些差异。或者是,这个效果能实现,但是会影响到其他地方的布局等等。一个效果可能有好几种实现方式,你还得根据实际情况挑选一个最优的,有时候还会发现那么多实现方式,居然一个也不合适,变得十分烦躁。到后面就变得,只要一想到要写 CSS 就觉得很烦。

所以,我最近老是在想我到底是不是喜欢计算机,还是我喜欢成为大牛后那种感觉而不是编程本身等等。

但是后来想想,emmmmm….,我应该还是喜欢计算机的,我看到技术相关的文章会两眼放光(现在很少了,因为每天的东西太多了,变成焦虑),学习新技术的时候会想,又能多学一点新东西了。学习底层的时候会想,自己终于能够更深刻地理解原理了,很兴奋。

然后又想想,emmmmm….,我之所以会烦躁是因为写业务代码本身繁琐而且自己实际上收获不了什么东西(除了钱,很少的钱T_T),而且我本身对它没什么兴趣。

然后继续想想,emmmmm….,遇到困难会退缩我是承认的,我遇到难以解决的问题会暂时休息一下,但是一旦开始休息我就不想回去了。感觉那里等待我的是一个几百公斤的巨石需要让我抬走。

这是最后一个,emmmmm….,我发现我总是会纠结于完美的代码,纠结于一定要自己亲手实现,纠结于功能不够完善,然后耽误了整个项目。何等的愚蠢。

但问题总是要解决的,写在这里让以后的我观望,心里面焦虑了就回到博客来看看吧。。。

  • 遇到困难的时候请一定要分解问题,弄清困难的源头,原因,需要做哪些事情才能解决,不要把整个问题捏在一起看
  • 不要区分中文和英文,能学到新东西就是好东西。当你遇到不熟悉的东西时。赶紧Google,不管用什么方法,弄清楚他。
  • 跑起来再说,程序是一点点迭代出来的,最开始请千万不要不要纠结于完美的代码,亲手实现这些东西。让核心的东西跑起来再说,然后慢慢迭代。不然你的项目都会半途而废。好的东西都不是一次性就能做出来的。
  • 你的英语还不行,只有多读才能提升阅读速度和理解能力。。。

焦虑的毕业季

到了毕业季,每个人见面的问候都变成了:“找到工作了么?”、“在哪家公司?”、“你月薪多少?”。毫不隐瞒地说,我是一个经常拿别人来和自己比较的人,希望自己能比别人更优秀。如果遇到比自己优秀的人,会变得很焦虑。所以很多时候,本身很正常的技术、心得讨论,在我心理变成了攀比。

2017年过了,这应该算是我有史以来过得最糟糕的一年,暑假荒废了两个月,一整年都没有什么实质性的收获。不过,也正是那荒废的几个月,让我更了解自己。虽然固有的性格难以改变,但是了解自己毕竟是第一步。我慢慢能体会到“你的优秀只与你自己有关,和其他人的优秀毫无关系”这种观点。

也是在2017年,我大概知道自己想过什么样的生活。我对自己真正喜欢做什么事情一直是很明确的(编程、设计)。但是,对于自己以后踏入社会后想过什么样的生活却是在昨年才大概知晓。

最近辞掉了自己的第一份工作。当初本来想的是面试混个经验,后面去公司后发现环境都还行,就决定入职。但是越做到后面感觉做的很不开心,一是觉得遗留代码真的太多太糟糕了,现有的业务都是基于遗留代码,开发效率很低,而且也没有明确的代码规范,更是雪上加霜。二是离学校太远了,每天下班回到学校都非常非常累,只想躺在床上睡觉。所以剩下的这一段时间,希望给自己继续充下电,毕业后找个喜欢的公司。

开始单元测试

以前学编程就是先买一本书,然后慢慢看,然后看着看着就不想看了。。。,看书学编程其实是一件效率极低的事情。这个道理我最近才懂得,因为并没有足够的反馈,会让你觉得看书是一件极其无聊的事情。

后来我懂了,嗯哼,学编程就是要徒手撸代码,配合Google和文档。看点tutorial熟悉下语法就直接上手做想做的东西。当然,这只是理想状态,我还达不到这种水平。我还是得看看大篇文档才能开始做东西,不然总感觉少点什么。看过一本书叫《控制论与科学方法论》有一个观点是,如果你无法做成某件事情,是因为和这件事相关的信息你知道的还不够多,应当多去学习相关的信息而不是死磕。

如果你做的东西比较大,不妨写写单元测试,这真是个好东西。单元测试能保证你细分模块是否按照预期运行。第一次写单元测试,会遇到的问题是,我该测那些东西?用例怎么写?其实只要是你自己写出来的代码都应该测一下,而如果一些东西是由第三方库或者框架提供的,那么就不用测了。用例的书写规则是保证每行代码都能运行过至少一次,所以你编写的用例要保证你所测的模块中每一行代码都能得到运行,这就是基本的原则。

除了测试是否满足预期运行结果。单元测试还能提供给你足够的正面反馈。想一想如果你做一个项目,比较大,做了半个星期感觉还是不够运行,会不会觉得有点耐不住性子,越往后越不知道自己在做什么鬼。单元测试就是能够让你“提前运行”你的代码,告诉你:“虽然整个项目还没跑起来,但是你这个模块做的还是66的”,而且单元测试能保证你代码的低耦合性,帮你理清模块职责。所以说了那么多,开始写单元测试吧。

学Django的时候第一次真正开始写单元测试(因为前端代码的单元测试太繁琐了,JavaScript松散的限制让我不知道该测些什么),Django提供了一套丰富的单元测试工具。然后就爱上了单元测试,因为它会告诉你,哎哟,小伙子代码写的挺6哦。