在此博客文章中,我想提供在我通过Launch School核心课程和Capstone工作时发现有用的书籍和资源列表。 我将重点介绍那些我认为与普通读者(核心课程或Capstone课程的学生)最相关的主题,同时避免使用过于具体的利基主题(例如容器,P2P体系结构,NoSQL数据库等)。 。
我用来选择这些资源的经验法则是,它需要与我当前正在学习的课程平行运行,同时还要给我一些有关课程材料的深度知识。 通过单击资源标题可以访问到资源的所有链接。
有了这些,我们开始吧!
红宝石
我为Ruby选择的资源少于其他领域,这主要是因为LS课程为您提供了大量的材料。 此外,核心课程的前两门课程(101、120)一开始可能会让人感到不知所措,因为它们涵盖了所有信息,我也不想在这些课程之上过多介绍。
雄辩的红宝石
这是一本很棒的书,在完成了101和120课程的核心课程之后,您可以通读。 拉斯·奥尔森(Russ Olsen)提供了广泛的主题,如果您发现随着时间的流逝而对Ruby感到生疏,它可以作为一种受欢迎的复习。 我还发现写作很清晰,作者在保持您的参与方面做得很好。 此外,它还为您提供了简短,自成体系的主题章节,同时还告诉您在哪里遇到该主题的麻烦以及如何避免它,可以作为一个很好的参考。 本书的前半部分与LS学生有关,如果您想进一步提高Ruby技能,可以阅读下半部分。
红宝石战士
我爱这游戏! 这是在120课程中练习OOP技能并为129评估做准备的一种绝妙方法,难度会在几个级别后逐步提高。 尽管您可以通过一些大的条件来处理前几个级别来处理障碍,但是您很快就会发现自己不得不重构代码以处理更复杂的级别。 我选择此资源的原因是,尽管120提供了很多很棒的资料,但我发现自己需要更多练习编写OO代码来巩固概念,而这个游戏很好地解决了这一需求。 这个游戏为我提供了这方面的知识,同时也比我自己想出的任何例子都困难。 另外,它充满了乐趣!
的JavaScript
与101和120一样,涉及JavaScript的LS课程在教授您需要了解的知识方面也做得非常出色。 使用JavaScript,我获得了可帮助我理解该语言的许多怪癖或补充核心课程最后几门课程某些领域的资源。
JavaScript:好的部分
本书非常擅长简洁地解释JavaScript的好部分,并包括一些要避免的坏处。 我曾经有很多人说这本书有助于进一步理解语言,并为他们准备有关JavaScript的面试问题做准备,我完全同意他们的观点。 LS为您提供了所需知识的核心,而Douglas Crockford则通过真正针对要复习和了解的重要主题来进一步提升您的知识。 都在一本奇妙的小书中!
节点学校
NodeSchool是免费的讲习班集合,您可以下载这些讲习班来学习JavaScript和Nodejs,如果您想学习全栈JavaScript,那么后者非常重要。 Nodejs是一个旨在在服务器上运行的JavaScript运行时,其许多主题在LS课程中并未完全涉及,例如使用Promise,访问stdin / stdout流,使用npm等。
对于核心课程的学生,NodeSchool举办的研讨会可以与LS JavaScript课程很好地配对,并提供练习以练习您的技能,然后再进行评估和项目。 相关的研讨会涵盖了基本的JavaScript,调试,原型,范围和闭包以及测试。 如果您发现需要使用JavaScript进行更多练习或对某些主题进行有针对性的学习,我强烈建议您使用NodeSchool。 并且,一旦您完成了核心课程,就可以参加Nodejs讲习班,因为Nodejs是一种非常流行的技术,并且经常在许多Capstone项目中使用。
你不懂JS:书籍系列
本系列真是个庞然大物,只有在您准备239评估或完成前端课程后,我才会推荐它。 该系列中有六本书(都可以在线免费阅读),作者Kyle Simpson剥离了JavaScript随附的许多抽象层。 我对此系列的真正赞赏是每本书都是完全独立的,因此您可以深入研究您想学习的领域。 特别是,有一本关于ES6的整本书,很好地完成了LS课程,因为在上一门课程中(至少在撰写本文时)并没有深入介绍ES6。 我还发现有另一本关于此和对象原型的书,对我理解学习JavaScript时最难的概念之一很有帮助。 并且,一旦您完成了核心课程/顶点,就可以对这些书有更多了解。 对于那些希望非常好学习JavaScript的学生,我认为它们是“整理学校”的一部分。
终奌站
终端/外壳是每个开发人员库中必不可少的工具。 这是我们的工作台,用于构建项目,运行代码,调试,监视等等。 并且,当您开始使用远程组件开发整个系统时,您将必须非常习惯仅在命令行上工作。 作为开发人员,我们的技能取决于非常了解我们的工具,并从终端学习如何操作您的计算机(以及将来的整个系统),这将为您的未来职业带来丰厚的回报。
对于大多数学习核心课程的LS学生而言,他们在命令行中的使用通常是浏览文件系统,创建和删除文件/目录,使用Git和Github以及进行项目。 很好,下面的前两个资源最相关。 对于希望走得更远的学生或希望做Capstone的学生,在开始构建要求他们使用远程服务器,处理多个进程,访问std / stdout流等的项目时,后两个资源将非常有用。
掌握外壳
本课程是对LS命令行手册之外的Shell主题的简要介绍。 好处是您将看到它的功能强大,并且无需使用Ruby或JavaScript就可以执行许多任务。 本课程也是获取以下资源背景的一种好方法,而且它可以在一天内完成(是的,具有讽刺意味的是,可以在一天之内完成的名为“精通Shell”的课程我,但仍然值得一看)。
命令行的艺术
关于命令行,这是要了解的重要内容。 基础知识和日常部分非常适合使您更加了解终端可以做什么,我已经从终端中学到了很多有用的技巧。
这主要是为了帮助您在日常任务中使用命令行来提高工作效率。 我不建议您一次完成所有步骤,因为范围广,很多要点都可能导致潜在的兔子洞。 查看基础知识和日常章节,并随着时间的流逝回到这份备忘单。
LS Linux学习小组
了解了基础知识并了解掌握终端的动机后,建议您查看LS Linux Study Group。 该小组由同学Ian Evans发起,是一个很棒的资源,可用于进一步学习终端,shell和Linux,并提供精选的要研究主题列表,并且同学们可以互相帮助学习。 您还可以加入一个闲聊频道,一起讨论主题!
Linux命令行
这是LS Linux Study Group使用的主要资源之一,这是有充分理由的。 本书将极大地提高您对命令行的知识,并帮助您实现对计算机和系统的控制权,并且作者慷慨地免费提供了该功能。
在启动学校之前,我将计算机主要用于学习,浏览互联网和社交媒体达25年之久,并且主要将其视为“黑匣子”。 但是LS与本书以及上面的资源相结合,确实显示了在实际“驱动”计算机时,您可以拥有多少控制权。 第1 + 2部分将与许多LS学生相关,而第3 + 4部分则是以后学习和项目的良好参考部分。 我建议您在完成170门课程后再阅读本书,并查看LS Linux学习小组。
算法与数据结构
现在我们来讨论算法和数据结构,这不仅对于求职面试而言至关重要,而且对于提升开发人员的水平也至关重要。 此处列出的资源提供了背景和上下文,关于练习代码挑战的下一节将为您提供使用它们的机会。 完成核心课程或即将开始Capstone时,请查看这些资源。
基础CS
这个博客系列是灌篮高手,我很着迷。 Vaidehi Joshi用了整整一年的时间写关于算法和数据结构的文章,每篇文章都包含了很多深度。 文章中没有任何代码,但是您将了解有关数据结构/算法的背景,使用方式和原因以及使用它们的权衡。 我使用本系列文章来获得开始解决编码难题所需的背景信息。
注意:作者最近启动了一个名为BaseDS的新博客系列,该博客每隔一个星期三深入研究分布式系统。 她的第一篇文章已经发布,可以在这里找到。
算法常识指南
本书在许多方面与BaseCS系列相似,因为它提供了有关算法和数据结构的背景信息。 之所以将其包含在此列表中,是因为每一章都有所涵盖主题的代码实现,并且我发现它对阅读新主题的不同方法很有帮助。 这是弥合差距之间的另一个有用资源,可以使您了解数据结构/算法,然后能够使用该知识来解决问题和开发项目。 另外,这本书已成为Capstone课程的一部分(在撰写本文时),因此已对其进行了全面审查,并能证明其价值。
极客
该网站提供了广泛的数据结构和算法信息。 除了内容丰富的文章外,还存在解决方案和建议项目的编码挑战,这些问题和建议项目需要使用您从前两个资源中获得的知识进行实践。 我认为GeeksforGeeks是BaseCS和算法常识指南的进阶步骤,因为它使用了更多的技术语言,并且大量使用Java&C ++解决方案来解决问题(尽管许多问题的确有Python解决方案)。 这不是LS学生的真正障碍,但我发现我需要更多的时间来熟悉陌生的语言语法。 请记住,无论语言是循环还是循环,条件还是条件,依此类推。
应对代码挑战
因此,现在我们来用您已获得的所有知识来解决问题! 这是我最喜欢的一些练习网站,可在核心课程中使用这些网站进行额外练习或为找工作做准备。
LeetCode和CodeWars与运动
这些站点列出了数百个提供的测试用例的问题,其中许多都有解决方案供您学习。 我特别喜欢LeetCode的地方是,它还根据数据结构对问题进行分类,因此您可以将时间集中在需要练习的主题上。 此外,许多公司直接从LeetCode中提取面试问题,对于开发人员来说,解决他们的问题之一并非闻所未闻,然后进入面试,并得到完全相同的问题。
欧拉计划
另一个有用的站点,可帮助您练习解决问题的技能,重点是数学。 我曾经读过一篇文章,该文章提倡开发人员以他们正在学习的任何语言来解决该站点上的前50-100个问题,以巩固语言的语法和复杂性,我认为这是个好主意。
JS30系列
本系列包含30个针对这些HTML / CSS和JavaScript技能的小项目。 关于DOM和异步JavaScript的230门课程包含大量的项目和练习材料的练习,我仍然发现这些项目有帮助。 当您开始制作动态Web应用程序和处理用户事件时,会有很多概念混杂在一起,而且我发现,您为练习而完成的项目越多,您的技能和信心就会越高。
系统架构与网络
这最后一个领域适用于已经完成核心课程,开始学习Capstone或有足够空闲时间来考虑学习有关系统体系结构和网络的更多知识的学生。 这些资源将帮助您进入更广泛的编程和设计完整系统的世界,并且有助于准确了解Web应用程序及其各种组件的组合方式。
高性能浏览器网络
这本书很棒,作者Ilya Grigorik慷慨地免费提供了在线版本。 我从本书中学到了很多有关浏览器网络,HTTP,TCP / IP,延迟,带宽,优化等方面的知识,并且认为它有助于弥合核心课程与Capstone或求职之间的鸿沟。 但即使在那之前,您会发现对某些LS课程有用的章节。
它为170课的学生提供了有关HTTP和TCP / IP的深度信息,描述了优化资产交付以减少230课的学生对Web应用的等待时间的技术,并提供了有关技术的部分,如WebSockets, WebRTC等。就我个人而言,我发现这本书是团队Capstone项目SpaceCraft成功的基石。
网页架构101
该博客很好地概述了构成Web应用程序的许多体系结构组件,例如Web服务器,缓存,内容交付网络(CDN),作业队列等。 它可以帮助您查看Web应用程序的高级设计,并描述每个组件如何适合该设计。
系统设计入门
阅读Web Architecture 101博客后,请查看有关系统设计的Github存储库。 它采用了以上博客中的每个组件,并提供了大量信息,以及使用每个组件的权衡。 它还对Dropbox,Uber,Facebook等使用的系统进行了案例研究,这将为您在求职期间的系统设计面试做准备。
排除项目
现在,我已经提供了建议,我想翻阅一本我曾经在LS学生中扔过的书的清单,或者在许多“程序员应阅读的书”的热门清单中找到的书,但是我不会建议您此时阅读。 我将在下面说明原因以及何时使用它们。
经验丰富的Rubyist
这是一本很棒的书,它是每个Ruby开发人员都应该阅读的许多书籍清单的一部分。 实际上,当我参加101和120课程时,我曾经向其他LS学生推荐这本书,但我已经停止这样做了。 之所以将它排除在外是因为它们都进入了太多的深度,而且101和120课程已经涵盖了许多主题。 因此,它实质上重复了您将在这些课程中学习的许多材料,并且每一章都非常精通。 如果您发现自己使用Ruby,我会推荐这本书作为将来的参考。
Ruby中的实用面向对象设计
这是有理由的,这是另一本面向Ruby开发人员的热门书籍。 桑迪·梅斯(Sandi Metz)是一位了不起的老师,并且确实分解了如何编写好的OO代码。 但是,由于它旨在教会您如何养成不良习惯,发现麻烦的模式以及如何以一种新的,更好的方式与OOP一起使用,因此本书在该领域对工作的开发人员(而不是LS学生)更有用。 如果您以前从未看过,本书中涉及的某些主题听起来似乎是个好主意,但是只有在您感到编写或使用不良/有问题的OO代码的痛苦时,这些主题才会真正流行起来。 这是我职业生涯的书架,但不是LS核心课程的书架。
雄辩的JavaScript
本书面临着《 The Well-Grounded Rubyist》的相反问题。 它教您JavaScript的目的是使读者对语言的知识为零,同时提供的语言课程也很少。 如果您完成了LS JavaScript课程,那么您将已经涵盖了本书中的所有内容以及更多内容。
破解编码面试
这本书被广泛认为是求职必不可少的,我同意。 它为面试提供了很多问题,描述了顶级科技公司(Facebook,Amazon,Microsoft,Google,Palantir)的面试过程,甚至给出了解决问题的步骤,以添加到PEDAC中以优化您的解决方案。 但是,这本书的用途极为狭窄,除非您即将开始寻找工作,否则您无需接手。 一旦开始求职,请将本书与LeetCode和GeeksforGeeks结合使用,以最大程度地练习。
实用程序员,简洁代码,珍珠编程,代码完成
所有这些书都很棒,在您的职业生涯中应该在书架上占一席之地。 但是,它们与Ruby中的面向对象的程序设计有同样的问题-它们的目标是提高专业开发人员,而不是仍在学习基础知识的新开发人员。 这些书旨在使您成为一个更好的工作开发人员,而且我所涵盖的许多课程是我认为您需要先体会到痛苦之后才能体会到它们的课程。 您必须一次学习一个东西,而这些书就是您开始职业后迈出的第一步。