工作十年,一个 Android 开发者的自我修养
2025-3-20
| 2025-3-23
Words 8998Read Time 23 min
type
status
date
slug
summary
tags
category
icon
password

经历

 
一段工作,只有过了很久,对现在的你不在有影响,你才会知道它的全貌。
 

 
14 年,大学毕业跟同学一起去北京,第一份工作在一家职称考试公司做 Android 开发,没有项目经验,跟着培训课程学了一些基础,当时面试我的技术经理对 Android 开发了解不多(他主要从事后端开发),被我厚着脸皮连蒙带吹给混了过去,我下午去面试,上午他通过的另一位 Android 开发薪资 12k,我的期望是 10k,他认可我的面试表现,所以也给了我 12k,这便是我的第一份工作的由来。
入职两个月时,我在用 String.split 解析一个字符串,十几分钟写不出来,技术经理不知何时站在我身后观察,又过了几分钟,我还是没写出来,他索性坐下来上手帮我写,戏剧的是,他临走时把外套忘在了我的椅背上,我去还衣服的时候,正巧听到他跟别的同事感叹”没想到这孩子基础这么差…“。于是,我收获了第一个教训,只要有人站在身后,不要写代码。
呆了一年多,临走时,发生了另一件尴尬的事,午饭前我用公司的打印机打印简历,午饭后,我的简历出现在我的办公桌上,被人事送了过来(╥﹏╥,又多了一个要走的理由),因为这事被同事笑了几天。我又收获一个教训,永远不要用公司打印机打印自己的东西。
第一份工作结识的人容易得到友谊,几个同事现在还保持着联系,可能友谊有一个充分条件:见过彼此狼狈的模样。
 

 
16 年,入职一家 VR 眼睛的创业公司,在一所别墅里办公,十几个人的小团队,研发几个人在最顶上一层,工作之余,大家常常在小区的篮球场打篮球,或者在小区里溜达,数数停了多少辆跑车。那段时间,我们几个研发没多少事要做,每天悠哉悠哉充满了乐趣。 下半年,有几位投资人对我们公司产生了兴趣,还派了背调团队来公司考察。但最终,我们没能完成下一轮融资,或许是双方没谈拢,或许是投资人意识到整个 VR 行业只是一个绚丽的泡沫。总之,我们的好日子到头了,很快,工资便打了九折。 那时候,我做了很多 Demo,其中一个是在开源的 3D 播放器基础上进行修改适配,用于演示韩国女团跳舞的视频。公司试图通过各种合作来扭转局面:和博物馆合作,通过 VR 眼镜识别展品弹出讲解信息;和警队服务商合作,用 VR 眼镜识别身份证和人脸;还和一位游戏开发者合作,开发一款基于 Unity3D 的水母闯关游戏,但这些努力最终都被现实击退了。 为了做最后的挣扎,公司用仅有的资金在上海办了一场发布会。我只记得那时我们的 VR 眼镜续航只有四十多分钟,我的背包里塞了十几个银白色的充电宝,媒体和观众都是我们自己花钱请来的,发布会前一晚,老板在酒店里背了一整晚的稿子。在这之后,公司彻底陷入了困境,我们就不在按时发工资了。
作为普通员工,公司倒闭似乎只是职业生涯中的一个小插曲。我们收拾东西,拍拍身上的灰尘,转身加入另一家公司,继续前行。然而,那种从满怀希望到逐渐失望,再到目睹公司最终失败的全过程,却在心底留下了难以磨灭的痕迹。
那时候的北京,有一百多家做直播的公司,有一百多家做教育的公司,大大小小也有几十家做 VR 的公司,时代的浪潮席卷每个参与者,浪潮退去,失败者像被冲上海滩的一粒贝壳,躺在沙里,被遗忘。
 

 
17 年,4 月去拉萨玩了一个月,回来后入职一家教育公司。Android 组三个人,这是我工作过第一家为员工全额缴纳公积金的公司,入职时还签了一份孝养金协议,每月有 3000 元工资直接打到父母的银行卡上。因为这份孝养金,我爸妈认定这家公司是个好公司。后来,中秋节公司寄月饼,我选了一份冰皮月饼寄到爸妈那,他们签收后发现月饼化了,公司又给补寄了一份,这更让他们坚定这是一家靠谱的公司,叮嘱我要好好干。 刚从自由散漫的环境来到写字楼,每天按时打卡上下班,不免有些压抑。试用期三个月风平浪静,然而后来我工作中犯了一个错误:有个功能接入讯飞语音,上线后很多用户反馈用不了,原因是我没注意到讯飞语音每天只有 500 次免费使用限额,需要提交公司资质后才能升级到每天 2 万次,但资质审核需要两三个工作日,那是我工作中度过最漫长的几天。 没过多久,公司尝试做自动化测试,我被调去负责,测试组十几个同事,只有三个男生。工资没变,也轻松了许多,但总有一种说不出的屈辱,一有空闲就默默刷算法。 自诩文艺青年,买了个单反相机,周末去爬山,露营,拍星空。拉着大学校友设计 UI,做了个图片分享 APP。
fig.1 APP 设计稿
fig.1 APP 设计稿
后来 APP 申请了软著,上线豌豆荚和应用宝,才知道获客的艰辛和运营的不易,三五个月后也就不了了之了。
算法刷了七八十题后,我决定辞职,结束这段压抑的工作。我辞职后,父母对我的离职惋惜远大于我本人——他们肯定在我以前发工资的那天盯着手机银行嘀咕:”这 3000 怎么没按时到账呢?“。
 

 
18 年, 9 月我去了一家大公司,在一个有红砖绿瓦建筑和宜人树木的地方,办公区的一面墙上装饰着一个巨大的网兜和一个船锚,仿佛有一艘船正拴在岸边,被海水激荡着,不断摩擦碰撞着轮垫,随时准备出发去探索未知世界。
公司距离人民大学不远,我在人大旁边租了一间房,一位人大研究生毕业后把房子转租给了我,女友从深圳来京后,我们常在暮色中穿过人大操场,看新生追逐打闹,有时我们在两个教学楼中间一块空地上练习滑滑板,校园的冰淇淋很便宜,20 元可以剪一次头发。不过后来遇到疫情,就再没能去了。
当时,公司刚拿到一笔较大的融资。我刚入职在创新组,参与开发一款短视频 APP。四个月后产品试运营,但效果未达预期,于是我被调到另外一个开发组。公司每年年初都会举行一场 hackathon 比赛,选一个方向作为主题,比如有一年是短视频,有一年是内容创作。新来的员工都要参加,产品、运营、商务、研发等不同岗位被打乱后,七八个人一个小组参赛,大家有一天半的准备时间,组内进行头脑风暴,第二天下午正式比赛,形式类似于 Shark Tank,但我们的比赛还处于创意阶段。
在这家公司,我的技术成长较快,很多良好的编程习惯也在此时养成,比如,我养成了在汉字与英文字母之间留一个空格的习惯,无论是笔记、代码注释,还是平常微信聊天,我都坚持这样做。性能和质量是两个只有在你没有时才会察觉到的功能,我开始有耐心把一个小功能写好。每天的分享广场总是围满了人,遇到我感兴趣的主题,我也会停下来听一听。我听的第一个分享是关于反编译微信摇色子,震惊了我好长一段时间。
在这期间,我也犯过几个错,其中最大的一次是基于另一个部门的模块开发的一个新功能,由于在线程池中异常被捕获,鬼使神差地导致一个页面广告减少,另外一个页面广告增多,为此,我还做了事故报告。但那一年,我的工资还是涨了,我幸运地在一个允许员工犯错的公司。
随着公司度过用户增长期,逐渐陷入商业变现的困境,创业初期那些充满野心的工程师渐渐离开,来了更多的人,前辈们留下的优秀品格不断被稀释。很多功能反复上线又下线,代码变得越来越繁杂臃肿,技术氛围也大不如前。公司内部孵化的一些小应用,也都无疾而终。一转眼,我身边的同事已经换了大半。
20 年底,我结婚了。我和妻子商量着未来打算要孩子,但在北京买不起房,也落不了户。于是,在 21 年公司上市后又过了几个月,我提出了离职。
 

 
21 年国庆节,初到深圳,第一次感受到找工作的艰难。经过一番努力,最终还是幸运而又不幸地找到了工作,幸运的是工资到了以年薪计算的范畴,不幸的是除此之外的一切。
我入职的公司正计划围绕游戏打造一款社区产品,我被任命为这个新项目的客户端负责人,然而,入职后我才发现,我是这个部门的第一位开发人员,组建团队成为了我们面临的首要问题。很快我就认识到,大公司随机匹配的一个小组,可能就是小公司所能企及的人员天花板,直到年底,产品和后端都没能找到合适的人选。
在最初的两个月,我们的工作相对轻松,几乎每天不是在开黑,就是在去开黑的路上。我们进行了几次讨论,做了一些市场调研和用户分析,准备效仿知乎“前期功能、中期氛围、长期沉淀”的社区发展理念,并对一些可能要用到的技术进行预研。
与大公司的创新项目相比,小公司在很多方面望尘莫及。大公司有坚实的技术支持,产品前期可以导入用户,财力人力充足。我曾参与过的一个项目,基于公司已有业务模块拼合,单独开发一个新模块即可完成一个 App,并有更富裕的时间和人力把功能打磨好。在小公司我们能做的,唯有保持头脑清醒。首先,把目标用户明确到一个很小的范围内,功能必须始终由用户真实、可感知的需要驱动,减掉一切我们臆想出的无关紧要的功能。其次,资源有限,我们必须筛选余留下来的功能,确定其中 20% 尽力做到最好,其余的 80% 只得做到 60 分。
基于此我们确定了核心功能点和市场差异点,进行第一个版本的产品规划。直到我看到第一版的原型图,不禁泛起一丝不安,这把“游戏”可能要靠我来 C 了。后端的文档发出来,一堆令人费解的字段命名,下划线夹杂着驼峰,有经验的开发者都知道这意味着什么。这些同事,像极了刚参加工作那会的我,没想到回旋镖这么快就飞了回来。
我不喜欢被人管,也不喜欢管别人,这种性格在一个自驱、宽松的公司出现时无关紧要,但在小公司无疑成为缺点。小公司的管理往往意味着需要你收敛时间、降低成本,并迫使大家加班。过完年,领导们开始着急,催着我们赶紧出成果,我们放弃了同时招 Android 和 IOS 的想法,从而选择 Flutter 开发,出乎意料很快确定两个人选,同样三五年工作经验下,Flutter 开发往往更具有危机意识和自主学习能力。这使得后来我们客户端 App 即便对比最好的竞品,也有出彩的地方。
22 年 3 月,我们推出了第一个内测版本,产品和技术上不得不做很多妥协,公司内部组织一场手游比赛,在自己的 App 上录入赛程。大家踊跃的参加手游比赛,但对我们的 App 不屑一顾——匆忙堆砌出的简单重复的功能,不值得大家在上面花费一秒钟的时间。
5 月,开始有了一些转机,有个游戏论坛将要关闭,我们做了图文编辑功能把该论坛上面的帖子迁移了进来,与几位游戏主播合作,开始有了第一批的用户,基于目标、规则、激励、自发性的原则,我们规划几个运营活动,小心翼翼地维持这批用户的热情。
然而,随着项目推进,各种挑战接踵而至。我们缺乏经验,在运营过程中只能凭感觉摸索前进。缺少好的内容,技术上也时常出现掉线问题。产品和运营换了一批人,却迎来更大的失望,争执往往由此发起。在夹缝中求生存的我们,每一步都尽力尊重客观规律做出最佳选择,却在一步一步不断妥协中越发平庸,很快大家的热情消磨殆尽,失败是注定的。
10 月,在与一位领导发生激烈冲突后,只能选择提前离开,也算是一种解脱。23 年初,前同事告诉我,项目组只留下两人维护。前段时间,再次打开之前做的 App,看到还有人在签到发帖,不免有些唏嘘,失败才是人生常态。我又收获一个教训,不要去初创公司,特别是那种每个人都很平庸又没信念的初创公司。
 

 
22 年底,女儿出生,生活重心发生变化,很快我找了一个能到点下班的公司上班,直到现在。
 

 

