0%

记一个小工程的开发和一点点牢骚

最近几天,我在着手用Actix-web重写一遍我们软件工程课的祖传后端小作业:一个基于Django的玩具留言板后端。一方面,这个后端非常成熟,每年助教都会拿出它来、删去一小部分代码,然后给学生来填空,作为一次小作业。另一方面,这个后端也相对完整,虽然没有路由过程中的变量匹配,但是有基本的get、post请求的处理、有数据库交互、有单元测试。

我的想法是在软件工程的大作业里使用Actix-web作为后端框架。我们的大作业项目是一个在线商品交易系统的后端,纯web应用,用Actix-web非常合适。在学习了一段时间的Rust之后,我要一边上手Actix-web,一边向我的队友证明Actix-web可以胜任我们软件工程大作业的需要——在一个难度适中的小工程中做这件事情是最合适的了。因此我开始用Actix重写这个祖传toy后端。

我用了大概两天写完业务逻辑,又用了两天写单元测试。diesel作为一个ORM,和数据库的链接并不很方便,体验远不及Django集成完善的ORM。也由于相同的原因,在Actix中进行单元测试也比较复杂。但把前期的坑一个个踩完了,剩下的就只有平凡无奇的业务逻辑了,并不困难。这四天我的作息不太规律,完全没有动任何作业,花费了几乎所有的时间去写代码、踩了很多的坑然后再一个一个填上。遇到坑的时候很抓狂,但是解决问题之后也很开心。这是我第一次觉得写代码“非常爽”。也正因为如此,我对Actix充满了信心。在第三天晚上我们组内会议的时候,我提名了Actix-web作为后端框架,陈述了它极佳的性能和安全性,但也指出了学习和撰写上的一些困难。可能是因为线上会议的缘故,大家发言并不很积极,也没有对Actix发表太多的意见,初步就定下了这样的方案。

到了第二天组会后,我向后端组的其他两位同学介绍Rust的开发环境安装的时候,事情发生了变化。最开始是说“我们先试一下,如果不行还有Plan B”,然后变成“我觉得这个非常困难,我尝试做一下”,再然后是“统辅不是我最大的问题,我运动队训练占用大量时间”,最后就变成了“我理解你已经在这个框架上花费了大量精力”——我虽然直,但我不傻。话说到这个份上,我完全明白会发生什么了。2vs1,而且我也没有任何的理由来反对一个“可用”的框架Django,毕竟我们小学期学的就是它。

没有任何人做错任何一件事情:队友提出了自己的意见——毕竟我们还没有最终敲定我们的技术栈,而且也没有任何人保证我的提案一定会通过。但我只是觉得心理落差非常大,和之前三天“燃起来了”的感觉完全不同。舍友带领的那个小组对Rust和Actix的包容程度要更好一些,可能因为他们更熟悉、也可能因为舍友作为组长有更强的号召力吧。

事已至此,为了我的成绩和对队友的责任,我也只能把Django的东西拾起来,在后端上尽我的一份力。也算是一次教训吧:在做teamwork之前找到和自己志趣相近的队友,审慎地评估局面。

另附仓库如下:backend-demo