- 原文作者 : Bryn Bennett
- 原文链接 : 10 Things I Wish I’d Known Before I Started Coding
- 译者 : 邓士伟
- 校对者: 邓士伟
- 状态 : 完成
我知道在软件开发过程中,我不是唯一一个不知道如何开始而耽误软件开发周期的人。
软件开发过程中过多的资源提供了很多机会,但是也增加了第一步的选择难度。这里,对于那些想迈开第一步或正在迈开第一步的人,这里有 10 件事希望你们开始之前能够知道。
1. 选择一门开发语言很重要
软件开发行业有很多开发语言,它们各有自己的长处、短处,分别适用于不同的场景。
虽然你的第一语言几乎肯定是最难学的,而且许多最基本的基础知识在语言(变量、迭代等)之间是相似的,但是值得花时间和精力去做一些研究,并决定你想学习哪种开发语言。
有时候,开发语言的易用性也应该认真考虑下。如果选择一门比较复杂难学的语言会让你感到恐惧,阻碍你进步,那你可以一开始选择一门自己能驾驭的开发语言,这样更容易成功。
另一个关键因素是你为什么学习软件开发。如果你想开发一款 App,那你最好提前开始规划,并研究下哪种开发语言和技术最适合你的需求。
如果你希望以软件工程师的身份加入一家公司,那么列举一下你想加入的 10-20 家公司的名单,找到他们的软件开发岗位上的职位,并记下他们使用的语言,然后学习对应的开发语言。
2. 开发语言的官方帮助文档
开发语言不仅仅是为了理解而创造的,从最基本的概念到最复杂的应用程序,开发语言的语法、框架和类库都在网上有详细的文档记录。我已经列出了以下几个链接,这样您就可以看到这些链接是什么样子的:
3. Google 是你的好伙伴
每一个软件工程师在遇到困难时都会使用谷歌。这不是像初学者那样学习官方指导文档,而是在实际的工作中,你所遇到的奇怪的问题或错误,已经在 StackOverflow.com 或其他类似网站上有人已经反馈并被解决了。通过 Google
你可以快速解决问题。
4. 这是解决问题的方法,而且可以学习
很多人看 Web 应用程序,觉得它们只是魔术。
事实上他们不是,它们是由精确编写的成百上千行的代码组成的,执行各个函数,并在整个系统中完美地运行。
任何东西或语言都是可以学习的。一开始这毫无意义,就像法语或汉语一开始对非母语者毫无意义一样。但是就像这些语言一样,你一点一点地学会如何用它的语法和措辞来表达你的信息,并学会通过它来传达你想要的任何东西。
5. 你不会知道一切知识
你永远不会知道关于软件工程或者一门开发语言的所有知识。
这是因为有太多的知识需要知道,同时这些知识也在不断的发生变化。
新版本的语言定期发布,具有不同的功能和更新。新的框架和库的出现,每个人都想使用它。
软件工程的唯一不变之处是它总是在变化和发展,你最好能马上适应这个事实。
6. GitHub
GitHub 是一个远程版本控制系统,它与本地版本控制系统 Git
配合工作。
你应该从一开始就有一个 GitHub
帐户,并且学会很熟练的使用 GitHub
和 Git
。
在项目的开发中,你可能经常遇到这样的场景:“需要修复一个问题,但是还不是很确定如何做,只是去尝试”。这时你就可以使用 Git
管理你的项目。
Git
允许您在不破坏工作代码的情况下做一些开发任务。它允许您从主项目分支创建单独的分支去工作,本质上创建一个单独的代码版本。您可以尝试这种和那种解决问题的方法,文件将被保存,但是在您真正执行 git
提交之前,它不会保存在主分支中。
GitHub
只是本地 Git
存储库的远程存储系统(这也意味着,对于每个项目,您都需要一个本地 Git repo
和一个 GitHub repo
)。把它想象成代码的 DropBox
。这样,如果你的电脑出了什么事,你写的所有宝贵的代码都不会丢失。
7. HackerRank、LeetCode 和 Codewars
这三个网站(当然还有很多别的网站)有很多编码挑战的题目,供你打磨提高自己的编程技能。
当你能够轻松编写一些基础代码之后,你可以尝试选择上面三个网站中的一个来学习用编程解决问题。通过锻炼不仅能够提高你对开发语言的语法掌握,还能提高你解决问题的能力。
我个人喜欢 LeetCode,因为它能给你关于解决方案质量的真实反馈,而不仅仅是你是否解决了它。不过,我也经常使用 HackerRank,因为我喜欢它提供的挑战。
8. 熟能生巧
你永远不会完美,也永远不会知道一切。但是我怎么强调练习的重要性都不过分。
和其他人一样,我也曾有过这样的感觉:我在努力学习一些根本看不出用途的东西。它会让你感到士气低落,让你想放弃,继续下一个。但我保证,如果你坚持下去——继续练习,即使你觉得自己已经一事无成了——最终你会有那一刻,它确实会响起来。突然间一切都会有意义的。去那里可能很难,但这是值得的。
9. 语言与框架不同,框架与类库不同
常会在一些相似场景下见到开发语言、框架和类库三个名词,但是他们不是一回事。
开发语言是除了二进制外比较接近底层的编程,比如常见的开发语言:Ruby
、Java
、Python
和 JavaScript
。
类库和框架是建立在开发语言之上的产物,但是他们俩也不是同一种东西。他们都是为了解决通用型问题,使用开发语言抽象开发而来。它们通常是以提供通用的接口方法的形式出现,这样就不必每次都编写这些代码,也不必去生成新的应用程序框架。
使用类库时,软件工程师决定他或她希望在何处使用类库,他或她控制着申请的流程。类库的例子有 React.js
和 Redux
,它们都是 JavaScript
库。使用一个框架,可以让应用程序的流程是预先确定的,比如 Rails
是一个通用的 Ruby
框架, Django
是一个 Python
框架。
10. 比语法更重要的事情
软件工程不仅仅是记忆和理解语法。
当代码按预期工作时,会觉得一切都是很容易的。“当你确信你写的代码是正确的时候,你就已经知道如何调试了”。调试在解决一个复杂的问题时是充满挑战和乐趣的。要做到这一点,你不仅要明白 a+b=c
,还要明白为什么 a+b=c
。如果你不明白,总有一天你会把 a
和 b
加起来,得到 d
,却不知道为什么,也没有工具来找出原因。
在软件开发中,每种开发语言的细微差别和执行一行代码的工作方式是如此重要,因为有时会导致意想不到的后果。
作者:邓士伟
链接:https://juejin.im/post/5e15eb98f265da5d112579f9
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。