如何自学与提问
近日9116背锅与带外包后的心得。
关键词: 方法论
, 自学
, 沟通
, 自动化
★ 如何自学?
目前信息与技术出现了大爆炸,前端每隔3月就完全变个样,后端组件全面云化,与此同时还要自学一些跨行业的知识——比如金融、心理学、硬件、企业IT等等。在目前就业形势更加严峻、竞争更加激烈的情况下,高效地自学让你的时间更有价值。
◇ 你是否有自学意识?
首先读者可以对号入座一下
- 我已经很久没有研究新技术了,项目中用着SSH也很稳定
- 开发环境中的某款框架老是出现故障,看来我不得不找本书学习一下了
- 我在浏览最新技术新闻时,发现H公司开发的S框架某特性非常棒,我打算去看一下源码实现
- 我认为我X技术方面能力比较薄弱,打算列一个提纲,把它涉及到的领域依次搞定
在实际工作中,我发现很多同事与合作方都属于1~2型,少部分属于3,而4基本没有见过。首先上结论,第一种与第二种相当危险,属于抗拒或者被动学习类型,除非你的其它能力非常优秀,否则很容易被应届生替换掉。第三种可以成为中高级技术工程师,建议向第四种进行发展。最后一种属于刻意练习,可以成为跨领域专家,是本文的最终目标。
本文主要讲从第三种转变到第四种的学习方法
◇ 如何建立问题清单
举一个跨领域的例子,比如经常在新闻上看到“美联储加息,SHIBOR变高”这个讨论,甚至有引申到房贷/中小企业等问题,这个与自己的生活息息相关,因此打算学习一个。
首先以“加息”这个经济领域为主键,对知识进行发散
- 使用Google/Wiki搜索SHIBOR,美联储的Wiki定义,了解到了货币,基础利率,逆回购,金融周期等概念
- 进一步搜索博客/某乎,查看相关知识片段,并自己总结
- 在豆瓣/Amazon等地搜索专业书籍,推荐程度: 翻译著作 > 高校教材 > 国内书籍 > 国内杂志
- 开始花费时间阅读书籍,比如下面就是我找的书
领域问题清单 |
书籍 |
货币/期货/利率 |
《期货、期权及其衍生品》 |
金融周期 |
《大而不倒》 |
利率相关 |
《利率史》 |
凯恩斯主义 |
《就业,利息与货币通论》 |
这里可以借助Kindle进行标记
◇ 系统化学习
这个地方需要占用很多时间看专业书籍,有关读书的技巧后续再谈
- 不要说自己很忙没时间,大家都忙
- 需要坚持完成清单,看不进去也得看
- 可以跳读
◇ 控制深度与广度
众所周知,各个领域知识是学不完的,而是自己时间是有限的,因此就需要合理分配,控制深度与广度。对于知识广度深度的概念,网上有两种主流的知识体系说法,一种说【正态分布】,一种说【T型结构】,其实都是一样的
以上图中红色为例,最中间就是深入的领域,比如Java/JVM等吃饭的手艺,而两侧就是知识的广度,比如金融、硬件、质量、ERP、CRM等等
这里主要看时间分配
- 红色或者绿色是比较通用的,取决于自己控制的比例
- 蓝色比较冷门的方向,而不是通用技术(比如电子、嵌入式研发)
- 紫色是万金油(适合研发转销售/产品/管理),我个人更偏向这种
◇ 关于自学的总结
- 通过搜索引擎建立索引
- 阅读专业的书籍解决问题
★ 如何解决问题?
首先举一个例子
小李是一名开发,他在使用某兄弟部门的框架时出现故障无法解决,于是拉上主管与框架接口人远程会议进行定位。由于主管与接口人不明白故障场景细节,小李描述了很久也没说清楚问题到底在哪,同时由于缺少断点日志细节的支撑,导致接口人认为“被当成免费客服”,进行了甩锅,最终纯技术问题变成了扯皮,浪费了三个人的时间(最终要通过加班来补偿)
上面的场景相信每个人都遇到过,有两个原因,第一个是【挤牙膏】,第二个是【对部门墙过于敏感】。经常开这种低效会议后性格会变得急躁。
再举一个有代表性的段子,在很多IT论坛非常常见
某网友遇到一个问题后
- 去v2ex发帖抱怨主管/公司 √
- 有话与当事人当面说 x
这个场景中,同样没有解决问题,反而激化了矛盾
◇ 对领域问题保持信心
上面的例子中,所有问题都是由于【在某领域不专业】导致的,而不是【自己能力差】导致。
任何人都有不专业的领域,你可能医术精湛,但是做饭不一定好吃,【做饭领域能力差】这个事实并不能证明你【所有领域的能力都差】的结论。你只需要对特定领域进行自学或者通过专家进行求助即可,这是一个可以固化的流程。因此,遇到问题首先要对自己有信心。
◇ 沟通/求助时对他人保持信任
在遇到问题时,自己一般会处于信息弱势侧,但千万不要第一步就走极端
-
降低抵触心理: 作为弱势侧出于本能可能会【敏感/多疑/抵触/戾气】,但是它不等于【领导/同事是假想敌】,不能在无证据的基础上认为领导会【坑你】,因此谈话前提是对他人保持信任;再比如求助他人时,不要总把部门墙想得那么厚,大部分员工都是普通人;有矛盾时先说出来,而不是发帖爆料/邮件群发/甩手离职/私下抱怨
-
当面解决问题: 不要瞻前顾后,逃避问题。只要不是开弓箭这种场景,都可以投入时间资源去尝试,在自己不懂的领域成为“猪队友”又不丢人,最多被抱怨而已。
举个例子,比如你由于项目不顺心,有离职的打算,这里的重点是【项目不顺心】问题,而不是【离职】问题,你需要先与他人沟通是否能够解决项目问题再做是否离职的结论,而不是通过发离职信去逃避。比如那位大神的《我为什么离开了XX》,个人认为就不太妥当
-
不要尝试说服对方: 【说服了对方】不等于【解决了问题】
◇ 个人层面通过小改进解决问题
回到第一个案例,其实问题很好解决
对于开发来说
- 需要提问前通过文字的形式描述场景细节
- 通过断点、日志或者参数证明自己做过努力
- 提问前需要组织好语言
对于开发主管来说
- 完善人员培训与求助流程,如果亲自完成所有的事会累死的
- 提供更多的求助/ 提问渠道
对于被求助侧来说,主要是实现求助自动化
- 完善issus/wiki等搜索服务
- 规范求助流程,比如提issue后才进行支撑
总之,不懂业务是很正常的,都可以想办法解决
◇ 通过自动化工具解决问题
对于纯技术问题,公司内部可以自研/搭建/购买Gitlab/GitHub或者YouTrack(不得不说,JetBrain真是一家优秀的公司)等SAAS服务来彻底解决【挤牙膏】这种低效的问题
上图就是Youtrack系统,如果自己业务需求复杂,可以参考此类系统进行自研定制开发
◇ 总结
- 个人维度上,减少戾气。为提问做准备,尽量不浪费时间
- 项目维度上,投入资源实现自动化问题追踪,节省人力
说白了还是对特定领域的洞察能力,才是最重要的
★ 招聘时的筛选方法
讲了那么多,我相信大多数人都不愿意与【不懂自学/提问】的人一起工作。对于这点,我们可以参考一些成熟的招聘帖子,比如某 Java专家招聘信息的要求
熟悉底层中间件、分布式技术(包括 RCP 框架、缓存、消息系统、热部署、JMX 等),对 CAP 定论有深入的理解。
这段就要求了技术上要有至少第四层的自学深度与广度
具有比较强的问题分析和处理能力,热衷于技术,有一定的技术代码癖,github、stackoverflow 活跃者优先考虑。
有较强的逻辑思维能力,善于分析、归纳、解决问题,持续学习和总结,自我迭代。
这两段就要求了解决问题的能力
对于我个人来说,至少要求有第三层自学能力的人,一般会问是否熟悉Java8/开源框架源码,马上就可以判断对方是否有过自学
参考文献