您的位置:主页 > R卫生活 >写在求职天眼通发布之后:软体开发者的社会责任 >

写在求职天眼通发布之后:软体开发者的社会责任

2020-06-182020-06-18R卫生活R卫生活

写在求职天眼通发布之后:软体开发者的社会责任

这篇可能不会讲到太多直接跟技术相关的东西,如果你对这个东西怎幺写出来比较有兴趣的话,可以看这篇:Clairvoyance 是怎幺开发的  。主要是希望这次从开发到现在较多人使用,中间受到许多帮助和指点的经验,能够被记录下来,假如以后有人遇到一样的事情能从中借镜。当然,这也是对自己的一个反省。

首先还是得先讲一下求职天~眼通是什幺,它其实就是个 chrome 的 extension,装了它以后,能在人力银行的职缺下方给评论,以及看到其他人给的评论, 载点在这里 。其他说明的话 ptt 上的文章 会清楚得多。

求职天~眼通要做的事情很单纯,就是像前面说的把留言功能加上去而已,不过其实就像我们平常在做一件事情一样,用想的都很简单。但总归其实只会遇到三个问题:

  1. 真正做的时候会遇到问题
  2. 做出来之后有没有人用会是一个问题
  3. 有太多人用之后又会是一个问题

下面来说一下从端午连假到今天为止的这一段故事,写程式是这个故事很重要的一部份,不过其实还有很多其他眉眉角角可以跟大家分享。

在开始动手写程式之前

在开发前,首要的认知就是知道:自己擅长什幺、手上有什幺资源,如果前两者还不够还要再準备什幺。其实有这个发想是在端午节之前,我平常是一个网页前端工程师。

最常用的语言刚好就是 JavaScript ,可以直接拿来写 Chrome 的插件,但这还不够,我还需要一个存放资料的 back-end。下面这个基本上就是我画在纸上的草图:

写在求职天眼通发布之后:软体开发者的社会责任

本来打算直接在 AWS 上开一个 EC2+RDS 放着,后来发现只是单纯留言,也没有要真正 render 一个网页。这个 back-end 需要能达到两件事情:

  1. 计算的能力
  2. 资料的持久性

首先是单纯的运算能力,最终看上了 AWS 的另一个服务 AWS lambda,它是以 function 为单位,不会需要我去维护整台机器,而且当运算量变大时,我大 amazon 会自己帮我 scale-out。于是稍微研究了一下 serverless 这套 framework,也写了一份笔记在这里:

再来则是资料的持久性,我选择了 DynamoDB,是个跟 lambda 搭配很常见的选择。儘管它看起来就是简单易用,但为了这个选择其实下了不少功夫,一开始是因为对「最终一致性」有疑虑,所以去看了 CAP 理论:

后来再看了这本简介分散式运算的书:

总归对系统的架构有个理解后,才开始安心使用,儘管现在回头看这两份文本都可以跳过,但要做能 scale-out 的系统,对分散式运算如果一无所知的话,会没有那个 sense,身为一个软体人就不该对未知的东西姑息或害怕去学它。接着一切就绪后,我突然发现我少了一位设计师伙伴,基于不想在假日麻烦人,我上了 codepen 去看他们的 license:

简单说一句话,就是 public pen 都是 MIT license 的,要使用的话,只要包含了他们原本的 license,就可以自由使用。虽然最后几乎都只是参考概念,并没有真正援用哪个 pen 上的东西,但身为一个软体开发者,就应该遵守这些基本的规定,毕竟当真的有人要找你麻烦时,没有不知者不罪这种事情。

好了,现在我有:

再来只是需要时间就能把东西做出来了。

发布 Beta 版本

大家看到的版本,其实是有满满 bug 的 beta 版本,我只有让身边几个朋友测试过,就先 po 在 soft_job 板上。

会这样做的原因是因为我想知道这东西是不是真的有需求,当时 po 完文章就去睡觉,早上看到有三十推就觉得蛮开心,结果几个小时候 TonyQ 将它转到八卦版去,直接一个爆冲。但结局让我又开心又害怕:

令我意外的是, aws lambda 和 DynamoDB 完全撑住了流量,当初把这些东西交到云端託管有了成效,后来去看 log 发现没办法留言,都是原本 code 里面有 bug,跟 AWS 一点关係都没有 XD 不过后续就一直修到昨天晚上为止,留言功能才算正式稳定下来。

收到回馈之后

接着除了大量的 bug 回报之外,也收到许多跟功能上有关的回馈。其实大部分的回馈我都认为做了功能绝对会更完善,但时间并不允许这样做,所以问题并不在于「现在要做什幺」,而是「现在不做什幺」。

因为背负着很多人的期待,我并不能想做什幺就乱做什幺,必须订下一个明确开发的方向,就现阶段而言,让这个 extension 活下去是至关紧要的事情,因为已经有了第一批用户,剩下的只是继续累积。太激进、会让人力银行对这个 extension 採取行动的事情,都不该去做,因为目前还玩不起这个槓桿。

