Thursday, December 17, 2015

pragmatic thinking and learning refactor your wetware - 程序员的思维修炼--开发认知潜能



http://www.cnblogs.com/cposture/p/4882288.html
(1)24小时做好记录想法的准备
(2)真正想要了解一只青蛙,传统的解剖不是好办法(分析学习),更好的方式是构建一只青蛙(综合学习)
(3)禁锢杀死脑细胞,美学、丰富的交互环境、观察可以激发大脑
(4)创造来源于选择,选择来自于模式匹配(选择什么,在何情境下选择)
(5)思想使能:相信自己能够再提高自己脑力(大脑可塑)的人,能够更容易提高能力
(6)不使用就会失去
http://www.cnblogs.com/cposture/p/4941213.html
5)学习过程中:
  1. 不要太迫于学会和记忆,首先只是适应它。试着先理解其意思,掌握其主旨思想
  2. 然后再采取从R型到L型的转换
(6)不要追求完美。坦然面对不确定,一些不完整、未完成的事物
(7)结对编程:一人使用L型另一人使用R型,一起工作,容易发现全局事物
(8)多与人交谈,让你的思维变得更加抽象
http://www.cnblogs.com/cposture/p/4941209.html
1)认知上的一些偏见:
  1. 思维定势
  2. 基本归因错误(归咎于别人的个性不顾当时情景)
  3. 自私(成功是因为自己)
  4. 需要定论(希望竭力解决所有未定的问题,强给不成熟的定论,坏:选择少了)
  5. 事实的选择是根据自己的成见和喜好
  6. 曝光效应(经常只因为熟悉某事物而对它有所偏爱,坏的技术,工具)
  7. 霍桑效应(知道自己正被审视,往往会改变自己的行为,但新鲜感减弱时都会回到原来的行为状态)
  8. 虚假记忆
  9. 符号约简谬论(以简单的符号表示一个复杂的系统,丢失细节甚至是事物真相),大脑的一种基本机制
  10. 名词谬论(给事物添上简单的标签)
(2)柏拉图立体:基本元素,后患是柏拉图圈(假设事物差不多是稳定,线性的递进,原因和结果都很简单,然而结果往往是错的)
(3)很少不意味着没有
(4)推迟下结论,过早下结论可能会抹杀成功的选择
(5)信任记录,有些记忆随着时间改变,反而会成为偏见
(6)从多个角度看待问题,你提出的论据是否逻辑性的?还是因为熟悉?是否真的考虑别人的想法?
(7)MBTI性格评测
(8)不能试图改变别人的性格以适合自己,与人争辩时要尊重不同人的不同性格
(9)蜥蜴逻辑(立刻行动、领头意识——拼命成为领头,这样可以任意对待别人、守卫领土,绝不共享信息、秘籍、技巧、办公空间等、受到伤害就愤愤不平、像我这样就是好的)
(10)态度、信念、行为、情感这些都是可传染的,也是一种模仿
(11)避免蜥蜴逻辑,先思考再行动
(12)R型到L型——全局性和经验性到更常规的实践和技能
(13)相信直觉但要经过验证
(14)问问自己为什么坚信某些事?
(15)期望影响现实,你的期望会影响到别人的观点,反过来也一样
(16)一切都是折中的结果,没有期望中那么完美的
(1)学习的本质:从学习者引导出东西,而不是灌输东西(大脑不是灌输的容器)
(6)为目标设定小任务;主动安排你的学习,分配合适的时间,聪明的使用时间,可以变得更有效率
(7)学习类型:听觉型、视觉型、动觉型
(8)建立学习小组——共同学习主题,定期讨论
(9)SQ3R法主动阅读:
  • 调查:带着问题审视书,看目录,各章介绍,总结,在深入细节前有一个总体的印象
  • 问题:写下你要弄明白的问题,标题改为问题
  • 阅读:可以阅读全部内容了,在困难的地方放慢速度;如果内容不是很清楚则重新阅读
  • 复述:复述回想和使用自己的语言改写书本最重要的部分,做笔记(思维导图,要点)
  • 回顾:扩展笔记
