无需学位,如何成为卓越软件工程师:15步终极指南

本文详细介绍了成为软件工程师的完整路径,包括选择编程语言、学习数据库技术、构建项目组合、准备面试等实用技术内容,提供了从零开始到就业的全面技术指导。

如何成为卓越的软件工程师(无需学位?)

作者:John Sonmez 如果你正在考虑成为软件工程师(或开发人员——两者非常相似,我们将在下面讨论)……本指南将教你所有相关内容。你将获得实现这一目标的完整分步路径。享受你的15步软件工程师路线图!

这是你吗?

你喜欢解决难题……作为软件工程师,你将运用你的智慧和创造力来解决困难问题,并通过为雇主或客户解决问题来提供巨大价值。

你享受沉浸在一个主题的研究中……要成为软件工程师,你需要学习许多复杂技能。之后你也永远不会停止学习。如果你热衷于扩展知识和提升技能,这可能是你的完美职业道路。

你想与他人合作共同实现雄心勃勃的目标……独自在地下室解决编码问题的开发人员是一个神话。大多数时候,你需要领导他人或与他们协作解决问题。你还将积极参与会议并就你的工作做演示。

而且你希望通过这样做比大多数同龄人赚更多钱……那么为什么不成为软件开发人员或工程师呢?

什么是软件工程师?

软件工程师是计算机专家,他们使用工程原理来设计、创建、调试、测试、部署和维护软件应用程序的系统和代码。与团队合作,软件工程师为各个领域的客户问题创建有效的软件解决方案。

软件工程师 vs 软件开发人员

大多数人可以互换使用软件工程师和软件开发人员。事实上,它们非常相似。软件工程师从更广泛的角度分析和塑造(即工程化)项目。除了软件开发任务外,他们还高度参与规划和指导。

软件工程师做什么?

简而言之,软件工程师的工作:作为软件工程师,你负责软件开发生命周期的所有部分。定义问题和目标。实现代码。评估和测量部署的软件程序。更改系统和改进程序。提供持续的管理和支持。

15个你将做的事情示例:

  • 识别客户需要通过新软件应用程序解决的问题
  • 运行新软件或现有软件的测试
  • 纠正系统或应用程序的问题
  • 从零开始构建新程序
  • 管理软件工程项目——通常同时管理多个
  • 使用模型详细理解和呈现项目
  • 创建项目的概览图
  • 迭代新版本的代码
  • 对团队输出进行质量控制
  • 记录团队流程
  • 研究信息和工具以帮助完成任务
  • 与客户沟通
  • 自己编写高效代码
  • 指导年轻开发人员
  • 为团队中需要帮助的任何人提供帮助

作为软件工程师的日常生活是怎样的?

如果你成为软件工程师,你的工作日可能如下所示:

  • 你准备日程安排。无论你在办公室还是远程工作——你都希望安排好你和团队当天的任务。
  • 你开始处理软件工程问题。你正在概述和建模客户问题的软件解决方案——包括为团队提供如何实施此解决方案的指导。
  • 你参加会议。作为软件工程师,你与程序员和测试人员合作,协助你实现你建模的解决方案。你需要经常召开会议来协调这项工作。
  • 你修复正在处理的应用程序的问题。通过测试人员的反馈或你自己的评估,你不断面临新的挑战。你花费部分工作日进行故障排除:修复无效代码、调试和解决安全问题。
  • 你发布新软件。在密切关注其性能的同时,你将完成的应用程序发布到世界。
  • 你维护实时产品。在为客户工作时,你持续测量已完成产品的性能。你提供技术支持,修复出现的任何问题,并继续更新软件。

成为软件工程师有多难?

从零开始学习软件工程、通过具有挑战性的面试过程以及管理工作中的多样化和智力要求高的任务是很困难的。但如果你愿意付出努力,你将克服这些困难,并享受作为软件工程师的充实职业生涯。

