我是一名CS学生,在C和C ++方面拥有多年经验,最近几年我一直在与Java / Objective C进行应用程序开发,现在我转向了Web开发,主要是专注于Rails上的ruby,我意识到(与应用程序开发一样,)我过多地引用了其他代码。我不断地在许多功能上使用Google功能,我想我应该可以从头开始做,这确实使我的信心大打折扣。但是我可以在sprint中同时在java / python和python中运行javabat-显然不是一项成就,但是我的意思是说,我有扎实的基础知识?

我知道自己需要通常使用,但经常引用语法。我很乐意为此提供一些建议和意见,因为即使我正在完成学位,这也一直使我在寻找该领域的工作方面受到很大的阻碍。我提出这个问题的主要原因并不是关于就业的问题,而是我不想成为唯一的黑客马拉松比赛的参与者,因为他不会敲开马不停蹄的代码并坐在那里打开20个Google / github标签,而且我不参加任何活动由于稍微缺乏信心...

通过不断地为中等到复杂的任务编写代码示例,这是一个不好的开发人员吗?

评论

这取决于我正在处理的内容,而我几乎不需要进行任何查找就可以处理很多工作。更陌生的是,我一直在寻找示例。

取决于您是否真正自己编写一些代码。

我的妻子在电视上观看那些烹饪比赛和杯形蛋糕锦标赛,他们用很少的时间用随机的原料烹饪出美味的饭菜。很多时候,食物太糟糕或煮得不够好,当然也不是最好的食物。他们很适合表演,但我宁愿我的厨师花点时间做对的事情。黑客马拉松也可以这样说。扎克伯格和他的亲朋好友都是骇客马拉松小伙,他们很快编写了一个糟糕的网站,一旦他们开始获得更多用户,就必须重写。大多数人都希望您第一次就做对。

我的老板总是说:“程序员技能的最好衡量标准是他进行良好的Google搜索的能力”。我认识的所有程序员都在Internet上寻找示例,但只有坏的程序员会盲目地粘贴。如果有人已经做了您想做的事,为什么还要重新发明轮子呢?

研究很重要。只是不要从事我所谓的BSDD(博客垃圾邮件驱动的开发)

#1 楼

盲目粘贴:不好。

查找文档,阅读代码示例以更好地理解:很好。

我宁愿与一个看起来一切都很好的人一起工作时间,并确保一切比预期的工作要好,而不是一个自以为是的人,他以为自己知道一切,但不知道。但是最糟糕的是,一个人不愿意去理解事物的工作原理,只是不加批判地从Web复制代码(然后,当错误报告开始下雨时,它就无法正确地修复任何问题)。

评论


@NewlyInsecure没关系...一些像我这样的软件开发人员认为参加黑客马拉松的人是荒谬的。他们中的大多数都是伟大的程序员,但可怕的软件开发人员却喝了太多的红牛。

– Maple_shaft♦
2012年6月8日13:45

开发人员很容易知道某人已经做了一些事,并寻找示例并加以改编。开发人员不会浪费时间将颅骨砸在墙上。

–大卫
2012年6月8日14:07

@NewlyInsecure比较杀死。认真地讲,您与他人的比较越多,您变得越沮丧,越无动力和越害怕。根据真理而不是其他所有人的信念来形成自己的信念。如果黑客马拉松的人们可以更快地发布更多代码,谁在乎?即使这是技能的指标,无论您的技能如何,总会有比您更聪明的人。

–菲尔
2012年6月8日14:07

就个人而言,如果我发现一个已经或多或少地完成了我想做的代码示例,我会对其进行研究,以便理解。如果这是一段更大的代码,我会做笔记,然后再为我的特定情况编写一个伪代码解决方案,然后尝试用实际代码实现我的伪代码。我认为这里的关键以及tdhammers和David提到的关键是我不是在盲目地复制代码。我正在查看它以了解它在做什么,然后将其思想整合到我的特定解决方案中。

– Shufler
2012年6月8日14:31

@NewlyInsecure:您还有两点不利于您:首先是API变得比过去更大,更复杂,这使得它们更难记。第二个是年龄,您现在没有年龄,但是会在知道之前知道。随着年龄的增长,您会发现自己无法记住所有事情,并且将开始为真正需要了解的知识保存脑细胞。培养进行研究并找到您已忘记的细节所需的技能非常重要。