(10)重复阅读相同的材料和笔记,不会有助于记住你的笔记,所以多编程实践,解释给其他人听
(11)使用思维导图做笔记——需要使用颜色、符号和其他有意义的东西标记不同的事物
(13)写文档的过程比文档本身更重要
(14)学习某项事物的最简单有效的方法是尝试教别人
(2)真正的学习来自于实践和认知,而不是外部的教学活动或死记硬背
(3)玩:不仅仅接受信息,还在亲自探索和构建思维模型;乐趣
(4)在深入事实之前探索和适应问题,在吸收正式的事实之后,反过来进行更多的探索。这是一个持续循环的过程
(6)开头把事情做好并不重要,重要的是最后把事情做好
(7)在行动之前,完全知道这是什么,对于纠正错误非常重要,所以不要自己纠正而是袖手旁观,尝试会失败,认知会弥补的道理

(13)避免情景切换,保持情景的一个办法是提高进出情景的物理成本,有助于提醒你隐藏的精神成本(作者是工作前,打开办公室里的很多开关,注意不是一两个,再挑选几首好听的音乐)
(14)必须切换了,那么切换前保存一下情景堆栈——留下当时工作的线索(作者是写作时大脑中的想法,几个词语),提醒自己当前的想法
(15)尽量保持大的情景空间——避免情景切换(大的显示器能够容纳多个窗口,避免切来切去)
http://www.cnblogs.com/cposture/p/4993593.html
(3)专家的弱点
  • 容易忽视其他可能性
  • 抵制所属领域的改变
(4)去除专家的弱点
  • 总保持一个新手的大脑,好奇心,充满问题和惊讶
  • 学习时,旧知识不要先入为主,不要存在事先的判断或者固定的看法
  • 认识自己,认识当前时刻,认识所处情景;在复杂和充满细节的世界,不断看清世界和自己
  • 需要不断重新评估自己和自己的条件,否则习惯和过去的智慧会让你看不到眼前的现实(作者举的例子是生活像弯曲的路,需要抓紧方向盘时刻调整自己,不能自动驾驶)
http://macrochen.iteye.com/blog/1060018
然后论证了一些敏捷开发的做法的合理性, 即为什么这么做, 因为这么做是可以更合理的利用人类大脑的思维. 
其中最重要的部分是如何学习, 更准确的说是有效的学习. 

比如怎么看书, 怎么做笔记 
怎么动手实践, 
怎么用思维导图 
怎么避免大脑的一些思维偏见 
怎么集中注意力,提高工作效率 

内容是好的, 不过翻译一般.比较生硬. 

================================我是读书笔记的分割线=========================== 

直觉是专家的基本特征, 但直觉难以驾驭 

专家的行为通常很难用语言解释清楚, 他们的很多行为已经熟练到无意识, 他们大量的经验都是通过大脑的非语言区和无意识区, 这让旁人难以观察, 专家本人难以描述 

一个开发人员声称有十年的开发经验, 可能实际上是一年的经验重复了九次, 那么这个就不能算经验. 

各种规则只能让你启程, 不能让你走的更远. 

初学者:对某一领域的理解仍不够好,无法有其自己的想法,甚至是在特定情况下去质疑某一规则是否适用。 

高级新手: 通常能够摆脱各种规则, 并能独立尝试任务, 但是难以解决问题. 比较缺乏全局观念. 

胜任者:能独立解决遇到的问题, 并开始尝试解决新的问题, 开始主动寻求专家的帮助和建议, 并加以运用. 

精通者:有全局观念, 能反思并纠正以往的工作表现, 能自我改进, 在下一次能做的更好, 并能从他人的失败案例中吸取经验教训. 

经验不是简单的任务清单, 必须更具体的场景关联. 

敏捷中的反馈: 敏捷开发就是在一个高度协作的环境中, 不断的根据反馈进行自我调整和完善, 因此只有较高技能水平的人才能实现. 

专家:总是选择更佳的方式做事, 他们有丰富的经验, 并根据具体的场景选择和运用这些经验. 

专家的数量大概是1~5% 

专家根据直觉工作, 不需要理由. 

