Andriod程序员职业指南,让你清楚的选择职业方向,就业前景,解析应届生如何才能进大厂,解决程序员大龄危机!

大多数程序员都不懂得如何规划自己的职业生涯,他们大抵知道程序员晋升路线是初级、中级、高级、管理… 当问到自身规划时,大多数人总是从学好语言、算法,多做项目等回复:

我会JAVA、c语言,我的目标在项目中磨炼我的编程技术,从普通程序员到小组长,到高级程序员,到管理者…

外行人都觉得程序员岗位只和电脑打交道,精通技术就可以征服职场。但精通技术只是程序员能在职场上立住脚跟的前提。

很多程序员并不知道应该如何开始自己的职业生涯,如何推进自己的职业生涯,如何令自己的事业蒸蒸日上,以及为了尽可能地获得成功,他们究竟需要知道些什么。

无论经验丰富的老手还是初出茅庐的菜鸟,关于软件开发,都会有着各种各样的问题。例如:

  • 作为一名软件开发者,我该如何起步?
  • 我该如何培养自己的技术能力?
  • 我该如何谈判薪水?在合同制员工和正式职员之间我该如何选择?
  • 我该如何跟我的老板、同事打交道?我该如何对待职场偏见?我该如何跟技术女性打交道?我该如何成为一名技术女性?
  • 我真正需要知道什么?又该如何学习它们?
  • 大学学历教育、编程训练营还有自学成才,该选哪一种?
  • 我如何找到一份工作?如果没有经验,我该怎么办?
  • 我怎样才能通过面试?
  • 身在职场我该怎样穿着?
  • 我怎样才能推动自己的职业发展提升到一个新的水平?
    ......

这些其实是程序员职业生涯中都会遇到的问题

不同发展阶段的程序员

在程序员的职业生涯中,一般会分为三个阶段:初级程序员、中级程序员、高级程序员。

不同阶段的程序员对应不仅仅是工作经验的区别,更重要的是所掌握能力、所处环境,以及需要思考方向等区别。

初级程序员一般是职场早期、打基础的时期。

新手小白怀揣着梦想进入IT行业,跌跌撞撞进入职场,开始探索自己的发展之路。这个阶段的程序员,怎么才能在职场稳住脚跟?

那就要靠你所擅长的那项技术——它证明你在IT行业所具备了基础的技能,可以在行业内发挥价值。当然,知识与技能永远是是程序员初步踏入职场时最基本的底牌。

在这一阶段,初级程序员最重要的三点是:

  • 必须懂技术,有至少一技之长;
  • 必须建立起属于自己的人脉;
  • 必须有韧性,具备失败了再战的能力,没有失败,何以谈成功。

第一点很容易理解,当了解自己所处岗位之后,就需要迅速搞清楚自己这个岗位需要的专业知识、技能。刚开始可能仅限了解,慢慢还需要精通。

除此之外,IT行业一向有日新月异的特点,技术更迭迅速,需要程序员了解的技术就越多。

迄今为止,关于移动开发我最常被问到的问题就是:“我该怎样入门XX技术?”

在生活中,真正开始做某事的最大障碍无外乎“如何起步”。其实并不难,比如你想学一项新的编程语言,找资源学习语言的基础知识,有一定了解之后,就可以开始尝试着用它去解决一些实际问题。

除了通过”学-做-学”的方式获取技能,在知识量无比丰富的当下,筛选知识也十分重要,那些被你判定为仅需了解的知识,只需要浮光掠影般地做一下全景式扫描,以便遇到的时候不至于不知所措。

第二点是建立人脉,这是一件任何一位寻求工作的人都应该做的事情,尤其需要做好这一点。

确保你积极参加社区活动,如参加技术会议、加入开发者组织等。努力与那些不同公司(你可能想在这些公司里找到一份工作)的人建立良好的人脉网络。

最后一点,作为一个初入编程世界的新手,你会遇到职场早期的迷茫,甚至各种不成功的尝试…

比如不知道如何运用自己所掌握的技能,看不懂别人的代码,改不好Bug、不懂新技术、不会拆解需求…

千万不能被这些挫折打到,如果一打就趴下了,开始怀疑自我,这样会在职场后期品尝退缩带来的无奈,和对他人成功的羡慕嫉妒恨。

要开始调整自己的心态,提升自己的适应和整合能力,而不仅是关注自己的技术和韧性的打造。

