开发的阶段性反思

  最近感觉到开发的技术提升缓慢,意识到自己可能进入了一个不上不下的瓶颈期。虽然在公司内部也一直有技术学习小组,但切实落于自身的总好像隔靴挠痒,不能很精确发现自己的不足,和如何针对这种不足去改正。为了下一阶段的继续提升,我觉得有必要总结一下自己学习到的内容,和规划一下未来的技术提升方向。
  
  工作上主要使用的 Swift 和 OC,已经基本掌握的很熟练了,各种布局、控件和数据处理的基本使用都没问题,也可以根据这些知识基础按自己的想法实现一些捷径式的小操作。
  但是还有一些不足,比如最近很多人用的 auto layout,用着就很别扭,还不太熟练,音频,视频传输和编码的处理,没有深入了解过,还有代码的整洁度,和代码的结构,大局观比较差。OC 一阵子没用,也有些生涩的感觉,OC 和 Swift 的混编,在数据传输上的方法上还可以进一步学习一下。
  Android 方便,因为很久没使用了,水平可能还是停在给上一家开发应用,可以读懂代码,可以按产品效果图实现一个 App,但是完成度可能不太让人满意,Android 新兴的语言 Kotlin 也都一直还没接触过。
  Python 的学习很早就停下了,过了那么久,模糊的只记得一些函数表达式写法,和类型属性这些流于表面的概念性的东西。不具备独立开发的能力。
  
  以上就是我现阶段学习和使用过的语言总结,在开发的过程中,我越来越发现一个扎实基础的重要性,一言以蔽之,对底层的理解程度基本可以决定你现在所处的高度。因为之前技术的突破都是为了需求赶鸭子上架现学现卖,在过程中就容易错过很多细节,虽然在后续的开发里,自己也会不断回推梳理,但很难得到一个系统性的结论,反而是在找工作背面试题,不断过一些概念理论的时候,和自己过往开发印证,觉得收获很多。
  所以,下一阶段的第一个目标我想是重新对我所学的语言,那些基础知识复习一遍,梳理巩固一下。
  还有一个就是对 OC/Swift 多线程的理解和掌握,虽然现在对 OC 的运行时态和多线程理解和使用都没有问题,但我注意到,很多大项目,对线程管理都有一定规范性的东西穿插在整个项目里,这一点是我所不足的。有同样问题的是网络请求方面,TCP、UDP、HTTP之前也都掌握的不是很好,需要重新梳理。
  格外的目标是想把这两本书:《Effective Objective-C 2.0 编写高质量 iOS 与 OS X 代码的 52 个有效方法》、《Objective-C高级编程:iOS与OS X多线程和内存管理》,在最近的学习告一段落之后看完。
  
  除了实际的目标和计划以外,我觉得我最近对技术的态度也处在一个低谷期,可能是因为从新手期出来很久,以前敲一段代码看到效果的成就反馈对我影响很小了,也可能是技术处于一个停滞的阶段,所以对敲代码缺少以前的积极性了。所以我希望可以通过学习新的东西来重新回到之前对编程热情洋溢的阶段。
  最近看《爱,死亡和机器人》,有一集《齐马的作品》,我很喜欢,开篇就讲一个大师的艺术探索,从人物肖像,到绘画出正中心带纯蓝色几何图形的浩瀚宇宙,结尾是他探索终极,发现自己的由来是一台清洁机器人,就回归自我,变成清洁机器人。所以他终极的答案是找一件简单的事做。其实举一反三来看,编程这件事,和他的艺术探索也是一回事,高屋建瓴太遥远,那就从简单的事情开始做。