专家能区分哪些是无关紧要的细节, 哪些是非常重要的细节, 而且做出这些选择通常是无意识的, 并能根据具体场景下的细节跟自己以往的经验进行匹配. 

自信往往来自于无知而不是知识. 

直觉是专家的看家本领. 

新手遵守规则, 专家相信直觉. 

敏捷开发是一个非常高效的工具, 但不适用一个由完全新手和高级新手组成的团队. 

根据不同的研究表明, 开发人员之间存在20:1或40:1的差异. 

现实的情况告诉我们, 大多数开发人员都停留在高级新手阶段, 只能完成现阶段的任务, 并根据新需求学习新的任务, 而缺乏全局观点. 

google已经成为现代IDE的一部分. 

自我认知只有在高层次的人群中才具有, 这导致处于较低层次的从业者往往高估自己的能力. 

新手能力差但信心足, 专家在异常情况下会更谨慎, 并自我怀疑. 

教学是一门技能, 即使你是某个领域的专家但并不能保证你可以把它交给其他人. 

积极实践的四个条件 
需要一个明确定义的目标 
目标需要有适当的难度(有挑战并可行) 
目标可以提供大量的反馈, 以便能采取下一步行动. 
允许犯错并纠正错误的机会. 

一旦成为某个领域的专家, 在别的领域成为专家会变得相对容易. 

小屁孩很少照你说的做, 而更多的是模仿你的行为. 

没有实践就没有技能. 

规则无法告诉你在某种场景下采用最合适的的措施和行为, 充其量也就是自行车的"辅助轮", 可以帮助你启动, 但是却限制了以后的发展. 

对规则的过度依赖会导致羊群效应而贬低个人创造力. 

对新手可以创建一套规则, 对经验丰富的成员建立一套恶劣的规章制度则会直接导致离开. 

规则只是针对典型情况, 而不是特殊情况 

如果你需要创造力, 直觉或者独创能力, 那么必须打破规则. 

新手需要与场景无关的规则, 高手采用与场景相关的直觉. 

认识你的大脑 
随时记录你的想法, 如果不记录你的想法, 你就不会意识到你拥有它们 

积极的情感对思维有非常关键的作用, 处于高兴的状态可以扩展你的思维过程, 激活更多的大脑物质. 

短暂接触一下苹果公司的商品会使人更具有创造力. 

当你害怕或生气时(充满消极情绪), 你的大脑也开始提供更多的资源, 并为反抗或者逃跑做准备. 

已知的问题如果不加改善, 就会像病毒一样扩展, 并造成更大的破坏(破窗理论) 

如果你的想法过早的受到束缚, 那么你的创造力就会被扼杀 

研究显示, 多使用感官技术可以让学生的学习效果提高5倍 

对于一个开发团队来说, 通过增强感官刺激可以提高项目成功几率, 这里的工具不是UML这样的建模工具, 而是玩具积木或者乐高积木. 

学习的过程, 重要的不是记忆和学会, 而是先"适应"它, 理解其思想, 掌握其主旨. 

结对编程: 工作时, 一个用理性思维, 一个用感性思维. 

隐喻是一种激发创造力的强大工具 

幽默是一种思维, 学习, 创造的重要能力, 它与联系有关. 

急中生智能够发现无关事物之间联系并突破思维限制, 一种值得在团队实践, 锻炼和提倡的技能. 

历史上一些灵感通常来自于一些无聊的事情, 比如洗澡, 除草以及刷盘子等活动, 一种合理的解释是, 理性思维有些厌倦了这些常规的活动, 走神了, 这是感性思维开始发挥它的作用了. 

理性是主动的, 通常发生在你集中精力的时候, 感性是被动的, 你不能命令它, 只能邀请它. 

源代码阅读的次数多于编写的次数. 因此值得花一些时间让其变得适合阅读. 

对于代码规范, 新手会很容易遵守, 高级初学者多半会拒绝, 抱怨这是一种浪费, 专家和精通者则因为很难发现其中惯用的模式, 而认为其十分糟糕. 

当习惯了阅读几行代码的方法, 对于多行代码的方法, 你会不习惯, 认为是错的. 

对代码采用一致的格式, 这不是浪费时间的愚蠢修饰, 而是一种重要的交流工具. 