初级程序员这个阶段会根据每个人的适应性、态度、个性等原因,大致在步入职场后的3~5年。

“脚踏实地,仰望星空”这句话特别适合这个阶段的程序员,一方面要勤勤恳恳的写代码,积累编程经验,另一方面还要时刻关注行业动向,根据市场大环境及时提升自己。

这个阶段越往后走就会越顺利,3~5年其实很快,但程序员完成新手的蜕变,需要在短短几年内拥有可观的技术储备和基本的职场生存经验。

中级程序员一般是职场飞跃期、规范化的时期。

这个阶段的程序员,就不只有技术这一张底牌了。

经历三五载的蜕变,程序员逐渐在职场稳住脚跟,这个时候,技术并非最有重要的了。

在这一阶段,中级程序员最重要的三点是:

  • 必须善于与人相处、学会和同事、老板的相处之道;
  • 必须学会管理团队;
  • 必须有全局观、会整合资源;

很多人会觉得程序员的工作很单纯——和电脑打交道,但到了中级程序员阶段,你的工作远远超过编写代码。

事实上,在长期的职业生涯中,你所能取得的最重要的成就受软技能因素的影响比受你所编写的代码的影响更大,例如,如何与同事相处,如何沟通你的想法,如何与老板打交道,如何要求加薪,如何处理绩效考核,甚至如何着装。

当然,这并不意味着即使你的代码写得再糟糕,只要做一只趋炎附势的应声虫就可以侥幸成功,而是说,在做技术领域工作的时候,你不得不仔细关注其中的社会动力学因素。

想在复杂多变、有时甚至是混乱不堪的工作氛围之中平稳航行,在这种环境里满是性格孤僻的同事、傲慢自大的老板、尖酸刻薄的客户,甚至还有形形色色的偏执狂。你还需要搞清楚每个人都喜欢谈论的生活与工作的平衡问题。

除此之外,这个阶段的程序员往往开始逐步晋升为领导者,有小团队要带领。那么,成为一个高效能的领导者就非常关键了。

高效能领导者是那种能鼓舞、激励和推动团队以保证团队成功的领导者,那种不需要正式授权就可以赢得尊重、促进合作和激发最佳成绩的领导者,而不是那种被简单地授予“领导者”头衔的领导者。

只有一种方法能够成为高效能的领导者,那就是以身作则。

最好的领导会做到所有他要求他的团队做的事情。他们愿意牺牲,愿意多走一公里为他们试图领导的人铺平道路。

太多的“领导者”想坐在象牙塔里高高在上地指挥他们的军队。作为一个真正的、以身作则的领导,你必须自愿在前线、在战场上身先士卒,自愿去承担一些困难的、枯燥的甚至是你的团队里没人愿意去做的工作。向他们表明:即使是最单调乏味的任务,你也能做出高品质。

和初级程序员相比,中级阶段的程序员已经逐步脱离单项技能的输出了,需要依靠团队协作或者带领团队完成更具挑战性的任务。因此,拥有全局观和整合能力。

你不必掌握所有技术,但是必须不断完善自己的技术知识体系,这才能把任务和意图尽可能清晰和简洁的分享给团队其他人。

只要你的团队成员知道你最终想要让他们去完成什么,以及什么才是最重要的(也就是大家整体的愿景),他们就可以自行决定如何去实现这些目标。理想状态就是告诉团队成员目标是什么,而不需要告诉他们如何去做,也不必让他们去执行你的每一个细微决策。

你也可以明确制定一个操作规程,任何人都可以遵守规程来完成某些类型的任务。流程图或检查表在这里都能起到非常好的作用。

可以看出,中级阶段的程序员在初级阶段的基础上,增加的都是非技术的难题。这个阶段根据每个人情况的不同,时间长短从五年到十年、十五年不等,也是最能拉开差距的阶段。

如果你有着超出同龄人的专业技能、社会关系、资源等,这个阶段的程序员应该着力于如何将自身优势放大。

高级程序员一般是职场转型期、突破的时期。

大多数中小型公司在向上晋升和发展方面都存在实际的限制。

作为一名软件开发者,你不可能比公司的发展通道最高级别还要高,而且,那个所谓的“最高级别”其实可能根本也没有高到哪里去。