你将面临的三大挑战:

  1. 你需要有耐心和毅力来完成你的教育 有抱负的软件开发人员/工程师需要学习很多东西。基本上,如果你选择成为软件开发人员,你将永远是学生,并且必须不断改进和保持教育。当你学习第一门编程语言时,你可能会感到特别有挑战性。如果一切不能立即理解,你不能气馁。有时你必须多次解决学习问题。在成功将一项技能添加到你的技能库后,你也不能自满——还有更多技能需要掌握!但如果你日复一日地坚持,你变得足够胜任开始申请第一份开发工作将是不可避免的。

  2. 你必须努力提升沟通、团队合作和领导技能 与所有刻板印象相反——作为软件工程师,你不是一个孤独的地下室居民!你在工作中承担责任,与团队成员协调和委派,与客户沟通。如果你到目前为止还没有磨练你的沟通、演示和公开演讲能力,你还有工作要做。这些对于被编码吸引的性格类型来说可能是一个挑战。但让我告诉你,一旦你提高了这些技能,就会令人振奋——这些是可学习的软技能,任何开发人员都可以掌握。你现在不仅可以设计解决客户问题的解决方案,还可以很好地沟通它们,并领导团队成功实施。你作为软件工程师的生活将轻松愉快10倍。

  3. 你在工作中需要严谨的思维 首先,任何项目所需的“系统思维”都需要大量脑力。但是,这是你作为软件工程师与众不同的地方,所以你必须一次又一次地投入精力。其次,你必须能够克服挑战。无论你是自学(需要最大的意志力),还是获得学位(截止日期迫近),或是参加课程或训练营(长时间和同伴压力)——你在这里选择了一条艰难的道路。面试准备很难。在工作中同时处理多个项目并解决一个又一个问题也很难。你必须具备克服所有这些障碍的心理强度。但也许你是那种在挑战中茁壮成长的人?

你应该成为软件工程师吗?利弊

缺点

  • 你将花费数百小时 relentlessly 学习 你需要几个月的时间来学习在这个职业工作所需的编程语言。并且需要几个月的时间来准备你的工作面试。如果这听起来太令人生畏,也许你不应该成为软件工程师。
  • 你将投资数千美元用于教育 特别是如果你上大学,你将花费数万美元成为软件工程师。虽然你可以走完全自学的道路(我们稍后会讨论):即使你选择不上大学,通过花一些钱,你将能够加快速度,并在更短的时间内获得更深的教育。
  • 你将工作相当多的时间 但是,这对于任何更高级别的工作来说都是正常的。除非你作为自由职业软件开发人员工作,并且只接受有限数量的客户——你应该期望在你的软件工程师工作中全职工作。
  • 你可能最终支付“拥有一份好工作”的机会成本 如果你考虑成为高薪软件工程师与创业的长期前景。很容易永远留在那个舒适的工作中,而不是抓住机会在商业中赚更多钱。

优点

  • 你将供不应求 近年来,对软件工程师的需求翻了一番,并且将继续增长。根据美国劳工统计局的数据,工作岗位数量到2030年将增长22%——远高于平均水平。这意味着你在这个领域获得好工作的机会极佳。
  • 你将赚很多钱 软件工程师的薪水在每年3.6万美元到26.5万美元之间。美国的平均工资是12万美元——对于受薪员工来说,每小时超过50美元。根据客户的不同,自由职业软件开发人员每小时可以赚100美元以上。这将使你跻身美国专业人士的上层。它将为你提供大多数人只能梦想的生活方式! 软件开发者薪资 2020年,软件开发者的中位薪资为110,140美元。 入门级薪资 美国入门级软件工程师的平均年薪为73,691美元。 首席软件工程师薪资 美国首席软件工程师的预估总年薪为150,667美元
  • 你将做令人兴奋的工作并帮助很多人 如果你喜欢挑战并且喜欢成为高级问题解决者,你选择了完美的职业。更重要的是,你将帮助客户启动他们的项目。在许多情况下,这意味着你正在改善成千上万用户的生活——要么直接通过他们使用你编写的软件,要么间接通过你的代码促进他们受益的产品或服务。