拥有创造力和解决问题的能力的关键在于寻找思考问题的不同方式. 

黑天鹅理论告诉我们, 很少并不意味着没有 

推迟下结论, 推迟选择, 以便有更好的抉择, 提高成功的机会 

如果还没有准备好, 就不要急着确定细节, 要适应你不知道的事实 

世界上大多数数据都存储在只有90天保质期的硬盘里. 

相信直觉, 但要验证. 

反馈是敏捷软件开发的关键所在, 因为软件开发主要靠人, 而人是有缺陷的. 虽然我们的初衷是好的, 但是我们需要自己检查自己和别人. 

随着你在某个领域越来越专业, 获得自我反馈能力越强, 这件事儿做起来才会越来越轻松. 

主动学习 

技术本身并不重要, 持续学习才是最重要的. 

最可悲的是把教育当成一种被学习者被动接受的事情--灌输, 而不是引导. 

正确的学习培训观点: 
学习不是强加于你的, 而是需要你主动做的事情 
仅仅掌握知识而不去实践, 没有用 
随机的方法, 而没有目标和反馈, 往往会导致随机的结果. 

大脑不是用来灌输的容器, 而是一个随时需要点燃了的火焰. 

SMART代表具体的, 可度量的, 可实现的, 相关的和时间可控的. 对于任何目标, 你都需要制定一个计划, 定出一系列帮你实现目标的任务. 每一个任务应该具有SMART特性. 

目标的具体性: "我想学习Erlang"是不够的, 应该把事情具体化, 比如"我想用Erlang编写一个可以动态生成内容的web服务器" 

可度量性:为了努力实现目标任务, 不管采用什么方法, 你必须能够度量它. 

可控性:稳扎稳打, 采取循序渐进, 比较细小的里程碑. 当实现后, 你会更有动力去实现下一个里程碑. 

没有任何一个目标是孤岛, 目标必须在更大的背景下才有意义:家庭, 事业, 社区, 环境. 

不仅有每周任务来实现目标, 而且还会指定一些很小的任务甚至5分钟的任务, 以确保能达到目标, 任务的长度通常是一天, 当遇到麻烦时, 可以创建5分钟或10分钟的任务来开始. 

设定目标只是第一步, 下一步行动是创建小任务帮助你每天或每隔一段时间都能达到某种程度, 小任务越多, 越能看清你与目标的距离. 

制定计划是一种非常有效的步骤, 而大多数人通常会: 等到有空闲的时候去学习一门新语言或者新技能, 而你会快会发现, 你根本没有空闲时间, 时间就像硬盘空间, 很快就会填满. 时间无法创造和销毁, 只能分配, 主动的安排你的学习, 合理的安排你的时间, 这样会使你更有效率. 

要为不同的时间段设置不同的目标, 比如现在的目标, 5年后的目标, 10年后的目标. 

做计划比计划本身重要得多. 

计划是会变的, 但是必须与目标保持一致. 

任何刚刚诞生的技术可能是高风险同时也高回报的. 

知识投资和金融投资有一个区别是, 所有的知识投资都是有价值的. 有些技术可能不会在工作中用到, 或者直接在当前工作中产生价值, 但是会影响你思考和解决问题的方式 

并非每天的学习都有效, 但是只要定期安排学习, 长期看来一定会成功. 最重要的是要养成一种学习的习惯. 

人最初的智力和性格只代表人的一种可能性. 一些性格和智力测试的结果只是代表你的默认设置, 你可以自己通过选择来做不同的设置, 当你没有注意到这些的时候, 使用的就是默认设置. 因此必须发现你的最佳学习方式, 改进你的默认设置. 

成年人的学习: 
能满足自身的学习兴趣和需求才会主动学习 
学习内容与现实生活相关 
主要采用经验分析法 
老师需要引导, 自己需要与他人交流. 
不同的个体之间会有学习的差异. 

最有效的学习方式是观察和模仿他人. 

相对于其他学习方式, 阅读是效率最低的学习方法. 