商业化的迷思以及赞助管道

有蛮多人在提到这件事情要商业化,也有人觉得只要「不商业化」就先把你贴上「傻傻、不懂事」的标籤。但其实我一点都不排斥商业化,我只是单纯的觉得这件事不适合,或者现在没想到适合的方式。像是如果要在上面硬是建立一个什幺商业模式,这东西最后看起来只会是一个扰民的垃圾。

而且当以获利角度来做这些事情,我就不能单纯站在劳工的角度去思考了。至于要永续经营,后续等真正稳定下来后,会放上小额捐款的连结,这件事会在拟定如何公布经费的使用以及规划后才做,不在现在就先急着募钱的原因很简单,因为我想让捐钱的人真正弄清楚他们的钱为何所用,毕竟群众募资不是大乞讨,懂?

未来方向

这里不谈功能,最终的希望就是所有的劳方都会是天眼通的用户。因为大家并不是一年四季都在找工作,但大家却是一年四季都能上去做评论,有时候并不是说一定要面试过或怎样才能做评论,短期内,可以揭露一些根本没必要去的职缺,长期下来,经验的分享才是这个 extension 最难发挥价值的地方,「老马识途」这种事情,在职场上也是适用的,总之,如何吸引大家去做这件事,就会是接下来的主要课题。

一个软体工作者的反思

终于写到这里了,前几天看到了 Codetengu 上分享了这篇文章:

我也想到前阵子 Alpha Go 很夯时,阮一峰所写的文章:

身为一个软体开发者,能了解电脑能做到的就是大量自动化、去中介化,去取代掉那些机器可以取代的员工,企业为了达成这件事情,自然要雇用一堆软体工程师来帮忙,所以软体工作者也变成一个抢手的职业。所谓技术带来的平等,是指「资讯上」的平等,我们的资讯流通因为网路和软体越来越快,举例像是:欧巴马总统和我们一样都能用 google 快速查东西。

但在财富上却不尽然,我们拿到越来越多薪水时,也让越来越多的人失业,当此同时,除了缴了多一点点的税,我们大多数人并没有负起什幺社会责任。儘管软体开发者理应是最有办法让想法付诸实现的人才对,毕竟软体能够运行在电脑这个已经称霸全球的载体上,更别说我们还有了 Internet 这样铺天盖地的通路,写程式这件事虽然有时候我也会因为智商不够用觉得好难,但是比起动不动要砸大钱的製造业,写程式真的容易实现多了。

写程式是世界的潮流没错,只是许多台湾创业家提到写程式就很喜欢强调硅谷如何、如何,忽略了许多在本质上就有显着差异的事情。

我不会说面对国际市场是一件错误的事情,在商言商总是有许多额外的考量,毕竟连话说的不好听,要怎幺让人掏钱投资勒?只是很多问题,其实台湾有其因应的解决方式,而工程师本来就该是提出 solution 的人,而不是负责说空话的人,所以更应该要虚心学习用一个台湾人的角度来看向世界以及台湾,才能真正解决台湾的问题。

举例来说:这个插件就是解决台湾特有的问题 XD,因为国外的求职平台没有像台湾这样被垄断。中国那边的招募平台也几乎都有开放留言讨论这个功能,资方跟劳方是积极在争论对话的。所以这插件只有在这样子的台湾才会有需求 XD。

再来虽然现代人生活离不开电脑,但其实对于软体相关的事务都是有疏离和惧怕感的,很多时候是因为身为人与机器的 Proxy 的我们没有做好事情让其他人有感。身为一个在软体产业工作的人,这件事可能会蛮常见的,就是你有时候很难跟不写程式的人叙述你到底完成了一些什幺 XD

举例:

  1. 把什幺东西做了 cache 让它更快
  2. 或是用了什幺 Design Pattern 提高了维护性

别人听一听常常是:「喔⋯⋯这样啊⋯⋯」。但生活中到处都是我们能够付出专业能力去改变的地方,工作之余,还要有生活,生活之余,我们还能改善其他人的生活啊 :D。当认为有正确的事情该做,就该运用系统化的角度去设计和解决,因为假如做出来不小心规模化,你的系统又扛得住的话,那可能就不小心改变世界了。

再说我们身在这个年代,有各种云端服务帮你搞定基础建设,还有各种框架帮你搞定 UI。基本上你只要有想法、计画,再加上一段时间稳扎稳打的学习、练习,几乎就能解开各种 Issue 了,不觉得很讚吗?讚讚讚!

也期许自己未来是真正的 RD 工程师,

而不是出现 bug 只会 XD 的 XD 工程师:

写在求职天眼通发布之后:软体开发者的社会责任

相关文章