如果说深度思考决定人生和事业的话,那什么才是深度思考的体现呢?我想深度思考的体现最主要在三个方面:
- 深度。对于自己所处的技术领域,有着非常深入的了解。对于 Android 开发而言,除了参照网上的教程,能够了解各种 API 和第三方库的功能,并把它们用起来,发挥好它们的作用之外,同时还需要对 API 和库的如下方面有一定的了解:
- 设计目标及设计时的应用场景
- 设计思想
- 实现的整体架构及方法
- 局限性
- 是否有改进的方法,以及改进的方法是什么
- 广度。广度可以有很多个维度来看。对于 API 和某个功能库,在广度方面,需要了解如下的一些东西:
- 相关功能的竞品
- 它的竞品相比,它有哪些优劣势
对于自己在一个项目中承担的工作,则需要从价值、职能分工和技术分工来看: - 在价值上,可以把自己所做的项目,放在更大的背景上,放在整个国家和社会,放在整个公司,放在整个大部门的背景上,了解项目对于国家和社会、对于每个用户的价值,项目产生的经济上和社会上的价值,对于整个公司的经营目标的价值,以及对于大部门团队发展目标的价值。
- 在职能分工上,了解技术上的工作与诸如商务、项目经理、产品经理、策划、运营、交互和设计的不同岗位之间的职责,以及自己的工作是如何与他们一起配合来实现目标和价值的。
- 在技术上,Android 开发在一个项目中,主要是在做客户端上的工作,客户端上的工作就离不开服务器的配合。对于服务器端的基本知识有一定的了解,对整个的技术上的系统架构,以及 Android 开发在这个架构中的位置有所了解,是非常有意义的。
- 效率。如何把事情做的更快更好。
- 一方面,很多事情做的时间长了,就容易变成重复性的低技术含量的工作。对于重复性的工作,最好可以将它们工具化,自动化。在云课堂这边,在搭建代码质量管理平台时,我们需要为几十个模块创建 Jenkins 工程,这些工程的配置又经常需要根据是否包含单元测试,生成的二进制文件的路径等有一些简单的变化进行定制。这本是一件极为琐碎、繁杂、无趣、重复性的低技术含量工作。我们开发了脚本,支持自动创建 Jenkins 工程,并自动完成配置,大大降低我们这套系统的维护成本。
- 另一方面,在流程上,与各单位的分工配合上,有时候可以通过做出一定的改变,来使事情做得更快更好。
- 在工作方面,机器比人稳定可靠得多,因而可以借助于工具,来检查并避免人犯错。
总之,就是在技术上,了解别人不了解的技术细节,能够解决别人不能解决的技术难题,或者可以快速解决别人需要花很长时间才能解决的问题;了解做的事情的背景、价值,以及团队如何协力配合实现目标和价值;在对待工作的方式上,时时考虑如何能够让自己,也帮助团队把事情做得更快更好。
但一时一地所做的具体的事情,只能是抓住一块,暂时搁置其它的。