每个人都想建一个好看的, 无崩溃和成功的移动应用程序, like Uber, Lyft, WeChat, WhatsApp, Instagram, Snapchat, Spotify, or Yelp. 每个人都想像《欧博体育app下载》、《欧博体育app下载》和《欧博体育app下载》那样冲击市场.
But how ?
自从史蒂夫·乔布斯 最初禁止第三方iPhone应用程序 . In one recent peak period 在一年的时间里,App Store发布了50万款新应用. 这意味着每天有近1400个应用!
Wow.
但有多少应用程序在其中获得成功呢?
我们不知道确切的数字, 但很明显,它们中只有极少数脱颖而出,因为普通大众每年只知道三到四个新应用名称.
而你想成为他们中的一员?
然后你必须找到优秀的开发者——有经验的小众开发者, skilled, 注重细节——把你的想法变成一个真正的应用程序.
你可能有一个惊人的想法,将震惊市场. 你可以用美丽的色彩和迷人的布局来完美地设计它. 但这些都是无用的,除非你找到一个开发者来实现它. 没有iOS开发专家, 它只是一个构造精良的机器人,没有程序写入它的内存.
但人们通常在寻找和雇佣合适的iOS工程师时犯错误. 让我们来看看这些常见的错误是什么.
1. 多年的经验并不总是决定开发者的技能.
客户往往会相信开发者声称自己拥有多年的iOS应用开发经验.
而是经验的年数 不能是唯一的标准 用来比较开发人员.
你应该找一个有足够专业编程经验的开发者(也许有5到6年)。. 但你不能说拥有10年经验的开发者就比拥有6年或8年经验的开发者更优秀.
您应该知道的一件事是,开发人员不仅仅是程序员.
开发人员必须完全理解软件工程和软件开发生命周期(SDLC).他们必须同时是系统设计师和程序员.
Also, 花很长时间编码并不一定能造就优秀的开发人员:单靠编码很难达到良好的编程技能水平. 开发人员应该学习别人的代码,并采取系统的方法.
那么你如何判断开发者是否真正优秀呢?
First, 找一个能够向你解释SDLC是什么以及有哪些好的方法可以遵循的开发人员.g.、瀑布式、螺旋式或敏捷式). 询问他们为什么需求收集和测试阶段如此重要. 这样你就可以很容易地发现他们是否能够以系统和有效的方式管理iOS开发.
Second, 从一开始就寻找那些至少开发过一个成功应用程序的开发者(目前在App store中). 成功并不意味着10000个评分. 即使是一款外观好看、功能齐全、评分低于100分的应用也不错.
开发人员将知道如何开始,如何构建系统,以及如何交付产品. 他们知道最流行的库和最佳实践, what to test, 以及苹果发布应用程序时应该做和不应该做的事情.
Third, 找一个在一个大项目上工作了至少6个月的开发者, 或者最好至少一年. 开发人员将更好地了解如何使代码库易于维护, 因为他们已经经历了成熟和扩展应用程序的斗争.
And lastly, 找一个有团队工作经验的开发者, 因为他们知道如何有效地与其他开发人员合作. 如果你足够幸运,他们可能会领导你未来的团队.
需要记住的一点是,拥有10,在StackOverflow上有000个信誉点,或者在GitHub上的开源存储库上有数千颗星星,通常都很好. 您可以询问他们是否有自己的开源仓库.
Lastly, before hiring, 启动一个付费测试项目, 你将在一周左右的时间内了解开发者的技能, 所以你不必根据他们的简历来假设.
向开发人员索要示例代码,并在雇用之前检查注释/文档和编码风格.
你可能会想,“为什么编码风格如此重要?或“编码风格对iOS应用开发真的很重要吗??”
The answer is yes .
优秀的开发人员对编码风格是严格的,那些具有良好编码风格的开发人员通常会提供高质量的代码. 高质量的代码意味着更少的崩溃.
在这里,良好的编码风格很难在一秒钟内建立起来. 它来自于许多开发人员的实践和经验.g.,是使用蛇形样式还是驼形样式作为变量名,其中 是否对代码的可读性有影响 .
开发人员通常遵循知名开发人员和公司的编码风格指南. 苹果的编程风格经常变化,很难跟上, 但这里有一些其他好的标准:
如你所料, 注释也是非常重要的,因为它是代码的一部分, 没有保存在单独的文件中. 具有良好注释习惯的开发人员将有用的注释放在适当的位置.
They 不要在明显的代码部分添加注释 . 但是他们也不会忘记为那些难以理解的代码或者是从其他地方(比如StackOverflow)复制过来的代码添加注释.
这些都是专家习惯的一部分. 它们只能从实践中获得.
简而言之,质量是编码的一种习惯.
3. 昂贵的开发者总是比便宜的开发者更好吗?
是的,这通常是正确的.
但这可能取决于开发商居住的地方.
生活成本因地而异,因国而异,因洲而异. 这对开发者的时薪影响很大. 你可以在东欧或亚洲以相对较低的时薪找到优秀的开发者.
当然,这并不总是正确的. 在低成本地区,有很多人被开发商炒鱿鱼的故事. 成本较高的地区也是如此.
在天平的两个极端做出假设都不太明智.
你应该在雇佣开发者之前对其进行检查.
4. 没有团队经验的开发人员应该继续实践吗 your team?
我们已经提到,编码风格和注释是代码质量的一个非常重要的方面. 在团队环境中工作尤其如此, 因为来自不同地方、有着不同经验的开发人员正在为同一个项目做出贡献.
如果开发人员不以同样的方式编写代码, agreed beforehand, 以后读起来很难, or maintain it.
想想这样的情况:一个开发人员最终离开了一个项目,而你再也找不到他了. 如果符合标准的编码风格, 也有适当的评论, 其他开发人员可以很容易地维护或修改代码.
任何曾经在团队环境中工作过的开发人员都知道保持一致编码规则的重要性.
但那些一直独自工作的人不知道该保留什么. Of course, 随着时间的推移,他们可能会获得经验,变得更好, 但如果开发者已经有团队经验就更好了, wouldn’t it?
Also, 那些有团队经验的开发人员已经知道如何合作, 如何进行配对编码, 以及如何互相帮助. 他们知道如何在一起工作比单独工作更好.
所以在面试中询问开发者关于团队合作的经验. 开源协作也是你可以检查的, 然后你也会了解到他们是如何与团队成员沟通的.
5. 只有iPhone应用的经验就足够了吗?
或者是否有Android或web开发经验?
有很多职位只要求有iPhone应用开发经验(Objective-C或Swift), 或者两者兼而有之).
你是否认为iPhone应用开发者根本不需要了解Android和网页开发,因为iPhone应用只是使用后端团队提供的api,而你不打算让他们开发你的Android应用?
你可能是对的,但是想想这个.
假设有两个iPhone应用开发者. 开发者A只知道iPhone编程. 开发人员B不仅了解iPhone编程,还了解web编程.
这又有什么区别呢?
Of course, A将能够编写与后端通信的代码, 但它可能和B写的不一样.
A将只编写代码来获取服务器响应、解析它并返回给调用者. 但是B的代码将为所有可能的HTTP状态码处理不同类型的服务器响应, such as 200, 404, 500, etc.
开发人员A将只使用后端开发人员提供的API. 但是开发人员B可以与后端开发人员讨论如何改进API调用的安全性, 如何使API调用更有效, 以及如何处理错误.
你现在看到区别了吗?
这同样适用于Android. 如果iOS开发者了解Android开发, 他们将能够构建代码,以便它也可以在Android上重用.
To sum up, 如果你要雇佣的应用开发者拥有全栈知识, 他们将能够编写可靠的代码.
6. 开发者是否具有与你的特定行业相关的经验?
这可能是一个显而易见的话题,但有时却被遗忘了.
如果iOS开发者已经开发了一款类似的应用,或者至少是同一行业的应用, 他们将能够更容易地理解需求, 从他们过去的经验中提出更好的建议, 并产生一个对你的客户更有吸引力的结果.
For example, 假设你要开发一个房地产应用, 而且你雇佣的开发人员之前没有这个行业的应用开发经验.
您需要向他们解释所有的行业术语,如MLS列表, multi-lease, 业主协会, etc. 在实际开发开始之前.
你有没有想过,如果你要雇佣的开发人员不了解你的需求,那会有多困难和压力?
这就是为什么有类似经验的开发人员总是优先考虑的原因.
7. 你是否雇佣了不懂技术的招聘人员?
不懂技术的招聘人员绝对不应该拥有雇佣开发者的最终决定权.
这样的招聘人员无法检查开发人员的代码、知识或技能. 那么,他们怎么能确定找到一个好的开发者呢?
没有技术知识的招聘人员可能会找到一个好的 person ,但可能不是很好 developer .
如果你不能自己保证这一点, 你可能会雇佣那些还没有为你的项目做好准备的人. 但即使你是, 你最后需要做的额外审查本来可以由更专业的招聘人员完成,但只会推迟招聘合适的开发人员.
8. 开发者对多线程和数据持久性的了解对iOS开发至关重要.
这里我们假设你将开发一款大型复杂应用,而不是小型简单应用.
数据持久化是iPhone应用程序的重要组成部分. 移动电话不可能总是有互联网连接. 它可能有wifi连接,蜂窝数据连接,或者根本没有连接. 因此,移动应用程序也应该能够离线工作.
即使它是在线的, 最好显示本地可用的内容,这样用户就不需要等待新数据加载完成. 这是移动应用开发的基本用户体验需求. 这是通过使用数据持久性实现的.
开发者可能会在NSUserDefault中存储少量的信息, 但他们应该知道,不应该将其用于大量数据.
Core Data和Realm是使数据持久性和数据表示更容易的框架,并提供有效内存管理和就地模式迁移的机制. Core Data是Apple提供的内置框架. Realm是一个移动数据库:Core Data和SQLite的替代品.
现在Realm变得流行是因为 巨大的进步 CRUD(创建、读取、更新、删除)操作的速度. 它的另一个优点是它也支持Android, 这意味着你可以在iOS和Android上使用相同的结构.
但是没有理解多线程, 开发人员不能正确地使用Core Data或Realm,因为在多个线程中同时使用数据持久化和消费操作时需要仔细管理.
下面的例子说明了正确使用线程的重要性.
假设你需要接收10,来自API的000条JSON记录, 将其导入到本地数据库中, 并使用新数据更新UI.
如果在主线程中导入这些新记录(例如.e., the UI thread), 在导入过程中,UI将被卡住,用户将无法使用应用程序.
如果你经常做这种进口, 或者应用程序中的许多页面, 用户会对这款应用感到满意吗? No. 他们将向你(和全世界)报告!)它是不可用的.
这就是为什么应该在主线程之外单独处理这种大型导入的原因. 这种技术也可以用于其他类型的耗时工作.
现在您看到了多线程和数据持久性的重要性. 如果开发人员不了解它们, 他们可能是iOS开发的新手或新手.
9. 他们注重细节吗??
即使是一个像素或一个RGB值的差异也会使UI感觉不同. But even a really detailed developer 能产生一些不同于实际设计或想法的东西吗.
那么粗心的开发人员呢? 你最终会得到一款与你想象的完全不同的应用.
Of course, 如果你在测试结果的时候严格一些就更好了, 但看到完美的东西总比要求改变和返工要好.
10. 开发人员是否保持最新状态?
即使是优秀的开发者也应该时刻关注行业变化和其他新闻.
技术每一毫秒都在进步,时间像箭一样飞逝. 苹果每年都会发布一个新版本的iOS. Swift也会随之更新.
每天都有许多支持手机应用开发的新技术问世. Objective-C库正在变得过时,开发者开源了很棒的Swift库来帮助别人和/或展示他们的技能.
如果iOS开发者没有充分学习新技术, 他们的知识很快就会过时, 连同他们一直在使用的旧图书馆.
询问开发人员他们是如何跟上最新技术的, languages, and libraries. 他们应该能够与你就iOS应用开发领域中最有前途或最相关的内容进行交流.
For example, iOS Dev Weekly is a good journal. 在评估应聘者的敬业度时,你有必要看一看这份报告.
花点时间确保他们得到了所有的东西.
招聘通常是一个充满压力和耗时的过程.
但这是找到一个人的过程,你将完全依赖于你的iOS应用开发,谁可以给你带来财富.
在开发过程中更换开发人员的成本很高. 这会导致时间的浪费, loss of money, 对于那些发布时间至关重要的应用来说, 它变成了一种真正的痛苦.
在寻找开发人员时不要太着急:慢慢来,从一开始就试着找到一个好的开发人员. 学习前人所犯的错误,尽量避免. Happy Hiring!