是否可以将时间花在Programmers.SE或Stack Overflow上代替初学者的优秀编程书籍?[关闭]


44

可以花时间(并积极参与)Programmers.SE和Stack Overflow来帮助我提高编程技能,几乎与花时间阅读诸如Code Complete 2这样的书(否则我的阅读清单中的第二本书)会有所帮助。

好的,也许是对于刚开始编程的人这个问题的答案可能是直接的否定,但是我想补充一点,我问的这个问题是在此人熟悉编程语言但想改善时他的编程技巧。我正在阅读有关SO的问题,并且这本书已经被许多其他人(包括JeffJoel)推荐。

更具体地说,我还要补充一点,即使我使用C,Java,Python等进行编程,但是我仍然对自己的编码技能不满意,并且阅读了CC2的评论后我意识到我仍然需要改进很多。

因此,基本上,我想知道提高我的编程技能的最佳方法是-在这里/ SO上花更多的时间,或者继续使用CC2,并在时间允许的情况下来到这里。


1
可能的重复内容/相关内容:堆栈溢出是一种学习新事物的方法

1
对于初学者来说绝对是不知所措。
surfasb 2011年

Answers:


102

不,它不是替代品,而是完美的补充。我觉得两者的结合拥有很大的力量。

为什么一个好的演讲会教给您的不仅仅是阅读书本?互动能力和提出问题的能力。

仅阅读一本书,可能会弹出一些您找不到任何答案的问题。在这里查找这些问题,或者询问是否以前没有讨论过。


+1为完美补充。我只能想象,如果SE或SO出现,八十年代对我来说会是什么样子。他们是巨大的资源。
迈克尔·赖利

1
+1是对完美补充的完美补充。刚看完“真实世界”的问题,并试图回答(或复制现有的答案的解决方案)是伟大的迷你katas提高技能,知识和直觉
戴夫·牛顿

如果有的话,以易于理解和访问的渠道表达问题和解决方案的能力,不仅可以提高您的通讯技能,还可以提高您作为开发人员的能力。
surfasb 2011年

+1(再次)完美称赞。我每天都读P.SE。我并不总是阅读所有答案,但我阅读了大多数问题和最重要的答案。这是一种让自己思考本来可能不会遇到的事情的好方法。有时,我在问答环节中看到的内容与我正在做的事情并不直接相关,实际上最终也很有用,这很好。
安迪·亨特

12

我(目前)已经成为StackOverflow的成员1年零10个月了。在这段时间里,我成为了一名训练有素的学生:建筑,图案,去耦,单元测试等方面的知识,而且清单可能还会继续……但是,SO发挥了什么作用

首先,它回答了我的紧迫问题。但是,当我开始探索SO时,我发现自己是一个非常糟糕的程序员。想要成为我的手工艺品的工匠,我买了书...但是,这并不是我需要的C#发行,学习C#编程或其他不合标准的初学者文字。我买的样的书,我发现了有针对性的技能领域有缺陷。当然,我花时间看了SO专家的建议。

其次,SO为我提供了一个继续向(以声誉为代表)在语法和哲学上真正了解自己在做什么的人学习的地方。关于SO,CodeReview和编程器,您将无法从书中获得一定的见识。

显然,SO无法替换书籍或所有其他Web资源(尽管,如果我可以将MSDN和SO合并为一个内容资源...);相反,SO补充了这些其他资源。但是,最好的老师仍然经验丰富


11

对我来说,提高编程技能的最佳方法是什么?

编程更多。阅读书籍和网页是次要的。

您可以通过做中学到最好的东西。


17
是的,没有。无需学习即可完成更多工作。我可以年复一年地使用某种语言编程,而不学任何新知识。阅读和学校教你“舒适区”之外的东西。还不足以表达反对意见,但imo仍然不是一个好评论。
WernerCD 2011年

1
事实是,我在编程时经常没有学习。因此,我用PHP创建网站时并不了解对象或使用框架。您必须远离代码并开始学习
Bojan Kogoj 2011

@Werner-非常正确。我的意思是“更多地编写程序”,即“找到想要构建的东西,最好以一种新的方式来构建它,以便学习新的东西”
Humphrey Bogart

我记得当我是实习生时,工作中的“老师”有时会给我们编程任务,希望我们能从中学到最好的东西。问题在于,无论问题出在哪里,我们通常都还没有达到这个水平。当有人问她一个问题时,她会一直说:“哦,这很容易!您需要弄清楚。您将以这种方式学习得最好。” 几个小时过去了,我们仔细研究了文档,尝试了一些工作,等等。当她终于告诉我们答案时……
Panzercrisis 2014年

