写在十分简历发布前夕

关于十分简历

十分简历是我们的第一个作品,这是一个微信小程序,用于生成漂亮的简历模板。

同时,考虑到用户的隐私问题,增加了私密简历功能。

那么,到底什么是私密简历呢?

在传统的简历投递中,通常HR会将我们的简历打印下来,面试完成后,会留下面试者的简历。这在一定程度上可能造成用户的私密信息泄露。私密简历希望可以解决这个问题!

相对传统的纸质简历,私密简历会生成一个专属于你的个人简历链接。通过这个私密简历链接,HR可以实时查看你的简历。你可以在小程序中设置一个简历过期时间,到达过期时间后简历会自动回收。为了进一步防止其他人查看你的简历,你还可以设置专属于当前私密简历的阅读密码。

与此同时,你还可以通过小程序随时开启或关闭当前私密简历。关闭后,将不再允许任何人查看当前私密简历,直到再次打开。

事实上,我最感兴趣的部分,恰好就是私密简历的开发。因为,确实存在一些公司的面试官会将用户的纸质简历随地丢弃,这就造成大概率简历内容泄密问题。

不过,肯定有人会说,现在的HR通常都会要求打印纸质简历,又有什么办法呢?所有的进步当然不是一时间可以改进的,也许未来这样的情况会随着这类产品的普及开始变得不一样。我坚信,传统的纸质简历终究被遗弃。

十分简历的点子来自于之前团队的一个小伙伴,当时,公司刚刚成立,我希望用一个小而精的产品宣告公司的诞生,同时展示团队强大的开发实力。

因此,公司成立后的第一件事情,就是号召大家天马行空,思考第一个连接公司与世界的产品。最后发现,这个简历产品的思路有点意思,而且也不至于太过于复杂。于是,这个产品就成为了我们连接世界的第一个作品。

确立了产品原型之后,真正的挑战开始了!

挑战一:后端开发

后端开发是我们面临的第一个挑战。事实上,我的第一份工作就是后端开发,并且进行了将近一年的时间,确实有一定的积累,但这并不能给我带来很大的帮助。因为,时间已经过去了差不多5年。此后的4年时间里,我一直从事移动平台软件开发。关于后端的知识点,大抵忘记了,现在捡起来,难度不少!

而且,时间过去了这么久,之前的技术也慢慢地被淘汰了。为此,我决定重新开始!

第一步:确定技术选型

这一步我选择了相对麻烦、但已经实践成熟的解决方案:

  • Web框架:Spring Boot + Apache Shiro
  • 数据库框架:MyBatis
  • 服务注册与发现:Eureka Server
  • 路由网关:Zuul1
  • 编程语言:Kotlin

第二步:解决路由网关难题

在路由网关的技术选型上,最终确立了使用Zuul1作为路由网关框架。实际上,还有一个更好的选择是Spring Cloud Gateway。但使用Spring网关需要结合更多的新知识去做,而且还需要自己去处理数据库的事务问题,的确会带来不少的麻烦。加上在当时考察的文章中,发现Spring的网关性能并不能带来本质上的提升。因此,最终确立了以Zuul作为后端的路由网关框架。

在确定了技术框架之后,第一个需要的解决的问题就是,如何通过一个字段标识路由到不同的服务层逻辑。例如:通过版本号路由到不同的逻辑服务层,避免版本之间相互干扰等等。遗憾的是,Zuul的路由处理是静态配置的,这就需要对Zuul进行扩展,建立一个可以进行动态路由配置的网关框架。

在这一部分问题的处理上,从最开始的设计到最终整个后端框架定型,差不多花掉了半个月左右的时间。一方面要考虑动态配置,另一方面需要考虑到网关的性能问题。通过不断地尝试,查资料,总算解决了这个问题。这个问题的难度,在这次整个产品开发过程中排名第一。

第三步:整合安全框架

这里的安全架构不仅仅指的是数据加密。当然,因为未来会涉及到付费交易,毫无疑问,我们的数据是进行过加密处理的。但这里,我要说的是,Java安全框架的接入问题。

考虑到未来开发的便利性,我希望用一个安全框架帮助接管用户权限控制、分配等问题。为此,首选的当然是Spring Security。但实际试用下来,发现Spring Security设计的过于复杂,可用性不高。并且,灵活性也受到了限制,不得不另辟蹊径。最终确定了使用Apache Shiro作为平台的安全框架。

Apache Shiro从一定程度上规避了Spring Security的不少问题,从一开始阅读文档就能感受到其简洁的设计。Apache Shiro的接入相对Spring Security就简单了许多,而且可定制性也提升了不少。最终,安全框架接入顺利完成。

第四步:搞定逻辑层编码

实际上,我在早年从事Java后端开发的时候,我们还使用的是SSH(Spring, Struts2, Hibernate)的组合。而现在Struts已经慢慢地被淘汰了,取而代之的是Spring MVC + MyBatis + Spring。同时,为了进一步降低Java Web开发的难度,Spring官方推出了Spring Boot。相对传统的Java Web开发,Spring Boot几乎可以脱离配置文件,使用注解完成所有配置,亲和力提升不少。 因此,我最终选择了使用Spring Boot来构建我们的Web应用。但所有的这些对于我而言都是全新的知识点,不得不从重新学习,好在之前的基础还算比较扎实,上手很快。

挑战二:小程序开发

搞定了后端开发的难题,第二个挑战接踵而至:小程序开发。

