如何在没有实际项目经验的情况下找到工作
许多软件开发人员在找工作的时候,虽然满足了对方所要求的理论技能,但是缺乏实际的开发经验,这让雇主在是否雇用你这个问题上犹豫不决。
对于许多年轻的计算机或 IT 相关专业毕业生,在没有实际项目开发经验的情况下找到第一份全职工作可能是你在职业生涯中遇到的最大的挑战。
当你刚毕业的时候,你很容易认为自己知道超级多有关软件开发的知识,并且能够顺利地找到一份工作。你可能在学校的成绩很高,做了一个了不起的毕业设计,并且研究了最流行的技术和 JavaScript 库。
然而,除非你在十几岁的时候就展现出了超凡的编程能力,并且已经与一些雇主建立了联系或者有在某公司的实习经历。否则你在找第一份工作的时候都是要花费一些时间和精力的。
为什么找第一份工作这么难?
现实中的 Web 和软件开发和你在学校那种环境下所学的是完全不同的。
可能你已经在学校和同学们做过周期长达12周的项目,但是真正工作中的团队协作与你在学校中经历的协作有着很多不同的地方。在团队中,每一位成员都彼此团结一致,为项目的交付而努力。这就意味着你必须要理解好在项目中负责的那部分,并按时向代码库中提交符合规范的代码,在规定时间内进行交付,同时需要确保你负责的功能在所有环境中都能很好地发挥作用,而不仅仅是你的本地机器。
在实际工作中,很多项目是前人做好的,那么即使对一个经验丰富的工程师来说马上去修改和使用这些代码也是十分困难的。学习项目结构,理解前人的代码并在不破坏项目其他地方的基础上修改代码是有难度的。公司在花钱和时间来找新员工,所以他们不想在试用期的时候就在你这样一个初级开发人员身上花费精力。
在你自己或者学校的项目中对 bug 的容忍度还是比较大的。但是这些 bug 在现实的工作中则是绝对不能容忍的。公司的整个软件发布流程的任何一个环节都涉及到公司的利益,在整个软件发布完成前,你的任何 bug 都可能影响公司的收入和形象。产品的每一个版本都需要进行相关测试,要保证产品具有较高的性能,较高的安全性和可拓展性。这也就需要你对产品所涉及的领域和产品开发过程中必要的测试等内容有很好的把控。在你职业生涯之初时你很难全面的掌握这些知识。
综上所述,你可以去认真的提高自己以上几个方面的能力。当你再发现有公司招聘初级开发人员的时候,你所掌握的这些将会成为你的优势。
决定好你主攻的编程语言
五花八门的信息、计算等相关课程只能让你对 web 开发、软件工程、数据库、网络、用户体验、架构和业务发展等方面浅尝辄止。刚毕业的求职者们的一个常见错误就是把这技术统统罗列出来。
任何一个招聘人员,当看到写着精通 Java、c#、Python、PHP、Ruby、Javascript 等的时候都会毫不犹豫的将注意力转移到下一份简历。你可能擅长其中的一个或两个,但是精通那么多种编程语言远不是你一个初级开发者所能达到的。
缩小你的技能范围,决定好你要主攻哪种编程语言。
因为后端语言不太容易改变,所以如果你选择软件开发方向,选择一个语法严格的语言(如 Java、c# 或 Python)比较好。如果你想选择 Web 开发方向,那就选择 PHP 和 Ruby。这些将是你职业生涯的基础。再学习一些前端的知识如 JavaScript,你将成为一名全栈工程师。
你缩小了你的技能范围,但是这表明了你对某项技术更加的专注,同时在你接下来的职业生涯中,你可以去选择专攻前端还是后端。
雇主更喜欢能够灵活应变的员工(也就是让你干啥你就能干啥呗)。
为你自己搭建一个展示个人作品的网站
面试官不会问你在大学学习了那几个方面的知识,因为这样很难在面试中真正了解你的技术水平。他们想知道你的开发经验,虽然可能你的经验并不丰富,但是你为自己做作品集的过程也是一个开发经验提升的过程。
如果你没有任何作品来展示在你的作品集上那也没关系。注册一个域名,搭建一个服务器,安装一个 CMS,创建一个账户,搜索引擎提交,添加谷歌分析等都是建立一个网站的必要组成部分。在这个阶段,网站流量的获取和影响力不是你主要考虑的东西。
如果你已经建立了一个个人网站,那么很可能你的朋友或者家人了解到也有别人有类似的需求,所以这就又是一个丰富你作品的机会啊。这将让你有机会在为别人干活的同时不断历练自己。这也让你更接近实际的项目开发,同时还提供了一个相对没有风险的提高技能的机会。
通过以上这些经历,将使你在面试中有东西可说,同时如果面试官认为他们有一些小网站你可以来做,那你的表现就更有可能给面试官留下深刻的印象。
制作一个产品或者小插件
在你搭建个人网站的过程中可能会遇到一些这样或那样的问题,而这些问题通常可以通过一个小插件或者 JavaScript 库解决。然而如果你没找到可用的解决方案或者你有需要进一步开发的解决方法,那么这就是一个超过与你同水平的开发人员的好机会。
然后你需要找到一种方法来解决这个问题,再对其进行包装,让用户可以很方便的使用。例如一个 WordPress 插件或者开源的 GitHub 项目。
这将会进一步提升你你的技能水平。因为你已经从为自己做小东西转变到了独立创建项目。能够去思考其他产品或者设计师的需求。你的插件和代码有机会被收入到更大的项目当中。
这就是能够吸引面试官的一个亮点,因为你做的这些更接近实际的开发。在一个真正的开发团队中进行开发时,你会负责一个大的应用程序的一小部分,你要确保你的代码在集成到项目中时不会出现任何问题。 另外的一个好处就是,你可以对你插件的使用进行收费,作为你努力赚取的一点额外收入。
参与网络社区
除了技术能力,雇主还希望看到能够证明热爱你的工作的证据,因为现在技术变化的太快了,你必须能够投入更多的时间,来提升你的知识。你需要能够了解到新兴的框架或工具等的变化趋势。最好的方法是阅读博客,多逛一逛软件开发网站。当你在其中能够有一定的贡献的时候,你就可以去做一些评论,提供一些你的想法。如果你能帮别人解决一些问题,那你的社区贡献度就会飙升。
你可能会认为雇主在筛选候选人时不会在意这一点,然而他们会。去查看你在 LinkedIn、GitHub、Stack Overflow 等账号致力于你的研究方向的证据的公司并不罕见。顶级团队甚至会要求求职者在 Stack Overflow 社区中贡献度不能低于多少值。因为没有什么能够比从你为其他工程师提供的建议中更能证明你的水平了。
将你的代码都开源到 GitHub 上
把你所有的代码都放到网上,让全世界都可以看到。这将会让你有更强的批判性思维和分析能力。同行对你代码的评论和提出的问题是你们开发团队来发现错误并及时修复错误来保证产品质量的重要方式。如果你早就习惯了这一点,你就会发现在进行代码审查时不会有任何问题,并且你会在商业环境中有建设性地反馈意见。
同时,这也提供了一种来看你写的代码的方式。你解决过的问题和你做过的项目说来容易,但当一个高级工程师看了你的代码后能够在另一个层面上增加他对你开发能力的信任程度。
你潜在的团队成员也有机会去阅读和检查你的代码,你的设计模式,和你清晰地代码提交记录。最重要的是,它表明你熟悉版本控制,软件产品的核心以及团队的建立。
总结
- 毕业后在没有实际项目开发经验的情况下找到你的第一份工作是一个艰巨的任务。但这也有行之有效的方法来提高和吸引雇主的注意力。
- 选择一个后端和前端语言,创建一个网站,然后做一个插件。多看一些博客和网站,并做一些评论,提供一些你的想法,不要害怕别人会说什么。
- 把你所做的项目和实用的小工具等都放到 GitHub 上。
- 记住每个人都一样,拥有等量的资源和机会。参照本文中的要点,在你有耐心的时候好好坚持下去,最终一定会得到高薪的工作机会。
文章转载自:https://zhuanlan.zhihu.com/p/26593436