Przemysław是一位思想开放的高级软件开发人员,拥有十多年的web应用程序开发经验. 他有构建MVC应用程序的经验, REST APIs, 以及使用Python的实时web系统, JavaScript, and Ruby on Rails. He also holds a Ph.D. 在人工智能领域,在计算机视觉和机器学习方面拥有丰富的专业知识.
United StatesToptal Member Since November 23, 2015
Ryan Felton is a Facebook Innovation Award-winning executive and a highly technical software developer specializing in Ruby on Rails. Ryan is also a veteran, an MBA graduate, and a passionate software entrepreneur who has led the software engineering of three businesses from concept to acquisition.
Bosnia and HerzegovinaToptal Member Since December 21, 2014
Emir is a talented software architect and developer with over 20 years of experience and is fully capable of everything from leading a team to working solo. 他喜欢发现客户想法的潜力,并在开发过程中根据需要对其进行改进. Emir is especially adept at spotting potential design flaws and improving the UI until user's manuals are no longer needed.
与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. Now it isn't.
Ryan Rockefeller, CEO
Radeeus
Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, 沉浸在我们的行业中, 与我们的团队无缝融合, understood our vision, 并产生了一流的结果. Toptal使与高级开发人员和程序员的联系变得非常容易.
Jason Kulik, Co-Founder
ProHatch
作为一家资源有限的小公司,我们不能犯代价高昂的错误. Toptal provided us with an experienced programmer who was able to hit the ground running and begin contributing immediately. 这是一次很棒的经历,我们会马上再来一次.
斯图尔特·波克尼校长
现场专用软件解决方案
我们使用Toptal聘请了一位具有丰富的Amazon Web Services经验的开发人员. 我们面试了四位候选人,其中一位非常符合我们的要求. 这个过程迅速而有效.
Abner Guzmán Rivera,首席技术官和首席科学家
Photo Kharma
Sergio是一个很棒的开发者. 一流,反应迅速,工作效率高.
Dennis Baldwin,首席技术专家和联合创始人
PriceBlink
和Marcin一起工作是一种乐趣. He is competent, professional, flexible, 并且非常迅速地理解需要什么以及如何实现它.
André Fischer, CTO
POSTIFY
我们需要一位能立即开始我们项目的专业工程师. 西马纳斯的工作超出了我们的预期. Not having to interview and chase down an expert developer was an excellent time-saver and made everyone feel more comfortable with our choice to switch platforms to utilize a more robust language. Toptal使这一过程变得简单方便. Toptal现在是我们寻求专家级帮助的首选之地.
Toptal为快速发展和规模化的企业提供不妥协的解决方案. Every engineer we've contracted through Toptal has quickly integrated into our team and held their work to the highest standard of quality while maintaining blazing development speed.
Greg Kimball, Co-Founder
nifti.com
如何透过Toptal聘请软件顾问
1
与我们的行业专家交谈
Toptal的工程总监将与您一起了解您的目标, technical needs, and team dynamics.
At Toptal, 我们对我们的软件顾问进行了彻底的筛选,以确保我们只为您匹配最优秀的人才. Of the more than 200,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.
我可以在48小时内通过Toptal聘请软件顾问吗?
取决于可用性和进度, 您可以在注册后48小时内开始与软件顾问合作.
Toptal软件顾问的无风险试用期是多长?
我们确保您和您的软件顾问之间的每次约定都从长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, we can either part ways, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, no-risk trial.
Share
你准备好雇佣软件开发人员的13个明显迹象
假设你是一家中型公司的首席信息官.
The executive directors have done their strategic planning exercise and have a clear vision of where they want the company to be in the short and medium term. 他们还决定,最好的做法是增强现有的应用程序和/或开发新的应用程序.
There you are, 负责公司的IT基础设施——这本身就是一个110%时间的角色——从现在开始, 这些新项目让你负担过重, which are, of course, 软件开发的定义.
What do you do? After some Googling, analyzing, 和可能的供应商交谈, 你只剩下一个主要问题:你将如何处理这个问题, 给定执行团队定义的时间和预算限制?
We present here thirteen clear signs that can help you validate if the best course of action is hiring a software developer (or a team) for your company’s short- and medium-term IT projects.
这里的关键概念是组织结构图要清晰, enforced, and implemented, 所以每个人都知道谁做了什么.
公司的程序和政策不容妥协
One of the biggest advantages of custom development is that the final product will comply with the company’s procedures and policies. Otherwise, you risk compromising or adapting your company’s operations to an external product that can diminish or simply take away key competitive advantages.
If the software required by the company does indeed have the goal of supporting and complying with the company’s procedures and policies, 你应该认真考虑雇佣一个开发团队来实现这一目标.
然而,我们已经看到,它是一个关键的成功因素,至少有 some 具备IT管理方面的软件开发方法知识, 或者好的软件实践已经到位了. 例如,IT部门的方法如何得分 The Joel Test?
这不仅仅是关于计算机编程:开发计算机软件不是一件容易的事. 尽管它的回报很大,但必须理解它的范围和含义. If the direction, risks, tradeoffs, cost, 软件开发的影响是众所周知的, 这将有助于确保一些重要的事情:为软件专业人员提供一个激励和具有挑战性的工作环境.
但这是该公司第一次决定进行软件开发, we suggest hiring at least a project manager with software development experience or a senior developer to guide the project to its success.
In spite of that, 您将需要确保项目的另一个基本因素, 哪个是与它一致的行政部门, from beginning to end. 只有当你拥有这种执行支持时,你才能继续雇佣你的开发团队.
既然项目已经计划好了, 不要假设默认情况下您有执行支持来实现它. 有许多项目经理在他们的项目中被孤立,因为管理层认为, “I gave the order, so go ahead and do it.这肯定会导致项目失败. 您需要(巧妙地)验证这种支持, 当然)在每次与高管开会时, 让他们参与到项目中来.
If the needs that brought the company to the project are very specific and different from what is available in the market, 或者只是因为公司可能会因为向第三方开放其特定要求而失去一些竞争优势, 然后,您肯定需要一个软件开发团队来内部处理它们.
给你分配了稳定的预算
一旦明确了项目将是软件开发,资金就开始成为一个问题. What do you do? 你是雇佣软件开发咨询公司还是寻找个人开发人员, 无论是作为软件顾问还是作为雇员?
通常,专门从事软件开发服务(或软件开发服务)的公司 “software factories”) are very efficient, 因为这是他们的核心业务,他们有方法论认证, like CMMI.
However, 这种效率是有代价的, 随着变更请求和, afterwards, support and maintenance.
Therefore, 如果管理层为项目分配了或多或少的固定预算, 您应该对所需的软件开发进行预算分析, 预见所有因素,包括变化, support, and maintenance.
Despite this planning, 项目可能会受到人事变动等不可预见情况的影响, 团队内部冲突, 当团队成员被替换时,项目知识的丢失. 这可能更适合人力资源的文章, but losing control of a software development project in particular is best avoided via project decisions made as early as the hiring stage.
The first aspect that prevents the loss of project knowledge is to avoid having a single person who keeps all the information of what he/she is doing. Good documentation, programming standards, 安全和授权策略, 源代码版本控制, central repositories, periodic backups, 同行评议是帮助解决这个问题的最佳实践.
在招聘软件开发人员时,这主要意味着避免单个成员的团队. You should hire at least two developers of similar level if you want to be more confident that you’ll preserve the know-how of your project.
影响项目控制的第二个方面是可能出现的冲突, 尤其是当压力越来越大的时候. How do you deal with them? 主要是通过明确的沟通规范, 定期举行团队和个人会议, 通过及时有效地发现和处理冲突.
How is hiring affected? You need to keep a good list of candidates to replace someone who is demonstrating that they are not fit element in your team, 之前对项目的影响大于他们的替换. 在团队中,守规矩是件可怕的事.
初期开发已经结束
正如通常发生的那样,项目结束了,但它们的生命周期比它们的开发阶段更长.
For instance, 在你的软件上线之后, 您所在区域将负责用户支持, bug resolution, maintenance, 最后但并非最不重要的是程序进化, 或者在业务需要新功能时发布新版本.
因此,每个软件开发项目都必须被视为一个中长期的项目. 从项目计划阶段开始, you need to think that, 经过大量的初始开发, 你仍然需要一些开发人员来维持产品的活力.
以获得一些成本节约, 你可以雇佣新的开发人员来进行维护和升级, since the architecture, design, 并且后端开发已经定义和实现, 他们的开发人员可以被转移到其他项目.
In any case, 不要让高管们这么想, 一旦程序上线, 公司可以解雇开发团队, 因为这将导致软件的衰减和, ultimately, its removal. 一旦进行了软件开发, 在公司改变战略之前,您将需要软件开发人员.
您有许多更改请求
在每个软件开发项目中,更改都是您必须处理的现实问题.
原因有很多:业务领域进一步澄清或扩展了需求, 新的请求来自执行团队, 你必须适应新的环境, etc.
In such cases, 你必须和提出要求的人协商每一个改变, 因为他们总是对时间和预算有影响, 获取相应的扩展. 在这些情况下,目标是快速做出反应,并尽可能节省时间/成本.
如果变更需要,您可能不得不雇用新的软件开发人员来执行新的任务. But you must take into consideration the time to train them and get them up to speed with the project before they will be fully productive.
从时间限制的角度来看, on a fixed-term project, 估计任务的持续时间和执行任务所需的资源是很重要的. When changes emerge, 如果项目团队属于公司,那么变更控制过程将花费更少的时间, 因此,对新需求的反应将会更快.
The rewards will be perceived in the short term in the form of modern and appealing software that makes use of the most recent advances in technology, 哪个应该更容易使用, maintain, 并且比使用更成熟的平台构建的扩展.
In summary, 如果您的开发涉及或基于最新技术, 您有两种选择:您决定在当前的开发团队中使用它, 在这种情况下,他们将不得不经历一些学习曲线, 或者你通过雇佣新人来提供所需的专业知识, often younger, developers who have it.
We should caution you, though: Hire at least one project manager or software professional with adequate seniority and experience in software development to guide and enforce good design, code, documentation, and testing practices.
此外,要非常小心选择的技术. 这些新技术和框架中的许多都有利于提高生产率, 从而降低初始开发成本. However, lacking maturity, 其中一些没有在其核心技术或支持工具生态系统中提供所有必要的功能, 随着项目复杂性的增加,会导致维护问题.
And it’s always a gamble, but using technologies that are not widely adopted may diminish the lifespan of your software and eventually force you to remake it. The difficulty in transitioning here will be compounded by not being able to hire developers who know the old technology for programming help.
你的内容经常变化,但你的界面却变得陈旧
特别是在web应用程序中, 如果软件管理的内容经常变化, you should consider hiring at least a user interface developer who can make quick changes in its appearance and usability (e.g.(如颜色、样式、图像、按钮,甚至是新功能).
像这样给用户“惊喜”是保持他们兴趣的一种方法. A word of caution, 虽然:内容频繁变化, 但在软件本身的视觉和使用特性上却没有, 能像没有变化一样单调吗, 用户可能会停止访问该网站. Along the same vein, 可用性变化太多, 或者过于激进的改变迫使用户重新学习如何一次又一次地使用应用程序, can be counterproductive. 必须保持平衡.
最好的例子可能是Windows操作系统, 是什么迫使用户在每一个新版本中重新学习它. In contrast, Mac OS有很多变化,但是, 如果您使用的是1984年以后的版本, you can still use it.
如果你有两个极端的抱怨, 现在是时候聘请具有良好平衡感的开发者了, 谁与日常用户的观点一致.
安全必须严格执行
如果数据安全是您项目中非常关注的问题, 您构建和管理开发团队的方式将不同于不太关注安全性的项目. This juncture will require special hiring and management considerations that will be the main guidelines during the project’s lifespan, 因此,在受控环境中拥有自己的开发团队似乎是最好的选择.
In that case, it may not be an option to contract out software development services or even hire software consultants: Hiring software developers as employees who are fully screened and investigated prior to being contracted may be the only course of action.
Of course, 在选择过程之后, 一套可供受雇开发者签署的法律文件.g., NDA, labor contract, (或行为准则)将是必要的,以补充严格的安全实践和苛刻的招聘流程.
Additionally, 您可能会考虑聘请安全专家(甚至是道德黑客), which is a niche software development specialist) to guarantee that the software is developed with a secure architecture and follows established guidelines.
如今,数据集成是通过专门的工具(如中间件)完成的, 队列和消息管理器, ESB, etc.) and standards (XML, XSL, XSLT, JSON),这简化了任务,但迫使开发人员在一定程度上专攻集成.
如果您的IT组织面临频繁的集成请求, you may need to hire one or many software developers with expertise in data integration and train them in the applications and data structures used in your company. Normally, 这是一个比第三方软件开发服务更经济有效的解决方案.
从你的公司到你的项目,你准备好了吗?
我们已经检查了一些通常出现在包含软件开发的IT项目中的问题, 从最佳实践和实践经验的角度进行分析. Software development should always be undertaken with a grasp of its implications for the business and a clear notion of the challenges it means.
我们希望本文中提供的标志对您的开发人员招聘决策有价值. We encourage you to continually sharpen your management skills by considering such tips to help you give value to your company through successful software projects.