如何成为一名软件开发人员(无需任何经验)
关于我的领域,非开发人员最常问我的问题是“我该如何开始?”这并不奇怪——如今,这个领域如此广阔,有无数的编程语言、形式因素、应用程序层和业务领域需要考虑,因此很难知道从哪里开始。
在本文中,我将从我如何开始以及我对候选人的要求两个角度进行讨论。最后,我希望您能够掌握工具,开始制定自己的前进计划。
关于我的故事:我是如何进入软件开发的
我从 13 岁开始接触编程,大概是 30 年前的事了,这让我感觉自己已经很老了!我的学校有计算机科学课,这在当时很少见。我上了这门课,并且非常喜欢这门课。
我知道编程将成为我未来的重要组成部分,但我不知道该怎么做。我只知道我无法停止阅读我的 Pascal 书。无论我去哪里,我都带着它;我甚至记得在麦当劳汽车餐厅里坐在我妈妈的车后座上读它。
上大学后,我宣布自己主修计算机科学和数学。至于编程语言,我主要学习Java。我还学习了大量有关计算机的理论。大三时,我从邻居那里听说了 Java 实习机会,于是申请了,并被录取了。我在攻读学士学位的最后 18 个月里在那里兼职,之后被聘为全职员工。
早期,兼职项目是让我磨练日常工作中用不到的技能的好方法。虽然兼职赚不到多少钱,但我通过兼职学到了 PHP、MySQL、HTML、JavaScript和 CSS,还学到了很多与客户直接打交道的精彩课程。
进入软件开发行业有多难?
软件开发是一项高薪技术工作。这意味着很难找到一份可以从零开始并接受培训的工作;这太贵了。因此,你需要有学位或强大的作品集。在某些特殊情况下,认证会有所帮助。
一旦你具备了其中之一,进入软件开发行业就相对容易了。软件行业以精英管理为荣。它不是一个受监管的行业,也没有工会。虽然这有其自身的缺点,但它确实意味着,如果你拥有所需的技能,这往往就是最重要的。
软件开发工作机会多吗?薪水高吗?
这是一个有趣的时代,每个行业现在都有些动荡,甚至软件行业也是如此。话虽如此,但软件工作岗位还是很多的!招聘人员几乎经常联系我,问我是否认识正在找工作的人。在撰写本文时,薪水最高的工作是安全、人工智能和大型语言模型、物联网和数据工程。你可以在培训期间专注于这些领域,以便更轻松地找到自己喜欢的高薪工作。
但是,如果这些都不吸引你,不用担心!软件开发人员的薪水相对于其他人群来说很高。美国劳工统计局估计,软件开发人员的平均工资(约 10 万美元)是其他人群平均工资(约 4.8 万美元)的两倍多。
我需要从十二岁就开始编码吗?
技术变化太大了,我 13 岁时学到的东西现在已经完全过时了。所以,不!你不需要像我一样,从小就开始学习。能否被录用,更多的取决于你多年使用某项技术的经验,以及你学习新技术的熟练程度。
那三十岁或四十岁呢?多大年纪才不适合开始开发人员的职业生涯?
您可以在任意年龄开始软件开发!软件开发主要涉及解决问题,因此年龄并不重要。您至少需要掌握最低限度的技能。这可能需要长达四年的培训才能进入某些领域,因此请做好相应的计划。
此外,这个行业也存在年龄歧视。随着年龄的增长,你需要克服这种歧视。由于大多数软件公司都是 20 多岁的年轻人,所以在他们当中很多人眼里我肯定很老!这取决于他们的个性,这可能会让他们更听我的话,也可能让他们更不听我的话。
软件工程师应该具备哪些技能?
如今,软件工程师比以往任何时候都更需要具备技术能力以及至少一些人际关系技能。在技术方面,您应该能够为软件开发生命周期的每个领域做出贡献:设计、开发、测试和部署。
1. 设计
您应该知道如何将问题分解成更小的部分。对于每个部分,您都需要考虑现有的限制、最佳工具、需要维持的流量类型和数量等。
设计中的一些子技能包括评估开源选项、理解 UI(用户界面)和 API、以及执行威胁建模。
2. 开发
这是你的最佳选择。你应该至少了解一种编程语言。我建议至少精通三种:一种前端语言、一种后端语言和一种部署语言。
属于开发的一些子技能包括设计模式、重构、使用 IDE、使用版本控制(例如 git)和防御性编程。
3. 测试
您应该有毫不留情地测试解决方案的态度。磨练单元测试、集成测试和端到端测试方面的技能和习惯。学习如何考虑不同用户的体验并测试他们的用例。
测试中包含的一些子技能包括测试驱动开发 (TDD)、关注点分离、模糊测试、攻击性安全和混沌工程。
4.部署
您应该熟悉您编写的代码如何交付给用户。例如,在一家公司,代码被编译成一组二进制文件,然后上传到 AWS 等云提供商。或者,在另一家公司,代码被交叉编译到几种架构中,然后被写入 ROM 芯片。
部署中的一些子技能包括持续集成(CI/CD)、自动化、网络和基础设施即代码。
虽然这份清单很长,但不要不知所措!你不需要知道所有这些事情就能找到第一份工作。专注于发展并努力向外发展。
大学毕业后我怎样才能找到一份软件开发的工作?
有几种不同的途径可以立即找到工作。第一种途径是最容易获得的,那就是实习。如今,许多大学都与企业建立了合作伙伴关系,每年为数十名学生提供实习机会。其他公司会在网上发布他们提供的实习机会。
第二种方法是开始从事零工工作。这条路的学习难度很高,有时压力也很大。优点是你可以立即开始获得自己确定的工资。
第三是建立你的人际网络。在网上发布你正在建立的东西以及你感兴趣的内容。与你的朋友交谈并建立联系。参加招聘会。在网上搜索招聘信息并申请。安排大量的面试;它们是很好的练习,也是进一步扩大你的人脉的机会。
找到远程软件开发的工作容易吗?
在我的职业生涯中,过去十三年里,我从事两份工作,其中有九年是远程工作的。我之所以能从事这两份工作,是因为我拥有公司非常需要的一项特殊技能。但现在,远程工作无处不在。新冠疫情让许多经理们发现,软件开发人员在家办公比在公司工作更有效率。此外,随着公司不断发展,他们需要扩大业务范围,寻找尚未开发的软件开发人员资源。
虽然现在找远程工作更容易了,但我还是建议你做两件事来增加找到工作的可能性。首先,要有丰富的经验;简单地说,我不会雇佣刚从大学毕业的远程工作者。其次,考虑一下你住在哪里。如果你住在一个科技中心,你就更有可能让来自各地的人联系到你所在地区的开发人员。
我需要有学士学位才能成为软件开发人员吗?
虽然你不需要学士学位,但我强烈建议你拥有学士学位。掌握基础知识会让你成为一名更好的程序员,面试你的高级开发人员也知道这一点。话虽如此,你也可以建立一份强大的作品集。软件工程,比我所知道的任何其他行业都更注重精英管理。如果你能证明自己有能力完成这项工作,那么学位就不那么重要了。
我可以获得哪些认证或资格来成为软件开发人员?
老实说,认证途径对于成为软件开发人员来说有点小众。由于软件不受监管,因此您不需要任何组织的批准即可工作。话虽如此,但有通过 SANS 进行的安全认证、通过 A+ 进行的网络认证,以及越来越多的其他专业认证。
我建议每位开发人员继续“磨砺锯子”,对于许多人来说,这些认证或课程的结构正是他们取得实质性进展所需要的。我个人在职业生涯早期就获得了认证,这帮助我朝着应用程序安全的方向迈进。
我应该在简历中或面试中强调什么?
我在简历或面试中主要想看到的是对具体工作的兴趣。如果他们研究过这家公司,那就更好了。如果他们对我们的技术栈有所了解,那就更好了。在某种程度上,如果你对我感兴趣,我也对你感兴趣。
我还想了解应聘者在过去的工作中表现出的解决问题、领导能力、承担自己的错误以及与他人合作的能力。虽然应聘者不需要所有这些能力,但能力越多越好。
最后,我喜欢看到他们强调他们认为他们的技能中的哪些部分与公司的使命、价值观和技术堆栈相符。
例如,告诉我你已经用 Java 编程三年了。另外,告诉我你对密码学、安全、黑客、赏金计划、CVE 或该领域的某些东西有什么兴趣。第一个问题告诉我你的技能水平;第二个问题告诉我你申请的原因。
结论
软件世界正在等着你!我们继续在软件开发人员过剩的市场中运营,这意味着在许多情况下,职位数量多于候选人数量。无论您的年龄或背景如何,我们都需要您的创造力、热情和智慧。
认真考虑接受正规教育。除此之外,认证和零工工作可以帮助您快速起步。培养设计、开发、测试和部署方面的技能。市场上有足够多的软件,您可以找到一家您对其使命充满热情的公司。告诉他们!专注于您认为可以为该使命做出贡献的地方。
我希望很快有机会与您合作。
其他学习资源
想学习如何编程?查看 Pluralsight 的“什么是编程? ”视频课程(由 Simon Allardice 主讲),该课程将教您与语言无关的编程基础知识。您可以通过注册 10 天免费试用来访问该课程和许多其他课程。请注意,“什么是编程?”课程只有三个小时,因此有足够的时间来查看该课程和许多其他学习材料。
此外,您可能会发现本博客上的以下文章值得一读,以帮助您实现职业生涯:
有兴趣为 Pluralsight 社区做出贡献吗?
如果您有想要撰写的文章,我们期待您的来信! 请访问我们的社区贡献页面 并注册您的兴趣。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~