SQ3R阅读法: 
调查(Survey)扫描整本书的目录和结构以及总体看法, 提纲挈领. 
问题(Question)记录所有问题 
阅读(Read)阅读全书 
复述(Recite)总结做笔记, 用自己的话描述 
回顾(Review)重读, 与他人讨论, 分享. 

比如看一本Ruby的书, 先翻一下目录, 看看主要内容, 可以知道里面有一些语法的解释, 然后列举了几个项目, 以及一些目前还不感兴趣的高级特性; 接下来是提问, 它是多继承还是单继承?迭代器在ruby是如何用的?如何创建和管理包以及模块?性能如何? 接下来就是看书, 有时间多看些, 没时间少看些; 最后是复述和改写里面的例子. 

短时间学习大量信息不是很有效率. 

可以通过间隔你的测试时间来增强你的记忆, 比如2-2-2-6模式, 在两个小时, 两天, 两周和6个月之后重新测试. 

思维导图 

线性大纲是一种层次结构, 往往阻碍了人的创造力, 因为有些想法并不适合采用这种层次结构. 

思维导图通过不同的颜色和符号, 来增加表达的丰富性, 并且通过非线性的空间结构向你传达信息, 更强调事物之间的线索和关系. 

建议手工绘制思维导图, 可以更好的实现头脑风暴, 学习和探索性思维. 

听讲座记笔记可以帮助我们记忆讲座的内容, 即使这些笔记再也没有看过.这里更强调的是记笔记的过程 

思维导图也是一样, 开始画一个草图, 然后重画, 在重画的过程中形成更多的关联. 

当你不确定你会发现什么时, 思维导图是最有效的. 

如果你在解决一个问题, 却不知道该如何做, 思维导图可以帮助你. 

思维导图不需要完整的长篇大论, 以关键词为标题即可, 重要的线索采用粗体, 次要的关联采用细线, 将所有已知的内容展现出来即可. 

思维导图的最重要的作用就是帮我们理清思路, 尤其当你陷入馄饨状态的时候, 用思维导图来帮我们指引方向. 

如果文档不能提供价值就不要提供. 

写文档的过程比文档本身更重要. 

学习某项事物最简单有效的方法就是尝试教别人. 

通过向他人解释某个复杂的东西的过程也是练习从听众的角度观察问题, 并创建隐喻的好机会. 

积累经验 
波利亚解题方法 
解决问题先提问: 
未知量是什么 
已知量是什么 
条件是什么 

从相似点中学习, 从差异中忘却. 

"我不知道"是一个良好的开端 

种菜时, 如果长得不好, 你不会责怪菜, 而是寻找其他理由. 

正确的反馈利于学习. 

不要急于将精力放在纠正一个个细节上, 只需要先建立意识即可. 

最后期限会使大脑恐慌. 

当面对时间压力时, 人最没有创造力. 

在经历过一段混乱, 惊慌失措的危机时刻之后, 需要一段整顿时间, 即释放压力. 

当大脑受到压力, 他会主动停止一些思考, 眼界会变窄, 不再考虑可能的选择. 真糟糕的时候会决绝感性思维, 理性思维会主导一切. 

如果失败是有代价的, 就不会允许实验, 没有风险, 也就没有收获. 

大脑对于不同的输入源分辨率非常低. 

妻子换了新发型而丈夫却根本没有注意到, 这主要是因为丈夫看到的内容更多还是基于过去的信息, 而不是目前的事实. 这也是大脑的工作方式. 

想象自己成功被证明是一种达到成功的有效方法. 

控制注意力 

注意力是一种稀缺资源. 当自制力很差的时候, 一些无关紧要的事情会分散我们的注意力. 

我们并不是没有时间, 只是我们的注意力不够用而已. 

冥想训练可以提高人的注意力. 

冥想训练: 
找一个安静的地方 
舒适的坐立, 背挺直 
闭上眼睛, 将注意力集中在呼吸 

如果你不能给出一件事情出错的三种方式, 或者提供一个问题的三种解决方式, 那么你的思考还不充分. 
不要在头脑中填满能轻易找到答案的信息和知识. 

wiki是一种基于文本的思维导图 

多任务处理会耗费20~40%的生产力. 

