TL;DR: 产品终究目标是客观的,项目的终究目标是片面的,产品有长期价值,项目没有。
在这几年中,做过产品也做过项目,在做产品的团队做过项目,也在做项目的团队做过产品。做产品和做项目,看起来没有什么差异,毕竟做产品的团队也是依照项目来开发一个个功能,做项目的团队也是做一个产品交给出去,都是开发。但实际上,做产品和做项目的目标是彻底不同的,开发者注重的重点也皆然不同,本文就聊一聊我认为的两者的差异。本文中的产品和项目背景都是IT职业,其他职业我不了解,以下仍旧简称为产品和项目。
产品
在移动互联网如此发达的今日,每人每天都会接触到许多的产品,包括生活和作业的方方面面。这些产品都有一个统一的特征——发布后坚持品牌,然后持续迭代。10年前我们用的是微信,今日我们用的仍是微信,可是功能现已今非昔比,增长了数倍,但10年前的大多数功能仍旧存在。微信现已是我国互联网里最抑制的产品之一了,仍旧增加了这么多功能,阿里系的APP一向被人诟病臃肿,本质上也是在不断的增加功能。许多2B的产品也是相同,只不过因为对用户有更强的控制力,2B的产品能够更干脆的舍弃一些老旧功能。
可见,在坚持现有功能的基础上不断迭代是产品的根本特征。一个产品自诞生之初开端,就开端了这个进程,直到这个产品行将死去,该进程才会停止。关于开发来说,很难有人预料到一个产品完好的生命周期,尤其是成功的产品。那么一个扩展性强、可保护性好、安稳性高的架构就会成为一个产品的中心价值,这样的架构往往需要经历丰富的开发人员才能设计出来。除了对事务的熟悉程度外,这种架构经历也是开发者在做产品时堆集的中心价值。经过历练的开发者能够用之前的经历对类似的事务场景进行快速复制,少走许多弯路,所以之前程序员换岗的涨薪普遍比较可观。
产品一般会经历市场和直接运用者的检验,所以评价的标准也是相对客观的,比方产品的营收、盈余才能,用户反馈,增长率,等等。尽管2B的产品某些人会有显着权重更大的评价,比方老板之于钉钉,但一个产品的好坏仍是很难由个别人说了算,这也是互联网公司大多靠数据驱动的原因。
项目
项目就不相同了,尽管项目做出来的也是一个产品,供客户运用,可是和真正的产品相比有很大的差异。常见的项目形状是甲乙方项目,关于广大的非互联网公司来说,这是更常见的开发形状,这个职业也包括了众多的开发者。下面聊的项目便是这种甲乙方的项目。需要特别说明的是,这种项目并不一定就很low,也能够十分的巨大上,甲乙方都是世界500强也多的是。
项目一般有清晰的周期,在项目周期完毕后,项目会全体交给客户,一切权在客户。这样造成了很少有项目开发团队会对项目中做的产品做持续性保护,这在很大程度上削弱了好架构的意义。大部分项目开端时会对要做的作业有清晰的预期,技能架构一般只需要满足这个预期即可。有一些项目客户或许会指定技能栈或许一些建瓴高屋的方案,但很少有客户会关怀详细的完成方法。因为有清晰的保护周期和相关利益者不注重,在项目中没什么人会注重扩展性、保护性这些东西,经历的价值更多体现在项目开端的技能选型上。这种环境关于想要变的更好的开发者是很不利的。
除了生命周期和持续迭代的差异外,项目和产品另一个最大的差异在于评价体系。因为甲乙方联系的存在,甲方不行能让一切会运用项目产品的人都来评价好坏,这样一定会导致项目的失败,所以甲方就会选出几名利益相关方来负责项目的检验。因为人数有限,再加上负责检验的人或许并不运用项目开发的产品,关于乙方来说,与其做好项目,不如想办法直接搞定负责项目检验的人。毕竟,能不能合格检验实际上是这个几个人的片面评价,项目产品真正的运用者此刻还不知道产品的存在。所以在项目中,开发的话语权就变的很小了,所谓的项目经理变成了最重要的人,关于产品来说本应该最重要的事务价值和技能完成,也变成了和甲方几位关键人物的联系。在这种情况下,开发和其他干活的很简单被压榨,因为他们不重要。
另外,不要觉得上面说的这些对技能不屑一顾的作业只发生在不注重技能的中小型公司。之前说了,甲乙方或许都十分的巨大上,技能水平也不低,但这些作业全部会照旧发生,这是由利益联系决议的。
谈谈外包
最后,谈谈外包。尽管都叫外包,但人员外包和项目外包是彻底不同的两种状况。人员外包多见于互联网大厂,这些人尽管联系在外包公司,但做的作业其实和大厂里边的基层职工差异不大,一般做一些难度不高,但重复性强的作业。尽管听起来无趣,可是这些人一般能够看到所在团队的完好代码库的,也能够和大厂职工相同,了解产品的全体设计,跟从产品迭代发展,只需自己乐意,能够很快的堆集。前些年人才供不应求时,也有许多外包人员就地转正。尽办理论上这些人能够随时被换掉,但实际上只需不是这个人太差,加上负责的作业难度也不高,大部分团队都期望能有安稳的人员,所以这些人相对安稳,是相对不错的时机。
另一种便是项目外包了,被外包公司派遣到各个项目上,依照人天收取甲方费用。这种外包作业关于开发者来说就很差了。首先,我国的甲方把乙方当人的少,作业环境普遍堪忧,我国的甲方又根本都期望在现场办公,方便监督,一般来说能有个像样的会议室就不错了。其次,因为真正理解的项目办理的项目经理很少,导致大部分项目实际上都是失控状况,到了中后期开端疲于奔命,终究熬夜加班,牵强交给。这关于开发者的心思和压力都不好,长时间在这种环境中的开发者,很难有精力和志愿把作业做好,更多是糊弄完事,然后敞开恶性循环。第三,因为上面谈到的项目的特征,开发者很难在项目中得到堆集,更短少和项目一同生长的时机,大部分开发者都是重复最初1至2年的经历,然后不断的重复。即使有学习志愿的开发者,也缺少学习的时机和环境,不知道方向在哪,终究丧失生长的时机。
所以,除了脏简历这种名利的原因,在项目外包的开发者,最好能清晰知道自己所处环境的问题,假如有继续前进的志愿,要知道做什么是对自己有用的,等待时机,改变处境。
总结
本文结合我之前的经历和看到的现象,对做产品和做项目的差异做了一些个人观点的总结。陈述了一些事实,抽象了一些详细的案例,较为深入的剖析了产生差异的原因。这些东西很难改变,个人也没有必要去改变,没有好与坏,只是不同的实际情况。对个人来说,人的片面能动性仍是很重要的,即使在做产品的团队,许多人也依照做项目的态度在干活,导致了许多产品扩展困难,难认为继。有的人尽管处在恶劣的环境和巨大的项目压力中,但依然能够每天自我生长,终究找到抱负的作业时机。假如这篇文章能帮你看清一点自己的处境,那么我的这点经历就有了价值。