– Blfl
2012年6月8日14:37

#2 楼

如果您以可维护的方式编写解决方案的代码,并且实际上了解复制/粘贴/修改的内容,那么就没有问题。

每当我问一个高级开发人员有关他为什么做的事情以及答案是“我不知道,我复制粘贴了代码,并且在给定的时间起作用”。

评论


有时,我会不以为然,以为自己可能不会像开发人员那样出色。然后,我读了这样的一句话,对自己感觉好多了。

–水罐
2012年6月8日18:00

@TheJug,请记住,您既是一个更好的开发者,也是一个比您想象的要差的开发者。

–乔
2012年6月8日18:57

#3 楼

就像有/没有API文档进行编程的技巧一样,寻找代码示例并不是不好的程序员的标志,而是缺乏流利程度的程序员的标志...


...在这里,我说的是流利程度。关于不仅要具备某些能力,还要具有流利能力。

你知道要流利吗?当有人看着你的时候,似乎就像在键入代码一样......


...好像正确的代码只是从手指流到屏幕一样。就像您没有查看API文档,教程和手册一样。实际上,您确实检查了所有内容,但这是不可见的,因为它们全在您的脑海中。您已经掌握了大脑所需的所有知识,这些知识已被充电,加载并可以立即使用。

...那是流利的知识。这是您花一分钟时间做一个新手要花一个小时的时间。确实值得付出努力。闻起来像胜利。


...对我来说,练习是获得流利的唯一可靠方法。

评论


关于流利度的要点。我精通COBOL。我在IT领域休息了20年,现在又回来学习Java。我本能地知道如何在COBOL中做某事...但是学习Java流畅度的一部分过程是查找代码示例,分析它们为何起作用,并使它们适应我的特殊需求。当您学习一种新的VERBAL语言时,首先经常会参考意大利语-英语词典,但语法和时态却不正确,最终有一天,您说的像母语。时间和练习是关键。不用担心... :)

– dwwilson66
2012年6月8日14:45

@ dwwilson66问题是,尽管每天我需要记住四种“语言”-服务器端编程语言,客户端脚本语言,客户端标记语法和客户端样式语法。我只是想不通所有这些-就像试图同时用意大利语,中文,英语和克林贡语进行对话。

– Tacroy
2012年6月8日15:50

@Tacroy-没错!没有流利度,您需要资源来提供帮助。如果您需要查找完整的短语而不是偶尔仅查找一个单词,这并不会使您比“克林贡语”人“少”,只是不如其他单词那么流利。

– dwwilson66
2012年6月8日在16:05

最后一句应该突出显示,而不是隐藏在下标中。除了沉浸之外,没有其他方法变得流利。

– jmlane
2012年6月8日在16:15

@ dwwilson66注意,在Java和COBOL中应该做的事情大不相同。对象与复印书不同。

–user1249
2012年6月8日18:25

#4 楼

有一种称为科尔布循环的学习理论(在描述它的人之后)。该周期中的条目是:

Concrete experience -> Reflective observation
    ^                        |
    |                        v
Active experimentation <- Abstract conceptualisation


不同的人喜欢从周期的不同位置开始。因此,完全有可能通过寻找样本(反射性观察阶段)进行学习,然后通过抽象将样本从大到大。

其他人将以不同的方式学习:有些人喜欢首先尝试(即通过实验)然后思考是对还是错。关键是这些只是解决学习问题的不同方法:没有一个是错误的。

评论


+1有趣。凭直觉,我希望一个人至少要经历其中一些阶段才能学习,对吗?也就是说,仅仅进行观察可能不足以进行真正的学习-您需要考虑自己所看到的并尝试一下。

–卡莱布
2012年6月8日15:57

我真的很喜欢我从使用大多数语言的“反射观察”开始,但是在PowerShell中,我通常从“主动实验”开始

– Caleb Jares
2012年6月8日在16:55

@caleb正确。在这个周期中,您会逐步过渡,直到完成所有四个步骤之后,才可能完全不内部化某些东西。从这里开始,变化最大。

–user4051
2012年6月8日17:13

#5 楼

