如何学习编程:成为软件工程师的路线图

2020-10-19 20:54:59

我经常遇到关于如何开始编程的问题。人们渴望学习,但不知道从哪里开始,也不知道走哪条路。如今,由于存在许多不同的领域,如Web开发、移动软件开发、游戏开发等,这一点变得更加困难。

虽然我们生活在一个教程和课程丰富的时代,但其中很多可能会让人感到不堪重负。您需要的是导航主题的路线图。你想要一个结构来指导你的学习。许多编码训练营遵循与大学课程类似的方法。完成这些课程是令人沮丧的,因为你觉得你没有足够快地学到任何实质性的东西。如果你的目标是获得证书或学位,大学课程是很棒的。如果您的目标是学习软件工程的实践技能,那么它们不是很好。

以下是我整理的路线图,帮助您指导自己学习如何编程。您在这方面的经验将取决于您当前的编码经验。不过,这些天来,我预计很多人都接触过非常基本的编码概念,如循环、if语句等。在这些概念上花费更多时间可能是不值得的。你想要的是一张路线图,让你踏上建设事业的道路。

正如我已经提到的,您可以关注软件开发的许多不同领域。我推荐从Web开发开始,因为它有最快的反馈循环。这将帮助您快速提高,快速学习各种概念。这里学到的原则可以应用到您可能感兴趣的其他领域,例如移动应用程序开发或游戏开发。

在学习Web应用程序编程时,您需要学习HTML、CSS和Javascript。这些是构建Web应用程序的核心语言。但是您想要花更多的时间和精力在后端服务器系统上。后端系统负责提供支持您的应用程序的数据API。您学习的构建良好的后端系统的原则将为您提供坚实的软件工程基础。

对于后端,您将主要使用PHP、Python、Java或Ruby。挑一个你觉得舒服的。我建议从Python或Ruby开始。

有效学习的关键原则之一是首先注重深度。与其在各个主题中学习很多概念,我建议深入到一个特定的领域。在这种情况下,我建议首先专注于构建简单的端到端应用程序。

您将大致了解从头开始构建某个东西是什么样子。更重要的是,拥有一个可以工作的应用程序会让你感觉很棒。进步带来的满足感将激励和推动你前进。

在这一点上,您已经准备好解包并更深入地研究您所构建的内容的各个方面。

请查看我的详细入门指南,了解有关构建第一个Web应用程序的逐步过程的更多信息。

一旦您构建了一个端到端的应用程序,您会发现学习几个框架和库就足以让您继续前进。大多数编码训练营都止步于此。但这并没有深入到更丰富、更有回报的软件工程世界。

我建议您花时间学习软件设计原则、面向对象编程和各种系统架构模式。您将学习如何干净而有效地使用数据库,如何组织代码以支持更复杂的系统、不同的设计模式和体系结构的详细信息。

算法在软件工程中的重要性可能会引起令人惊讶的争议。这可能是因为硅谷的科技公司在面试过程中依赖他们。诚然,许多专业软件开发人员从来不会回顾他们在大学里模糊地学到的算法。

真够倒霉的。现实情况是,如果您想要在最高级别的软件工程师中脱颖而出,对算法的深入了解就像软件体系结构一样是基本要求。

我希望这份路线图能让您对学习编程和开始软件工程职业生涯所关注的各个方面有所了解。我没有在这里提供一个时间估计,因为你的进度会有所不同。学习新的和复杂的东西需要时间。如果你坚持下去,另一边就会有一份有价值的职业在等着你。

注册以接收关于学习如何成为软件工程师的独家更新和想法。

哎哟!出现错误,我们无法处理您的订阅。请重新加载页面,然后重试。

嘿,我在reddit上看到你的帖子了,在那里留言有点困难。所以我有个问题和…有点相关。

我刚刚用Python完成了MIT600.x到CP的入门课程,在edX上完成了哈佛CS50到CP的入门课程。我有时间吃这些药,因为过去几个月我一直失业(餐饮服务)。现在,我正在考虑如何在学习更多编程技能的同时,选择一条职业道路,以及如何支付房租/养活自己。在接下来的几个月里,我可以做些什么来获得一份与编程/计算机相关的工作?我应该去参加一个看起来相当密集的训练营,还是只继续参加edX/免费课程?

我之所以这样问,是因为我认为,随着越来越多的食品相关企业倒闭,我以前的技能(人类学学士和多年的烹饪经验)不再能让我养活自己。显然,编程在短期内不会有任何进展,而且看起来是一个很好的职业机会。现在任何建议都是很好的。我知道刚上完入门课我找不到任何工作,但我确实需要过渡到与计算机相关的领域,我只是好奇你会给像我这样的人什么样的建议。

您在第一段中提到,我们应该关注诸如Python和Ruby这样的后端系统。那么你是说像Django和Flask这样的框架吗?我最近一直在自学MERN堆栈,但我觉得为了找工作,我的武器库里需要有蟒蛇。我想彻底学习完MERN堆栈,因为我不知道还能学些什么,但是你有更好的推荐吗?