【译】成为一名码农前,你应该知道的 10 件事

1,094 阅读7分钟

我知道在软件开发过程中,我不是唯一一个不知道如何开始而耽误软件开发周期的人。

软件开发过程中过多的资源提供了很多机会,但是也增加了第一步的选择难度。这里,对于那些想迈开第一步或正在迈开第一步的人,这里有 10 件事希望你们开始之前能够知道。

1. 选择一门开发语言很重要

软件开发行业有很多开发语言,它们各有自己的长处、短处,分别适用于不同的场景。

虽然你的第一语言几乎肯定是最难学的,而且许多最基本的基础知识在语言(变量、迭代等)之间是相似的,但是值得花时间和精力去做一些研究,并决定你想学习哪种开发语言。

有时候,开发语言的易用性也应该认真考虑下。如果选择一门比较复杂难学的语言会让你感到恐惧,阻碍你进步,那你可以一开始选择一门自己能驾驭的开发语言,这样更容易成功。

另一个关键因素是你为什么学习软件开发。如果你想开发一款 App,那你最好提前开始规划,并研究下哪种开发语言和技术最适合你的需求。

如果你希望以软件工程师的身份加入一家公司,那么列举一下你想加入的 10-20 家公司的名单,找到他们的软件开发岗位上的职位,并记下他们使用的语言,然后学习对应的开发语言。

2. 开发语言的官方帮助文档

开发语言不仅仅是为了理解而创造的,从最基本的概念到最复杂的应用程序,开发语言的语法、框架和类库都在网上有详细的文档记录。我已经列出了以下几个链接,这样您就可以看到这些链接是什么样子的:

Python.org

RubyonRails.org

Reactjs.org

3. Google 是你的好伙伴

每一个软件工程师在遇到困难时都会使用谷歌。这不是像初学者那样学习官方指导文档,而是在实际的工作中,你所遇到的奇怪的问题或错误,已经在 StackOverflow.com 或其他类似网站上有人已经反馈并被解决了。通过 Google 你可以快速解决问题。

4. 这是解决问题的方法,而且可以学习

很多人看 Web 应用程序,觉得它们只是魔术。

事实上他们不是,它们是由精确编写的成百上千行的代码组成的,执行各个函数,并在整个系统中完美地运行。

任何东西或语言都是可以学习的。一开始这毫无意义,就像法语或汉语一开始对非母语者毫无意义一样。但是就像这些语言一样,你一点一点地学会如何用它的语法和措辞来表达你的信息,并学会通过它来传达你想要的任何东西。

5. 你不会知道一切知识

你永远不会知道关于软件工程或者一门开发语言的所有知识。

这是因为有太多的知识需要知道,同时这些知识也在不断的发生变化。

新版本的语言定期发布,具有不同的功能和更新。新的框架和库的出现,每个人都想使用它。

软件工程的唯一不变之处是它总是在变化和发展,你最好能马上适应这个事实。

6. GitHub

GitHub 是一个远程版本控制系统,它与本地版本控制系统 Git 配合工作。

你应该从一开始就有一个 GitHub 帐户,并且学会很熟练的使用 GitHubGit

在项目的开发中,你可能经常遇到这样的场景:“需要修复一个问题,但是还不是很确定如何做,只是去尝试”。这时你就可以使用 Git 管理你的项目。

Git 允许您在不破坏工作代码的情况下做一些开发任务。它允许您从主项目分支创建单独的分支去工作,本质上创建一个单独的代码版本。您可以尝试这种和那种解决问题的方法,文件将被保存,但是在您真正执行 git 提交之前,它不会保存在主分支中。

GitHub 只是本地 Git 存储库的远程存储系统(这也意味着,对于每个项目,您都需要一个本地 Git repo 和一个 GitHub repo)。把它想象成代码的 DropBox。这样,如果你的电脑出了什么事,你写的所有宝贵的代码都不会丢失。

7. HackerRank、LeetCode 和 Codewars

这三个网站(当然还有很多别的网站)有很多编码挑战的题目,供你打磨提高自己的编程技能。

当你能够轻松编写一些基础代码之后,你可以尝试选择上面三个网站中的一个来学习用编程解决问题。通过锻炼不仅能够提高你对开发语言的语法掌握,还能提高你解决问题的能力。

我个人喜欢 LeetCode,因为它能给你关于解决方案质量的真实反馈,而不仅仅是你是否解决了它。不过,我也经常使用 HackerRank,因为我喜欢它提供的挑战。

8. 熟能生巧

你永远不会完美,也永远不会知道一切。但是我怎么强调练习的重要性都不过分。

和其他人一样,我也曾有过这样的感觉:我在努力学习一些根本看不出用途的东西。它会让你感到士气低落,让你想放弃,继续下一个。但我保证,如果你坚持下去——继续练习,即使你觉得自己已经一事无成了——最终你会有那一刻,它确实会响起来。突然间一切都会有意义的。去那里可能很难,但这是值得的。

9. 语言与框架不同,框架与类库不同

常会在一些相似场景下见到开发语言、框架和类库三个名词,但是他们不是一回事。

开发语言是除了二进制外比较接近底层的编程,比如常见的开发语言:RubyJavaPythonJavaScript

类库和框架是建立在开发语言之上的产物,但是他们俩也不是同一种东西。他们都是为了解决通用型问题,使用开发语言抽象开发而来。它们通常是以提供通用的接口方法的形式出现,这样就不必每次都编写这些代码,也不必去生成新的应用程序框架。

使用类库时,软件工程师决定他或她希望在何处使用类库,他或她控制着申请的流程。类库的例子有 React.jsRedux,它们都是 JavaScript 库。使用一个框架,可以让应用程序的流程是预先确定的,比如 Rails 是一个通用的 Ruby 框架, Django 是一个 Python 框架。

10. 比语法更重要的事情

软件工程不仅仅是记忆和理解语法。

当代码按预期工作时,会觉得一切都是很容易的。“当你确信你写的代码是正确的时候,你就已经知道如何调试了”。调试在解决一个复杂的问题时是充满挑战和乐趣的。要做到这一点,你不仅要明白 a+b=c,还要明白为什么 a+b=c。如果你不明白,总有一天你会把 ab 加起来,得到 d,却不知道为什么,也没有工具来找出原因。

在软件开发中,每种开发语言的细微差别和执行一行代码的工作方式是如此重要,因为有时会导致意想不到的后果。