如何写出不好的软件还能赚钱
如何写出不好的软件还能赚钱
原文:https://medium.com/hackernoon/how-to-write-bad-software-and-still-make-money-97cf92c90dd6
大学一年级后,我有机会在一家初创公司实习,我们称这家公司为 B。B 是由一位名叫 D 的女士创办的,她从事艺术品买卖,她想为什么不在网上做生意。因此,她和一群朋友创办了 B 公司,在网上销售艺术品。她自己没有多少编码经验,所以她聘请了一家名为 V 的咨询公司为她创建网站。v 创建了一个网站,但并不像她希望的那样好,所以她雇用我作为实习生,希望我能为她解决问题。
我的第一个任务是在网站上编辑一个错误列表,结果我发现了很多错误。在接下来的两个月里,我本该解决这些问题,结果却成了如何不写代码的一课。
代码库很糟糕,每个文件都有一个导入,然后所有的代码都在一个 try 块中,然后一个 catch 语句会捕捉所有的错误并记录下来。代码中的任何小变化都会使整个网站瘫痪,我不知道为什么。他们没有使用任何版本控制,他们的许多员工甚至不知道 git 的存在。幸运的是老板知道这件事,我问他为什么不用版本控制,他说太复杂了,我们不需要。
他们在 T2 的安检非常糟糕。当你在网站上注册后,他们会给你发一封带有登录 id 和密码的电子邮件,所有内容都是明文,默认密码是“密码”!管理页面不需要通过一个特殊的链接登录就可以访问,使用这个链接你可以做各种坏事,比如删除艺术作品和修改页面描述。他们也是相对较小的问题,如使用错误的验证码,未加盐的密码数据库和使用 TripleDES 而不是 AES。
我做了几件事,修复了登录系统,停止了用明文发送密码,实现了用 OpenID 登录,增加了一个电子邮件验证系统。
负责网站的员工一点也不合作,每当我去问她问题时,她总是把我赶走或者给我一个对我没有任何帮助的答案。没有人真正阅读我的代码,因为每个人都太忙了,你猜怎么着,为了合并我的代码,我不得不通过电子邮件给一个人发送我代码的副本,他会手动将其粘贴到实时服务器上。总的来说,看起来 V 并不在乎 B 的网站,即使他们在乎,他们也没有能力做好工作。令人惊讶的不是有人可以如此无能,而是他们可以如此无能,但仍能获利。四年后,B 死了,成为 V 的子公司,为企业提供游客管理解决方案,拥有像 ICICI 银行、DHL 和孟山都这样的客户。我的猜测是,像 V 这样的公司是一种常态而不是例外。
现在的问题是为什么像 V 这样糟糕的公司能够盈利。我认为主要原因是信息不对称,对于一个没有技术知识的客户来说,很难区分好的和坏的工作,两个网站表面上看起来足够好,但一个可能内部严重破裂,另一个可能坚如磐石。在这种情况下,客户不得不相信顾问所说的一切。此外,还有激励的不匹配,因为承包公司通常按小时支付报酬,他们被激励尽可能延长项目,做最低质量的工作,当客户不能区分实际工作和做工作的虚假时,事情变得更糟。
可能的解决办法包括让顾问为他们糟糕的工作付出代价。我曾经面试过一家(不同的)软件咨询公司,他们也接受按小时计酬的合同,所以我问他们,难道他们没有动力不必要地延长他们的项目吗?他们通过以前客户的介绍获得了大部分合同。他们说,如果他们这样做,他们的客户将知道这将损害他们的长期业务。他们也有一个政策,不与非技术客户合作,基本上是那些能够识别好工作和坏工作的客户,反过来帮助他们维护自己的声誉。
进一步说,可能会有一个国家安全漏洞登记处,让负责安全漏洞的承包商感到羞耻。
黑客中午是黑客如何开始他们的下午。我们是 @AMI 家庭的一员。我们现在接受投稿,并乐意讨论广告&赞助机会。
要了解更多信息,请阅读我们的“关于”页面、在脸书上点赞/给我们发消息,或者简单地说, tweet/DM @HackerNoon。