完全公开-我是一位老人,曾在工作时代接受过不同的预互联网培训。我已经看到了年轻的开发人员的技能稳步下降的主要原因是他们没有保留信息或不了解他们从Internet上获取的解决方案。我观察到,一个人经过1-2年的经验(即20年前)的能力水平现在是某人经过5-7年的经验后的能力水平。 (是的,这是个人观察,但我已经做了很多招聘工作,没有关于此事的统计数据,是的,我有时又老又胡思乱想,带着一丁点儿的话说这句话。 )

查找所有内容在时间上效率低下。这也是没有太多知识的人的症状。知识渊博的人比不查找问题而不解决问题的人能更快地编写代码。因此,值得去学习处理更多的事情而不必不断地查找事物。

现在,我并不是说您永远不应该查找事物,而是要学会保留知识,只需要查找很少使用的事物,或者遇到全新问题或语言或范式。我并不是说您不应该阅读以跟上新的解决方案,工具和语言。

我对那些经常查看事物的开发人员的真正关心是,太多的人(不一定是您)从来没有开发分析技能来理解他们所遇到的问题和所需的解决方案。阅读此人在他或她显然不理解的错误消息中出现了多少个问题,但是对于专业水平的人员来说,这应该很清楚。或有人说“这不起作用,为什么?”的人。没有参考错误消息或错误消息的方式,并且代码在语法上是正确的。或者给那些应该提供一段代码的人,但是他们急于先回答这个人,却犯了一个明显的语法错误(比如说说我在SQL联接中缺少ON关键字以使用我今天看到的示例),并且海报回来时,第12行出现错误。为什么是,如果您看第12行,则很明显,如果您具有基准能力,那么该错误是什么。这些已经使用了六个多月的语言(如果要访问数据库,则应该包括SQL)是该语言的核心功能的一部分,我怀疑您的查询太多了。如果您正在查找的是高级功能,尤其是那些您可能很少使用的功能,那么您就可以了。

但是如何学习保留更多信息?首先了解为什么代码会中断。即使有人为您提供了可行的解决方案,如果您看不到为什么有效,而您的解决方案却无效,请询问。如果您不理解该错误消息,请询问错误消息的含义,然后尝试自己解决。

切勿剪切并粘贴您不了解的解决方案。实际上,根本不要剪切和粘贴。如果要保留信息,则需要输入信息。实际上,亲自亲自编写代码可以帮助您学习。那是一种众所周知的学习技术。

练习概括您对代码的理解。我看到人们随着时间的推移一遍又一遍地问类似的问题,因为他们不了解一个月前解决ABC的解决方案与新问题DEF的解决方案相同。

因此,当您研究了某些内容后,请花点时间考虑一下哪种类型的问题对解决问题会有所帮助,并为此写下自己的注释。然后,当您有问题要解决时,请先检查您自己的笔记以了解您已经注意到了一种可能的技术。如果您评估解决问题的多种方法,请记下问题的类型,查看的可能解决方案以及每种解决方案的利弊。再次记笔记可以帮助巩固大脑中的知识,您已经根据自己的利弊制定了自己的思维过程,而不必再次这样做(或者至少不必那么深入仍在寻找更多可能的技术)来解决下一个类似的问题。

在决定下一步要学习什么时,请先深入研究其中的一项主要技术,然后再开始学习头30天有价值的另一项技术(这假设您具有足够的知识面如果您需要使用6种技术,请执行您的工作-在深入研究之前,首先获得全部6种基础知识)。然后来回学习,在基本级别上学习新东西,更深入地学习某些内容,然后在基本级别上学习更多新技术。如果随着时间的推移进行此操作,您会发现对新技术的基本了解会更深入,因为您了解一些更高级的问题。

学习保留知识的另一种方法是将其教给他人。在这样的地方回答问题,向您的团队介绍培训主题,在您的本地用户群中进行演示,编写博客条目,并帮助您维护公司的信息维基,以帮助其他开发人员。

评论


这里有一些非常好的要点,但是我认为它会因为“过去的美好时光”而受苦。数千年来,人们一直在谴责年轻一代的堕落。我尚未看到有力的证据来支持它。

–user25946
2012年6月10日在2:05

+1 @JonofAllTrades ..man,我希望我可以回去二十年,赚一百万美元,因为我知道..FoxPro。只要。但是不,如今,您需要胜任小型星系技术的工作,才能竞争常规职位。可以同时设置和配置Apache和IIS吗?您是否熟悉一种或两种SQL方言,能够编写SPROC并且至少具有轻巧的管理能力?您是否有能力使用几种服务器端语言和至少一种用于数据处理的功能性脚本语言? ..如果您是为网络编程的,那么您的东西可以在主要的浏览器和移动设备上运行吗?