但在像微软、苹果、IBM、谷歌、Facebook、惠普这样的大公司,上限可能会高出许多。这类公司往往需要最优秀的技术人员,所以大公司为这些技术人员量身定做出专门的技术通道。

通常,在这类大公司里,可以选择技术型职业发展通道,也可以选择走上管理通道。你必须从中做出抉择,如果你想要走上管理通道,那就得放弃自己的编码技能,你也可以选择坚守在技术通道上,一直编码到他们告诉你再也不需要你编码了。

所以,这阶段的程序员,最重要的两点是:

  • 必须做好取舍,在管理通道和技术通道中做抉择;
  • 必须敢于打破技术的“天花板”,开创新起点;

如果你选择走上管理通道,你可能会成为一名开发者经理,然后可能是一名部门经理或项目经理,再然后,如果你能一直获得晋升,你可以一路做到高级管理职位,如开发总监甚或是首席技术官(CTO)。

有些公司把这个角色称为研究员(Fellow)或者技术院士(Technical Fellow)。

担任这个角色的软件开发者是某一领域内的杰出专家,领导研究工作,是公司智囊团的成员,或者参与非常复杂或者极高优先级的项目。

这类角色还可能涉及指导整个组织内的开发者的工作。作为软件开发总监甚或是首席技术官,还要做出各种技术性和非技术性决策。

如果你选择了技术通道,你可能会从高级开发者转去做架构师,然后再晋升为研究员或者高级研究员。(每个组织都有自己的技术和非技术职业发展通道,但在职位和职位名称上往往不尽相同。)

但是,如果你达到了“玻璃天花板”还想继续有所突破,那你就不得不做出抉择:坚守技术通道,还是转去管理通道。

事实上,如果你没能在一家拥有先进技术路线的大公司工作,你甚至可能都没得选择。进入管理层可能是你能够得到晋升的唯一选择——要么转去做管理工作,要么自己选择退出。

一般来说,移动开发者不管选择了哪一条特定的职业路径(也许不止一条),最终都会遇到所谓的“玻璃天花板”。

这个玻璃天花板实质上就是一个极限,限制了你在职业发展路径上可以前进多远,限制了你作为一个移动开发者可以得到的最高薪酬。

无论你有多优秀,总有一天你会到达这个顶点,你再也无法前进了。但是,有办法绕过或者穿越这个玻璃天花板。

你可以选择不再为别人工作。如果选择做一个自由职业者,你的玻璃天花板要宽敞许多,尽管作为一个自由职业者你可以赚多少钱仍然有一个实际存在的限制,因为你仍然需要用时间来换钱。

如果选择做一名企业家,那就完全没有上限了,但你的收入也可能是0甚至是负数。

任何一种选择都可以让你穿越玻璃天花板。

如果你依然坚守职业开发者的道路,那你可以在打造个人品牌和自我营销上加大投入,这样你可能凭着自己的声望就能找到一家公司,让你的薪酬远远高于平均水平。

还有另外一种方法。你可以寻求加入一家大公司,进入它的管理通道或者技术轨道。

以上的内容都希望能够促使你认真规划一下自己的工作方向,在自己的职业生涯发展方向上你需要深谋远虑。如果你想在事业上阔步前进,那你就需要清楚地知晓你该往哪个方向前进。

因此,仔细思考一下:你想成为怎样的移动开发者?

你想永远都做职业开发者吗?

如果是,那你想做哪个领域的开发者:移动开发者、Web开发者、还是云开发者?

还有,你的职业生涯的终点在哪里?最终,你想做一名架构师吗?

还是说,你只是想一直编码、一直都在做一些很酷的事情,永远都不要操心自己该往哪个方向前进?

你想让自己的职业发展得尽善尽美吗?

如果是这样的话,那你最好现在就开始寻找拥有高级技术发展通道的公司。

也许你想最终进入管理层,或者成为首席技术官,甚或是首席执行官。又或许你想在自己的职业生涯早期做一名开发者,然后转变成为一名自由职业者甚或是创业。

无论你决定做什么,最重要的是:你需要做出决策,并且为此做出计划。

即使你做出了选择,你也不必死守在一条通道上一成不变,你可以不断调整改变计划。但是,你应该至少制订一些计划,否则你会在自己的职业生涯中漫无目的地随波逐流。

程序员的自我提升

程序员的职业生涯有着常规的发展阶段,每一个阶段的提升,势必会在职位上、薪水上、社会资本上、个人成绩上有所变化。

