项目心得
小程序项目中踩过的那些坑
据滴答清单的记录来看,我的项目是从2020年2月开始的。在这就写一下从一个连Node.js都不知道,在项目开始时疯狂在Google搜小程序后端开发语言的小白,到最后勉强完成项目,这期间踩过的坑。
非技术向问题
-
一开始盲目追求新技术
其实也不算什么新技术,一开始就想着把项目建在Docker上,用Circle CI跑(YouTube广告看多了)。这反而导致了初始学习的东西非常多,大大延缓了项目研发进度,也打击了自信心。这其实也是经验不足导致的,Docker和CI/CD适合的是那些需要大量依赖+多人配合的中大型项目,而像我这种三人团队(1项目经理 + 2码农),弄这些复杂的东西反而事倍功半。小项目直接在本地跑,并用GitHub同步反而是最高效的方式。Docker 和 CI/CD最多只能算加分项。
-
团队合作出现问题
虽然只是三人团队,但是合作上出现了挺多问题的。我们的PM希望直接在微信群聊和语音聊天把问题弄清楚,而我希望走看板模式。因为非文字的具体描述容易在双方理解上容易产生分歧。在我的要求下,他们都下载了滴答清单并被添加进了项目成员中,但最终滴答清单的看板反而成为了一个人的游戏。
在技术上,我们团队另一码农是新疆的,在那网络审核非常严格,没法上GitHub,而我又非常想用开源项目。这导致我们沟通非常麻烦。另外,考研在即加上他并不想走程序员方向,因此也不想学Git。所以在项目初期,我们的合作大概是每一到两个礼拜一方完成一项任务,然后将代码弄成zip压缩包发给对方。我这边用了Git,因此比较容易了解他修改了哪些内容;但是他不知道我修改了哪些,于是每次给他发送代码又需要花很多时间交代清楚。时间代价非常高。万幸的是我写了开发文档,不然光后端API的交流都得弄个半天。
在代码上,开始我们彼此吐槽。我被他没有用列表渲染的2000行冗余wxml代码震惊,他则每次不厌其烦地将我的能用三目运算符的代码全都修改了。在命名规范上也很头疼,我喜欢用驼峰命名法,它喜欢所有字母小写,用下划线连接。幸运的是,最后我们彼此都有了微小进步。
最后总结,和不能上GitHub等外网,不会用Git的团队合作真的很累。 不是歧视,只谈感受。如果有机会,我下次宁愿单干也不愿这般合作。
-
时间估算严重失误
当时没看《构建之法》的无穷大法则,也没了解过项目管理的PERT公式,在3月后端啥都没有的情况下,面对PM的“威逼”,立下5月完成前后端的flag,结果项目直到6月末才完成。如果不能确定,不管如何也不要随便说出时间。
技术向
-
学习路上踩过的坑
对于小白来说,一开始最需要花精力的是阅读微信开放文档,学习js语法,学习Linux操作。 了解需要用什么技术,能用就行,等到项目完成时再重新总结。
小程序文档跳着读就行,一些与项目无关的东西直接跳过。对于这个中医音乐小程序而言,小程序搜索、小程序直播这些东西是用不上的,直接skip;想用web-view,发现对个人用户不开放,那直接跳过就行;API结合Google搜索稍稍看一看,大致了解一下可以用哪些东西。个人觉得看开发文档/网页介绍比看教学视频效率高很多。
接着是写代码,遇到不了解的bug / 需求怎么办?
对于前端微信小程序而言,小程序是基于Node.js改进,大多数函数和Node相同,遇到不知道的东东“Node.js + 问题”这么搜效率其实高很多;小程序至今bug都挺多,很多时候奇奇怪怪的bug,重启一下应用就消失了。小程序社区质量真的很差,提问者的很多问题没描述清楚,官方解答也不专业,甚至遇到客服比提问者更不了解更新日志,让提问者提供日志链接的情况。小程序社区的作用在于,能让自己清楚,哪些大概率是微信开发工具的bug,哪些是自己的bug。最后,微信小程序相关内容,英文搜索反而没有什么结果。
对于后端这边,Linux方面如果英文OK,建议直接在Stack Overflow / Ask Ubuntu上问,质量高,回复快,只要问题问清楚,24h都会有热心网友帮忙解答。当时我项目中PM2这种让Node.js在后端跑的软件就是这么搜到的。数据库建议直接在W3CSchool上学,中英文都行,直接看数据库官方文档是一种非常没有效率的学习方式。数据库是一种非常复杂的系统,官方文档也非常详尽,原比小程序文档厚重,因此数据库官方文档只适合搜索用。
-
问题拆解
一个问题如果能够拆解成一个个小点,那就离解决不远了。虽然遇到每个小问题时都会很头疼,尤其是赶进度的时候,但是做完后回顾,真的感觉那些问题咋这么简单。如上一篇博文讲的 Nginx配置问题 、node / apt / curl等代理配置、express.js搭建api后台……这些东西在捣鼓的时候,每个都弄了最少半天,当时都觉得应该很值得写博文讨论。但如今在总结时,打开滴答清单看之前令人纠缠的bug,却变得不值得讨论了。并不是问题太难,只是自己积累太少,无知罢了。IT就如健身一般,在痛苦中不断的撕毁不断成长,但最后收获颇多。自己是摸着石头过河来着,如果有引路人,这一切还能快很多。
我也很清楚自己面临的问题。就后端而言,曾被人端口攻击过,目前依旧如此,仍十分脆弱。在安全性这方面,目前的确没有太多眉目。
人生中自己做的第一个项目,很菜,也折腾了很久。但如初恋一般宝贵。tcm_music_frontend, tcm_music_backend这两个仓库,之后会按照MIT要求开源。两小玩具,笑纳笑纳。