我们真正需要掌握一种有效有力的方法体系, 独立观察和分析事实, 得出自己的结论, 而不是接受现有结论,人云亦云。当学习一样新事物或新技术时,不是想着快速掌握它以满足工作需要赚取薪水,而是深入细研它,能够从中有新的发现和洞见。
我们从小深受“灌输式学习”的危害 , 总是在别人经验的“安全已知”的保护之下行动, 期望以最小代价获得最大收益, 然而,却因此失去了探索能力和创造能力, 对别人经验企及不到的地方, 望而却步。 回想一下, 一种常见场景是: 按照技术书籍和文章, 一步步搭建起环境, 运行成功。 然后, 就可以大呼 “oh yeah, 成功了!” ; 接着,一遍遍地重复这一过程。 如果失败了, 会去埋怨别人的做法是否有问题, 而这件事原本就是该自己去探索, 别人只不过提供一些有用的线索而已; 如果成功了, 是否会继续深入透彻地探索别人没有做完的工作?
在软件和产品开发活动中, 同样, 没有什么固定的东西可以遵循。 起初, 也许通过那些常规模式和方法就能完成不少任务, 然而, 一旦开始熟练了, 就会发现很多东西一遍遍地重复。 这时候, 可能要面临两个更大的挑战: 整体设计和技术选型。 整体设计是指对整个的需求和开发有更透彻地理解, 能够洞悉其中的关联, 从而设计出更好的框架来处理问题, 加快开发效率和保证质量; 技术选型是指需要在多个技术组件中选择最适合项目的那种,保证实现需求的关键指标和满足约束。 这两个挑战都超出了”已知“ 的范围, 是必须自己去真正探索的, 即使现有的经验也无法直接帮你完成任务。 也正是因为 "超出已知", 才能成为你独特的优势。
此外, 也会有很多事情的阻力非常之大。 需要有魄力地去开拓。 就像乔布斯当年创办苹果一样, 他并没有系统地学习产品开发、市场营销、风险投资之类的事情, 而是在时势所迫的情况下, 依靠自己的直觉、个性一步步去探索, 去消除障碍, 最终达成目标。
软件开发, 本质是探索性的活动。 每一个开发任务,都是一件需要依据直觉、经验、专业能力和职业素养进行持续探索、判断、决策、调整、进击的事情, 而不是一件简单的可以借鉴和重复的事情。期望以例行的一成不变的方法去完成各种开发任务,往往会将这件创造性的工作变成平庸乏味的苦活,而且也不能达到出色的地步。
同样, 当看到那些 IT新闻和评论时, 是否会简单地接受别人的观点呢? 要真正跟进时势变化, 就必须自己去细心搜集各种素材(事实和观点), 整理、萃取、分析、提炼、融合, 直到产生自己的论点和思想。这会是一项艰苦卓绝的活动, 但非常值得投入。
探索式学习, 不是在沙滩上漫步, 而是在大海之中航行, 必须保持高度敏锐的感知、判断和决策, 在不确定性的情况下坚持不懈地探索方向。
探索式学习, 就是在这种不确定性的状态下, 去做自己不太确定的事情, 就像一种冒险一样, 你并不知道前方会是什么, 但是, 通过坚持不懈地努力之后, 你会看到不一样的风景和收获。
具体而言, 要逐步摆脱技术性书籍的引导, 直接到项目官网上去查阅最新信息, 下载源码及文档, 独立摸索和学习, 向高手请教, 与同行交流。 起初的效率可能会慢一点, 但逐渐磨炼出这种学习能力之后, 将对今后的职业生涯大有裨益。