这样的变化并不是随着时间发展自然而然的效果,而是需要程序员有闯劲有毅力的前进,既要脚踏实地,进退有度,以提升知识和技能为主,又要看清局势,了解未来趋势,为在阶段末期实现跨越做好准备。

所以,程序员要能掌控自己的职业生涯,这10项自我提升的方法是必不可少的:

1、高效开发
这些是程序员必须要知道并且掌握:编程语言、源代码控制、测试、持续集成、Web开发、HTML、CSS、设计模式、数据库、调试、方法论、Scrum、敏捷…(这一串长长的列表我还可以继续延伸)

这个世界很疯狂,技术发展日新月异,昨天还是新鲜而又热门的东西今天就“人老珠黄”,关键在于要让你的技能跟得上时代。

2、制定计划
为了推进你的职业生涯发展,让你的技能跟得上时代,你需要量身定制计划。作为制订计划的开端,请确保你下载一份本书附带的“移动开发者技能评估”的工具。使用该工具做个自我诊断,找出你最需要改善的技能。

3、读书
程序员应该一直保持手不释卷的习惯,尝试选择你将从中受益最多或者具有持久价值的书籍,挑选与你目前正在从事的工作直接相关的书是不错的选择,因为这样做你能获得的将是即得即用的价值。

挑选有关移动开发方法论或者设计模式和体系架构方面的书也是绝佳的、永不过时的选择。

4、挑选一样新东西去学习
不管你对当前的技能是多么驾轻就熟,也不管你的教育背景有多么深厚博大,你总是要去学习新东西。

针对你要去学习的内容定一份计划,这样当你完成了一样新东西的学习之后,你就可以接着去学习下一样了。定期评估你现在的技能,定期校正你的学习方向,这样就可以明确确定你应该学习哪些新东西,以及你的学习内容的优先级与顺序。

到后面,你会惊奇地发现,只要你每年都投入大量的时间去学新东西,那么在一年的时间里你就能学到相当多的新技能。你甚至可能想在自己的日历上明确地安排每周的学习时间。

不过,要注意一点:不要去学那些你永远都不会用到的东西。

5、保正学习的质量
如果你想勇立潮头,那你就必须持续学习。就像我之前说过的,在当今的环境中,科技发展的速度极快,而且我不认为在短期内有降速的可能。

你并不一定要按照我的体系来学习,但你确实需要某种有利于快速学习的体系。不管怎么说,如果你想保持勇立潮头,你就需要某种有利于快速学习的策略。

6、大量编写代码
能够让你的编程技能与时俱进的最显而易见的方法莫过于自己编写程序,而且是经常编写程序。

你编写的代码越多,你的编码技能就越不可能变得生疏。这似乎是常识,但你一定会感到惊讶:大量的已经陷入技能过时窘境的软件开发者,在被问及他们编码的频率时,他们会说“不高”。因此,一定要确保你每周(最好是每天)都花一些时间写代码。

要想做到每天编写代码,有一个很好的方法,就是一直致力于开发小规模的项目。选择一些你想要去学习的新技能,然后使用这些新技术或者编程语言开发一个小规模的项目。要确保项目的规模足够小,以便于你可以切实完成它。

7、不要让自己太安逸
记住,无论你眼下的工作岗位或者工作氛围多有保障,都不要过得太安逸,这很重要。

一些在同一家公司里工作了20年的程序员,他们觉得自己的工作岗位很安定,所以没有必要保持他们的技能与时俱进。因为他们的工作很有保障,所以他们觉得生活很不错、很安逸,没有必要去学习任何新东西。

然后,当意料之外的裁员突然发生时,他们会在一瞬间被抛入劳动力大军中,看着自己落后于时代20年的技术与技能,他们很快就会意识到自己之前的错误。

这里给大家分享一份BAT大佬整理总结出来的《2022中高级Android面试题汇总+源码+视频+电子书》,里面包含了所有Android面试的知识点,想看看的伙伴可以点击下方链接免费获取,一起制订一个积极进取的计划来保持自身的技能与时俱进,毕竟没人能拒绝一个优秀努力、技术精湛的程序员。
链接:https://shimo.im/docs/2wAlXyBMlztEPbAP/

你可能感兴趣的:(Andriod程序员职业指南,让你清楚的选择职业方向,就业前景,解析应届生如何才能进大厂,解决程序员大龄危机!)