感悟

若你还在,我得说,你也是挺悠闲的,看了这么多流水账之后竟然还没走。
 
我大学读一个普通本科,被调剂到软件工程专业,打了四年 LOL,毕业刚好赶上移到互联网浪潮,别人学 Android 我也学 Android,别人跳槽我也跳槽,就这样走到今天,幸运的是没有遇到过 996 的公司,在互联网投资热情中也总能顺利找到工作。
直到最近两年才如梦初醒,出了公司,我不知道该怎么在自由市场上挣到一分钱。除了写代码,我不知道做什么能让我快乐,不知道其它工作到底是怎么样的,也不知道我能做到多好。身边有很多同事和同学陆续离开了这个行业,有的尝试跨境电商,有的去做独立开发,还有的被裁员后在家待业,我没转行的烦恼,因为我好像也没别的事可做了。
如何挣到更多的钱你可能需要读一读《穷查理宝典》,但是如何一直写代码,我倒是有些自己的见解。

保持逆熵

如果你是一位价值投资者,你的目标是在众多股票中挑选出一支未来潜在收益率更高且风险更低的标的。在开发工作中,道理其实是一样的。
当你越不确定未来该做什么时,就越需要选择那些能为你未来带来更多选择的路径。
比如,你不知道该学 C++ 还是 Python,那么就去学 C++。因为从 C++ 转向 Python 很容易,而从 Python 转向 C++ 则要困难得多。 同样,如果你在职业规划上犹豫不决,不知道是该成为管理者、架构师还是自由开发者,那么选择架构师可能是更明智的,架构师的技能和经验更容易在多种职业路径中通用。 如果你在软考和雅思之间犹豫,那么毫无疑问,选择雅思。不仅因为技术前沿的期刊和论文大多使用英文书写,还能为你未来面试提供更多机会。 在不确定的未来,选择那些能为未来带来更多选择的选项,就是保持逆熵。

