在编程以外的闲暇时间,打算读一点有助于程序员扩展视野和提高素养的书籍。
笔者找到了这本《高效能程序员的修炼》:本书作者是Stack Overflow的创始人Jeff Atwood,内容是有关代码以外的,需要每个程序员思考和注意的事情。
该读书笔记没有提到书中所说的每个方面,只是针对了笔者觉得比较重要的几点并结合了自己的想法和感悟整理而成。
我更建议人们先花时间想想,什么样的问题才是他们真正热爱和感兴趣的,然后再好好研究这些问题。生命中最难的,是想清楚你真正想要做的事情,而不是学上一堆假设将来会有用的东西。
所以说在决定这种人生大事上,确实要花上心思,就好比笔者自己在通信工程专业从本科一直念完了硕士,拿到硕士学位证后花了一周的深思熟虑,毅然决定做软件,顶住各方压力(因为毕竟是换专业择业,不过还好父母还是一直很支持我的)三个月的时间自学了iOS开发,然后就来到了上海找到了第一份工作。
入职以后,在工作学习中甚感愉快,虽然有时会有压力,但是每天都过得很开心,因为这正是我想做的。
杰出的程序员和勉强过得去的程序员之间的差别是他们能不能把他们的想法表达清楚。
大家应该不会怀疑程序员的平均智商,但是程序员中每个人的表达能力却参差不齐,差别极大。其实有些时候头脑中想到的方法可能是在潜意识下想到的,如果这时候需要我们有条理地说出来,确实不是一件容易的事。
像这种用意识层面的语言来表达潜意识的思考的能力确实是值得锻炼的。试想一下,如果我们能把自己潜意识层面的思考准确地再现于意识层面,那么这显然会有助于帮助我们检查思维的缜密性和正确性,而且也会锻炼我们的逻辑思维,从而能更好地去思考,形成良性循环。
因此表达能力越好的程序员,往往越能解决好问题:因为TA可以将问题和思考清晰地理出来,对解决问题帮助很大。
勤加练习固然重要,但是只顾着买头写代码,没有讨论和反思的时间,那么是无法得到真正的进步的。在阅读博客和相关书籍的过程中,从自身利益出发去考虑,如果我们能从中找到哪怕一点对我们有用的东西,其实就已经很赚了。
复习和反思是学习过程中很重要的环节,如果没有及时的复习与反思,那么往往事倍公半:忘记知识,而且就算不忘,也无法高效地将知识提取出来。作为程序员,应该适当脱离键盘反复思考,将学到的知识高效地整合到自己的知识结构中,有助于知识的提取和运用。
读到这里的时候笔者很是惭愧。因为笔者在写代码的时候,是将代码和注释一起写的。所以应该将这个习惯改过来:写代码的时候忘记注释,应该尽全力用代码自己解释逻辑。到最后逻辑达到很清晰的程度后,再加上必要的注释:为什么用的是这个逻辑。
笔者在工作中也会请教同事问题,前几次问的时候发现自己将问题说出来之后,自己头脑里已经有了解决的办法,而且觉得很简单。所以后来想问问题的时候,保证自己先解决一般问题,将问题深入,然后尽可能问出高质量的问题来。
笔者认为如果是对一个无生命体,大脑中负责情感的部分会被抑制,会更加促进理性分析,更加清晰地表述问题(因为你的潜意识知道小黄鸭*是不会“理解”你的话里半点遗漏的点)。
会议绝不应该超过一个小时。 每个会议都要有一个清晰的目标声明。 在开户之前做好功课:提前知道将要讨论和分享的内容。 把会议变成可选的:每一个人都因为他们想要在那里,或者需要在那里。 会议结束后,概括一下待办事项。
其实会议确实比较耗费时间,所以就要为了提升会议的效率和价值:
这两条分别告诉我们:
看似是矛盾的两点,但确是提升用户体验的“黄金理论”。
对于第一条,笔者深有体验:笔者做了一个类似新手引导的教程,因为队友修改了页面加载的逻辑,导致了用户只能通过,点击,滑动,手动加载后才能出现看到教程的情况,而刚看到页面时,教程是不会自动出来的,其实这个体验是很差的,因为用户需要自己动手。但是当时由于已经处于测试末尾阶段,我个人也没有在意。
在跟产品经理交流后,产品经理人很好,只是说了最好要加上。我想了想还是加了,添加的方法很简单,只是在viewWillAppear
方法里加了触发的逻辑,但却发现体验直线上升。这件事对我感触很大,只是一两行代码就能明显改善用户体验,那么为什么不去做呢?为什么一定要去麻烦用户去动脑,去动手呢?
本书中,作者说的点还是蛮多的,比较杂,但确是引发程序员代码之外思考的好的启蒙,有助于不让程序员局限于代码之中,能够多角度,多层面考虑问题。