想学习编程却不知从何处入手?看这篇或许就足够了

已收录   阅读次数: 1,418
2020-03-0808:32:29 发表评论
摘要

在过去的20年中,软件开发迅猛发展已不是什么秘密。新的软件初创公司像雨后春笋一般,逐渐增多。随之而来的是,许多人认为软件开发是一个不错的职业选择,并且害怕错过很多巨大的机会。但是,当您不知道从哪里开始时,如何开始学习编程呢……

分享至:
想学习编程却不知从何处入手?看这篇或许就足够了

在过去的20年中,软件开发迅猛发展已不是什么秘密。新的软件初创公司像雨后春笋一般,逐渐增多。随之而来的是,许多人认为软件开发是一个不错的职业选择,并且害怕错过很多巨大的机会。但是,当您不知道从哪里开始时,如何开始学习编程呢?

总的来说,软件开发人员固执己见。我怀疑这对开发人员来说是唯一的,但是当您处理多年后,它会变得很累。如果我们不为更好的操作系统而战,那就是哪种语言更好。如果不是那样,那就是代码编辑器,数据库,框架,错误跟踪器,开发过程或……或……或。

想学习编程却不知从何处入手?看这篇或许就足够了

在越来越多的人成为开发人员的时代,仅仅成为“开发人员”还不够。不,要想现在变得优越,开发人员就需要以某种方式将自己与非开发人员的区分开。这是“如何开始学习编程”的第一步。

这种心态导致开发了更多的编码语言,旨在解决其他语言的问题。构建新框架是为了“解决”先前框架的问题。

所有这导致了学习编程时进行大量的选择,意见和资源消耗。自然这使学习编程令人生畏。

选择编程语言

