无需专业经验即可获得第一份软件工作
最近有几个朋友问我关于进军软件行业的事情。他们大多想咨询如何在面向消费者的网络/互联网公司找到一份开发工作——不过像特斯拉和WeWork这样的地方也很受欢迎。
这些朋友可能听说过这些令人惊叹的福利:有趣的工作、聪明热情的同事,以及丰富的免费食物/零食/酒水。这些公司的薪酬通常高于市场水平,而且对于优秀的技术人员来说,职业前景也是首屈一指的。
关于如何获得软件工程师职位的信息已经非常丰富,但很多建议都是针对已有经验的人的。技术面试准备只有在你有机会获得面试机会时才显得重要。
如果你从未从事过软件行业,除非方法得当,否则入门可能会很困难。以下是一些不太常见的技巧,它们过去曾帮助过我和其他人。
本课程最初发布于https://algodaily.com,我在那里维护技术面试课程并为雄心勃勃的开发人员撰写思考文章。
第一:你不需要写代码
先说说:很多人忘了,进入软件行业并不需要会写代码。令人惊讶的是,现在仍然有人认为软件公司就是工程师在文本编辑器里敲敲打打的。最成功的科技公司通常不仅拥有才华横溢的工程师,还有优秀的经理、销售代表、客户成功倡导者、产品经理、营销奇才、设计师和作家。
你可能需要将你的技能和经验稍微向软件方向倾斜一些:例如,如果你热爱写作,可以多关注一下搜索引擎优化 (SEO) 和数字广告。不过,要知道,现有的人才总有其用武之地。
但如果你确定要从事软件工程...
第一次演出是最难的
对于科技界的新人来说,最令人沮丧的是新人和有经验的求职者在求职过程中的差异。
我之前说过,大多数关于软件工程师职位的文章和博客文章都是针对有经验的人的。由于科技就业市场如此火爆,资深求职者通常有多个选择(甚至已经拿到了 offer),可以选择去哪里,做什么。
这显然不适用于首次寻找科技职位的人。最初的痛苦肯定会持续一段时间。值得一提的是,这个行业令人惊奇的一点是人们可以快速“升级”。一开始被几十个入门级职位拒绝当然令人沮丧。但一旦你入职,努力积累经验,以后的道路就会轻松得多。
如果你还没有经验,该如何获得呢?这里有一些方法。
获得实习机会
如果你在大学就读,传统的途径是通过学校的招聘办公室获得实习机会。这个过程几乎与获得全职职位相同——提交申请,然后进行几轮行为和技术面试。这些实习机会通常会通过回聘通知转为全职职位。
然而,如果您处于这种情况,您可能不会阅读这篇文章,那么您还可以如何构建您的简历呢?
通过自己的项目获得经验
很多人忽略了一件事:自己动手构建一个功能齐全的应用程序是多么令人惊叹。如果你能够让前端与后端通信,用数据库进行备份,甚至可能稍微优化一下性能——那么你就完成了整个团队的软件工程工作!
人们没有意识到个人项目或业余项目的另一个好处是:尽管你的代码没有被别人审查,但你最终还是会学到很多可维护的模式和良好的习惯。
这是因为最终需要维护代码的是你——所以你很快就会学会不写意大利面条式的代码,也不去做那些草率而粗制滥造的工作。从某种意义上说,你会学到良好命名、更短的方法、清晰的类分离等等背后的原因——因为当你不遵守良好的编码规范时,你最终会感受到痛苦。
这些项目经验很棒,可以添加到你的简历中——尤其是如果你能从中创造收入的话。如果你能把它发展成像IndieHackers.com 这样的项目,工作机会就自然而然地找上你了。
做一些合同工作
另一个方法是开始从事咨询工作,做一些合同工作。访问临时机构和自由职业网站。很多客户更关心你的作品集,而不是你的简历。
此外,在你找到全职工作之前,这是一个很好的收入来源——尽管一开始你可能需要收取较低的费用。客户通过“临时转永久”的模式雇佣顾问或承包商的情况也并不罕见,尤其是当你能证明自己能为他们的投资带来回报的时候。
如果你一直在为自己建造东西,那么找一份合同工的工作或许就足够了,然后可以把它写进你的简历里。很多人被全职咨询或合同工提供的多样性所吸引,并以此为职业发展目标。
为开源软件做贡献
另一种被低估的积累经验的方式是为开源软件做贡献。它不仅能让你融入软件工程团队(培养你的协作能力),获得宝贵的经验,还能让你参与到自己或他人正在使用的产品中!
再次强调,优秀的开源软件贡献者在免费为某家公司开发软件后被该公司聘用,这种情况并非闻所未闻,但绝对不常见。Redux 的作者Dan Abramov 就是一个很好的例子。
走出去,结识新朋友
我曾经认为,埋头苦干的好工作总能不言而喻。然而,就像一款优秀的 SaaS 产品需要像注重产品本身一样注重市场营销/销售一样,新手技术人员也需要确保自己的工作得到认可和关注。
在工作方面,这意味着向人们寻求信息咖啡和推荐(大多数人都会答应!),建立投资组合并寻求反馈,并追踪每一个线索和机会来展示你的才华。
会议和聚会是结识志同道合之人的绝佳机会。如果你是演讲者,或者只是简单地搭讪一番,这些活动通常也能为你带来机会。
域名很重要
需要注意的是,广告科技 (AdTech) 公司的价值观、文化、目标和人员与金融科技 (FinTech) 不同。工程团队在工作节奏、文化和着装规范方面尤其不同。
在 Jane Street 工作和在 Etsy 工作是完全不同的体验。在概括软件行业时要谨慎,寻找符合你个性和兴趣的机会。你也可以利用这一点来发挥自己的优势。如果你是从其他行业转入软件行业的,你过去的相关经验非常宝贵。
想想看——开发人员的很大一部分工作是将业务需求转化为逻辑。如果你已经了解这些需求;无论是金融、法律、合规、医学、生物、数学,甚至是音乐;作为一名软件工程师,你的优势将会受到高度重视。
如果你来自金融行业,可以考虑金融科技初创公司或银行的软件工程师职位。如果你以前从事音乐行业,Spotify 或 Pandora 可能更愿意接受你的面试,如果你能谈谈自己如何在业余时间开发了一款音乐收藏应用。至少,这样你就能更好地与产品建立联系。
可能需要一段时间
那些渴望首次进入科技公司担任开发人员的朋友常常忽略了成功需要多长时间。我曾与一些才华横溢的工程师共事,他们花了一段时间才找到第一份工作——不幸的是,所有事情都包含运气的成分。
在如今的求职环境中,即使你不断完善简历,从学校或训练营毕业后,也只需一到六个月就能找到工作。如果你一直在用个人项目、合同/咨询工作以及开源软件项目来充实简历——而且这需要超过六个月的时间——那么你应该试着找出最大的障碍可能是什么。
除此之外,大约需要一年时间才能真正熟悉基本语法并启动运行,而深入了解软件系统/架构的工作原理并做出重要的技术决策则需要三到五年时间。虽然这些时间差异很大,但这是我从一些轶事中观察到的。
永远学习(基础知识)
最后,一旦你获得了第一份软件工作,你需要花一段时间来适应行业节奏的变化。
举一个尤其困扰 Web 开发者的例子,谷歌搜索“Javascript 疲劳”。然而,你会发现,这种趋势往往来得很快,但大多数都无法持续。
如果您是开发人员,核心数据结构(列表、堆栈、图形等)、最常见的算法/模式以及良好的 OOP 设计模式已经存在,大多数新想法只是经过轻微调整的重新实现。
同样,如果你从事工程管理——建立关系、了解竞争格局以及与你的报告交谈都是永远有用且永远不会消失的事情。
我之所以提出这一点,是因为能否找到第二份软件工作,与其说是“这个人是否有经验”,不如说是“这个人的经验能带来什么”。
话虽如此,尽管软件技术目前备受关注,但还有许多行业和职业同样令人愉快且有意义。
希望这能帮助大家在今年有所突破。成为一名开发者是一件非常幸福的事,我鼓励每个人都去尝试一下,看看自己是否喜欢。
本课程最初发布于https://algodaily.com,我在那里维护技术面试课程并为雄心勃勃的开发人员撰写思考文章。
鏂囩珷鏉ユ簮锛�https://dev.to/jacobjzhang/getting-your-first-software-job-without-professional-experience-2dkb