没想到时间过的是越来越快,2018 年已经过去了一半。回过头来看看,这半年实现了一些小目标,也有做的欠缺的地方。

一、技术

程序员,技术肯定是放在第一位的(为工作操碎了心 [捂脸])。

年初给自己定的目标是,完善整个 iOS 开发的知识体系,然后找一个更好的平台去发展

在去年 10 月份的时候,我就开始投递简历准备到市场上试试水,一开始连面试机会都很难拿到,不过后来不断修改简历,自己到拉勾上投,又找了朋友内推,也算是刷了一把面经,后来甚至还有幸面了腾讯和阿里,不过都不出意料地挂了。

在这期间,我也一直在反省,自己到底缺少什么,静下心来想,才想明白,这世上,要想有点真本事,没有捷径可走,只有脚踏实地地走才能走的稳、走得远。bs 和霜神就是最好的榜样。

快即是慢,不盲目求快,看清目标,找到方向,知道当前最重要的是什么。

什么是靠谱的软件工程师?首先要把必须要了解的基础知识搞明白,也就是基本功扎实,然后再是把事情做精的专业能力。于是我按照 bs 和 bang 分享经验,自己列了个知识体系大纲,从去年 11 月份 开始一直在忙着查漏补缺,从数据结构和算法到 TCP/IP 协议,从 runtime 源码到组件化、再到 JSPatch,最终直到今年 5 月份真正出去面试,总算是有了不一样的底气。

2018 上半年读的源码(超额完成每月一库的目标):

  • JLRoutes
  • AFNetworking
  • YTKNetwork
  • runtime
  • Mantle
  • JSPatch
  • MLeaksFinder

看过的技术书(每月一本的目标没有实现):

  • 图解 HTTP
  • 剑指 offer
  • 程序是怎样跑起来的
  • 图解 TCP/IP
  • 程序员的自我修养

因为这半年没有什么新东西产出,所以也就没有造什么新轮子,这个确实有些遗憾。

有一个我自己也很困惑的地方,这半年基本上没有什么有质量、有思考的博客输出。我自己分析,一方面可能是因为这个阶段不同于一两年前初级水平的状态,稍微有点小收获就写个博客,所以现在的输出阈值变高了,另一方面,也没有什么有难度的实战经验,大部分遇到的问题都可以在网上找到靠谱的现成方案,所以也很难有新东西产出了。

在新公司的第一个月的工作回顾

6 月 11 日正式入职了新公司,新公司的项目特点主要是:用户量大、开发团队人数多、队友都比较给力、业务基本成熟、工具链成熟。所以这里基本上不加班,也没有什么有难度的任务,要想有技术成长、不甘做螺丝钉,就需要很强的自我驱动。

这一个月里主要做了以下几件事:

  • 熟悉代码、开发流程
  • 做了三个小需求
  • 进一步系统学习了 git 的使用,对分支和一些高级操作有了更深的理解
  • 学习了 Protocol Buffer 在 Objective-C 的使用,一些实现原理
  • 学习了 shell(bash)脚本的基本使用
  • 系统学习了 Python3

二、生活

买房

在 4 月份的时候,因为运气好摇到号了,所以基本算是顺利完成了买房的任务了,后面可以安心工作了。

找工作

5 月份忙着找工作,先后面了几家不同的公司,有 BAT,也有外企和创业公司,看到了自己的不足,收获很大。期间全程用英文面了 book.com 这样的知名外企,也算是涨了点见识(他们的 HR 超级 nice)。

这次找工作相对来说面邀率还是比较高的,相比一两年前“iOS 没人要了” 的情况,行情好了很多。我推测主要是两方面原因造成的,一是因为这两年 iOS 开发市场人才供应过于饱和,新入行的少了许多;另一方面原来做 iOS 的那批人,有很多也转到前端和后端等其他领域去了。这其实就是市场规律,市场供需关系决定商品的价值

从个人的角度来讲,找工作一部分看实力(专业能力、个人品牌),一部分看市场供需关系,还有一部分要看人脉(有好几个面试机会都是靠朋友推荐的)。

健康/运动

还是老规矩,几乎每周都会和朋友去打篮球,搬家后改成每周打羽毛球了。

但是晚上晚睡的毛病还是改不过来,白天上班依然很“疲软”,我甚至以为是自己“对电脑过敏”。直到最近这个周末,才发现睡了懒觉,就一点事都没有。原来根本原因还是因为,白天脑力劳动多,晚上睡太晚,休息不够,结果导致第二天状态很差,但是第二天又晚睡,最终造成了恶性循环,直到周末再充电缓冲一下,然后新的一周又是如此循环

另一方面,我总是感觉事情做不完,时长感觉有些力不从心,其实在精力管理和时间管理上是有待改进的,需要做减法,把一些优先级低的/投入产出比低的事情放弃掉,只专注最重要的几件事,其他无关紧要的即便没做或者没做好也要懂得舍弃。

