你好 如果您正在阅读本文,那么您很可能会问如何成为一名程序员。 也许您甚至决定学习Java编程语言,但不知道从哪里开始学习。 我还敢于承认许多人问自己一个问题:是否有可能在1年内学习Java? 如果我不以程序员的身份在大学学习怎么办? 我什至没有技术专长。 我可以吗? 我必须花多少时间上这节课? 您将学什么? 从哪里开始培训? 如果您至少有这些问题之一,那么您现在来对地方了。
不足为奇的是,很多人在一开始就迷路了,不知道从哪里开始,因为周围有太多的语言,很多编程书籍,各种培训,视频课程甚至是个人指导。 如何选择最适合自己的方法,以及如何在适当的时间范围内取得成果? 让我们依次讨论所有内容。
动机
在开始任何需要大量时间和精力的艰巨任务之前,您必须了解为什么这样做适合您。 我们每个人都必须为自己回答三个重要问题:
怎么了 是最困难的问题。 它是动力的基础。 您必须清楚地了解您的目标是什么,并且正在努力。 这里的钱应该不是主要原因,而仅仅是重要的补充。 如果您喜欢现代技术,喜欢创建某些东西,可以在自己喜欢的企业中坐几个小时,可以免费进行准备,并且有逻辑思维,那么这些课程很可能适合您。 您必须能够享受工作。 只有在这种情况下,才有可能取得真正的良好结果。
什么啊 -这是一个很合理的问题。 要成功解决此问题需要做些什么。 在这里,可能会出现同样的问题,选择哪种语言以及学习哪种材料。
怎么了 -如何在适当的时间范围内取得显著成果。
如果每个人都应该独立回答第一个问题,那么我们可以一起处理最后两个问题。
选择哪种语言?
假设有动机,一切都很好,我们可以继续进行下一个问题。 在选择任何语言之前,您必须了解劳动力市场中是否有职位空缺,是否会在您掌握基本职位之后立即开始求职。 同样,编程语言的复杂性也起着作用。 语言越复杂,您需要花费更多的时间来掌握它。 另一方面,选择最简单的方法也不总是一件好事,因为这里的竞争可能比其他类别的竞争更高。 为了确定该语言的前景,您需要分析使用该语言的位置,范围的广度以及用您选择的语言出现新框架的频率。 在这里,编程语言的等级可以为我们提供帮助。
我认为是时候用数字来备份单词了。 根据五个民意测验中的各种调查,Java,JavaScript,C ++,C和Python。
可以在Internet上找到大量的调查示例。 这里只是其中一些:
例如,根据定期发布编程语言排名的tiobe.com版本,Java多年来一直保持领先地位。 前五名也有C ++和Python。

另一个权威的统计来源是Stackoverflow网站,该网站在其用户中进行了调查,该网站表示JavaScript排名第一,而Java排名第五。 但是这里还考虑了HTML和CSS标记语言。

值得考虑的事实是,许多Java程序员在某种程度上可以了解JavaScript。 在JavaScript开发人员中,懂Java的人也很少。 这在以前的调查中为JavaScript增加了一些要点。
现在,让我们看看不同语言的候选人的空缺数目和回应。 为了避免长时间解释,我仅给出一些链接。 例如,DOU.ua网站定期发布有关职位空缺,薪水等的各种统计信息。 例如,您可以观察顶级语言中空缺数量增加的有趣趋势 ,然后就可以使用各种过滤器来显示不同城市和不同语言中空缺数量的比率。 数据以表格和图形形式提供。 像往常一样,这里最喜欢的是Java,Python,C ++ 、. NET。 此外,C ++的空缺/回复数量的比例最适合2018年,每个地方2-3人。 不幸的是,我找不到其他国家的类似统计数据。 但是在Habré上有一篇很好的文章专门介绍Java图表。
通常,您需要选择一种顶尖的语言,然后在毕业时,您将有很好的机会找到工作。
以我的拙见,Java是开始职业的好选择。 语言不太复杂,范围很大,而且有足够的空缺。 关于Java的知识将成为本文的下半部分。 如果我现在必须开始一切,那么Python可能会成为一个不错的选择,因为它正在积极地普及。
Java生态系统概述
为了使您更好地了解成为Java程序员所需要完成的工作,我们将简要概述Java生态系统。 我建议看下面的插图。 它当然不会涵盖所有方面,但可以使您有所了解。

