经常看到 iOS 开发人员(各种能力水平都有)在网上咨询有关专业和财务发展方面的建议。 这些问题有一个共同点:前面都会说“我现在遇到了职业困境”,然后会问一些诸如“我是否应该学习Android或者后端开发?”这样的问题。 这些都说明 iOS 开发人员在积极寻求职业发展路径,这当然很好。 不过很多人都选择了次优解,比如说成为更“一般化(generalized)”的开发人员,去不断使用新技术和框架。 而实际上,据我们了解,更“专业化”的开发人员(掌握特定技术和基础知识)往往能获得更好的结果。
在本文中,我们整理了之前与许多 iOS 开发人员研究和讨论的信息,总结出一些关键点,希望能帮助 iOS 开发人员更好地做职业规划,以达到自己的职业和财务目标。
这些关键见解包括:
• 不切实际的期望如何阻止 iOS 开发人员的专业发展;
• iOS开发人员最常见的挑战和期望;
• iOS开发人员可以采取哪些措施来预防和/或克服这些挑战,并让职业发展更丰富和充实
1. 提防设定不切实际的期望
我们看到许多开发人员面临的最大问题之一,是对实现目标所需的时间设定了不切实际的期望。 必须了解获取特定技能所需的大体时间。 另外,要意识到每个人的学习速度都是不一样的。 在许多情况下,开发人员都会高估自己的学习速度。
最后由于没有达到自己的期望,他们最终选择放弃学习。
正如视频“Reason Why You Don’t Improve As a Software Developer”中所讨论的那样,开发人员无法持续地发展职业的主要原因,是他们过早地停止了学习。他们在顿悟那一刻之前放弃了。
为什么会这样呢?关键原因之一是设定了不切实际的期望。
例如,我们和许多希望提高技能的人交流过,但是通过阅读书籍,观看视频甚至是在某种情况下被提升为高级职位并承担更多责任来达到提升技能的目的的情况却很少。
卓越的技能来源于不断的学习、实践和执行。
需要明白的是,提升能力需要时间,而且方式是多样的。例如,如果你的目标是学习 TDD,则需要认识到学习过程本身是促进你进步的关键因素。
改善学习效果,如更长的学习时间、更快的学习、寻找更好的资源、刻意的练习并运用所学的知识,这些都是实现目标的催化剂。 尽管这些可能并不直接涉及 TDD,但却是掌握 TDD 或其它任何技能技术所需要的基本方法。将学习看作一个过程。
换句话说,可以学习如何让学习更高效。
iOS 开发人员停止学习过程的另一个原因是没有足够的业余时间。
如果认为学习时间并非必须的(实际上却是提升专业价值和财务回报的重要组成部分),那么自然会期望早点结束学习过程。 然而,开发人员通常要面对实际能力与期望能力之间的落差。 学习需求是必不可少的,因为这是你的专业技能提升的保证,可以改进以产生更好的效果(和回报)。
在上图中,我们突出显示了绿线(标记为Uncomfortable zone)的倾斜度。 这是学习过程中遇到陌生的材料、思想、原理的阶段。 在这个阶段,表面上成长值和生产力都是急剧下降的,因此很多人在突破这一阶段之前就退出了。
在学习新知识的时候,陷入困境是常有且自然的事。 由于对未来投资回报的不确定,所以停止学习可能更有吸引力。 我们可能会经常问自己:“如果我只是浪费时间怎么办?”,“这值得么?”
好消息是,你并不孤单,也不是处于“未知领域”。 行业中的许多开发人员都已经掌握了领域的高级知识,例如 TDD 和模块化体系结构。 因此,在学习新技能时,如果对投资回报有疑问,那么可以去研究他们的职业、文章、书籍、讲座,看看是否值得。 另外,也可以通过某些渠道随时去向他们请教!
我们经常会遇到那些想要提升技能并期望获取更好回报的 iOS 开发人员,但是,他们并不知道如何去实现目标。 他们都想要一个出色的职业生涯,所以自满不是问题。 缺乏学习投入的原因很多时候是没有足够的动力,去证明学习是一项合理的投资。 将这些时间资源分配给更舒适或更熟悉的方面,以获得更直接的短期幸福感和效用似乎是一项更好的投资(实际上长期来看潜在巨大的损失)。
“学习XYZ很难。也许我应该把时间花在更有趣的事情上。”
如果你有这样的想法,不要难过,这是再自然不过的事情。 即使是那些最有成就的人,也会面对这样的情况。 他们只是擅长忽略这些。 当他们越来越接近实现其雄心勃勃的目标时,忽略这些想法,他们会获得更大的满足感。
2. 面临困境
我们收到很多来自开发人员的邮件和评论,他们觉得自己的职业生涯遇到了瓶颈。 这些开发人员包含各种资历级别、不同的教育背景,包括自学成才的程序员、CS 学位毕业生、和训练营毕业生。
这些人员面临的最普遍的挑战包括:
• 与其他开发人员、业务/产品人员的跨团队无效沟通;
• 对不切实际的期望负责,由于失败的结果而被责备;
• 缺乏空闲时间和资源来投资于能力培训;
• 来自业务方的对处理继承的“旧”代码不切实际的期望;
• 缺乏适当的流程;
• 薪酬倒挂现象;
• 将 iOS 的特定知识转换到其它平台;
许多开发人员不会预知到这些问题,也不会尝试训练去面对这些问题。 另一方面,当我们问及他们的目标和愿望时,我们收到的最受欢迎的答案是:
• 与知识渊博的专业人员在一个团队,这样有人可以教他们如何有效地创建和维护高质量的代码库;
• 有力的领导;
• 与杰出的人一起做有价值的项目;
• 在能为他们专业和个人成长方面提供发展空间和资源的公司中工作;
• 能够获得指导,来促进职业和个人成长;
• 提升技能,成为同行眼中的杰出开发者;
• 获得领导 iOS 开发团队的经验;
• 提高薪资/资金/津贴;
• 更灵活的时间表,或者远程工作;
• 掌握软件架构并能够有效创建大型应用程序;
• 提高自动化测试的技术能力和效率;
• 了解如何有效地使用和改进老代码库;
• 更少的压力
在我们的整个职业生涯中,当我们经历了许多后,就可以深刻理解并将这些问题与期望联系在一起。 其中许多问题与编程领域并没有直接关系,相反,它们与沟通和经济学有关。 编程只是专业 iOS 开发人员一生中的一项日常活动。
iOS 开发人员在其职业生涯中面临的潜在挑战,可以从三个层面来概述:
• 愿望:“我们的目标是建立一个可持续盈利的职业,并打造出色的应用程序”
• 实现:“我的许多专业挑战与构建应用程序无关”
• 行动:“我不知道如何应用这些挑战(遇到困境),但是要想更快地发展自己的职业,我确实知道我必须找到答案”
你越快经历这些,越可以更快实现自己的职业目标。
3. 摆脱困境:将技术卓越与现实业务挑战相结合
许多 iOS 开发人员职业发展的共同模式是,最初在 iOS 市场中争取机会,然后是快速的职业(和薪资)发展,然后成为中高级开发人员后停滞不前。
许多 iOS 开发人员在日常的职业生涯中都会经历挫折,遇到困境。 他们不知道该如何做,或者在哪里寻求解决方案。最重要的是,不些不仅仅是技术挑战。
软件开发是一种社会活动,它伴随着各种挑战。 在一个参与者越来越多,且有许多重大挑战的工作市场中,能够很好地协作并以同理心、正直、经济学为指导的开发人员,将会越来越吃香。
我们整理许多 iOS 开发人员的职业生涯时认识到了这种现象,并成立了 Essential Developer Academy,以提供解决方案并加快全球开发人员的职业发展速度。 通过不断研究那些最成功的学生,我们得到结论,iOS 开发人员需要具备两个基本要素:
• 精心思考的学习,整合了卓越的技术和领导能力,以应对现实中的业务挑战
• 协调长期效果和短期收获
化挑战为机遇
iOS 市场对卓越技术和领导技能的需求正在飞涨。 但是,只有少数人能掌握有效应对这些挑战的技能。 忽略这样的市场需求将停滞不前,同时在经济上也会损失。
当你提升技能来应对业务挑战,并有效地进行自我营销时,你将成为公司的重要资产。
作为 iOS 开发人员,我们一直在帮助 iOS 开发人员摆脱薪水/市场的限制,并实现专业和账务的独立。 但是,要实现这些并不容易。 我们了解到,并非每个 iOS 开发人员都会为实现自己的梦想付出一切。
为了最大化并加速你的职业发展,建议你能找到帮助你成长的方式方法,发挥出你最大的潜力。然后,不断学习、实践和执行!