<audio id="audio" title="35 | 非计算机专业也能做产品经理？" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/ea/2f/ea231329c4f6610385be7bea1c89f72f.mp3"></audio>

硅谷的很多公司，几年前都要求产品经理必须要有计算机背景，谷歌甚至要求所有产品经理都要通过编程面试。

近几年来，以Facebook为首的一些公司，开始允许各种背景的候选者来面试产品经理的职位。而最近硅谷如火如荼的一系列女性平权运动，让越来越多的人意识到产品经理需要有多元化的背景，这样才能了解百万甚至千万用户的需求，而不只是做一堆中看不中用的“黑科技”。

但是，没有计算机专业背景，我怎么才能做好产品经理呢？工程师会不会瞧不起我？我会不会不知道如何设计科技产品？我以前是做运营的，到底怎么转型做产品经理呢？

现在我经常被人问到这样的问题，那么今天我就来跟你聊聊，没有计算机专业背景怎么做产品经理。

**在我看来，一个理想的产品经理，确实需要具备一定的计算机知识，但是不一定要有计算机专业的学位。** 我自己是计算机和经济双专业背景，做了产品经理这么多年，我也曾认真思考过我的计算机知识究竟用在了哪里，毕竟工作中我从来不写代码。

结合我的工作经验和思考，我要跟你聊聊，我的计算机学位从哪些方面给与了我帮助，如果你没有计算机学位，又可以如何弥补。

**说到计算机学位对我的帮助，主要体现在给工程师的第一印象，判断项目复杂程度的能力，了解技术是否可实现、有哪些限制这三大方面，所以针对没有计算机专业背景如何弥补，我也会从这三个方面给你建议。**

## 给工程师的第一印象

计算机专业学位最明显的优势就是，工程师对我的第一印象会比较好。他们会默认我不好蒙骗，也知道我会理解他们的辛苦和难处，毕竟我自己也曾调试代码到半夜。

但这也仅限于第一印象，之后我的想法是不是靠谱，大家是不是信任我，就和计算机学位越来越没有关系了。

那没有计算机学位，你应该给工程留下好的第一印象呢？他们可能会欺负你不懂专业好蒙骗，或者担心你的建议不靠谱，但是没关系。

你只要在一开始保持好奇心，多问工程师问题，同时展示你自己的能力，那完全可以弥补你没有专业学位的短板。在我看来，你没有必要过度纠结专业学位对你第一印象的影响。

## 判断项目复杂程度的能力

首先，有计算机背景，我可以更容易理解一个项目的复杂程度。比如，如果这个项目牵扯到更改之前的数据结构，那么即使看上去只是加一个按钮，我也能知道工程难度可能会非常大。

另外，我可以更容易理解一个项目应该如何拆分，前端怎么拆分，后端怎么拆分；如果时间紧任务重，需要多派人，我也可以明白把人放到哪个部分可以加快速度。这将有利于我制定产品优先级，路线图，以及权衡取舍。

那如果没有计算机背景，你应该怎么弥补呢？

**其实，对项目复杂度的理解和项目的拆分，更多的是来自我以前做编程项目的经验，而不是书本或者说学位。** 我在学计算机专业时，大部分时间都花在了做老师布置的编程作业上，写代码、调试代码、优化代码，但是参加工作后，这些具体的内容我再也没碰过。

所以，我觉得没有计算机学位，你也不会损失多少。我的建议是，你可以在新项目开始时多了解以下五个部分的内容，可以帮助你判断项目复杂程度，避免“产品经理瞎设计，技术上根本做不出来”的窘境。

<li>
项目的工程结构图是什么样的？最简单的，这个项目需要前端UI吗，需要后端吗？是移动还是网页？是一个新添加的功能还是修改已经有的产品流程？需不需要推荐系统，排序（ranking）？利用的是已经存在的用户数据，还是需要输入新的用户数据？
</li>
<li>
这个项目的所有用户体验都由我们自己的团队控制，还是需要利用其他组负责的部分？依赖的其他组的功能部分是已经做好了，还是正在开发阶段？如果我们修改了当前的用户体验，会不会影响已有的功能，需不需要修改以前功能的代码？
</li>
<li>
这个项目一步步的用户流程图是什么样的？每一步需要提取什么样的用户数据？每一步和每一步之间有延时吗？
</li>
<li>
这个项目最复杂的部分是什么？最耗时间的部分又是什么？哪些部分可以平行开发（也就是两个工程师可以同时开始，各做各的），哪些部分是要先完成后其他工程师才能开始做（这样你多派了工程师也不会提高生产效率）。
</li>
<li>
这个项目的产品质量（包括会不会需要花很长时间计算才能进行到下一步，会不会在网络条件不够理想的情况下无法操作）会不会受影响？对所有的手机型号都适用吗？
</li>