– elrobis
14年5月6日在16:49

这种说法仅对20年前已经存在的技术有意义。是的,您很幸运能找到一份工作,而该工作几乎只具有SQL知识(您的“码”),而按照当今的标准,这是不够的。

– prusswan
16-4-27的4:48

@prusswan,我是专家,而且在我的竞技场上,还有更多的工作无法解决。但这与我在答案中所说的有什么关系呢?我正在谈论的事情对于所有技术都是可能的。问题是人们没有学习或了解他们在做什么,因为他们无法保留信息,而不是我们中的某些人使用了较旧的技术。保留新技术知识和保留旧技术一样容易。所保留的知识将帮助您学习下一门知识,并且可以更快地发展。

–HLGEM
16-4-27的14:05

#6 楼

寻找代码示例并不代表开发人员不好。人们很少需要那么多的东西来记住它们真正需要的所有接口,因此很自然地进行查找,并且代码示例通常是最易于使用的参考。

您不应该做的是复制和粘贴示例,因为它们在这里工作,因此它们也必须在这里工作,而不了解它们的工作方式。这通常会导致很多无用的位被顺带复制,结果难以维护,因为如果您在编写时不知道它是如何工作的,那么六个月后您也将不知道,也将无法修复它。

评论


我遍历了所有我要复制的内容,并且我理解了我阅读的所有内容,只是其中的某些语法和功能是如此之长,以至于我认为我不可能从头开始将其全部弹出。甚至应该简单易懂的东西,例如json或数据库查询等(可能是不好的例子)。感谢您的回复,我非常感谢。

–新近不安全
2012年6月8日11:36



而且,在您自己的项目中复制和粘贴代码示例之前,您还应该三思。将它们分成一个类并重用它们可能更有意义。

– stralsi
2012年6月8日在11:39

@SilviuStraliciuc:我认为这更多地是关于1行或2行示例。包裹功能没有意义。但是我通常会重新键入而不是使用ctrl-c + ctrl-v,因此我会应用正确的格式并即时替换标识符等。

– Jan Hudec
2012年6月8日在11:45

有时1或2行示例确实可以包含在函数中,特别是如果以后您可能会改变想法,确切地希望1或2行要做的事情时(现在您必须找到200行分散在整个代码中的使用1行或2行模式的位置)。使用适当命名的功能,即使您遇到错误,仍必须在200个位置中进行修复,至少可以更容易地识别这些位置。

– David K
2014年6月4日20:02

#7 楼

这些答案很好。但是,与复制/粘贴或缺少“技能”相比,您所面临的问题要深得多。

比较是致命的。您与他人进行自我比较的次数越多,让他们的才能影响您看待自己的方式,您就越会内and和死亡。您不会参加黑客马拉松,是因为担心人们会看到您多么无才。而且,您认为自己没有才华的唯一原因是,您将自己与骇客进行比较,他们可以更快地从头开始编写更多代码。测量技能,您需要接受一个事实,那就是,那里总是会有比您更好的开发人员。并且可以向他人展示您缺乏技能。

您不需要与其他任何人一样好或比别人更好。您需要对以下事实感到满意:您总是会以某种方式缺乏,并且您正在不断学习。如果您对成为一名劣等的开发人员不满意,那么您永远也不会幸福。您可以与更好的开发人员并肩学习,并向他们学习。因此,您的恐惧会阻止您成长,从而保持恐惧。阻止您成长。看到周期了吗?您必须在某个地方打破循环。

评论


好的答案,但不应理解为接受平庸是可以的。保持对自己工作的关注,不要担心别人会比你更好,但会努力提高自己。

–卡莱布
2012年6月8日14:26

#8 楼

我认为这很大程度上取决于您的思维方式。我的内存很烂,所以我宁愿抓取尽可能接近我想要的代码,然后对其进行重新处理以完成新工作。它是一个示例,提醒了我要做的所有事情。例如,我已经使用简单的SQL已有20年了,但是我永远不记得SELECT或UPDATE语句的布局。 (我想一个需要括号,但我不记得是哪个。)另一方面,我可以记住一些东西;闭着眼睛,我可以把Java Iterator实现放在一起。 />我不知道骇客马拉松。他们可能会吸引一些具有摄影记忆的程序员。我会尝试一下。如果您看起来像个白痴,那您就不应该在编程。 ,这对我从未发生过,有人可能会在不了解的情况下进行复制。 (我似乎一直在这个网站上一直在学习新的恶习...)

