技术知识的分析

分类

1. 原理

比如:

  • 编译: 编译的流程 实现编程语言虚拟机的流程
  • 操作系统: 操作系统实现的文件系统的流程
  • 图形学: 渲染的流程
  • 网络: http报文格式、http通讯过程
  • RPC通讯过程、爬虫的流程

2. 实践经验/填坑

比如:

  • iOS如何高效地在长列表中渲染的图片的圆角
  • 基于RN的view实现原生UITableView主要功能
  • Android 2.x 前端兼容问题

3. 配置/操作指引

比如:

  • linux服务器环境配置 (nginx, ufw, redis, supervisor)
  • docker 制作, 运行, 部署配置
  • 开发机环境配置
  • SDL库的安装, 编译, 导入到XCode项目的环境配置 (包括其他平台和IDE)
  • jsonrpc, xmlrpc, soap, restfulAPI

这类知识的特点:

  • 一看就会,cheap knowledge
  • 但是官方文档难看懂,设计反人类
  • 找资源/试错/总结需要花时间,需要有人做这份文档
  • 有些官方文档成熟,那就不需要做这份文档

对待这类知识的态度:

  • 存一份表,用的时候查表
  • 或者不需要表,只要记住结论,用的时候Google
  • 表的制作需要花时间,在于:找资料、写例子试错、总结
  • 表的制作适合团队学习里头分工,每个人研究一份主题文档,加起来效率就高了

作用

为什么学原理

1) 工作外的原理,可以提高自信

  • 自信,只有自己觉得能行的时候,才能把事情做好
  • 领域知识,指不定哪天就用上了,到时不会有陌生敬畏感

2) 工作中的原理,有实质的帮助

  • 原理可以让我明白整个流程,是DEBUG的前提,是程序分层的基础
  • 有些场景需要知道内部原理,才可以优化程序,把它变更好

为什么要总结实践经验,存份配置

  • 为了快速完成工作

获取途径

原理 → 请教领域专家
实践经验 → 丰富项目经验
操作指引 → 难度不高,但是找资料和试错需要时间,有一个人去搞定就好;适合团队学习,效率大于单兵;

如何掌握知识

先解决,如何理解原理

  1. 通过 有人教或文章 知道实现流程。<1>
  2. 选合适的语言。<2>
  3. 实现这个东西。

再解决,如何深入掌握知识 (针对工作中)

  1. 理解原理
  2. 再理解原理为什么要这样做 <3>
  3. 以及是否有其他方案,哪一种方案更好 能在这个层面去理解,去操纵的时候,算是熟练了;

<1>
注意抓主干去枝末。
比如爬虫:提高爬虫效率,提高爬虫可扩展性,对付反爬虫策略;这些对学习原理来说是枝末。
这些地方要有实际应用才去做 → 实践过程中,解决一个个实际问题提炼总结。

<2>
语言的选择至关重要,要抓主要矛盾
用c++写渲染器,一半时间都在和c++ 打架;
用js写就不会,跑的慢些没关系,能理解原理就行;
要抓主要矛盾,学习图形学的时候,最重要的是图形学的 理论/模型/流程;而不是和内存打架,怎么怎么高效;
自己的项目,无论何时都要用最方便的语言来写;

<3>
注意,有时有些原理并没有为什么,就是规定,谁拳头大谁定;
有些是历史原因,路径依赖;

posted @ 2018-03-18 12:07  twlk28  阅读(123)  评论(0编辑  收藏  举报