选择一种语言归结为您想要做的事情,能帮助你快速掌握以及获得成就感,什么语言(S)是让你的最佳选择那里:

  1. 前端Web开发(用户界面和交互):JavaScript,HTML和CSS
  2. 后端Web开发(前端Web应用程序和移动应用程序调用的服务):Ruby,Python,Javascript或PHP
  3. 移动开发:Swift(iOS)或Java(Android)
  4. Windows开发:C#
  5. macOS开发:Swift或Objective-C
  6. 操作系统,文件系统,嵌入式系统等:C / C ++
  7. 游戏开发:(C ++,Unity和C#)
  8. 数据科学:R

当然,每个选项都有其他选择。例如,JavaScript可用于项目1-5。而目前python是增长最快的编程语言,也可以来作为参考首选。

如何找到好的资源来开始学习

有大量资源可用于学习在网络上进行编码。您如何筛选并找到真正的宝石?

大多数资源分为以下几类:

  • 图书
  • 影片
  • 博客/教程
  • 课程

书籍是传统的入门资源。在Amazon.com中搜索您的主题并阅读评论。确保您要考虑的所有书籍都是新书。语言变化和旧书可能会减慢您的进度。

很多人都喜欢使用视频来学习编码和其他主题。YouTube是大多数人最喜欢的地方。查看讲师的订阅者人数,并观看一些视频以查看其风格和方法是否适合您。另一个可能的问题是,由于使用新版本的语言(或相应的工具)更难更新视频,因此某些视频可能已过时。这部分对于理解如何开始学习编码至关重要。

对于博客和教程,简单的Google搜索(例如“最佳python教程”或“初学者最佳快速教程”)是一个不错的起点。与视频一样,您必须尝试一些视频,以了解它们如何与您的学习风格配合使用。

在线课程是现场的最新资源。 Codecademy  是很多人立即发现的代码。但是,在我与许多尝试过的人交谈之后,没有人真的认为它做得很好。 Free Code Camp  或  The Odin Project  都非常受Web开发的重视。 Udacity,  Coursera,  Udemy都有不同类型的课程。

开始学习

上面列表中的每个开发目标都是不同的,需要不同的起点。我会列出我建议您开始的地方。我 没有亲自尝试过所有方法,但是在进行研究时遇到了它们。也许还有更好的选择,因此,如果您有任何了解,请告诉我,我将更新此列表。这可能是整个“如何开始学习编码”交易中令人困惑的部分。

  1. 前端Web开发:  免费代码营
  2. 后端Web开发:  Ruby(用于Rails),  Python(用于Django),  Javascript(用于Node),  PHP The Right Way,有关C#和Java更经常使用的地方,请分别参见Windows开发和Mobile(Java)开发资源。
  3. StackOverflow列出了最常用的编程语言
  4. 移动开发:Swift  Lynda的Swift Essentials  (请检查您当地的图书馆,看是否有带借书证的免费Lynda帐户)或  Flatiron学校的免费Swift课程,  Swift编程书籍  或Java  Head First Java,  赫尔辛基大学的MOOC
  5. Windows开发:  Head First C#,  Pluralsight的C#课程
  6. macOS开发:适用于OS X的Cocoa编程,或适用于移动Swift的相同课程
  7. 操作系统,文件系统,嵌入式系统:  C ++如何编程书籍,  面向初学者的C ++教程
  8. 游戏开发:有关C ++的信息,请参见前面的内容;有关C#的Windows信息的开发,请参见
  9. 数据科学:R  Swirl  或  Coursera的R课程

一旦选择了语言和起点并开始学习,某些事情将显而易见,而另一些则将难以理解。您将遇到麻烦,并遇到概念和代码错误,那很正常编程人员都会遇到。

自我教学很棒,但需要  大量工作。您必须弄清楚学习什么。您必须找到从中学习的地方。而且,您需要了解如何解决问题以及要做什么项目。您必须找到可以结识的人才能建立关系。此外,除了自己的承诺,您没有其他承诺。对于某些人来说,这就足够了。包括我在内的其他人在对他人负责时会更好地工作。

想学习编程却不知从何处入手?看这篇或许就足够了

如何解决编程疑难

一旦开始学习编码,您将遇到不知道如何解决的问题。 这是正常现象,也是过程的一部分。就是说,没有一些帮助,您将永远无法前进。那么,您如何找到该帮助呢?

首先,忘记书本。从这里开始不是一个好地方,因为它们可以涵盖的错误的数量和类型非常小。

在线是最容易找到帮助的地方。大多数开发人员会在StackOverflow上寻找解决方案,或者只是搜索错误消息(如果有的话)。其他解决方案是查找专用于您所使用语言的新闻组或论坛。

如何使用Google摆脱困境

当您第一次尝试用Google搜索您的问题的答案时,就会遇到要搜索什么的问题。经验丰富的开发人员确实擅长此部分,但是不幸的是,对于最需要它的初学者来说很难。因此,在这里,我将向您提供一些有关如何改善搜索结果的专家提示。

  1. 始终包括您使用的语言的名称。如果您使用的是特定工具,数据库或框架,则也应包括在内。不包括  所有的  人,只是那些你认为是相关的。这将需要练习。
  2. 如果您收到错误消息,请在引号中添加错误消息  。编辑消息以仅包含消息的核心,这样就不会引用任何特定于您的  程序或计算机的文件,类,路径或文件名  。这里的技巧是使错误消息尽可能具体,同时又足够通用以适用于使用相同语言/工具/等的其他人。但情况不同。

如果您要解决一本书或课程中公开发布的问题,请将该信息添加到搜索中。

用最少的字词解释您要做什么。对于所有级别的开发人员而言,这都是艰难的。对于初学者来说,您可能很难提出正确的术语。这是书籍,教程和课程资料派上用场的地方。如果您做的事情与他们所涵盖的内容相似,则他们应该使用正确的语言。如果没有,您将需要尝试一些不同的措词。记住,其他初学者也会遇到问题,并可能以相同的方式解释问题。

这是我使用的一些示例(减去引号):
  • “ ruby​​ rails form helper复选框” –我包括了“ rails”,因为我知道form_helpers是Rails的一部分。我可以在这里删除“ ruby​​”,因为“ rails”是特定于红宝石的,应缩小搜索范围。是的,我知道它是“ Ruby on Rails”,但是在Google上搜索“ on”只是没有帮助。
  • “在邀请路径后不可避免地发生红宝石设计” –这里的“ devise_invitable”是一个gem,一个Ruby代码库(可重用代码的集合),我想了解更多有关其after_invited_path 方法的信息。当您删除下划线“ _”时,Google通常会提供更好的结果。如果不是,请尝试将其添加并在下划线单词中加上引号:“ devise_invitable”,“ after_invited_pa​​th”。
  • 'java“无法引用非最终变量”'–我正在包含的错误   “无法引用非最终变量”,但引用了该短语之前针对我的项目的文件,因此我未包含这些部分。

一旦你 找到 一个解决方案, 不复制和粘贴。这是一个很大的禁忌。从网上逐字复制代码是减慢进度并阻止您成为更好的开发人员的好方法。

您需要了解代码,使其适应您的情况,尝试并冲洗并重复。存在复制错误代码或错误代码的风险,但是您也可能会发现自己陷入了困境。如果您复制或改编的代码不能解决错误或创建新的错误,则在尝试解决问题时,可能会使您的代码更加复杂且难以理解。

因此,慢慢来,了解您所做的更改,不要害怕退出尝试其他解决方案。有时,您看到的问题是由多个问题引起的,但通常并非如此。

向某人寻求帮助

由于谷歌搜索解决方案是一门需要实践的艺术,因此问一个人更容易,更快捷。前提是您当然有权访问某人。从最好的方法开始,有几种找到别人问的方法:

  • 朋友或家人,或朋友或家人的朋友。
  • 本地聚会,la metup.com  或用户组(谷歌为“我附近的红宝石用户组”或类似名称)。无论如何,这是一个好主意,目的是建立一个由同伴,导师和可能的雇主组成的网络。
  • 校园团体(如果您在大学校园内或附近)。
  • Reddit.com(自然)–  r / learnprogramming  是一个不错的起点(您在这里!)或特定于语言的subreddits,例如  r / learnjava
  • Slack上的本地虚拟组  。Google搜索“技术闲置<我的城市>”或“开发人员闲置的<我的城市>”之类的东西
  • IRC,Internet中继聊天。这就是松弛的现代化,并且已经存在了数十年。数量惊人的科技公司都在IRC开展业务。谷歌“ <我的语言> IRC频道”找到一个。
  • Facebook群组(尽管我发现这些通常质量较低)。

其他选择

有两种主要的自我教学替代方法可以解决大多数困难,尽管需要付出一定的代价:

  • 大学学位课程
  • 编码训练营
  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: