学新技术的6大问题及应对策略
程序视界
共 1599字,需浏览 4分钟
·
2020-04-02 23:23
“有问有答”栏目,是程序视界提供的免费咨询入口。想参与,可以这样:
公众号后台留言,以“有问有答”开头。
描述你的困惑或者问题。
我每周会慎重回答一个问题并整理成文章,周四发布在订阅号程序视界内。
如果觉得这种方式较为麻烦,或者你的问题较为复杂,可以使用“在行”小程序,搜索“安晓辉”,付费约我一对一咨询。
安老师,
我是一个C++开发,现在在学音视频,但是现在遇到一个问题,发现学不下去了,刚开始学基础还好,到了一定程度,就发现自己遇到问题,还不懂,网上又没有资料,也没有人可以请教,现在很苦恼,所以想向老师请教下该怎么办。
我没有办法告诉你具体问题的解决办法,只能从一般性规律上来聊这个问题。
学新技术遇到问题,这是我们都会遇到的事情。一般来讲,要先明确自己的问题是在哪个阶段,然后再看用什么方式来解决。
一、学习新技术的6个问题阶段
我根据从学到用的顺序,总结了学习新技术时遇到问题的6个阶段,见下图。
这6个阶段是:
不知道学什么、不知道从哪里开始学。比如音视频,是从编解码开始,还是从Demux开始?
找不到学习资料。
看不懂知识,看不明白用法。比如看不懂H.265的spec,看不明白ffmpeg里怎么添加新的解码器。
写代码时不会用。知识貌似懂了,代码写不出来,或者写出来后没法与其他输入输出模块整合在一起。
设计模块搞不清用哪些功能、模块、接口等。比如用ffmpeg渲染时,不知道选SDL还是OpenGL。
遇到Bug不知道怎么解。产品发布,出了问题,不知道从何下手去解决。
你可以先看看自己的问题是在哪个阶段。
二、不同阶段的精进策略
接下来咱们说不同阶段的应对策略。
第1个问题阶段,不知道学什么不知道从哪里开始学。
有两种策略,一是问题导向,你要解决什么问题,就从问题入手,倒推需要学什么。比如你要转码,那就先了解常见的编解码格式,从ffmpeg或者vlc的转码功能看起。
第二种策略是以既有知识体系为基础进行学习,比如买一本音视频的书,系统去看。
第2个问题阶段,找不到学习资料。
学习资料分为文章、图书、论文、标准、课程等,可以到图书网站搜书,可以到常见的在线教育平台搜课,可以用Google、百度等搜关键字,还可以到专业论坛浏览帖子或文章……
第3个问题阶段,看不懂知识,看不明白用法。
同一个知识,可能有不同讲法,有的人讲的通俗易懂,有的人讲的云山雾罩。所以首先尝试更换学习资料,寻找讲得更好的资料。
另一种策略是先看别人的demo,看这些demo运转起来是怎么回事儿,再看它怎么用那些知识,从应用往回倒推,去理解知识、技术点。
还有一种策略,就是找人给你讲。
第4个问题阶段,写代码时不会用。
这往往是在使用具体知识点、接口、类库时出现的。此时的常见策略,是找同一个知识点,看别人怎么用的。
比如有些小伙伴学习LibVLC,写代码时,不知道libvlc_media_new_callbacks 这个方法该怎么写,各种callback怎么定义,内部怎么实现,那就看例子怎么用的,看别人怎么用。
先模仿,再自己写,调试着看……反复这么练,慢慢就搞明白了。
第5个问题阶段,设计模块搞不清用哪些功能、模块、接口等。
这往往是因为不大了解某种技术实现同一目的的不同手段各自的应用场景和具体特性,需要逐一去了解,然后匹配你的目标,匹配你模块提供给外界的接口,比较着去选择。
第6个问题阶段,遇到Bug不知道怎么解。
一般解Bug,三种策略:
利用日志查找线索
分析逻辑,走读源码,定位问题
调试跟踪
这些都要求你熟悉业务、熟悉设计、熟悉源码、熟悉具体技术的特性或原理,所以想要更好的解决Bug,其实有很多基本功要练。另外还要有分析问题的能力。
三、问题的反面是成长的契机
我提供的一般性思路,不一定能解决你的问题,但我却也希望,你不要就此放弃。
有问题,有挑战,才有成长。
努力解决问题,提炼经验,获得成长。这是你的机会。
◇◇◇
评论