E94c39af34d4c665f85b21fdb8214ef0
Maxiee 精进笔记 7 —— 独立开发三日记

前言

做独立开发是不容易的:

  • 具备多种技能
  • 知识深度与广度兼具
  • 没人开工资,全靠自己养活
  • 性格要适于长期孤军奋战
  • ……

未来我想成为一名独立开发者。独立开发者适合我吗?

一直以来我的心里都没有答案。

最近我利用三天假期实施了一个计划:在这三天里,假设自己是一名独立开发者,并在这个过程中不断思考。

本文是三天结束后梳理出的心得体会。

本文适合处于以下情况的朋友:

  • 在未来想成为一名独立开发者
  • 觉得码农上班生涯枯燥无趣,想寻求新意
  • 寻求在工作方法上提高

希望本文能抛砖引玉,对你有所帮助。也欢迎订阅我的专栏,你的订阅是对我的巨大鼓舞。

专注

长久以来我有一个困惑:

  • 我发现我在公司里面代码写得好,回到家里就水平就会差一截。这是为什么?

具体来说:

  • 在公司里我能开发维护一个大型的商业项目,并且做得不错
  • 回到家里,写个小项目、小系统,都会漏洞百出

这三天我终于悟出来了,差距源自专注的力量

在公司里,我有相对充足的时间做事,一个需求如果第一遍开发地太粗糙,可以立即开始重构,获得更好的代码质量。

同时,由于每天都在同一件事情上投入十几个小时,熟能生巧,使我对项目中的每一个细节都非常熟悉。

正是这种持久的专注力,引起了质变。

这三天里,我在 SideProject 中投入了 18.5 小时的专注开发时间。正是这种专注,专注让差距拉平的过程:

  • 第 1 个小时是很蹩脚的,项目中存在一大堆问题。自己对 iOS Swift 开发也不熟练,做一件事情要花费很长时间。

  • 在第 18 个小时的时候,问题中的 80% 都得到了解决,我甚至还对项目进行了重构。项目虽然还没达到发布水准,但相较于三天前,已经开始像那么回事了

这个成果是超出预期的。看,这就是专注的力量。

忘却

独立开发者需要具备多种技能,需要掌握大量的知识。

我在工作中是一名 Android 工程师,而 SideProject 是一个用 Swift 开发的 iOS App。虽然两者都属于移动开发,但也有一些差异:

  • Swift 与 Java/Kotlin 的差异
  • iOS 平台特性与 Android 的差异
  • AppStore 与 Google Play 的市场差异

可见有不少新的东西需要学习。经过三天的学习,我积累了大量的新知识。

有一个新的问题摆在我面前:如果未来将这个项目搁置一段时间,对 iOS 这些知识会逐渐忘却。

这在独立开发中是经常会遇到的,因为人要在不同的工作中切换:产品、设计、前端、后端等等。

如何能够避免忘却呢?

积累

为了避免忘却,我采取的方式是记笔记。

在 SideProject 中,我建立 3 本笔记,Swift 一本,iOS 系统一本,项目一本(使用 Emacs 的 Org Mode)。

在笔记积累的过程中,我总结了一些经验:

Swift 笔记(编程语言学习):

  • 避免无脑摘抄
  • 不明白的地方专门研究,弄懂后写下自己的心得
  • 不必求大而全

iOS 系统:

  • 通过 Stack Overflow 解决的问题,都保留下他们的链接
  • 一些把自己坑住的问题,记录下解决方案
  • 一些比较陌生的问题,系统化学习并建立知识体系(如适屏)

项目笔记(项目管理、产品文档):

  • 践行领域驱动设计
  • 建立项目路线图

我有很多不同分类的笔记,持续不断地积累着知识。

独立开发者必须是非常热爱学习的人,从这一点上我是具备的,因为我最大的爱好就是学习,喜欢学习各种领域的知识,享受习得新知的快感。

乐观的悲观者

我一直以为自己是个悲观主义者,因为我想事情总是往最差的地方想。

但是没想到,悲观的我也有乐观过头的时候,那就是在项目规划时

回到 SideProject,最初我以为这个 App 2 天就行搞定。

结果呢?

头两天过去了,确实拿出了一个 Demo,虽然有点像那么回事,但是从产品角度看,差到根本没法用。

这 3 天当中,我又专注地扑在上面近 20 小时,项目有了长足的进步,但从产品角度看,还没有达到可用阶段。

如此看来,我大大低估了做好一件事情的复杂度

做好一件事情是不容易的。

贪多嚼不烂

之前我有一个坏习惯,就是做事情三心二意:

  • 三分钟热情
  • 一件事坚持不了多久就不了了之
  • 不断地挖坑不填

如今看来这是非常疯狂的,贪多嚼不烂,这是我的一个缺点。

对于克服这种缺点,我的感悟是:不能贪婪,做一件事要有投入有结果,避免虎头蛇尾。

快糙猛还是步步为营?

在一个项目启动时,有两种推进的方法论:

  • 快糙猛:唯快不破,牺牲合理性快速验证产品概念
  • 步步为营:想清楚再下手,牺牲速度追求正确性
top Created with Sketch.