IT管理

揭秘IT项目外包的阴暗面

2020-08-13 17:13:26 | 来源:中培企业IT培训网

在将开发工作外包给远程团队之前,您可能已经读过有关雇用离岸开发人员的利弊的信息。我想您知道外包的优势是削减成本,员工灵活性,专注于核心活动和团队的高效率。缺点:缺乏控制,语言障碍,知识产权问题以及您所在国家的失业。根据可用的文章,相同的内容可以使外包更具诱惑力。

作为在外包领域工作了三年的人,我想知道为什么没有人告诉我有关资本流入,难以管理的工作分配以及双方之间风险分担的好处。也没有人提到诸如扩大管理力度,客户和供应商的利益竞争,与任何一方有关的不稳定风险以及供应商的机会主义威胁等缺点。但是,作为一名营销人员,我知道重写文字的文案作家比首先研究然后创建原创文章的内容作家要多。

我的意思是说撰稿人告诉您的故事可能会误导您,并不一定反映撰稿人的能力。有几个原因。首先,很少有供应商雇用文案作家并撰写内容,因为竞争对手也这样做。其次,没有厂商告诉您作弊的方式。

  那么,他们将如何欺骗您?

让我们回到开发人员的代码质量变差的情况。我不排除黑暗时期的选择,或者如果仅持续一周或更短时间,则不会排除排列错误的恒星。除非代码质量好转,否则我几乎可以肯定知道您的供应商可能会对您使用影子模式。

影子模式是某些IT服务供应商使用的机会主义做法。想法是该机构为您提供面试所需的专业人员,因此您可以毫不犹豫地雇用他们。一段时间后,代理商所有者在您不知情的情况下成立了经验不足的开发人员。结果是您为降低代码质量付出了相同的代价。卖方还可以通过将其顶级雇员分配给其他项目来获得收益。

  在开发过程中,它看起来是这样的:

  由高级工程师编写的代码示例:

app.update(

'/api/v1/task',

[authMiddleware({ role: ROLES.user }), validateBodyMiddleware(taskUpdateSchema)],

async (req, res) => {

const { taskID, description } = req.body;

try {

res.json(await taskService.updateDescription(req.user.id, taskID, description));

} catch (e) {

res.status(500).json({ error: getErrorMessage(e.code, req.user.locale) });

}

}

);

低质量工程师在影子模式下编写的同一代码示例,他们对特定技术的设计模式,架构思想和最佳实践一无所知:

app.post('/update-task', (req, res) => {

const session = req.cookies['session'];

const user = getUserBySession(session);

if (user.role < 2) return res.status(403).json({ error: 'You are not allowed here' });

if ('taskID' in req.body && 'description' in req.body) {

const db = getDbConnection();

db.query(

'UPDATE "Tasks" SET description = '' +

req.body.description +

'' WHERE "taskID" = ' +

req.body.taskID +

' AND "userID" = ' +

user.id

)

.then((res) => {

db.query('SELECT * FROM "Tasks" where taskID = ' + req.body.taskID)

.then((task) => {

res.json(task);

})

.catch((err) => {

res.status(500).json({ error: 'Something happened...' });

});

})

.catch((err) => {

res.status(500).json({ error: err.message });

});

} else {

res.status(400).json({ error: 'Bad query' });

}

});

  对“影子模式”一无所知

每当我告诉同事有关阴影模式的信息时,他们都会问我它是什么。一旦我描述了阴影模式的状态,我就看到了他们的“啊哈”时刻。几乎每个人都知道这一点,但不知道这种做法的名称。这表明,在观察,听到或可能已经参与此过程的过程中,提供离岸IT服务的开发人员和管理人员。

实际上,对于项目所有者而言,关于此问题的信息非常有限。我只能想象,通过将顶级员工分配给其他项目,供应商可以获得多少收益。

  屏幕跟踪器或其他工具有帮助吗?

恐怕供应商想欺骗您,他们会想出办法。

屏幕跟踪器可帮助您跟踪开发人员工作多少小时,或他们花费多少时间浏览Stackoverflow,但这并不能保护您的项目免受诸如阴影模式之类的欺诈行为的侵害。例如,假设您开始在雇用的高级开发人员的笔记本电脑上使用屏幕跟踪工具。代理商所有者可以将此笔记本电脑传递给影子开发人员,您将看到的都是相同的桌面,开发人员帐户,IDE和工具。即使视频通话也没有用,因为两个开发人员都可能在同一办公室工作,因此在客户给您打电话时切换席位并不是问题。因此,客户会产生虚假的安全感,而不是针对欺诈的保护。

如何在没有任何工具的情况下避免产品欺骗

为了避免给您模糊的建议,我将尝试编写一种算法,以帮助您了解在所有开发阶段都需要寻找什么。

雇用工程师之前:

· 检查供应商的可靠性。受信任的开发机构具有一些共性:法人实体,案例研究和流行目录的评论。法人实体让您感到受保护,知道如果出了问题,法律就在您身边。最好的选择是当供应商在您所在国家/地区拥有实体以简化所有法律和付款流程时。案例研究表明该机构的工程师如何在与您相似的行业中开发产品。此外,如果您有空闲时间,可以在权威网站上查看评论。这些评论并不总是反映该机构的真实评估,但会为您提供一些信息。

· 充分检查合同。请记住,合同同时保护了客户和卖方的权利。最好通读合同的一般条款,必要时添加其他条件,最后签署协议。如果您有疑问或疑虑,请寻求法律专家的指导。

  与工程师一起工作时:

· 在内部管理开发过程。这有助于您监视进度并亲自查看所有组织更改。如果您没有时间自己管理团队,则可以聘请CTO或PM。这确保了不为供应商工作的内部经理不会为开发机构的利益服务。

· 直接与开发人员沟通。当您聊天,举行日常站立会议或使用其他方式与开发团队交谈时,您将了解开发人员的行为方式。因此,您很可能会发现开发人员是否打算做其他事情。同样,您可以将此责任委托给您的代理人。

· 跟踪代码模式。每个开发人员都有唯一的作者身份归属代码。我工作的公司建立了一个工具,该工具可以通过20个不同的标准来跟踪代码的作者身份,其中包括:注释中符号的平均数量,最常用的变量命名,代码结构,代码耦合等。可以手动跟踪此类模式,但需要一些时间。

注意:最后的建议适用于那些擅长编程的人。如果您不是技术人员,那么评估代码质量将是一个挑战。

您还可以考虑使用Asana,Jira,Trello之类的PM工具,向以前的客户征求反馈,并寻求IT顾问的帮助。

  为什么这很重要?

产品的失败不仅是由于缺乏动力或投资不足,而且还因为低技能的工人发挥了重要作用。入门级开发人员没有完全意识到项目结构的范围,因此,即使对代码进行少量更改而没有这种了解,也会使产品陷入不确定的状态。这可能导致长时间的应用程序/页面加载,安全漏洞,性能问题以及不正确的应用程序工作流程。这种不称职会影响通用应用程序体系结构,因此所有进一步的应用程序开发和维护都将花费更多的精力和成本。

以上就是关于揭秘外包的阴暗面的全部内容介绍,想了解更多关于IT项目外包的信息,请继续关注中培伟业。