技术的洞察力

很多时候,我在学技术时候,好像学了很多,但是并没有获得一流的见解(让自己顿悟的见解)和常识,学习质量很低,甚至连技术本身都没有理解透,只是囫囵吞枣,我也很“努力”,写几个API做做样子,这是没有技术悟性的体现吗?直到今天线上一个问题让我对答案有了新的认识。因为一行判断金额小于0的缺少,导致几十万损失,本来是扣钱突然成了赠钱,这种低级错误导致的公司损失,非常让我惭愧和愤怒,激发了我和这些罪恶分子的斗争精神和意识,保护每一行代码成了对自我的一个要求,正如自测是一个职业素养一样重要,业务代码需要防御式编程的基础设计。虽然是一行简单的代码,但是体现了对业务的敏感。技术的学习是一方面,对技术的理解是另一方面,对技术的灵活使用,妙用更是另一方面,技术的奇技淫巧和设计思路大多可以通过源码,别人讲述来一窥一二,但是对技术本身的洞察力确需要对“最基础”的问题进行思考,深浅本身都是相对的,别人能写出Docker为什么你不能?如何写出不会转错账的代码?哪一个深哪一个浅呢?比如HashMap即使把源码看完,一行一行分析的确能体现技术功底,但是并非真正理解HashMap的精髓,比如HashCode真实冲突率如何?最多存储多少个key,怎么知道哪两个key会发生hash冲突?线程不安全到底指的什么意思?换掉其他的HashCode方法呢?HashMap的工程实践取舍和权衡到底是什么?为什么hashCode方法不用UUID生成呢?HashMap缺点是什么?这些问题本身也简单也不简单。但是思考之后,会对HashMap产生新的认识。往往复杂问题的来源就是为了解决一个简单问题而带来另一个问题,然后不断解决新问题而产生的复杂。最后形成一系列解决方案。同时技术和业务的结合也会加深对技术的理解(包括正确的和错误的)。技术就该“怎么用”不见得是对的。所以我觉得技术洞察力来自:1 从学习开始,从理解深入,从超越技术本身升华,从业务踩坑发挥最大作用,从基础举一反三。 2 冷静的头脑。 虽然工作五年,但是对很多问题的理解并不深入,需要深入学习,获得新的理解,重复学习并不可怕,可怕的是没有新的理解,新的学习要以获得洞察力,新理解并且记忆为重点。从而发挥业务最大实际作用。

猜你喜欢

转载自blog.51cto.com/thinklili/2492123