写好代码

从一颗树,到一行树,再到一片深林,慢慢有鸟类迁徙,才会有炊烟升起。
写好一个功能,然后写好一个框架,再到写好一个项目,慢慢的尝试做一个系统,才有打造一个生态的可能。
写好一个功能
作为 Android 开发者,最困扰的莫过于工作长期被业务需求主导——本月开发登录模块,下月转向 OTA 升级,随后又要接入 IM……。今年刚掌握 Kotlin,明年又要学 Compose,后年还要接触 Flutter。如此循环,极易陷入"一年经验重复 N 年"的困境。
写好代码通常需要下面几个阶段:
  • 第一阶段:了解业务背景,学习一些理论知识,不加验证地拼凑出最简陋的效果,代码混乱、漏洞百出,难以理解。
  • 第二阶段:验证实现细节,使用合适的设计模式进行抽象或解耦,添加必要注释等,代码运行更稳定,阅读起来也更顺畅。(所谓的“工作”到这一步已经结束,因为下个月的 KPI 已经定下。)
  • 第三阶段:深入研究学习,考虑时间和空间限制,借鉴 Android 源码、OkHttp、Glide 等优秀库对相似问题的解决方式,进一步用简短有效的方式解决问题。
  • 第四阶段:在做其它功能时,接触到的新技巧或对原理的追求给了你新的灵感,尝试新的方法来解决同样的问题,代码行数越来越少。最终,原来的解决方式“退役”了。
  • 第五阶段:随着时间的推移,你在一个领域积累的知识越来越多,对原理越来越清晰,那些被奉为经典源码、框架在你眼里变得缓慢、繁杂,难以忍受,它们与你设想的理想状态相差甚远,最终你决定优化它们。
