苦恼的问题
我就职于一家小型的创业公司,公司从董事长数到一线员工都没超过20个人(实际上只有16个~~~)。虽说公司业务不过分依赖互联网,但是现代企业没有不接触互联网的,就好像家里一定要有床一样。然而公司的IT技术人员只有我一个。是的16个人只有一个技术人员::>_<::,所以我的问题在于如何通过一个人的力量支撑公司的线上业务,同时探索线上业务的可能性。这对我个人而言带来的极大的挑战。
尝试过的解决方案
曾经尝试过,软件业务外包,失败告终,合作开发,失败告终,技术人员外派,失败告终。后来我发现之前三种常见的方式都有一个问题,就是外包的人员,参与合作的人员,外派的人员并不关心你的死活,对他们来说钱揣自己的包里比你的项目能成功更重要,双方的利益点很难达到协调统一的程度。所以我只能用一个更笨的解决办法,自己的土地得自己先耕种。是的不再依靠他人自己来做。
撸起袖子自己干的问题
如果只有自己一个人应该如何处理一个企业的线上业务?西红柿炒鸡蛋再好做,也要起火开灶爆锅呀!所以我要先解决几个关键问题:生产力,技术选型,产品质量,系统的扩展能力,为了解决以上几个问题我大量的使用了开源软件,显然这很有效果(不然不能来吹呀)。下面就说说我如何利用开源软件解决这些问题的。
生产力问题
一个最基础的互联网技术团队都应该有那些成员组成?
我们先要讨论一下,一个最基础的互联网技术团队都应该有那些成员组成?一个产品经理(兼着项目经理和运营工作),一个UI设计(兼着各种美工杂活),一个前端工程师(最好能用前端技术生产移动端应用),一个后端工程师(兼着运维的工作),这样算下来大概要有48个人才能维持一个公司基本的线上业务。所以解决这个问题就是提升我个人的生产力,因为48个人之间是有一定的沟通成本的,所以我个人生产力只要提升3~4倍左右就可以满足我们公司的业务需求。
缩减生产流程
让生产流程最小化是我最近才真正解决的问题,源于一次出差在高铁上尝试极限编程。为了缩减生产流程从人员的角度来看,我砍了50%产品经理的日常智能,整个UI都不做,砍掉前端50%的工作,以及后端50%的工作。这样我只要比以前提升150%的精力消耗就可以实现4个人以上的生产力。那些砍掉的部分直接使用开源软件来处理。
开源软件起到的作用
首先产品设计方面我已经不再写任何文档了,我认为互联网产品的开发或者说软件开发应该像写文章一样提笔就来,而不是提前全部构思好了,然后再落笔去完成。所以我会先打开代码编辑器使用注释写好我要做的东西是什么,以及业务流程应该是怎样的。然后UI层面连带着前端使用github上面现成的开源组件库,比如muse-ui或者element-ui,拼接我想要构建的界面。最后后端有大量现成的开源系统比如laravel,几乎不需要自己投入大量精力去开发底层功能,根据自己的业务修改逻辑就可以直接使用了。
技术选型问题
平台的选择
公司的业务是大量基于浏览器开发的,三点考虑,一、几乎所有的设备都有浏览器。二、相关的技术生态比较成熟。三、我们的业务几乎不涉及密集计算,比如图像处理,所以移动端的APP我觉得就显得没有那么重要了。
技术的选择
目前公司使用的技术大部分都是c/c++ 派系生态的东西,比如nginx,php,mysql以及相关的框架应用vuejs,laravel。他们都是开源软件,有强大的开源社区做支持和维护,这相当于我在利用全世界的资源来开发软件应用。除此之外还有十分健壮的生态环境,这样我就可以获取几乎任何我想要的解决方案,因为开源世界肯定有人想过我想的问题了。相当于我从全世界免费雇人为公司打工。
产品质量问题
我们讲道理,以我见过的程序员来说,很大一部分人(包括我~~)都很难写出高质量,稳定,且可维护的代码。相比之下开源社区的软件代码质量都非常易维护且非常健壮(健壮就是软件安全,稳定,完整),因为开源软件广泛流传,经历全世界不同地区地域的商业考验,不断的更新修改,由几千几万人共同维护,经过磨砺开源软件在很多场景下运行的都很稳定,安全性也会好很多。所以质量方面至少要比我自己以及见过的外包团队生产的东西要好很多(也可能是我见识少)。
系统的扩展能力
我们开发的东西,不可能只停留在一个阶段,而且随着技术的发展,底层技术可能成本会更加的低,这样的红利便宜肯定要占呀!所以这就又体现出开源软件的优势了。因为开源软件运行在各种不同的商业环境下,所以他们会有丰富的生态系统支撑,这就意味着有很多成熟的解决方案。当我们进行业务变更的时候都可以在开源社区找到合适的解决方案(幸好现在人类想象力有限~~~点子少)。而且随着业务规模的不断扩大,大规模I/O场景的解决方案也会有相应的社区版解决方案。利用开源软件的流行特性,我们可以很容易的找到相关技术人员扩大生产规模。
开源软件我尚未用到的特质
制定行业标准
开源软件是可以制定行业标准的,参考谷歌的Android苹果之外几乎是唯一的手机操作系统了,基本上谷歌给Android开放了怎样的API能力,决定了手机生产商能如何开发手机功能。
让更多的人来帮助你完善软件而且是免费的
21世纪啥最贵呀,除了房子就是人,如果有人能积极的帮你完善你创作的软件那该有多好呀?互惠互利,不仅提升生产力还大大降低成本。
总结
新时代,我想我们不需要在维持一个专注技术研究的团队了,因为研究成果并不直接创造社会价值,如果可以我们应该把技术开放与全人类共享。让人们通过对技术的应用创造跟高的生产力。所以现代企业为什么不积极拥抱开源软件呢?