最近有粉丝在与我微信沟通,主要想考虑转型数仓方面,他问了我很多问题,也许是我当时比较闲,也一一给予解答,但是我越回答越觉得不对味,为什么呢?
因为他的疑惑的层面都太大了!让我的理解就是人为的为自己设置障碍,都是在表达出一个意思,这个好复杂,那个好难。
看看,什么事情都没干呢!就给自己压上了沉重的思想包袱。
我觉得这是技能初学者特别容易走入的误区:光想不练。这也是困惑很多初学者的问题,导致了长期停留于想法中的放弃!
这话虽然说的有些狠,也很俗套,但包括我在内,在学习新技术的时候也是经常进入这个误区。
对于新东西,你始终要有这么一个意识:你怎么可能一下子就掌握全面,怎么可能不出错,而且怎么能让你轻易就驾驭了?
编程和技能学习也是这个道理,一开始的重点并不是去分析用哪种技术,或者技能路线的孰优孰劣,而应该是根据你想要建立的一种假设应用场景去思考我应该学习那些技能就能验证我的假设是成立的。
就比如说:我前期要做一个案例:我的假设就是我有一个数据库是个单库,但是我想把它拆解开,形成多库。
你可以理解为分库操作,单库到分库的数据需要迁移。那么就需要通过ETL(一种数据迁移的技术过程),那么实现ETL我就要学习如何从数据库中捕获数据,接着又要考虑数据如何中转、如何转存和如何提高转换的性能。
有了假设以及验证假设所需要完成的步骤,我就很清楚我需要学习的技术方向了,也就是寻找针对ETL有哪些技术方案,但是我的欲望是想提升大数据方面的能力,那么我就会考虑实现ETL,有哪些大数据技术可以支撑。
我们看到没,通过层层的逻辑推理,我就自然而然找到了验证假设的技术,大数据的实时处理技术来实现,因此我在验证的过程中,学会了如何应用Apache Storm,Apache Kafka。通过对假设的验证,不仅学到了技术,也充分对ETL的E(抽取)、T(转换)、L(加载)有了更深刻的理解,那么这种对技术概念的理解就形成了你的能力模式,这种模式才是最强的!
总而言之一句话,当你不懂有想学习一门新技能的时候,不要去啃技术概念,而是要对一个具体的适合该技术的场景提出假设,并去验证假设,验证的过程中学习技术,应用技术,理解技术,最后才能深刻的理解技术背后的模式,形成对技术概念的了然于胸。