“工作”只会让你停留在第二阶段,很多人工作多年,从未认真看过 View、TextView 源码。身边的同事处在同温层,同样被业务需求的洪流所淹没。你可能会画出一个超出屏幕有 N 多个条件判断的业务流程图,这很厉害,但对于技术成长,这没什么用,实际上,这非常普通。
怎么写好一个功能,或者说怎么把一个功能优化到极致?在 Android 开发中,我们常局限于 Framework 层,易产生“已足够好”的错觉。但你不知道你不知道什么,真正的突破往往藏匿在底层。例如,解决文字锯齿问题,需要下探至 Skia、OpenGL,甚至屏幕驱动特性及数学曲线原理,领域前沿的论文又不断推动着硬件和数学的革新,优化如同在“庞加莱圆盘”中前行,越接近边界,行使越缓慢,但永远无法真正抵达终点。只因如此,你才能从业务专家,慢慢转变成技术专家。
成为技术专家的路更加陡峭,最短的路就是那条最难走的路,除了难走,它还会让你的就业面变得狭长,就像在《钢之炼金术师》中,你要付出更大的代价才能换取你所没有的东西?
写好一个框架
有过写好一个功能的经历,足以让你在一个技术方向上有所积累,如果可以,不要在一个阶段停留太久,不妨尝试去构建一个属于自己的框架。
对于 Android 开发者来说,主流的开发框架每 18 个月(摩尔定律)就会产生一轮变化,一方面由前沿技术的革新传导上来,另一方用户的需求、价值观也在不断发生变化。面对一轮又一轮的新技术,最有效的应对方式是学习那些被奉为经典的框架。
Timber、RecyclerView、Glide、OkHttp、Skia、WebRtc、FFmpeg 等框架,无论大小,它们的存在都源于对特定问题的解决。正如《面向痛苦编程》所言,“一项技术除非在没有时让你感到痛苦,否则不要构建它”。以此为视角,我们可以清晰地看到这些框架解决的是什么问题,并带这个问题去学习它们的源码。在学习过程中,源码的庞大性往往令人望而生畏,但我们只需专注于解决问题的核心部分,而不必在其他无关紧要的地方耗费过多精力。
最重要的其实是问题本身,问题使我们直面思考,解决问题并不只有一种方式,而经典框架只是为我们展示了其中一种,编程本质上是一种思考的行为,而非具体的代码实现。
三五个月后,你会忘记你花了很长时间学习过的框架源码,但你总会迎来新的问题,而当现有技术让你感到痛苦时,这或许就是你构建自己框架的最佳时机。
一旦有了不得不解决的技术问题,构建自己的框架便是一件自然而然的事情,把一个大问题拆解成一个个小问题,然后在挨个解决它们,经历一个从积木到泥土,再把泥土重新塑造成你想要的积木的过程。这个过程并不总是一帆风顺,可能某个小问题促使你重新捡起大学的课程,或许不熟悉的知识太多太多,你不得不停下来反复练习至到熟悉了它们,才能继续下一步。
自己的作品
当你在某个技术方向具备解决复杂问题的能力,也有意愿去做一些更有挑战更有价值的事情时,找到契合的团队固然理想,但这往往很难实现。在小公司,你可能发现同事能力平平,拼凑在一起,努力完成公司那些不切实际、急功近利的产品目标。而在大公司,由于已过初创期,你常被安排在非核心业务岗位,日复一日地重复工作,沦为可被替代的“天选打工人”。 即便你拼命学习、刷题,满足招聘要求,获得心仪工作,也要面对 996、KPI、末位淘汰等压力。多年后才发现,人生除了无路可走,还有死路一条,最悲惨的失业方式就是变老,这是无法回避的现实。 活在他人制定的规则里,终究难逃被摆布的命运。打破困境的有效途径是拥有创造力,技术只是工具,除了精进技术,拥有创造力更为关键。学习是内化,创造是外化,二者缺一不可,其实,只有在需要创作时,学习才有其价值。而创造力源于生活,只有积极参与生活、感受生活,才能真切感知自己和他人的需要,从而用已掌握的技术为他人创造价值,无论是一段代码、一篇博客、一个网站、一个小程序、一段视频,还是一个应用,通过作品切入市场,用户会发现并追随你的价值。你或许会幸运地实现凯文·凯利提出的“1000 粉丝理论”,即使不再工作,也能依靠粉丝的支持养家糊口。 为他人创造价值,是创造财富的密码,也是你最终要做的事。

