如何聘请Swift开发人员
迅速开发人员将在每个阶段都是不可或缺的,从对应用程序的屏幕和软件计划进行线框图设计到用户界面(UI)设计,编码和集成,测试以及提交到App Store都是不可缺少的。如果您有现有的基于Objective-C的应用程序,他们将是开发人员,可以帮助将该应用程序代码迁移到Swift 3中,从而使您的应用程序尽可能地适应未来的需求。那么,如何聘请Swift开发人员呢?以下是在Upwork上寻找顶级Swift开发顾问的一些技巧。
如何入围Swift专业人士
当您浏览可用的Swift开发顾问时,为您准备面试的承包商清单可能会有所帮助。您可以根据以下条件筛选配置文件:
- 技术适合。 您需要一个能够理解您要构建的Swift开发人员。
- 开发人员工作流程。 如果开发人员已经熟悉内部协作工具,测试套件,开发方法和版本控制系统,那么这总是一个加号。
- 反馈。 查看过往客户的评论是否有光辉的推荐或危险信号,可以告诉您与特定Swift开发人员合作的感觉。
如何撰写有效的Swift职位
考虑到您理想的Swift开发人员的清晰情况,是时候编写该职位了。尽管您不需要像雇用员工时那样的完整工作描述,但还是要为承包商提供足够的详细信息,以了解他们是否适合该项目。
职位名称
创建一个简单的标题,准确描述您要查找的内容。这个想法是针对您理想的候选人可能会在工作搜索栏中键入的关键词以找到您的项目。这是一些示例Swift职位职位:
- watchOS开发人员需要具有健身应用程序的Swift经验
- 的iOS开发人员需要实时视频流应用程序
- 将Android应用程序移植到Apple所需的Swift / 爪哇专家
迅速项目说明
在更好地了解项目可交付成果之后,就该编写项目说明了。的 项目描述的标题 应该清晰,信息丰富且引人注目。它可以包括您需要的开发类型,以便潜在的候选人可以马上判断出他们是否合适。 k?一个有效的Swift职位应包括:
- 工作范围: 从被App Store接受到运行单元测试,列出您需要的所有可交付成果。
- 项目时长: 您的工作岗位应指出这是一个较小的项目还是较大的项目。
- 背景: 如果您希望有与某些行业,软件或营销渠道合作的经验,请在此处提及。
- 预算: 设置预算并记下您对小时费率与固定价格合同的偏好。
迅速的责任
以下是一些Swift工作职责的示例:
- 为您的目标Apple平台计划和开发应用程序(例如iOS,macOS,watchOS)
- 将需求和UI / UX设计转换为代码
- 构建并维护一个Swift测试套件(例如XCTest,SwiftCheck,Quick / Nimble)
迅捷的要求和资格
确保在Swift开发人员中包括您要查找的所有要求和资格。这里有些例子:
- 熟练掌握Swift
- UI / UX设计概念
- 苹果应用开发生态系统(例如Xcode,Cocoa)
示例项目说明:
标题:长期项目的高级iOS开发人员
描述: 我们正在寻找一个经验丰富的iOS开发人员,他同时在Objective-C和Swift中都工作过,最好是在混合语言项目中。该项目是一个多方面的应用程序,大多数功能通常由API支持,并使用不同级别的离线持久性。我们有一个长期的路线图,这可能意味着对于合适的开发者来说,这是一个长期的合同。
您应该在复杂,可维护和可扩展的移动应用程序的设计,开发和支持方面拥有良好的记录。您将从事涉及其整个开发生命周期的项目。
制定可维护,清洁和高效的代码,并交付具有客户满意质量的产品。
所需的技术经验
- 4年以上的iOS经验,包括UIKit,Autolayout,Interface Builder等。
- 基本的Objective-C知识,包括Objective-C运行时。
- 迅速 Generics:如何使用它们,限制等
- 的iOS:内存管理和线程管理。
- 网络:使用NSURLRequest或NSURLSession或AFNetworking,AlamoFire等的经验。
迅速开发人员常见问题解答
什么是Swift?
迅速是Objective-C的后继产品,它是用于构建iOS,macOS和其他Apple应用程序的事实上的编程语言。该语言既高性能又易于阅读,并着重于帮助程序员编写更安全的代码。
雇用Swift开发人员需要多少费用?
确定雇用Swift开发人员的成本的第一步将是定义您的需求。价格可能会受多种因素影响,包括专业知识和经验,地理位置和市场条件。
成本因素1:项目范围
确定范围时要考虑的第一个变量是需要完成的工作的性质。并非所有Swift开发项目都是平等创建的。编写供内部使用的简单商业智能GUI通常比构建可以通过Apple App Store严格要求的iOS应用要花费更少的时间。
提示:您的职位描述越准确地描述了项目的范围,人才就越容易为您提供准确的成本估算和建议。
成本因素#2:迅速的开发经验
选择合适的专业知识水平与确定项目范围的能力密切相关。您无需具备高级Swift编程技能即可编写简单的待办事项列表应用。另一方面,从头开始构建大型企业应用程序可能需要高级Swift开发人员的技能。
除了经验水平,您还需要考虑人才所拥有的经验类型。下表列出了在Upwork上可以找到的典型Swift开发人员的比率。
迅速开发人员对Upwork收取的费用
经验水平 | 描述 | 每小时收费 |
初学者 | 可以使用Swift for 的iOS和/或macOS构建简单的应用程序。熟悉Cocoa,Cocoa Touch和/或Xcode。 | $ 30-50 + |
中间 | 除了基本知识外,还需要为一种或多种Apple设备(例如iPhone,iPad,Mac,Apple TV和Apple Watch)进行开发的专门技能。 | $ 60-80 + |
专家 | 精通Swift软件开发生命周期。整个技术堆栈中的工作知识。 | $ 80-100 + |
成本因素3:位置
位置是另一个会影响Swift开发人员成本的变量。您可以利用国家之间的购买力差异来节省人才,这不是秘密。但是,还要考虑诸如语言障碍,时区和管理远程团队的后勤等隐性成本。在Upwork上远程采购人才的真正优势是能够扫描全球人才库以寻找最适合该职位的人才。位置不再是障碍。
成本因素4:独立承包商与代理商
关于人才成本的最终变量是雇用独立承包商还是代理。代理商通常是“千篇一律”的模型,因此您经常可以与设计师,项目经理,工程师等联系。雇用个人时,您完全可以决定谁负责项目的哪一部分,但是您需要分别获取每种技能。
聘请个人与聘请代理商之间的权衡是您在团队所有成员之间协调任务时亲自承担的管理费用水平。项目范围和个人喜好将决定哪种样式更适合您的需求。
迅速开发人员常见错误
在Swift中恐惧常数: DRY(不要重复自己)已经深入我们数十年了,这是有充分理由的。变量的多功能性使您无需编写重复的代码即可执行大量操作。也就是说,许多编码人员在应该使用常量的情况下倾向于默认使用变量。
“ let”关键字允许您声明一个常量,而“ var”关键字允许您声明一个变量。 迅速通过鼓励尽可能使用常量来促进更安全的代码。如果您发现自己声明了永不更改的变量,则很有可能您最好使用“ let”关键字来声明常量。注意代码中的声明应该是常量还是变量可以确保代码在运行时保持不变,从而可以确保代码更安全。
不了解何时使用可选选项: 在Swift中,当声明变量时,从常规的非可选类型(如Int,Bool和String)到更复杂的类类型(如UIView),所有内容都必须具有值。这样可以避免由于未初始化的变量而引起的整个运行时错误。但是,当您希望在初始化时为变量赋予“ nil”值时会发生什么?由于Swift固有的类型安全性,仅声明“ let x:Int = nil”之类的内容会引发错误。 正确地 无法将“ nil”识别为“ Int”类型。
这是可选类型起作用的地方:它们使您可以通过在后面加上“?”来将任何类型更改为可选类型。到最后如果我们将前面的示例修改为“ let x:Int?” = nil”,我们可以为未分配的值“ x”打印“ nil”,直到分配了实际值。
在Swift中强制展开可选项: 迅速在应用程序开发领域仍然相对较新。在启动时,它具有许多旨在在不牺牲代码安全性的情况下为iOS开发人员提供更大灵活性的功能。不幸的是,其中的一项功能(强制展开)经常被误解,并且可能是应用在运行时崩溃的原因。
考虑下面的代码块:
class Car {
|
当“ tireCount”强制用感叹号(!)拆开“ tires”属性时,将不可避免地引发运行时错误。发生错误是因为“轮胎”属性被声明为可选属性,并且初始化时其默认值为“无”。可以通过替换链接来解决此错误,方法是替换“!”带有问号(?)并定义每种情况应发生的情况:
if let tireCount = myCar.tires?.numTires {
|
要记住的关键是,只有在绝对确定可选选项永远不会为“ nil”时,才应使用强制展开。在所有其他情况下,如上面的可选链接示例或在展开之前检查“ nil”之类的技术将导致更安全的生产代码。
提示和最佳做法
使用Playgrounds实时测试和制作原型。
游戏场是交互式编码环境,可为您的代码输出提供实时反馈。它们提供了一种很好的方法来原型化和共享想法,而不必经历设置实际Xcode项目的麻烦。
使用Swift枚举编写意图代码。
如果您发现自己需要用有限的可能状态集和伴随值声明类型,则枚举是满足您需求的理想工具。此外,由于Swift枚举是一类的,因此它们采用了通常与类相关联的许多功能,例如计算属性和实例方法。将其与Swift优美的语法和类型推断结合在一起,您将拥有一个功能强大的工具,可以处理从错误处理和状态代码到UIKit标识符和API端点的各种实际应用。
利用方法混乱。
那些熟悉Objective-C的人将很高兴得知您仍然可以使用此流行的快捷方式在运行时交换方法实现:
在以下情况下,可以在Swift中打滚
- 您使用dynamic关键字,这是一个声明修饰符,可以将其应用于类的成员,以告知编译器应在运行时使用动态调度。
- 您扩展NSObject。
- 您使用@objc属性将代码公开给Objective-C运行时。
请记住,即使您正在使用以NSObject作为基类的类或使用@objc属性,您仍应使用dynamic关键字来确保Swift编译器在运行时不会绕过Objective-C运行时优化代码。
在Swift 3中实际上已经弃用了传统的使用initialize()的方法,但由于不再公开,因此在以后的版本中不再允许使用。在这些更高版本中进行混乱的一种方法是,在您的类中定义一个公共静态方法来运行混乱,然后在AppDelegate的“ didFinishLaunchingWithOptions”的开头调用该函数。
private var hasSwizzled = false
// ———————————————————————
//运行其他代码
|