评论


Psst,除非您要在SELECT中执行子查询或在WHERE中执行复杂的布尔逻辑,否则都不需要括号。 ;)

–伊兹卡塔
2012年6月8日14:53



@Izkata:不?让我看一些旧代码。哦,这是需要括号的INSERT语句。

–RalphChapin
2012年6月8日在20:23

#9 楼


...我意识到...我也很引用其他代码
。我一直在搜索很多我认为应该可以做的事情的功能,而这确实使我的信心受到了破坏。


然后停下来。朝另一方向走一会儿。自己动手做所有事情,即使您知道可以在更短的时间内找到所需的东西。

发生的事情是,您解决问题的肌肉(拉丁名gluteus mojo)因不使用而萎缩,并且您现在避免使用它,因为您知道它有多弱。您需要像在健身房锻炼肱二头肌一样开始建立和调理肌肉。从高重复和低阻力开始-很多容易出现的问题。当您建立信心时,请继续研究更长远,更棘手的问题。

您会逐渐感觉到自己的热情回归,对Google的依赖将减少。不过,请继续锻炼该肌肉,并确保您不会退回到原来的方式。首先挑战自己解决问题,然后再查找其他解决方案。有时您会发现其他人找到了做同一件事的更好方法,而有时您会认为自己的解决方案更好。


一直在寻找代码示例来完成从中到复杂的任务?


一个无法找到示例而无法完成任何工作的人是一个糟糕的开发人员。关键是:您不尝试就不知道自己是否能够。

#10 楼

您还很年轻,并且使用过许多编程语言。我猜想您可能会比旧语言更快地接受新语言。您仍然没有在足够大的应用程序上投入足够的时间来使用一种语言来开发流利性。还是较小的部分,例如格式化连接字符串(自从我每年写大约四个字以来,我几乎每次都要查一次。)?

您将一直在寻找对的语法的引用。不同的代码或功能行。您编写的内容越多,面临的挑战就越大,遇到的环境和语言变化也就越多。如果每次执行某项操作都需要整个教程,那么就会遇到问题。

评论


我同意-总是有一些事情,尽管通常足够的活动(从文件读取,连接到数据库,发出HTTP请求等),语法和方法因语言而异,我通常必须检查一下。然后,您将这些基本构建块拼凑在一起,从而创建了一些新颖有用的东西

– Kris C
2012年6月8日14:32

#11 楼

我曾经有位教授曾经说过,他讨厌进行测试,因为他们试图保留您前一天晚上塞满的大量信息,因为无论如何您以后都会忘记很多信息。最好了解您的资源,并且可以正确使用它们来查找您不知道的信息。我喜欢对我所做的一切(包括工作)都应用类似的原则。

我认为,只要正确使用它们,最重要的工具就是资源。因此,在编写代码时,我会尽可能地利用现有知识,然后通过咨询其他程序员或搜索Internet进行研究,以便更好地理解适当的解决方案。这些知识会随着时间的流逝而积累,一段时间后,您自然会更好地了解和理解这些技能。无论我是否真的需要这些信息,我都会不断地寻找东西,并且可以说我每天都在学习新知识。

评论


“我从不致力于记忆任何可以轻易在书中查找的东西。” -爱因斯坦,1922年。

– gbjbaanb
2012年6月8日15:27



@gbjbaanb Albert Einstein在1922年使用版本控制吗?哇,他真的很棒。

– svick
2012年6月8日19:13

#12 楼

如果您了解要解决的问题并了解要解决的问题,那么我认为查找正确的语法并不是什么大问题。

我两年前毕业,当时我上班时把狼扔了。我必须学习,维护和升级以以前从未接触过的语言编写的大型应用程序。
我将得到一个错误报告,遍历代码并了解如何解决它,然后获得到google上如何用我的语言做我想做的事的例子。

#13 楼

如在这些答案中多次提到的那样,单纯的非关键性复制和粘贴是不好的。但是从头开始编写所有内容也是如此。如果它不是企业核心的关键组件,请先寻找一个库或代码片段。查找摘录的例外是问题很简单,您对如何执行操作有清晰的了解,并且如果您不使用库,则无需做更多的事情。