少即是多

集中起来的意志可以击穿顽石——易大师
互联网扩大了每个人接触事物的空间,同时也压缩了去甄别一个事物的时间,群体的盲从效应导致一个产品要么过渡被关注,要么无人问津(1% 的爆款吞噬 99% 的流量)。
无论写博客还是开发一款软件产品,平庸之作,很容易被一堆同质化产品所淹没,一堆石头里面,只有砖石才能闪闪发光。极致的产品才会有被看见、被想起、被谈论的可能。对于个人而言,把一件事做到极致,做减法比做加法更需要勇气。别人一个产品一百个功能,那你的产品只能保留十个功能,当别人试图面面俱到把所有功能都做好,你应把 90% 的精力倾注到一个突破性功能上。一场篮球比赛,如果你的体力只能让你得 10 分,就把这 10 分全部留给第四节,真正的极致不是完美,而是把有限资源用在最有可能创造价值的地方。

做些好玩的事

几年前,我有个想法是自己做一个数码相机,以至于工作中遇到图片裁剪、视频编辑、相机滤镜之类的内容,我就会格外上心。我理解不了为什么同事看到苹果新出的天蓝色笔记本那么激动,他也理解不了我看到一些灵动顺滑的交互效果为啥非要自己做一个试试。为了 OpenProcessing 一个粒子飞散的效果,我又学了一遍 OpenGl,对比不同毛玻璃效果,学了 OpenCV,实现一个手势交互控件,重拾线性代数,看到 Qt 中一个星空背景的按钮效果,第一个想法就是在 Android 中怎么实现……
可能这些,就是我感兴趣的技术吧,好像也没什么用,但对我来说确实挺有趣的。折腾来折腾去,也生出了某种自信,一些我能轻松实现的交互效果,对于别人就是某种难以企及的困难。
这种自信并没有延续多长时间。后来,我给女儿在拼多多上几十元买了一个玩具相机,圆滚滚的机身,彩虹色的快门键,软件的功能和交互,正是我理想中要做的那样,那一刻,我的信仰坍塌了,所有审美、技术上的自信都破碎了,我的世界里“物理学不存在了”,在这之后,人麻了,躺平就是大幸。遭受这种打击之后的好处是,大家都在担心会不会被 AI 取替时,我免疫了,我不介意在各种新闻、短视频上被 AI 取替几百次。

