昨晚买下了 clice.io 这个域名,并且在它上面部署了 clice 的文档网站,心底有一种难以言喻的喜悦。一方面是我真的很喜欢 clice.io 这个域名,看起来很精致漂亮。其实还有几个候选项,比如 .dev 等,最终还是选了相对较贵(一年 500)但看起来更好看的这个域名。另一方面,它代表着 clice 又进入了一个新的阶段。
新的阶段,是否代表着 clice 能初步使用了呢?很遗憾,还不能。那 clice 什么时候能用?这确实是我这段时间被问过最多的的问题。距离 clice 的第一篇 博客 发布已经过去了七个月,按照当时的估计现在 clice 应该处于高度可用的状态才对,但事情的发展并不总是按照我的预期前进。所以写篇文章给关心 clice 进度的读者介绍下过去几个月的情况。
时间问题
首先,最主要的原因就是时间不太够。作者是大三学生,大三上学校里面没什么课,并且人也比较宅,平常没事干的时候就在宿舍写代码,所以上学期有大量的时间可以投入在 clice 上,每天大概 6 ~ 10 小时。而且当时我也没有什么别的事情要做,可以一心一意的扑在 clice 上,每天就是读代码和写代码,不需要额外的上下文切换处理不同的事情,寒假也基本还是这个状态。
然后时间就到了大三下,也就是 36 月这段时间。3 月份的时候主要是在找暑期实习,当时的想法比较简单,因为作者并不是科班的(学化学的),如果以后想要找份计算机相关的工作,还是有份暑期实习更有说服力一些。另外之前没实习过,也想体验一下工作究竟是什么感觉的。由于运气比较好,找暑期实习的过程还是比较顺利的。刚好有个学长的组在招实习生,做的也是 C++ 编译器和工具链相关的内容,是我比较熟悉也很感兴趣的方向,于是我就投了这个岗位。面试过程非常顺利,面试体验也非常好,没有任何八股文,是根据简历上写的内容来问的,算法题也很简单(一面考了个拓扑排序,二面没有算法题,三面是两题 easy)。唯一出了点小插曲就是他们希望能尽快入职,而不是等到暑期的时候。大三下学校里排的课还挺多的,但是考虑到机会难得,最后就商量了下,一周实习四天。能翘的课就翘了,不能翘的课基本都集中在上午,而我们部门上午一般 10.30 之前到就行,所以有时上完早八再去上班。好消息是公司离学校很近,校门口地铁坐十分钟就到了,通勤不用花什么时间。于是 46 月,我就边上课边实习,周末虽然不上班,但有时要用来处理学校里面的事情,所以最后留给 clice 的时间就非常少了。而且要在不同的上下文之间来回切换,效率远不如之前专注于一件事的时候。
现在回过头来看当时确实非常幸运,第一次投简历,第一次面试就通过了,工作地点很合适,工作内容也是比较感兴趣的。
然后时间就到了现在 7 月,放暑假了,学校里面的事情应该告一段落了吧?但是又通知 7.13 - 8.4 要参加小学期的课程,这个还不太好缺勤。于是思考再三,决定辞职了,回来完成学业,也是给自己喘口气,前段时间边上课边实习累的够呛,最后 7.11 last day。所谓小学期,其实也就是在下面听讲座,于是我就把笔记本带过去在下面写 clice。
那 8 月之后,学校这边应该没啥事了吧?话虽如此可是 8,9 月份又得忙秋招的事情,该找工作了吧!其实最近我也投了点简历了,做了些量化公司的笔试,做自闭了。每天就是看脉脉,投简历,还刷题,背八股,焦虑的不行。昨天和群友讨论了下,突然有点想不明白为什么我要这么做呢,不想去的岗位还投什么啊,还非要背八股刷题,自己给自己找不快了属于是,喜欢当 m 吗?所以后续秋招的策略大概是随遇而安,简历大概还是会投的,但是笔试/面试能不能过久听天由命了,我也不想再去背八股,刷很多 hard 题了,很折磨。如果非要考很难的算法题,喜欢考八股,那这公司/部门就算我去了,应该待的也比较折磨,找工作本来也比较看运气,双向选择,还是多花点时间在 clice 上吧!
既然都说到这了,也给自己打个广告,如果有什么有意思的岗位,可以考虑下我!我主要对 C++ 工具链和编译器比较熟悉,当然也并非一定要做这个方向。别的方向,如果不嫌弃我没经验的话,也会考虑的!
乐观估计
除了个人时间上的问题外,另外一个因素大概就是程序员经常犯的错误了,那就是错误估计项目进度。在《人月神话》中,作者指出,我们习惯用“人月”这种看似线性的单位来衡量非线性的、充满复杂度的软件开发工作。一个功能的实现,其工作量并非简单的编码,还包括了背后大量的调试、测试和与现有系统集成的隐形成本。我就在实践之前的索引设计中发现一个非常严重的缺陷,以至于这部分的代码都需要重写。不过好消息是我们的项目没有交付日期,有充足的时间找到最好的解决方式。
尽管很忙,没有时间去写具体的代码。但是还是可以在闲暇时间多思考思考之前代码中设计的不足,并把它们记录下来,看看后面怎么解决,这些倒是什么时候都可以做的。
经过过去几个月的缓慢推进,现在 clice 已经可以基本的使用,处理文档事件,高亮,代码补全等等功能。但是距离发布第一个版本还需要很多的测试和完善,我觉得至少得等我自己把 clangd 换成 clice 使用一段时间后,我才会考虑发布第一个 release。
还有就是关于多人合作的问题了,其实我对多人合作一直没什么信心。对于 clice 这种比较复杂的项目,尤其是几个月前,代码经常还可能有大规模的变化,还不太适合合作。不过好消息是,经过这几个月之后,已经到了可以比较轻松的合作的地步了,总体的代码框架已经稳定。也确实已经有群友深度参与进来,并负责一些功能的实现,一切都在往好的方向发展!争取在最近两个月内能发布第一个 release,在我大学毕业前能彻底取代 clangd!
