那些心灵鸡汤式的说辞总爱美化失败:失败是成功之母啦、失败使人成长啦、别畏惧失败等等。但事实上,这种思路在软件开发领域也许并不适用——至少不完全适用。每位开发者在职业生涯中都不可避免会遭遇失败,但为什么不从他人的经验中汲取教训来避免惨痛的挫折?
在今天的文章中,我们将共同了解那些需要加以回避的职业规划陷阱。
错误一:在同一家企业待得太久
时至今日,很少有从业者会在同一家企业效力十年甚至更久。虽然这足以体现大家的技术水平,但长期处于同样的环境下也许最终会导致各位成为某次“人员精简”的牺牲品。
“在同一职位上待得越久,技能与薪酬就越是僵化,最终会让人感到无聊且烦躁不安。”——管理顾问 Praveen Puri
作为管理顾问,Praveen Puri在自己的开发者及项目经理岗位上工作了25年,最终选择建立自己的公司。“在同一职位上待得越久,技能与薪酬就越是僵化,最终会让人感到无聊且烦躁不安,”Puri指出。“但如果大家总是不到两年就换工作,同样是种危险的信号。我最长的岗位效力时间是14年——我本该在工作6年时就跳槽的。其它岗位的工作时长平均是4年,属于比较正常的水平。”
长期从事同类工作会带来两大弊端:其一是限制自己接触新的工作方法与技能,其二是产生工作惯性而难以适应其它团队或企业的实践方针。而且事实上,对于技术行业这一人员流行性较大的领域,雇主往往更希望从业者能多经历一些环境,从而更明确自己到底想要什么样的工作环境。
错误二:频繁跳槽
再看另一个问题:跳槽太过频繁。
“频繁跳槽往往是种危险的信号。”——艾迪生集团IT部门经理 Hilary Craft
虽然更换工作能够帮助从业者接触到更多解决思路与技能,但同时也会导致他们无法适应特定企业文化的制约与要求。
更重要的是,频繁跳槽可能令我们失去全程追踪项目生命周期的机会。反复更换工作会让我们变得像是雇佣兵,只负责完成任务而没有任何稳定的信任与合作关系。无论技术水平如何高超,大家仍然需要站在客户的角度看待问题,而这种能力要求我们在同一岗位上拥有一定的从业时间。
艾迪生集团IT部门经理Hilary Craft提醒称,一部分专业人士倾向于强调单位时间内的收入水平,但却因此错失了储备长期合作关系与完整技术经验的机会。
错误三:急于升迁
每位开发者最终都将面临这样的选择:我们到底是更爱编写代码,还是站在台前领导企业事务?
进入管理层应当源自谨慎而细致的考量——这是一种职业的变化,而非单纯的逻辑性提升,意味着我们需要使用不同于以往的技能。很多企业都会选择出色的技术人才担任管理职务并将此作为一种奖励,但这往往会造成严重后果。
“每个人都应当在从业经历中至少体验一下管理职位,从而更深入地了解领导者与企业的运作方式。”——Automic 公司产品营销主管 Scott Wilson
每个人都应当在从业经历中至少体验一下管理职位,从而更深入地了解领导者与企业的运作方式。但并不是每个人都适合长期担任领导者职务,特别是对于不少技术从业者而言,繁重的文书工作与会议任务使他们脱离了自己所擅长的方向,而又体会不到应有的成就感。
错误四:疏于引导新手
作为开发人员,很多朋友可能不太重视规划自己的职业道路。事实上,很多企业发现年轻的开发者更需要团队领导者的引领。
引导新手开发者有助于提升领导者水平,因为领导者在身体力行的过程中能够更快地积累经验。另外,由于开发者的人际交往能力一般较差,因此领导者也就有更多机会巩固自己的沟通技巧。
“如果老鸟们没时间指引新人,我对此完全理解。但请别用‘我不擅长跟人打交道’作为借口。”——JAMF 软件公司专业服务主管 Charles Edge
错误五:过分坚持原有积累
现有积累无疑能够帮助大家稳握现有职位——但其是否有利于长远职业发展?或者说,将过多精力投入单一方向是否反而会影响职业灵活性?
举例来说,让一位拥有十年Java开发经验的从业者突然转而编写JavaScript代码,那么其开发成果将与拥有十年Python经验的开发者完全不同。我们掌握的每一项技术都会影响开发中的决策。有些人认为经验过于丰富反而不好——如果将Java当中的面向对象方法引入JavaScript这类松散型语言,显然起不到预期效果。
每种技术堆栈都有着自己的文化与观点。不少C#开发者只了解微软生态系统,而对外界一无所知。事实上,很多Java开发者反而能够在C#当中发挥更出色的表现,因为他们的视野更加广阔。
当然,盲目跨越技术堆栈也不可取。大家最好能拥有一项真正拿得出手、远高于平均水平的技能储备,而后再考虑涉猎其它领域。
错误六:忽视软技能
程序员通常比较内向,至少远比销售人员更内向。大家终有一天会发现,这类性能特质或者说思维方式会影响到自己的职业生涯。
“软技能与沟通能力同样能够提升软件构建水平,这能帮助我们真正思考客户的需求,而非一味过度开发。”——MediaMath 公司工程技术副总裁 Ben Donohue
“顺畅的交流能够提升软件水平。软技能与沟通能力同样能够提升软件构建水平,这能帮助我们真正思考客户的需求,而非一味过度开发。”
要提升软技能,互联网、电子课程、朋友与导师都是非常宝贵的资源——当然,前提是我们保持谦虚的态度及开放的心态。另外,编程绝不仅仅是开发工作中的一个侧面,其同时也是沟通并理解业务目标及思路的重要体现——其中涉及多个部门以及技术储备有所区别的大量相关人员。很多IT人会在管理层交谈时涉及大量技术细节,这显然不利于双方的相互理解。
错误七:疏于制定发展路线图
制定发展目标,并随时间推移加以调整——或者反过来,设计一套固定前进路线,并以此规范自己的发展进程。
“我建议大家将自己希望获取并掌握的经验与技能整理成一份发展路线图,且至少每年对其进行更新。”——Talent 有限公司 CTO Michael Henderson
当然,同样重要的是如何避免自己走上与计划相悖的道路。
在早期职业生涯中,很多从业者往往羞于说“不”。这意味着大家可能接受了很多根本不可能完成的项目。事实上,如果能以更加自信的方式表达自己的观点,那么企业也许能够节约下被非技术人员的随意承诺所浪费掉的时间与金钱。
Automic公司的Wilson援引了阿拉巴马大学足球教练Nick Saban的讲话:“我们要把注意力集中在获得成功身上,并将整个过程作为约束自身行为的依据。要制定可行的过程,大家需要找到适合自己的导师,理解他们做了什么、为什么这么做以及为什么这样能够带来成功。以此为基础,再对具体细节进行个性化调整并严格遵守。”
长按识别二维码关注我们
转载于:https://blog.51cto.com/13561855/2063774