我个人知道我是否写一些普通的东西,如果没有大量测试,我可能会遇到一些细微的错误,也许还有一两个不是那么细微的错误。因此,我寻找一种类似的解决方案,对其进行修改和测试,以节省总体测试和开发时间。因为最终我要负责交付一种有效,可扩展,在预算之内或预算内且能按时完成的产品。重用代码和库是朝着这个目标迈出的良好一步。

#14 楼

我认为阅读代码示例,而只是阅读他人总体开发的源代码,是提高技能的最佳方法。我真的认为这为您打开了大脑的门户,而这本来是不会打开的。

如果您想出解决方案A,而其他人也想出解决方案B,那么当每个人共享您的解决方案时,您都可以实现甚至比A或B更好的解决方案C。 />

评论


作为一个主要的独立开发人员,我没有任何同仁检查我的代码,与我一起解决问题并激励我。网络上的示例对我来说对于解决特定问题和学习新技能/最佳实践都是必不可少的。

–cjmUK
2012年6月14日12:56

#15 楼

我认为软件开发水平很多。如此,因为软件开发文档的熟练程度也很高。坦率地说,如今,系统比我在1980年代中期开始对计算机进行编程时要复杂得多。 6英寸厚,可以告诉您计算机如何完成某些更基本的操作。将您想要的内容放入计算机可以采用的方式是,了解这些书的索引的内容以及一种编程语言(或者两种。实际上,在学习了四种或五种语言之后,其他仅仅是方言。)

今天,该任务需要了解一种语言,一种系统,一种范例,一种编程模型以及至少一个API集,所有这些都是移动的目标。

因此,具有一定基础知识的人四处询问并不是一个好的程序员。鉴于当今的环境以及像Microsoft这样的无私公司实际上对自己的基础文档应用了任何严格的条件,他是最好的程序员。他们中的大多数内容都是自参考材料,还有一些非常糟糕的示例代码。 (我遇到的两种情况是“ Windows Installer”和用于制作WMV电影文件的API。)

因为Microsoft,Google和较小的Apple都依赖“社区”来弥补这一非常现实的不足,四处询问不仅重要,而且至关重要。在今天的环境中,成为一个能够被问到并能给出可靠答案和反馈的人同样至关重要。这就是为什么像stackexchange.com这样的网站如此有用的原因。

因此,提出问题(明智地询问!)以获取示例,并尊重提供答案的人员,这样做不会被视为“不良开发人员”的标志。

还有一件事:提供不良样品确实是不良开发商的标志。它使不良的开发人员更容易发现,同时也增加了Google搜索的难度。如果您对简单,直接,特定的代码示例缺乏信心,请不要输入'em'。

而且,请不要嘲笑那些发问的人。

#16 楼

在我看来,您面临的问题是,您了解的不是您要引用的内容,而是更多的设施和内存问题。如果这削弱了您的信心,那么是的,这是一个问题-但可以肯定地解决了!

对我来说,这些挑战在我生活的许多方面都面临。例如,要擅长演奏音乐,我需要从得到的乐谱中发展出独立性–如果鼻子仍然埋在小册子中,您将如何真正感受到音乐?有时,如果有时间,我会记住整首音乐-即使我的演出不需要这首歌。为什么?随着活页乐谱的消失,对我来说,专注于我需要正确处理的音乐更具挑战性和总体性的方面变得容易得多,而进入纯粹的音乐创作这一令人难以置信的领域则变得容易得多。因此,我常常觉得额外的麻烦值得。

我的编程经验与之相似。我认为关键是:




练习语言-键入,运行,说出帮助(如果有帮助);

建立您的设施–在不同情况下使用相同的功能或模式;将特征放在一起;编写程序。
在两次重复之间留出足够的时间,以确保事物确实进入了您的长期记忆。

这些原理实际上适用于学习任何语言!例如,请参阅如何记住新单词。 Pimsleur方法也是如此。

我发现,通过使用这些键,几乎可以完全记住我经常使用的语言和技术的所有原理,语法和通用库。即使这样,我仍然不断地在互联网上寻找例子和智慧!但是到那时,我正在寻找对我要解决的问题的验证,已经采取的各种方法,可以提供帮助的工具以及针对不经常使用的库的咨询。这与我在教程和手册中第一次学习语言并深入学习时所使用的搜索方式大不相同。