阅读

整个上半年就看了 5 本技术书和 1 本非技术书《你的误区:如何摆脱负面思维掌控你的生活》,在阅读方面还是有点低效了。以前总是喜欢逐字的阅读,生怕错过每一个细节。最近才意识到,我对于读书的几个误区:

  • 一定要逐字阅读才算读过
  • 读一本书一定要读完这本书才行
  • 以为读完就是完成任务了,很少写读书笔记,也很少读第二遍

其实我们没必要每本书都要逐字阅读,读书分为精读和泛读。

读书时看目的是什么,如果是学习新知识、开阔眼界,浅尝辄止、泛读即可,进一步有一步的欢喜,没必要给自己很大的压力和焦虑感。

如果是带着目的去读的,比如说要搞明白一个具体的问题,那就需要地精读了,逐字仔细阅读并理解。

从学习的角度来讲,读书不仅仅是把一本书读完, 而更应该是把书上的东西内化,内化的方式有以下几种:

  • 输出,比如做笔记,写读后感
  • 实践应用,对于技术书籍尤其如此,一定要实践试验
  • 好书一定要多读,因为人在不同阶段的知识、能力和经验、理解力不同,每一遍的体验感受都不同。正所谓,书读百遍其义自见。

写作

正如上面所说的,最近半年一直是处于内心困惑的状态,再加上忙着买房和换工作的事情,心静不下来,也没什么有质量的产出。这一点真是遗憾,真心希望下半年能够知耻而后勇。

英语

上半年英语角去的并不多,另外在读、写方面也并无太多付出。希望下半年能保持每周去一次口语角的习惯,每周读一些英语文章,并用英文回复作者。

三、认知/心理

年初的时候在喜马拉雅上订阅了『蔡康永的情商课』,后来又看了《你的误区:如何摆脱负面思维掌控你的生活》这本书,基本上算是摆脱了自卑和负面思维的心理。

但是在心理素质方面还有待提高,主要问题还是在于过于在乎结果,在乎外界的反馈。

在思维方式和认知方面的一些问题:

  • 学生思维、被动思维 -> 主动思维
  • 完美主义、困扰、纠结 -> 随遇而安、佛性、just do it
  • 谦虚?内敛? -> 没必要想太多,太多的自我设想
  • 总是在学习,学习,学习,但是到底是否产生了价值呢

四、下半年的目标

  • 工作
    • 总结一下公司项目中的一些解决方案,并且对比一下业界的做法
    • 把一件事情做精,精益求精
    • 刨根问底
  • 技术(ARTS 法则)

    • GitHub 上造轮子
    • 基础知识
      • 数据结构和算法
      • 操作系统
    • 广度
      • Python web 开发(能够自己写服务端接口、响应请求查数据库处理逻辑等)
      • JavaScript 前端开发(能够自己写一些常见的网页,以及能够使用 React 开发 h5)
    • 深度(跟自己平时工作接轨的、具有实践意义的)
      • 动态化/跨平台(React Native、Tangram、LuaKit、Flutter)
      • CocoaPods 等工具的实现原理
      • Xcode 编译构建原理
      • 架构
      • 性能优化
      • 源码
        • YYKit
        • React Native
        • Weex
        • GCD
        • Runloop
        • CocoaPods
  • 阅读

      • 穷爸爸富爸爸
      • 奇特的一生
      • 计算机科学概论
      • 深入理解计算机系统
    • readingweekly
  • 写作/博客
    • 至少 6 篇技术博客
    • 有输入就有输出,读过的接触过的都可以写一写,输入的内容经过自己思考、内化后,尽量输出有价值、有意义的
    • 随手写点东西(微博、知乎),内容可以是自己感兴趣和擅长的,比如技术、英语、理财
  • 理财
  • 英语
    • 每周去一次口语角
    • 每周读一些英语文章,并用英文回复作者
    • 在 GitHub 等开源社区全部使用英语

终极目标

正如《奇特的一生》书中对于柳比歇夫的成就的解释:

坚持他的方法必须有一个前提,你要有一个伟大的目标。

我的大目标是:

  • 大前端某一领域的技术专家、架构师、team leader、具备多个技术栈的开发能力
  • 成为一个业余 writer,自己写一本书(可能不限于技术领域)
  • 成为一名具有专业水准的英语使用者(能够准确地、地道地说出和写出自己的想法,具备无压力读、写文档的能力)
  • 终身学习者(日语、韩语、C++、历史、心理学),做一个 T 型人才
1
2
3
4
5
6
7
8
9
10
11
12
13
<-------------------------------------------------------->
语言学习 写作 技术| 理财 历史 心理学
|
| 架构
|
大前端|
|
|动态化
|
屏幕绘制和渲染|
| 性能优化
|