如何从零开始成为软件开发人员(无经验):15步路线图

1. 找到你的原因并设定目标

首先,要有一个清晰而雄心勃勃的理由来实现你成为软件工程师或开发人员的目标。确保你的理由足够强大,以保持你前进。也许你讨厌当前作为销售员或会计师的工作,想成为开发人员。你想为一家酷炫的新科技公司工作,并获得软件工程师的高薪。我见过一些人停止编程,因为他们觉得太难继续,但如果你有一个强大的“为什么”,在面对障碍时继续推动比简单放弃更容易。否则,你实际上不会去做。这很困难。从一无所知到真正擅长它是很困难的。这并不意味着你必须喜欢编码的每一分钟。但你必须喜欢解决难题。你也不能因为与其他人合作和领导他们而退缩。如果你真的想要,并且愿意全身心投入这个职业——你将能够成为一名软件工程师。

2. 选择你的职业道路

软件工程师有不同的专业领域。作为专家,你更有可能被雇佣。并且你将能够要求更高的薪水,因为你的专业知识很罕见。所以选择一个你想专攻的领域,并开始努力成为其中的佼佼者。以下是一些软件工程师的职业道路专业:

  • CRM工程师
  • 软件集成工程师
  • 质量保证工程师
  • 游戏工程师
  • 安全工程师
  • NLP工程师
  • 机器学习工程师
  • 区块链工程师

3. 选择你的第一门语言

在我们能跑之前,我们必须学会走路。你通过学习用一门编程语言编程来走路。你不是通过试图一次学习五千万件事并分散自己太多来学会走路的。以下是成功开始学习第一门语言的4个步骤:

  1. 从对你最有用的语言开始 选择一门你认为可能围绕其构建职业生涯的单一编程语言。编程语言本身并不那么重要,因为你应该从长远考虑。我的意思是你不应该尝试学习一门“简单”的编程语言开始。只需学习你感兴趣并可以看到自己在未来几年编程的语言。你想选择一些有持久价值的东西。
  2. 正确开始你的学习之旅 一旦你选择了要尝试学习的编程语言,尝试找到一些隔离该编程语言的书籍或教程。我的意思是,你不想找到一次教你太多的学习材料。你想找到专注于语言本身的初学者材料,而不是完整的技术栈。期望在理解之前通读书籍或教程三遍。你不会第一次尝试就“理解”编程——没有人曾经这样做过。你需要重复接触才能开始最终理解并明白发生了什么。在此之前,你会感到相当迷茫,没关系,这是过程的一部分。接受它并继续前进。
  3. 立即开始编码 当你阅读材料或完成你选择的教程时,确保你实际编写代码。如果可能,做练习。尝试你学到的东西。尝试将东西组合起来,并使用你学到的每一个概念。是的,这很痛苦。是的,从头到尾读一本书更容易,但如果你真的想学习,你需要做。当你编写代码时,确保你理解你编写的每一行代码的作用。对于你阅读的任何代码也是如此。如果你接触到代码,放慢速度并确保你理解它。无论你不理解什么,都要查找。花时间这样做,你就不会总是感到迷茫和困惑。
  4. 开始构建你的第一个小项目

既然你对一门编程语言有了基本了解,是时候将这种理解付诸实践并找出你的差距了。最好的方法是尝试构建一些东西。此时不要过于雄心勃勃——但也不要太胆怯。选择一个应用程序的想法,它足够简单,你可以通过一些努力完成,但不需要几个月才能完成。尽量将其限制在编程语言本身。不要尝试做一些全栈的事情(意思是,使用从用户界面到数据库的所有技术)——尽管你可能需要利用某种现有的框架或API。对于你的第一个真实项目,你可能想考虑复制一些已经存在的简单东西。寻找一个简单的应用程序,比如待办事项列表应用程序,并直接尝试复制它。不要让你的设计技能阻碍学习编码。

成为软件工程师所需的语言