如果您在语法上苦苦挣扎,则可能没有足够的实践经验。如果您是直接复制并粘贴到代码中,而不是进行重复,则尤其如此-我可以说吗? –肌肉记忆力将帮助您变得非常好。为了解决这个问题,只需制定练习和纪律,专注于重复和时间,这将改善您在所需区域的设施。建议:

每天一次用相同的语言编写一个简单的程序。
键入示例而不是复制和粘贴它们。


如果您在为中等大小的问题构建解决方案时遇到困难,则可能没有足够的构建经验。尝试以下操作:

以您想要擅长的某种技术或语言开始一个中等规模的项目。或尝试使用您感兴趣的开放源代码项目中的更大功能。每天尝试一下。 (请记住,当您要进行这些较大的项目时:一砖一瓦地进行。不要尝试一次构建整个项目!)
连续四天使用相同的新功能,在四个不同的时间内上下文。
在关闭浏览器的情况下挑战自己编写代码!
实际上记下您正在学习的内容。综合您正在学习的内容,并写下您的观察结果。 (实际上写下来,并强迫自己用自己的语言表达自己的东西,对我有很大帮助。) (这通常会带来额外的好处,即在您学习时为您赢得一点名声。:-))您似乎正在使用许多不同的语言。这有很多优点,但是确实有削弱您经验的缺点。如果您花时间用五种不同的语言工作,那么您所记的内容要少于您用一种语言花的相同时间。更糟糕的是,不同的语言之间有很多不太相似的认知(如果是elsif或elif ??是其他语言)会使您失望。为了解决这个问题,请集中精力。选择一件事来学习和学习它冷。然后继续下一步。


#17 楼

我认为,如果您专注于自己编写适度的代码,那么您的效率和生产率将会提高。查找代码,阅读/理解代码,将其复制到源代码,相应地进行修改等可能需要更多时间。根据您的具体情况,过了一会儿,这些解决方案比查找它们要快。因此,您可以查询(互联网上的)其他人的行为。如果您发现自己做/想要做的太多,可以将其视为向同事询问他/她对解决方案的看法。如果您每隔15分钟问同事一个问题,他/她可能会很烦。因此,您提出的问题会更少,并尝试自己提出。

想在Internet上查找内容时可视化它。

#18 楼

学习您不知道的最好方法:用谷歌搜索!我觉得您可以与大多数开发人员相提并论。将自卑感放在背包中,放开胸怀。

不要害怕问问题,在Google上进行研究,尝试失败。这都是它的一部分。

#19 楼

公司环境中的软件开发需要大量的代码重用。如果一个API已经存在并且被广泛使用,为什么还要重写一个函数/方法呢?

当然,成功进行软件开发还需要有键盘方面的休息,以便您可以阅读和理解真正的内容。继续。采用任何Web框架。您应该知道底层发生了什么,以便了解正在编写的代码,但是您可能永远不必自己从头开始编写Web框架。

您只需要编写利用以下代码的代码即可:框架的类型(例如,基于组件的框架需要某种样式),这来自于对全局的理解。了解大图,您会没事的。

#20 楼

从已经给出的答案中可以很明显地看出,研究您的问题没有错,而不是盲目地编码。但是,由于您没有直接提出来而未解决的问题是,为什么您会感到如此不安全-对此您该怎么办?毕竟,很多人都在努力解决问题并充满信心(甚至是那些不应该这样做的人)。

那么,该怎么办?也许您只需要在背面拍几百个拍子,现在就可以放心地编写代码了。但是,如果这样做没有完成,我建议您研究自动化测试和测试驱动开发。没有什么比测试套件中的“所有测试都通过”更能说明“做得很好”:到达目的地时,您就知道自己做对了。

还应该尝试挑战一下自己:说您一直在查找已经知道的语法;因此,强迫自己编写一些代码而无需查找语法,然后(很快,如果不是立即发现的话)就会发现您的工作毕竟还不错。

#21 楼