试图将注意力分配到几件事情上, 意味着你在每件事情上都不会做到最好. 

不停的中断手头上的事物而去处理邮件或回复即时消息, 你的智商会下降10分. 
无论你做什么, 都不要同时做. 
当你有一个想法时, 最好把它放在合适的地方, 无论是待办事项还是电子邮件, 然后回到你正在做的事情上. 

不要在头脑中保留清单, 尽量用外部系统来帮你维护更新. 
坚持持续做正在处理的事情直到完成, 避免上下文切换. 
每个人在一天中应该有一段时间是效率最高的, 必须尽量避免在这段时间内被干扰. 
少发邮件, 你就会少收邮件. 

减少上下文切换的一个不错的做法就是提高上下文切换的成本(防止犯罪, 就是提高犯罪的成本) 为了减少你随时打开笔记本上网的诱惑, 直接将笔记本关闭而不是休眠. 从而提交开机的时间成本. 

如果打扰不可避免, 那么最好留下一些线索, 这样有利于更好的返回到当前的状态, 继续处理. 

比如在写邮件的时候, 有人来打扰, 最好几下几个关键字, 保留接下来的想法, 以便结束打扰之后能马上回到写邮件的状态. 
多使用一台显示器, 可以提高20~30%的生产力. 因为多一台显示器可以减少上下文切换. 
alt+tab是生产力杀手. 

随时集中注意力, 随时意识到自己要集中注意力做什么. 
超越专家 
将一种新的行为变成习惯至少需要三周, 请给这个新的行为足够的机会 
你的想法会改变你大脑的机能和化学成分, 如果你认为自己会失败, 你的预感就是实现. 
开始目标设低一些, 当完成时, 奖励一下自己, 但是脑中只要记住最终目标, 然后一步一步去实现, 不需要一次全部想清楚. 
人总是喜欢安于现状, 当尝试改变时, 总会有一种惯性阻碍这种改变, 因此我们需要克服这种惯性的阻力. 
尽量保持桌面和代码的美感, 通过让大脑接受美的事物, 来提高感性思维能力. 让散步成为你每天生活的一部分. 
http://aleung.github.io/blog/2012/06/05/The-programmer-thought-of-uniting-the-reading-notes/
发挥隐性思维,捕获闪现灵感,随时准备着记录下来。

隐性思维会被压抑,在一种思维不受控制的状态下,隐性思维才会发挥作用。

重视你的直觉,但要去验证它,而不是盲目在第一时间跟随直觉行动。

隐性思维是非线性的,它从你的记忆库中匹配关联,多学习接触不同类别的东西,为隐性思维累积素材。http://www.jianshu.com/p/12a803b2b535
很多认知科学相关的书籍都把大脑运作分为两种模式。比如《思考快与慢》里面的快思维和慢思维。这本书把大脑比作电脑,由单一总线和2种 CPU-- L模式(语言、逻辑、分析、线性)和R模式(整体、综合、感知)组成。意识是多种思想竞争后浮现在表面的结果,也可以说意识是人脑中的某一部分占据了总线。根据《意识的解释》丹尼特博士提出在任何特定时刻头脑中都包含了事件、想法、计划等多个草稿,可把它们看做头脑中的萤火虫云。当几个云同步显示时,这就是意识。很多时候我们感觉没有时间做某事,实际上是总线被占据,没有精力去做。
进入工业时代以来人类倾向于强调逻辑、语言(L模式)的重要,然而在产品过剩的新世纪,与R模式更相关的设计和美越来越重要。真正有效的学习来自于L和R模式的配合。
真正想要了解一只青蛙,传统的解剖不是办法,更好的方式是构造一只青蛙。

实践(Pramatic)

大脑不是一个用于填充的容器,而是需要一束点燃的火焰
Pramatic 中文是指务实的、实践的。本书重点不是理论的分析而是作者结合自身大量的实践经验和技巧。
总结一些非常实用的
  • 「角色扮演」
  • 建立快速反馈测试环境
  • 培养R模式
    • 隐喻
    • 学会讲笑话
  • 小黄鸭技巧
  • 晨写
  • 「自由写」Fieldstone
  • 了解内在诀窍

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts