回顾一个非盈利项目:Kopernik

几天之前,我们和freecodecamp以合作形式正式建立了第一个非盈利性质的项目。这对我们双方而言都是一个重要的里程碑,对freecodecamp来说,更是他们推出的第一个项目。让我感到十分开心的不仅仅是能够推出一款工作软件,更因为这段经历对我的事业的意义是崭新而非凡的。kopernik拓宽了我的视野,使我看到科技,哪怕是以最微不足道的形式,能够影响数以千计人们的生活,更令我意识到我们每个人都可以成为这改变的一部分。

FreeCodeCamp

首先,我来概述一下freecodecamp的工作方向:freecodecamp是一个有一群有抱负的网页开发者组成的团队。它专注研究全栈应用程序开发脚本,它的课程规划涵盖两部分。第一部分是在网络上到处都可以找到的,粗略估计下相当于100小时的免费课程(不久将会发展为内部版本),另一部分则是关于如何将现实世界中的项目制作成非盈利项目,这一部分同样粗略计算约有900小时的课程。以这种方式,freecodecamp的成员和我们非盈利项目的成员都可以从这个项目中获得技术和经验,而全程并没有一分钱涉入。这对于大家来说是个双赢。

一份来自Kopernik的女性倡议

完成闯关成就(freecodecamp的课程)之后,我与另一名程序员伙伴被一起分配到一个项目(超开心!)。我们的项目是关于一个叫kopernik的非盈利机构,在亚洲很多国家都有分公司,但就我们这个项目而言,是针对他们印度尼西亚的子公司。kopernik的工作是将环保技术传播到东印度尼西亚非常贫困而遥远的地区,帮助女性和她们的家庭成员提高他们的生活水平,并授之以鱼,让他们有一技傍身。下面的视频将讲述更多我们工作的细节。

问题

为了能让kopernik衡量这个项目的影响力并改善我们的运行方式,我们需要记录代理商的销售数据和技术终端用户端的数据。然后,我们需要采访终端客户以判断这些技术对他们生活的改变达到了什么程度。

“然而,我们的代理商和区域协调员在那些互联网连接受限,不可靠且缓慢的地方工作,那里的用户们通常极少有使用电脑或电子设备的经历。销售数据都是我们的代理商通过纸质发票的方式收集的,但将这些数据归纳成一个kopernik可以用来制作有意义报告的规定版式就是一个非常复杂的过程了。”

正如你所见,这个项目面临许多挑战,包括缺乏经验的终端用户和对于网页应用程序而言极为不利的客观条件。最终,在地方说明可能好几周没有信号之后,这个问题转变成了一款可以无网工作并可以在连通网络时自动上传的数据捕捉应用。在觉得安装Chrome扩展包之前, 我们研究了好几天,以便我们能借助Chrome浏览器里的本地储存器来运转后台。我们选择了它也是因为,网络浏览器是一个熟悉的界面,令我们能够通过应用中心来完成自动升级。这个问题一解决,我们就立刻开始了编程。

Amber,我们非盈利机构的股份持有者和MVP

我们这个项目最大的优势,就是有Amber做我们的股东。首先,她对于这个项目非常激动,并给我们提供了我们需要的一切帮助。她及时给我们提供项目进展过程中需要的字体,图形,要求,说明和账户。同时,她积极主动地将这个项目推广给她的同事,以便我们能得到尽可能多的反馈。

另外,Amber是一个有多年经验的网页和软件开发员,能够迅速准确地找到及查明漏洞和使用上的故障。这极大的推动了我们的进步,并最终使我们能推出更完善的应用程序。此外,她永远给我们一种我们就是kopernik当中的一员的感觉,知道这个项目将会给他们的事业目标以帮助,我们真的非常开心。这让我非常憧憬,在将来能够全职为像这样的一个非盈利机构工作。

挑战与教训

当然了,做一个现实项目的意义之一就是有机会学习,并能在迎接挑战的时候将学到的东西付诸实践。这方面而言,做项目在提高HTML和CSS技术方面给了我很大帮助。因为表格本身有常用的习惯版式,尝试将页面布局理顺并不像我们最初想的那么简单。这些也在项目推进的同时,在我添加很多视觉效果和作出一些调整的时候,大大帮助我理解了一些用户体验的概念。有些时候花费整夜仅仅读这些文档资料,可结果却是值得的。

关于我们面临的挑战,我必须说这远不止是发生在每个项目中的时刻都在发生的与代码有关的问题,真正巨大的挑战,是与搭档步调保持一致,因为一些任务是相互依存的,所以后期合并有时并不能达到预期效果。我也更加怀念从前的搭档,他让我们所致力的工作更加一致均衡。但我也认为这次经历使我们更明确如何分工合作,从而使保持工作进度的一致更为容易,这是每一个需要多名开发者的项目最迫切需要的。

关于项目

这个项目由两个部分组成:一个谷歌浏览器拓展形式的前端应用程序,和一个显示API终端的后端应用程序。

在前端,有一个表格,用到了普通的HTML和CSS(没有前处理器),一个解决网络状况和数据传输的脚本,一个用到Chrome局部储存器API的管理储存函数的脚本和一个解决交互和校验的脚本。这里只用到了jQuery 2.1.3来解决选择器,视觉

并且,在一个构筑步骤中,Gulp被用来压缩HTML,,CSS和JavaScript文件,并优化图片和字体。最终文件的大小,包括jQuery在内,被压缩到了85KB。在后端,这个app用到了Node.js (0.12.1)和Express.js来显示API终端。接收到的数据通过API密钥(安全起见)来校验,并被存进远端的MongoDB数据库。之后,一个进程被用来检索存储的数据并将其转换成csv文件,然后依次被上传到一个远端的sFTP服务器。接下来的一段时间里,它会和CRM系统更紧密地结合。这个app本身在Heroku上运行,部署由Wercker处理。另一个用到的工具是New Relic,来提升性能并监控故障。当我们确保没有用到其他人呢的开发成果后,源代码将会很快被放出。

最终感想

能够和freecodecamp共事开发这个项目,并且已经走了这么远,我的内心充满了快乐和喜悦。与kopernik这个机构一起工作是我从事项目开发以来最棒的经历之一,我真的希望这段经历可以帮助这个基金会提高物流水平和影响范围。当然了,我想继续改进这个应用程序,根据需要添加更多的内容,尽管没有人要求我这样做。

我还想感谢Michael和Quincy给了我们做像这样的项目的一次机会,并把freecodecamp发展的一天比一天好。

最后,我认为,做这样的项目,毫无疑问,能提高任何一个希望在网页开发领域求职的人未来找到工作的几率,从而使我更加坚定,作为FCC的一员,我走在一条正确的道路上。