找回时间

时间不在于你拥有多少,而在于你怎么使用——艾克
这是我为我的项目花费的时间
fig.2 GitHub 提交记录视图
fig.2 GitHub 提交记录视图
这是一个开源项目作者所花费的时间
fig.3 一个开源项目 GitHub 提交记录视图
fig.3 一个开源项目 GitHub 提交记录视图
这个对比非常直观,之所以会产生失业的焦虑,归根结底就是一个字:菜。
 
我按照《奇特的一生》书中时间统计法标记一周的有效时间
fig.4 时间统计法标记过去一周的时间
fig.4 时间统计法标记过去一周的时间
也许我们并不是没有时间,我们只是一直在荒废时间在所谓的学习和虚假的工作中。
一天都是怎么度过的呢,早上打卡,下楼去吃了个早餐,要开会、要与别的部门沟通技术实现方案,看新闻,给孩子买个玩具,接个电话让快递小哥把快递放到楼下。中午短视频多刷了一会,下午没精神,好烦、好烦、好烦、不戴上耳机写不了代码,这个歌单听了好几遍了,再换一个吧……
多数人的生物钟规律,上午时段头脑较为清醒,适合看看新闻、写写文档;而晚上安静的氛围则有利于代码的编写。相比之下,下午往往被视为效率的低谷期,用于处理公司业务代码等较为机械的任务。运用上述规律,合理规划一天的工作与生活,只在工作中就能拉开与他人的差距。
得抓紧了,35 岁之前财富自由的目标,时间不多了……

不要重复你自己

Don’t Repeat Yourself,是软件开发的一个原则,中文译为:“不要重复自己”,在编程中,可以理解为:“不要写重复的代码”。但这个原则扩展一下有更丰富的含义。
  • 不要重复你的代码,不要重复你过去开发过的业务功能;
  • 不要重复去准备面试(算法、八股文和带回家的作业);
  • 不要重复你的同事已开发的功能,不要重复 GitHub 已经开源的框架(不要重复造轮子);
  • 不要重复过去犯过的错误,不要重复他人的人生;
重复就意味着浪费,重复就意味着单位时间价值差极其的低。如果重复不可避免,那就尽力降低重复所需要的时间成本。
好记性不如烂笔头,避免重复最好的方式之一就是记笔记(在团队中可能是 RFC 文档),一个人的记忆力是有限的,以前学过的知识(例如,花费了三五个小时才弄明白的 ConcurrentHashMap、ThreadLocal),半年前写过的代码,再次看时十分陌生,需要把思维上断了的弦一根根找回来重新接上才能再次回到之前熟悉的状态,笔记,则能帮助减少找回它们的时间。 笔记也能成为你写博客的素材,如果可以的话,还是要经常写一写博客,只有你坚持写过一段时间的博客,你才知道,深度、细致、有前瞻性的博客是多么难写,希望自己过个两年能写出这样的博客。

写到最后

就写到这里吧,各种东西拼凑在一起杂乱无章,但我实在没办法表达的更好,希望能对你有所启示吧。
最后引用一句我很喜欢的话 “理想从来不是用来实现的,而是拆成一个一个平凡的小目标,落到每一天,体会一厘米一厘米接近的快乐”。

参考

 
 
 
 
  • 文字
  • 建站之初Android 触摸反馈机制源码解析
    Loading...