...这简直我们根本无法得到必要的信息。当我们没有时间,有时我们或者公众无法获得这些信息时,可能需要整整一周或更长时间才能找到必要的信息。这么说就足够了,指导非常重要,仅当某人准备好并达到那个水平,简单地告诉某人自己解决问题是一件好事。
Panzercrisis

5

学习需要一些要素:

  1. 学习者(当然是您)
  2. 时间(您应该管理和奉献)
  3. 资源(从中,SE站点仅占一小部分)

你是一个好学习者吗?你花足够的时间学习吗?如果这两个问题的答案是肯定的,那么您已经有足够的潜力学习几乎所有资源。

但是要回答您的问题,是的,我个人从SE网站中学到了很多东西。恕我直言,它们不应该成为您唯一的学习资源,但是它们是有益的。


5

SO和P.SE提供了两件事,它们自己都不提供阅读其他书籍或编写代码的要求:测试和教学。如果你只是盲目地问诸如

为什么不编译

wall
of
code
100
lines
long

有人说“在第33行,逗号应该是分号”,您接受了答案并继续进行,并且永远永远问同样的问题,那么您可能就不会有所改善。

但是,如果您正在阅读其他人的问题,思考答案,观察看到哪些答案以及它们与您所知道的比较,那将真正改善您。如果您在自己喜欢的编辑器中键入一些代码,然后尝试一些操作以查看答案,那将真正改善您的生活。而且,当您开始尝试解释概念时(人们正在那里等着“澄清”您的言论),这也会使您有所改善。

大约30年来,我发现自己从来没有学过如此出色的主题,而当我相信自己知道该如何去教它的时候。对我来说,这是* .se网站对我作为开发人员的技能的主要贡献。另外,当我只想知道一个简单的事实时,这是我排名第一的地方(或偶尔问)。


3

不通过阅读网站或书籍,而是通过重复学习,可以最大程度地提高您的编程技能

  1. 根据当前知识编写代码
  2. 评价结果
  3. 从评估中学习做什么和不做什么。
  4. 转到1

实践使完美。在博客或书籍中看起来不错的内容可能由于某些原因而难以使用,原因是博客作者无法理解,或者书籍作者没有涵盖。


2
书籍(以及博客和SO)可以使您了解一些自己可能无法想到的概念,但是通过编写代码,您可以成为更好的程序员。
Annika Backstrom

2
另一方面,如果我从不过多关注外部建议,那我就不会太过分。其他人已经学会了艰苦的方法,不从他们的经验中学习是愚蠢的。当然,不要仅仅依靠阅读和听力,也不要犯在没有他人帮助的情况下尝试学习的错误。
菲尔(Phil)

外部阅读进入#2

必须进行外部阅读才能发现特定技术或编程语言或库的非显而易见,独特或高级的功能。它们并不是严格执行任何任务所必需的,但是可以改善您的执行方式(例如,元编程)。由于从来没有严格要求它们,因此人们很少单独通过实验来寻找它们。
Lie Ryan

2

正如您回答自己的那样,不,但是在这里花费时间是更结构化学习的有用辅助。我不会单独依赖它,因为某些概念中可能存在一些空白,这些空白可能没有涵盖。在中级水平上改善编码的最佳选择之一是,通过在GitHub或其他开放源代码存储库上花费时间来阅读其他优秀的开发人员代码。


1

仍然需要批判性思维和分析

本身没有。产生学习资源(书,博客,网站,SO等)的唯一方法是理解,分析然后反复合并。人们在这样的论坛上写的东西不是福音,无论它获得多少票,都不应被视为福音。您需要对提供的意见进行自己的分析,以找出是否为:

  1. 一个好主意
  2. 适用于您情况的想法

最好的改善方法

通常是特定于该人的。有些人通过阅读和研究变得更好。有些人通过游戏和实验变得更好。通过自我反思和分析,其他人甚至可以变得更好。尝试任何对您具有吸引力的方法,看看它是否对您更有效。


0

当我发现stackoverflow时,学习Java变得非常容易。我没有问问题,但我开始每天阅读Java问题。许多问题是我无法理解的,但是时不时有人问起初学者的问题。许多人会问他们从书中读取但不理解的概念,并在这里获得更易理解的答案,通常使用少量代码示例来进一步解释问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.