软件工程师使用的主要语言是Python、Java、JavaScript、TypeScript、C#、C++、Go、HTML、Ruby和Kotlin。它们的难度各不相同——如前所述,选择你所需工作需要的语言。例如,你可以通过查看招聘信息来了解这一点。你甚至可以打电话给招聘公司,询问他们你需要哪些技能才能被考虑担任该职位。

4. 理解编程基础和最佳实践

你需要学习如何编写易于理解和维护的干净代码。为了做到这一点,你需要大量阅读并看到许多好代码的例子。用以下关于编码基础的书籍充实你的图书馆:

  • Code Complete
  • Clean Code
  • Refactoring
  • Working Effectively With Legacy Code
  • Programming Pearls –(做练习)

以及语言特定的结构书籍,如:

  • JavaScript: The Good Parts
  • Effective Java
  • Effective C#

此时,你真正想将学习重点放在编写好代码和使用现有系统的结构过程上。你应该努力能够轻松地用你选择的编程语言实现算法,并以易于阅读和理解的方式完成。

5. 学习数据库技术

大多数软件开发人员需要了解一些数据库技术,因为大多数严肃的应用程序都有后端数据库。所以确保你不要忽视在这个领域的投资。如果你学习SQL,你可能会看到最大的好处——即使你计划使用像MongoDB或Raven这样的NoSQL数据库,学习SQL将为你提供更好的工作基础。需要SQL知识的工作比NoSQL多得多。不要太担心SQL的风格。不同的SQL技术足够相似,如果你了解一种SQL技术的基础知识,在它们之间切换应该没有问题。只需确保你学习关于表、查询和其他常见数据库操作的基础知识。我建议为你选择的SQL技术找一本好书,并创建几个小样本项目,这样你就可以练习你正在学习的东西——总是练习你正在学习的东西。当你可以做到以下时,你就对SQL有了良好的了解:

  • 创建表
  • 执行基本查询
  • 连接表以获取数据
  • 了解索引的工作原理基础
  • 插入、更新和删除数据

此外,你将想学习某种对象关系映射技术(ORM)。你学习哪一个取决于你正在使用的技术栈。寻找适合你所学框架的ORM技术。可能有一些选项,所以你最好的选择是尝试选择最受欢迎的一个。

6. 决定你将成为开发人员的方式

选择以下5种成为软件工程师的方式之一:

  • 获得大学学位
  • 参加(面对面)编码训练营
  • 获得证书
  • 完成在线课程
  • 完全自学

学位

这是你最长和最昂贵的选择。你将深入学习数学和基础,如数据结构和算法。大学毕业时,你比选择更DIY路径的人对基本计算机科学概念有更多知识。你将学习计算机体系结构、数据库和源代码控制。但你可能没有像通过训练营的人那样多的实际编码技能(例如,训练营90%以上是动手实践)。即使你走传统的大学路线,也要在空闲时间自己构建东西。应用那些理论学习是真正成长发生的地方。这是确保你为“现实世界”中的软件工程工作做好充分准备的方式。

你需要什么学位才能成为软件开发人员

当你学习成为软件开发人员/工程师时,你可以获得副学士学位、学士和硕士学位,甚至博士学位。开发者最受欢迎的研究领域是计算机科学——一个更理论化的研究方向——和软件工程,它更实用,花在实际编码上的时间更多。

课程

今天有数百门在线课程在几周或几个月的时间内教你软件工程的各个方面。如果你是一个可以独立学习但仍然希望以易于消费的在线格式获得指导和资源,课程是很好的选择。缺少的是大学或训练营的社区方面。另一方面,在线课程通常更实惠,更容易成功完成。

证书

如果你不确定是否要承诺昂贵的多年制学位,你可以选择先获得软件工程证书。这些更便宜,你只需要六到十二个月就能完成一个。

编码训练营

全力以赴一到六个月,为你第一份工作做好准备。这是编码训练营的承诺。与其他志同道合的有抱负的软件开发人员一起,你沉浸在学习

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计