与往常一样,我们在宇宙的中心拥有Java语言本身。 更具体地说,是Java Core。 在撰写本文时,Java JDK 10表现出众,甲骨文改变了使用Java版本的政策,现在版本之间的差异与发布Java 8时的版本之间没有太大的区别,该版本仍然是最受欢迎和经常使用的版本。绝大多数公司和项目。 您可以安全地从此版本开始学习该语言,并通过将新芯片强加于基础知识来学习新芯片。 对于初学者来说,学习这部分可能是最困难的任务。 您必须掌握一种新的活动并开始以不同的方式思考。 在此上还叠加了大量需要获取的材料。 刚开始辍学的大多数人正处于这个阶段。 这完全取决于您的动机。
如果学习Java很好,那么您将需要其他工具,例如版本控制系统(Version Control System)和用于构建项目的系统。 作为VCS,我建议使用Git,它是同类产品中的绝对领先者。 所有其他系统,例如Subversion和Perforce都已成为过去。 另外,您可以免费使用Github或GitLab存储库作为代码。 在企业中,您很有可能会使用Atlassian的BitBucket。 但这只是一个外壳。 如果您学习使用Git,那么其他所有内容都不是必需的。 Atlassian还是Jira和Confluence等产品的供应商,但这对您的学习没有影响。
至于用于构建项目的工具,有两个选项:Maven和Gradle。 以我的主观观点,Maven是可取的,但是其他开发人员可能有他们自己的观点。 原则上,两个框架都是等效的。
在您熟悉以上内容之后,值得考虑继续前进的方式。 在上图中,您看到了四个主要的移动方向:前端(HTML,CSS,JS),后端(Hibernate,Spring,SQL),Android和大数据。 这四个部分虽然在图中分开,但实际上紧密相连。 例如,如果您决定成为一名Full-Stack Java开发人员,那么您将必须认真研究后端部分,并对前端部分的基础知识有一般的了解。 不应期望您会参与网站的布局,但是您应该了解HTML。 我还应该注意,在“后端”部分中,Spring主要指的是Spring Core。 您需要从框架的这一部分开始。 现在它已经发展到涵盖Java开发所有方面的程度。 另外,Oracle试图推广Java EE规范,但是效果不佳。
至于BigData,还有大量技术。 基本上,它们都设计为使用Map-Reduce方法进行分布式存储和分布式数据处理。 这里最古老,最著名的技术是Hadoop。
我认为Android不值得解释。 我只能说,为了为此移动平台编写应用程序,您将必须学习Java。
您可能已经注意到,有很多Java应用程序,因此在可预见的将来,学习Java后,您将无需工作。
从哪里开始? 读什么?
显然,您需要从基础开始,即 Java Core。 然后是Maven,Git,然后是您喜欢的方向。
在这里,您有三个选择。 当您在大学选择该专业时,我们不会考虑这种情况。 她仍然不排除稍后描述的那些选项。
选项一-Java书籍迄今为止最古老,传统和最成熟的方式。 优势:知名出版商提供的大多数书籍都是由专业作者撰写的,其中许多人在著名的西方大学有数十年的开发和教学经验。 出版商自己也仔细检查了这些书,因此出错的可能性非常低。 尤其是当语言更新时,同一本书一次又一次地重新出版时。 阅读基础书籍后,您必须继续学习更高级的书籍。 在很少的地方可以找到被认为具有相同深度的高级编程主题。 缺点:许多书都是用干的学术语言写的,更像是参考书。 著名作家凯·霍斯特曼本人一再承认,他并没有完全阅读这些书,而只是阅读了那些有助于他解决当前问题的章节。
以下是最受初学者欢迎的最佳书籍(以下名称是英文,如果该书未翻译成俄文或未找到翻译):
- Java如何编程-Paul Daytel和Harvey Daytel。 这本书重印了许多,也许是最全面的Java教程。 除了语言本身之外,算法的基础知识在这里还算不错。
- Java哲学-Bruce Eckel-在程序员库中也赢得了荣誉。 易于理解的解释。 适合初学者。
- Head First Java,第2版-Bert Bates,Kathy Sierra-这本书因能够用简单的生活实例解释复杂的概念而广受欢迎。 内容不太深入,但仍然很有趣。
- 爪哇 专业图书馆。 第1.2卷-凯·霍斯特曼。 长期以来,这本参考书也摆在许多Java开发人员的书架上。 只是从这些书籍的类别中读取单独的章节来解决问题,而不是整本书。
- Java 8.入门指南-Herbert Shildt。 我自己没有读过这本书,但听到了一些积极的评论。 是否阅读-自行决定。
- Java中的数据结构和算法-Robert Laforet。 关于数据结构的最佳书籍之一。
- 爪哇 有效的编程-Joshua Bloch。 一本稍微高级的Java书籍。 它包含有关如何改进代码的大量提示和技巧。 最近发布了这本书的第三版。 强烈建议阅读。
- 实践中的Java并发-Brian Goetz。 是Java中不错的旧式多线程指南,它不会过时。
我建议向已经熟悉Java编程基础知识,但计划进行进一步开发的读者阅读最后三本书。 不会提供有关各种框架的书籍示例。 他们也写了很多。
第二种选择-不仅是编程的视频课程,而且还...视频课程和各种视频课程现在已经开始受到广泛欢迎。 这个想法本身很好,我个人很喜欢。 这种类型的培训材料特别适合视觉效果,适合那些视觉效果最佳的人。 此外,您还可以使用听力理解。 优势之一是价格合理。 此外,在YouTube上,您可以找到大量的免费课程,其中有很多不错的课程。 在YouTube课程的不足之处中,我应该指出的是,这些课程经常分散且缺乏系统化,而且其中的材料都只是肤浅地呈现。 但是,即使在这里,从字面上看也有例外。
其他YouTube课程可以是以下网站:
Safari O'Reilly-有关各种主题的大量书籍,视频教程和网络研讨会。 材料的质量是主要优势。 书籍和视频培训由该领域公认的专业人员录制。 这里的主要缺点是价格。 如果立即付款,则每年$ 400;如果每月付款,则每年$ 480。 所有材料均为英文。 如果您决定订阅,我建议由O'Reilly出版社自己准备的材料,它们通常比其他出版商的课程要好。
Pluralsight是视频教程的好地方。 关于主题的材料选择很大,但与以前的情况相比,它们大多是肤浅的。 这里的所有材料也是英文。 订阅价格为每月29美元或每年299美元。 在这里,与前面的情况一样,可以在支付订阅费用的同时访问资料。 您不能永远购买一两个课程。
Udemy是一个包含各种课程的大型图书馆。 区别在于这里的课程不仅是英语的,而且是俄语的。 这里的定价政策与以前的资源完全不同。 在这里您可以购买一门课程,它将永远存在。 选择有关Udemy的课程时,您需要注意视频课程的小时数,音质(通常有几门讲座无需注册即可提供),其他听众的评论。 在这里,我想推荐课程“ Java。 从简单到复杂 。 ” 就质量(小时数)到价格而言,这也许是俄语中最赚钱的Udemy课程。 通过点击链接,您可以获得90%的固定价格折扣。 仅需10美元,即可获得33个小时的出色视频内容。 在准备课程的过程中,作者分析了大量的课程,书籍和培训材料,并在开发企业级应用程序方面应用了七年的经验。
选项三-全日制课程另一个可以使您实现理想目标的培训选择。 这里的一切都是模棱两可的。 一方面,您希望参加全日制课程学习并告诉您所需的一切。 另一方面,无论如何,您都必须学习。 没有老师能教你他有多好。 在这里,就像在其他所有地方一样,这完全取决于个人动机和个人敏锐度。 因此,我有信心地说,从书籍和视频课程中可以逃脱出来。 这样做的好处可能是,优秀的老师将帮助您了解自己无法解决的问题,并能稍微加快学习过程。
在这里,就像视频课程一样,您需要仔细地进行选择。 与其他领域一样,需求创造了供应,预计市场上将有许多低质量的全日制课程。 质量低下的原因是不同的,原因并不总是老师。 一个普遍的问题是,为了增加收入,学校课程吸引了太多的学生,即使是最好的培训师也无法为每个学生投入足够的时间。 小组越大,学生将在小组中越多样化。 最后,该小组分为强者和弱者。 最后,您要么当场脚,因为老师必须多次解释同一件事,或者如果小组中的大多数人比您有更多的经验,您将无可救药地落后。 短暂的时间后,利息损失了,很明显钱被浪费了。 选择课程时,请注意对已经完成课程的人员的评论,课程的小时数,小组人数。 一个重要的指标是输入测试的可用性和最低要求的描述。
选择哪个选项?在这里,每个人都应该有自己的最佳选择。 根据作者的说法,最好的选择是将所有三个选择结合在一起,达到一个或另一个程度。 绝对没有书就行不通。 如果您决定参加一门全日制编程课程,那么首先您需要了解此活动是否完全适合您。 如果是这样,那么在您去那里之前,请至少阅读一本书,并观看一些视频教程。 首先,您将清楚地了解您的理解与否。 其次,以最低限度的基础,您可以提出正确的问题,并最终从课程中获得最大的收益。 第三,您可以上一门课程,要求学生比基本的计算机技能多一点。
一旦您掌握了最少的知识,就可以找到一位导师。 快乐并不便宜,但是如果导师很好,那么它将为您节省很多时间。 , — , , , , , .
?
. , . , . . Hello World , . . , . — , .
. , . . . , .
— . , . , . . , .
hackerrank . , . .
GitHub GitLab. , . - . , . , , , , . , . .
在此级别上,您很可能能够走私到开源中。如果还没有工作,请在那里练习。您受益,社会受益。
与存储库同时进行的是,准备简历并开始超越公司门槛的时候了。切记在存储库中包括项目的链接。获得尽可能多的采访。通过它们的能力是一项非常重要的技能,最终将为您带来额外的收入。
最后,祝您好运。记住,Facebook和苹果公司也曾经是小型公司,有人在车库或宿舍里。只需要学习。每天学习多少小时都没有关系,但是您连续学习多少天都没有关系。