当你明白了这五个问题，你也就对整个项目的工程难度有了一个清晰的认识，对项目存在的风险也会了然于胸。

比如，这个项目的一部分体验由另一个团队负责，但是这个项目对于另一个团队来说并没有那么重要，所以作为你产品经理，就应该提前和其他团队的产品经理沟通，或者预留更长的开发时间。

其实上面这些问题，是每个好的技术骨干都应该清楚的，这便于他们预估工期。在这里，我让你自己先弄明白这些问题，并不是要让你取代他们的工作，而是因为当你明白了这些问题后，你和工程师团队的沟通会顺畅很多。

## 了解技术是否可实现，有什么限制

计算机专业出身，我可以更了解某项技术到底能不能实现我的这个功能。

比如，你可以利用人工智能技术设计一个模型，来自动捕捉成人内容，原理就是利用图像进行判断，所以你很容易就可以训练出这样的模型。

但是，如果你要用这个模型来捕捉政治内容，那单靠这个模型可能就不够用了。这时，我就需要设计一个产品工作流，能够把模型不那么确定的内容经由人工审核，确保准确度。

接下来，我就跟你分享一下，如果没有计算机专业背景，你需要怎么了解某项技术是否可实现，来弥补自己的短板呢？

其实，了解某项技术能做实现什么功能并不需要计算机专业，你只需要多问几个为什么就可以了。

下面我就以最具代表性的人工智能项目和移动端项目为例，给你分析一下怎么化解自己因为缺乏计算机背景而带来的问题。

**对于人工智能项目来说**，你明确了以下两点，问题也就迎刃而解了。

<li>
<p>你需要明确这个项目需要捕捉的内容是宁缺毋滥还是一个都不能少？<br />
宁缺毋滥是指，我们希望这个人工智能模型捕捉的内容都是符合设定条件的，宁可少捕捉几个，也不要捕捉不满足要求的内容。就像警察抓小偷，需要证据，没有证据即使这个人鬼鬼祟祟，警察也不能随便逮捕，冤枉好人。<br />
一个都不能少是指，我们不想错过任何一个满足条件的内容，即使你不确定这条内容是否满足所有条件，也不希望它成为漏网之鱼。如果你要找到哪些视频的质量差，不适合广告商插广告，那么即使你不确定这条视频广告商是否喜欢，你都会选择不在这条视频中插播广告，因为你怕广告效果不好，广告商取消和你的合作。<br />
所以，宁缺毋滥还是一个都不能少，其实是一个产品决定，需要产品经理和工程师弄清楚再行动。</p>
</li>
<li>
我们的数据有多少？多少数据才能训练出准确的模型？数据来源又是什么？
</li>

**对移动端的项目来说**，你照样弄明白下面两点，你就可以预估出某项技术能否实现了。

<li>
信息图像处理是在移动设备上进行，还是先把内容发到服务器上，之后再处理？
</li>
<li>
UI必须是native的吗（也就是说，使用Objective-C或者Java等语言），还是我们可以在网页端写代码，然后在移动端显示网页就行了，后者将会大幅降低工程难度。
</li>

## 总结

今天的这篇文章，是希望为非计算机背景的产品经理说清楚有计算机背景和没有背景之间到底有什么不同，换句话说，如果你想要弥补计算机背景的短板，应该如何进行。我从以下三个方面给你提供了建议，希望对你有所帮助。

<li>
如果工程师因为你没有计算机背景而对你的第一印象不好，那没什么大不了的。你只要多问问题，直接体现你的能力，你良好的表现很快就可以取代不好的第一印象。
</li>
<li>
如果你没有计算机背景，需要在每一个项目开始的时候了解项目的复杂程度。我提到的五类问题，可以帮你以最快的速度了解如何权衡取舍，产品开发的风险难度。我建议你收藏这篇文章，等到下个项目开始时再回过头来看看。
</li>
<li>
关于了解技术是否可实现，有什么限制。我针对目前比较火的、也是比较有代表性的人工智能项目和移动端项目，给出你建议：针对人工智能项目，先弄清楚宁缺毋滥还是一个都不能少；针对移动端项目，先弄清楚移动端和服务器端是什么关系。
</li>

## 思考题

<li>
如果你有计算机背景，还有哪些方面的计算机知识能够帮助你的工作？
</li>
<li>
如果你没有计算机背景， 还有哪些方面你感到吃力？
</li>

欢迎你给我留言。


