假设你是一家中型公司的首席信息官.
执行董事们已经完成了他们的战略规划工作,对公司在短期和中期的发展方向有一个清晰的愿景. 他们还决定,最好的做法是增强现有的应用程序和/或开发新的应用程序.
And, 因为公司的业务是如此独特, 他们想在内部完成所有这些技术项目. 当然,这意味着从现在开始,IT区域将被完全加载.
There you are, 负责公司的IT基础设施——这本身就是一个110%时间的角色——从现在开始, 这些新项目让你负担过重, which are, of course, 软件开发的定义.
What do you do? After some Googling, analyzing, 和可能的供应商交谈, 你只剩下一个主要问题:你将如何处理这个问题, 给定执行团队定义的时间和预算限制?
我们在这里给出了13个清晰的标志,它们可以帮助您确认为公司的短期和中期IT项目雇佣软件开发人员(或团队)是否是最佳的行动方案.
这些线索与公司的状况有关, IT部门的成熟度, 由软件专业人员完成的项目或目标, 以及涉及到的技术选择.
这些并不是详尽的标准,而是需要考虑的拼图的一部分. 良好的判断力和常识也是选择最佳行动方案的关键因素.
让我们从公司相关因素开始:
公司规模合适
如果你的公司有一个正式的组织,有负责特定业务任务的单位和明确的人员, KPIs, and procedures, 您将有更多的机会通过自己的软件开发获得成功. 您将能够组建一个多学科团队来定义和测试您的开发需求.
如果公司很年轻,每个人都做所有的事情, 或者区域之间的界限和他们的责任并不是100%明确的, 您可能会更好地交换一些需求并使用现成的产品, 而不是着手一个注定要失败的项目.
这里的关键概念是组织结构图要清晰, enforced, and implemented, 所以每个人都知道谁做了什么.
公司的程序和政策不容妥协
定制开发的最大优势之一是最终产品将符合公司的程序和政策. Otherwise, 你要冒着妥协或调整公司运营以适应外部产品的风险,这可能会削弱或干脆带走关键的竞争优势.
如果公司所需的软件确实有支持和遵守公司程序和政策的目标, 你应该认真考虑雇佣一个开发团队来实现这一目标.
接下来,我们来分析成熟度因素:
There Is IT Experience
如果公司已经实现了以前的IT项目,并且在IT最佳实践方面有一些经验, 软件开发项目成功的可能性更大.
这不仅仅是关于计算机编程:开发计算机软件不是一件容易的事.
然而,我们已经看到,它是一个关键的成功因素,至少有 some 具备IT管理方面的软件开发方法知识, 或者好的软件实践已经到位了. 例如,IT部门的方法如何得分 The Joel Test ?
这不仅仅是关于计算机编程:开发计算机软件不是一件容易的事. 尽管它的回报很大,但必须理解它的范围和含义. If the direction, risks, tradeoffs, cost, 软件开发的影响是众所周知的, 这将有助于确保一些重要的事情:为软件专业人员提供一个激励和具有挑战性的工作环境.
但这是该公司第一次决定进行软件开发, 我们建议至少雇佣一个有软件开发经验的项目经理或者一个高级开发人员来指导项目的成功.
你可以依靠管理层的承诺
软件开发项目可以不受内部政治的额外挑战.
关键是这个项目是执行业务计划的结果. 这通常从战略规划开始,通常在一个财政年度结束时开始. 然后,它向上移动到已批准的业务计划的投资组合, 其中一个或多个与您正在处理的软件开发项目有关.
In spite of that, 您将需要确保项目的另一个基本因素, 哪个是与它一致的行政部门, from beginning to end. 只有当你拥有这种执行支持时,你才能继续雇佣你的开发团队.
既然项目已经计划好了, 不要假设默认情况下您有执行支持来实现它. 有许多项目经理在他们的项目中被孤立,因为管理层认为, “I gave the order, so go ahead and do it.这肯定会导致项目失败. 您需要(巧妙地)验证这种支持, 当然)在每次与高管开会时, 让他们参与到项目中来.
做到这一点的最好方法是让管理人员了解项目的成就和发展. 定期与他们会面,通常至少一个月一次. 良好的沟通意味着良好的赞助.
现在,从这个角度来看,你可能已经准备好招聘了,但是项目本身的明确标志呢?
有特殊要求
如果公司对项目的需求非常具体,与市场上的需求不同, 或者只是因为公司可能会因为向第三方开放其特定要求而失去一些竞争优势, 然后,您肯定需要一个软件开发团队来内部处理它们.
给你分配了稳定的预算
一旦明确了项目将是软件开发,资金就开始成为一个问题. What do you do? 你是雇佣软件开发咨询公司还是寻找个人开发人员, 无论是作为软件顾问还是作为雇员?
通常,专门从事软件开发服务(或软件开发服务)的公司 “software factories” ) are very efficient, 因为这是他们的核心业务,他们有方法论认证, like CMMI .
However, 这种效率是有代价的, 随着变更请求和, afterwards, support and maintenance.
Therefore, 如果管理层为项目分配了或多或少的固定预算, 您应该对所需的软件开发进行预算分析, 预见所有因素,包括变化, support, and maintenance.
Normally, 这是公司规模的明显标志, 有管理支持和IT经验, 从中期来看,雇佣开发团队是一种更具成本效益的解决方案.
你需要让你的项目保持有序
Despite this planning, 项目可能会受到人事变动等不可预见情况的影响, 团队内部冲突, 当团队成员被替换时,项目知识的丢失. 这可能更适合人力资源的文章, 但是对软件开发项目失去控制,最好是在招聘阶段就通过项目决策来避免.
防止项目知识丢失的第一个方面是避免让一个人保留他/她正在做的所有信息. Good documentation, programming standards, 安全和授权策略, 源代码版本控制, central repositories, periodic backups, 同行评议是帮助解决这个问题的最佳实践.
在招聘软件开发人员时,这主要意味着避免单个成员的团队. 如果你想更自信地保留项目的专有技术,你就应该雇佣至少两名水平相近的开发者.
影响项目控制的第二个方面是可能出现的冲突, 尤其是当压力越来越大的时候. 你是怎么对付他们的? 主要是通过明确的沟通规范, 定期举行团队和个人会议, 通过及时有效地发现和处理冲突.
How is hiring affected? 你需要保留一个很好的候选人名单,以取代那些证明自己不适合你的团队的人, 之前对项目的影响大于他们的替换. 在团队中,守规矩是件可怕的事.
初期开发已经结束
正如通常发生的那样,项目结束了,但它们的生命周期比它们的开发阶段更长.
For instance, 在你的软件上线之后, 您所在区域将负责用户支持, bug resolution, maintenance, 最后但并非最不重要的是程序进化, 或者在业务需要新功能时发布新版本.
因此,每个软件开发项目都必须被视为一个中长期的项目. 从项目计划阶段开始, you need to think that, 经过大量的初始开发, 你仍然需要一些开发人员来维持产品的活力.
以获得一些成本节约, 你可以雇佣新的开发人员来进行维护和升级, since the architecture, design, 并且后端开发已经定义和实现, 他们的开发人员可以被转移到其他项目.
In any case, 不要让高管们这么想, 一旦程序上线, 公司可以解雇开发团队, 因为这将导致软件的衰减和, ultimately, its removal. 一旦进行了软件开发, 在公司改变战略之前,您将需要软件开发人员.
您有许多更改请求
在每个软件开发项目中,更改都是您必须处理的现实问题.
原因有很多:业务领域进一步澄清或扩展了需求, 新的请求来自执行团队, 你必须适应新的环境, etc.
In such cases, 你必须和提出要求的人协商每一个改变, 因为他们总是对时间和预算有影响, 获取相应的扩展. 在这些情况下,目标是快速做出反应,并尽可能节省时间/成本.
如果变更需要,您可能不得不雇用新的软件开发人员来执行新的任务. 但是您必须考虑到培训他们的时间,并在他们完全富有成效之前让他们跟上项目的速度.
从时间限制的角度来看, on a fixed-term project, 估计任务的持续时间和执行任务所需的资源是很重要的. When changes emerge, 如果项目团队属于公司,那么变更控制过程将花费更少的时间, 因此,对新需求的反应将会更快.
因为时间总是一个问题, 您必须以一种能够非常有效地响应变更的方式来构建您的项目团队. 雇佣自己的软件专业团队, 同时使用可靠的项目管理实践, 最有效的应对方式是什么.
最后,考虑一些技术因素:
你正在考虑新技术
手机平台(iOS、Android等).),物联网(Arduino, Raspberry Pi等).)或响应式web (HTML5、Bootstrap、Angular、React等).), 以及其他新技术, 是那些在大学里和他们一起工作过的年轻专业人士的专长吗.
使用这些技术的项目, 为了以合理的成本获得好的产品,您通常可以雇佣一些初级软件开发人员, 因为他们不仅开发速度更快,而且成本也比软件专家低.
在短期内,回报将以利用最新技术进步的现代和吸引人的软件的形式出现, 哪个应该更容易使用, maintain, 并且比使用更成熟的平台构建的扩展.
In summary, 如果您的开发涉及或基于最新技术, 您有两种选择:您决定在当前的开发团队中使用它, 在这种情况下,他们将不得不经历一些学习曲线, 或者你通过雇佣新人来提供所需的专业知识, often younger, developers who have it.
We should caution you, 聘请至少一名具有足够资历和软件开发经验的项目经理或软件专业人员来指导和实施良好的设计, code, documentation, and testing practices.
此外,要非常小心选择的技术. 这些新技术和框架中的许多都有利于提高生产率, 从而降低初始开发成本. However, lacking maturity, 其中一些没有在其核心技术或支持工具生态系统中提供所有必要的功能, 随着项目复杂性的增加,会导致维护问题.
And it’s always a gamble, 但是,使用没有被广泛采用的技术可能会缩短软件的寿命,并最终迫使您重新构建它. 由于无法雇用了解旧技术的开发人员来提供编程帮助,因此转型的困难将变得更加复杂.
你的内容经常变化,但你的界面却变得陈旧
特别是在web应用程序中, 如果软件管理的内容经常变化, 你应该考虑雇用至少一个用户界面开发人员,他可以快速修改界面的外观和可用性.g.(如颜色、样式、图像、按钮,甚至是新功能).
像这样给用户“惊喜”是保持他们兴趣的一种方法. A word of caution, 虽然:内容频繁变化, 但在软件本身的视觉和使用特性上却没有, 能像没有变化一样单调吗, 用户可能会停止访问该网站. Along the same vein, 可用性变化太多, 或者过于激进的改变迫使用户重新学习如何一次又一次地使用应用程序, can be counterproductive. 必须保持平衡.
最好的例子可能是Windows操作系统, 是什么迫使用户在每一个新版本中重新学习它. In contrast, Mac OS有很多变化,但是, 如果您使用的是1984年以后的版本, you can still use it.
如果你有两个极端的抱怨, 现在是时候聘请具有良好平衡感的开发者了, 谁与日常用户的观点一致.
安全必须严格执行
如果数据安全是您项目中非常关注的问题, 您构建和管理开发团队的方式将不同于不太关注安全性的项目. 这个关键时刻将需要特殊的招聘和管理考虑,这将是项目生命周期中的主要指导方针, 因此,在受控环境中拥有自己的开发团队似乎是最好的选择.
In that case, 外包软件开发服务或者雇佣软件顾问可能不是一个选择:雇佣软件开发人员作为雇员,在签约之前要经过全面的筛选和调查,这可能是唯一的做法.
Of course, 在选择过程之后, 一套可供受雇开发者签署的法律文件.g., NDA, labor contract, (或行为准则)将是必要的,以补充严格的安全实践和苛刻的招聘流程.
Additionally, 您可能会考虑聘请安全专家(甚至是道德黑客), 哪一个是利基软件开发专家)来保证软件是用安全的体系结构开发的,并遵循既定的指导方针.
软件必须连接
Fortunately, “信息孤岛”的老问题是IT行业很久以前遗留下来的问题. 这意味着公司中使用的每个软件都以某种方式与其他软件相连接(集成), 您正在开发的软件也必须如此. 在有许多不同的软件应用程序相互交互和/或与外部应用程序交互的公司中, 集成是一个永久的需求.
如今,数据集成是通过专门的工具(如中间件)完成的, 队列和消息管理器, ESB, etc.) and standards (XML, XSL, XSLT, JSON),这简化了任务,但迫使开发人员在一定程度上专攻集成.
如果您的IT组织面临频繁的集成请求, 您可能需要雇用一个或多个具有数据集成专业知识的软件开发人员,并对他们进行应用程序和数据结构方面的培训. Normally, 这是一个比第三方软件开发服务更经济有效的解决方案.
从你的公司到你的项目,你准备好了吗?
我们已经检查了一些通常出现在包含软件开发的IT项目中的问题, 从最佳实践和实践经验的角度进行分析. 在进行软件开发时,应该始终掌握其对业务的影响,并清楚地了解其所带来的挑战.
我们希望本文中提供的标志对您的开发人员招聘决策有价值. 我们鼓励您通过考虑这些技巧来不断提高您的管理技能,以帮助您通过成功的软件项目为公司创造价值.