团队成员中几乎都没有小程序开发的工作经验。实际上,团队成员中有一位同学有一定的小程序开发经验。但事实证明,这位同学的开发经验依然非常浅,并不足以支撑整个小程序的开发。为此,我决定亲自学习小程序,帮助大家完成小程序端的架构。制定小程序开发规范。

小程序的开发难度相对较低,但也踩了不少坑,关于这一部分的经历,我会用另外一篇文章记录下来。

小程序开发过程中,最大的问题来自团队成员,其中一个小伙伴是兼职参与开发。由于学习知识较慢, 同时对自己自信心不够。加上生活的一些琐事,即使分配了足够简单的任务也未能顺利完成,这就导致了整个研发过程被拉长。

最后,在Release的版本库中,我惊奇地发现,我最终参与了70%以上的小程序代码开发。看到这种场景,心中五味杂陈,这显然不是一个良性循环。

这也让下定决心,从明年开始,租写字楼,正式招人办公。兼职员工将由全职员工带队进行工作安排,处理。并适当给予兼职员工一定的资金鼓励。

挑战三:Web前端开发

Web前端开发在这次开发的难度排行榜中可以排名第二。团队成员中,几乎没有一个人拥有前端开发工作经验。其中一个同学做过极少一段时间的前端开发,因此,我让他牵头开发了第一个模板。

但在第一个模板的开发过程中,也是不断地磕磕绊绊,走了不少弯路。那一段时间,是整个开发阶段最艰苦的时段,我跟这位同学每天从早上忙到晚上12点。持续了连续10天左右,没有周末,没有午休。好在终于顺利完成了第一个模板的开发。

模板开发完成后,整个产品的基础形态第一次呈现在了大家的面前。前期由于时间过于紧张,在我们的产品原型中,并没有一个充分的流程可以展示完整。以至于兼职参与开发的同学们在理解产品的设计上出现了不少问题。这种理解上的问题后来也让我头疼不已,这也是这次开发过程中获得的宝贵教训之一。

关于Web前端的技术选型,也走了一些弯路。最开始,我考虑使用Vue + TS的组合作为前端开发。最终架构完成后却发现,这个组合对于前端开发的难度提升了不少。这在很大程度上会拖延项目的开发进度。因此,马上放弃了这个组合。转而使用大家比较容易掌握的jQuery。事实上,模板页作为我们的单页应用,使用jQuery已经完全足够了。

确定了技术选型之后,依然出现了一些问题。由于第一位同学开发的比较匆忙,没有形成一定的规范。导致第二位同学接力的时候出现了一头雾水的情况。因此,第二位同学不得不重新去学习Webpack,重新去设计自己的代码架构,这在一定程度上也拖慢了整个开发进度。

事实上,在整个开发进程中,Web前端的开发比重确实占据了不少。这个挑战的难度在本次开发过程中应该可以排名第二。

第一阶段总结

在整个十分简历的开发过程,就像在做一次冒险,所有的知识对于我们来说,都是陌生的。我们需要从0开始学习,恰好是这种从0开始学习的勇气让我更加自信我可以搞定任何事情,不会再惧怕第一次。同时,我也坚信,这一次难忘的开发经历,会让团队中坚持到最后的同学都有了一往无前、无所畏惧的勇气。

这是一次十分难忘的开发经历,也是我们第一次勇敢地探索未知的世界,最终克服了重重困难,将十分简历带到了大家的面前。

这不是结束,这恰好是我们故事的开头!

最后,感谢所有参与十分简历开发的同学们,为自己鼓个掌吧!你们所经历的,不仅仅是开发了一个产品,而是克服了内心对于未知事物的恐惧,敢于踏出第一步。这种收获,必将让你们终身受益!

后记

送给中途离开十分简历开发的同学们

在十分简历的开发过程中,有两位同学中途离开了开发团队。第一位同学是因为同时在开发另外一个产品,时间有限,不能同时兼顾两个产品开发,最终选择了另外一个产品的开发。这是完全可以理解的,这是个人选择问题,也是眼界问题。这样的同学,在后续团队扩展中,将不会再次接收。因为,有了第一次这样的选择,就会有下一次。这样的同学不能稳定产出,稳定投入,会因为种种问题摇摆不定。

另外一位同学,因为受不了我的严厉性格,在中途选择了离开。这当然更加容易理解,这样的的离开于我而言,几乎是完全无感的。相反,如果一位同学在开发中投入了很多,对团队的奉献很大。突然选择了离开,对我的打击反而会比较大。而类似这位同学这样的一个原因,选择离开。对于我,反而会感觉到欣慰,因为即使这样的同学留下来,也并不能跟我走到最后。他的抗压能力,以及他的意志力决定他不能走的很远。创业的路就像攀登珠峰一样,随时都有掉下去摔死的风险。你也许感觉不到你要摔死,我不得不用最严厉的语气骂醒你,你在“爬山”,你不应该睡觉!但类似这样的同学,在后续开发中,作为员工可以再次接收,因为他至少符合稳定产出的条件,只是意志力会薄弱一些,这个可以慢慢改善。

所有两位同学的离开,都是非常恰当的时机,在团队初期选择离开也是对于团队小伙伴最大的尊重。请离开的同学放心,我对大家不会有任何的责备,我非常开心大家可以在初期就选择离开了团队,这很重要。就像进行一场计划好的旅行,在旅行前10天就有人中途离场,这其实很好。我们还可以重新组织同学加入到这场旅行中来,这是一件好事,我要感谢大家。同时,大家的离开也有利于筛选更优秀的员工。当然,也希望离开的两位同学工作顺利,一切顺风顺水。

微信扫描下方二维码体验小程序

十分简历


评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×