开发者并不是天生的“伟大”,但伟大并不自动伴随经验。相反,缺乏经验并不能使开发人员变得“糟糕”。优秀的开发人员和不好的开发人员之间的区别不在于他们的领域知识,而是他们的方法论。优秀的开发人员的显着特征是他自觉地编写代码。
换句话说,优秀的开发人员总是知道他为什么做某事。从个人道德的角度来看,这需要知识上的勇气和诚信。在此基础上构建。如果没有理解语言的基础以及幕后发生的事情,那么编码将仅仅是黑客行为。

#22 楼

因此,阅读带有示例的书并引用它们是不好的编程,这是您所要解决的问题。很高兴看到只有很少的人为他们的API编写一本书,这是我们剩下的全部内容。有很多代码示例。

16岁的时候,我从来没有机会去上大学,因为不知何故,我可以在24岁的时候去函授学院学习并做供应商认证为SCJP,SCJD,SCBCD和SCWCD。我必须承认,有时我很挣扎,不得不上网举例。不知不觉中,尽管此时我的脑袋中长出了脑瘤(到2010年,它已经变成了橙色)。经过5次脑部手术,6周的化学/放射疗法和10个月的化学治疗相结合后,我仍然在编程并编写手写编码的站点,这些站点可以从我的个人资料中看到。

是的,我需要很多代码现在有脑损伤的例子,那会让我成为一个不好的程序员吗?

评论


你有很好的理由。当然,一个人可以很容易地争论(甚至使用您自己的故事!),这是一个缺乏经验的程序员,如果没有别人给他们编码,他们就无法生存。问题是,这是否是一个公平的评估。

– cHao
2012年6月11日下午5:45

#23 楼

因此,我看到您提到您要参加黑客马拉松。过去一年中,我去过很多地方(超过15年),并且注意到它们非常适合学习。对于学习而言,我的意思是学习如何不再像以前那样编码。在每次参加的黑客马拉松比赛中,我大多都会尝试做一些新的事情,以便学习新事物。由于存在巨大的时间限制,因此您只需要复制并粘贴所有可以找到的代码,这就会在测试时使您陷入困境。要做到这一点,您:A)在错误测试中学到了很多东西(也哭得很厉害)B)知道再也不会像这样编码了,并学习更好的编码实践。此外,在黑客马拉松比赛中,您将遇到可以教给您许多您从未了解的新事物的人,并且您将做在学校中从未做过的事情。俗话说复制粘贴是不好的,你不会学到任何东西,而通过复制粘贴保存的时间将在以后的错误测试中咬住你,你甚至不知道自己写的是什么,这是上午8点,并且所有的东西都加油了咖啡因。但是,我认为,只要您对代码进行错误测试,就可以学习之前复制的所有内容。

#24 楼

好吧,我不称自己为优秀的程序员。但是我要做的很简单。如果我不知道该怎么做,我实际上是在互联网上看一些代码/示例。然后,在阅读完之后,我会尝试对其进行重写,优化,并使用最适合我想要的代码的东西。看看别人是如何做的,这总是一件好事,而且您将永远学到一些东西。但是,一味地复制它是不好的。

#25 楼

如果开发人员/学生说.. Wikipedia ..将代码复制/粘贴到他们的项目中,那么只需尝试使其“工作”,那么此人正在开发的唯一技能就是“如何使用Google”。那里可能有一些渗透过程,但不是一堆。 (您不会相信有多少人会在大学课程中做到这一点)

但是,如果您分析其他人的代码并真正考虑代码本身正在发生什么,那么这并不能一个不好的开发人员。它使他们成为坚定的开发人员,并可能表示一种更具触觉或视觉感的学习风格。我以身作则很好地学习了。如果有人告诉我一些事情或试图向我解释,我通常会要求他们向我展示他们正在谈论的wtf。

随着时间的流逝,查找,分析和学习代码实际上使他们成为一名优秀的开发人员。 ,因为他们正在使用所使用的语言进行阅读和学习。

我经常开玩笑说我比计算机母语更了解计算机语言的来龙去脉。这就引出了问题; “您能用Java plz向我解释吗?”

#26 楼

我认为这有点像下棋。我们逐一检查并按照规则跟踪它们可以移动的位置,我们必须经过有意识的检查一段时间,直到潜意识加入其中,揭示出模式和启发性的顺序。

编程中可能会有更多的部分和规则,我经常在语法上绊倒,并停留在需要通过“规则”永远找到的错误中,但是最终潜意识将开始。当它停留足够长的时间时,我可以读回有时,惊叹于它能做什么。