我如何对自己的编程技能更有信心?[关闭]


37

编程对我来说并不陌生。我最初在12岁时开始做标记(HTML,现在请不要嘲笑我),在13岁时我开始做一些BASIC编程(此时我对Flowcharts,Pseudocodes非常了解),但后来我被告诫高中时期的生物学,因此错过了诸如C,Java等语言的“真实”编程知识。我为UG BE学习了CS(与BS类似,但更理论化)。我自己(在较小程度上)学习了C&C ++(我的教授感到非常痛苦,并且课堂上充斥着代码小丑(谁在学校已经学过了,因此没有注意课堂,也没有让像我这样的小凡人也不必专心听课)),并可以制作出很棒的加法或乘法程序(现在甚至是花木园的程序)

我的主要问题是,我总是对自己有限的编程技能感到不足和窒息,而对代码丑陋不屑一顾(相信我,我在很久以前就遇到过这个网站,但现在可能会鼓起勇气进行实际发布一个问题),有时甚至因上述无能而感到沮丧。大多数人说,编程不一定与语言有关,而是与人的心态以及他们用来解决问题/问题的技术有关。我同意这样的观点,但是我能获得这样的“心态”吗?如果这样的话,我应该如何进行“编程/编码”?如果有什么设定的方法和步骤可以最有效地达到“禅宗”呢?编码”。我该怎么做?同样,如果某些圣徒想指导这件被压倒的$#!^也不会有什么坏处。

PS:我将永远感激任何认为我值得他们度过时光的人,并且作为奖励,我将命名为我随他们发行的第一款软件。(如果我要运送一个,即)

TL; DR:从未真正学习过“编程/编码”,即使我尝试也无法解决问题。帮我!


22
不要对自己这么卑鄙。子宫编程没有人提出来。您编写的代码越多,您在代码中的思考就越多。玩得开心。
史蒂文·埃弗斯

9
如果您在想“嗯,错误可能在我的代码中,而不是在编译器中”,那么您就可以像程序员一样思考(嗯,就像大多数程序员一样)。
gablin

5
@SnOrfus:除了乔恩·斯基特(Jon Skeet)之外,没有其他人;)
back2dos

4
从一个新手到另一个:练习是关键!
Chani

1
@Snorfus,我敢打赌几个人这样做了!:P
Mark C

Answers:


26

我认为最好的方法是简单地花费更多时间(搜索10000小时规则)。找到您想完成的事情,并着手完成它。选择超出您当前能力范围的事物,但选择范围不能太长,以至于您将无法在合理的时间内完成任务。如果您真的喜欢它,您会发现自己在重复这一过程,直到您真的很擅长。如果您不喜欢它,那么这可能不适合您。尝试挑战自己吧,您可能会喜欢上它。


10000小时规则建议听起来很公平。确实很吸引人,但是我应该选择哪种语言仍然是相关的,并提供与新语言相同的灵活性(例如:如果我深入学习Java的所有概念,则可以迁移到Scala,Processing,Clojure,等)。
Ameen

11
Ameen:不用担心其他语言。学习一个。在将10,000小时投入Java之后,请继续。寿命长,有很多语言,您不会全部学习。新的发明一直被发明出来。现在学习一件事。之后担心未来。
S.Lott

2
用模糊的方式“花更多的时间”是无效的。
Rein Henrichs

1
学习面向对象的编程语言和学习功能性编程语言也是一个不错的策略。学习静态类型的语言和动态类型的语言。您将是一个全面的开发人员。
Chiron

1
@BSeven您需要查看Peter Norvig关于“十年学习编程”的文章,它与此类似,并且为编程新手遇到的一些主要问题提供了很多启示。
Ameen

16

运送东西。这是唯一的方法。完成工作。在工作中,您自己的项目,开源项目。开始发货。它们可以是很小的东西,例如错误修复或最低限度的适销功能。刚开始运送东西。没有什么比成功更令人满意或建立信任。

编辑:您应该阅读Ship It。这很棒。

再次编辑:经历除运输以外的任何事情都只是失败。我见过很多“高级”开发人员,他们的主要经验不是运送东西(以及寻找不运送东西的借口)。真正的艺术家飞船


12

一句话``问题'',``不足'',``勒死'',``有限的X技能'',``坚强'',``沮丧'',``无能'',所有这些都指向你自己,这暗示着我过去的一些未治愈的伤口仍然很痛您。如果您找到克服这些问题的方法,那么编程或任何此类艺术/工艺都将非常容易掌握。也许了解其他人的适应能力会有所帮助。每个人都经历着痛苦的时代。如果那些伤痛没有得到治愈,他们的成功就不会实现。首先治愈伤口。编程可以等待稍后。

至于编程技巧,我如何学习一种新语言并像已经使用该语言进行编程的其他人一样开始思考,首先,要读懂我所能掌握的与该语言有关的所有内容。然后,当我阅读足够的内容后,就开始编写小型程序。


2
同样,如果您希望看到遇到相同问题的某人,并在他周围和他的问题周围举行社区集会,请务必阅读此Hacker News主题
Wes Baker

3
+1以获取有关阅读文档和教程的建议。至于第一部分,我同意很多伤口没有愈合。(心理学家在该站点上的工作是什么?)但是不幸的是,有些伤口无法像其他伤口一样容易地治愈。但是我已经接受了它们,坦率地说,它们并没有像以前那样痛苦。而闲置只会使我朝着这种消极的想法前进,唯一的办法就是让自己沉迷于编码等。非常感谢您的建议,您和我的朋友也让我迷失了自己的心理技能。
Ameen

@Wes Baker:非常感谢您的Hacker News主题。我当然可以与OP的想法相关(尽管我还没有那么糟糕)。我(认为)在操作系统,计算机体系结构,算法,数据结构,计算机网络,密码学,数据仓库等方面具有相当不错的知识(尽管我需要对其进行梳理)。就像我说过的那样,我从理论上讲过所有这些主题,但实际上并没有做过任何实际的事情。一定会浏览该线程,那里还有很多很棒的建议。Tyvm!
Ameen

@Ameen通过“一切”,我不限于文档和教程。其他人编写的代码,他们使用的习惯用法,其他人遇到的错误,异常等以及它们的解决方案等。我无论如何都不是心理学家或心理学家。
vpit3833 2011年

9

您真正需要做的一些事情:

毅力:成为一名优秀的程序员需要花费一些时间。在编写任何优质代码之前,您需要编写许多不良代码- 许多不良代码。值得庆幸的是,您有本网站之类的资源可以为您提供帮助。只要您一直致力于学习编程,就可以立即将简单的游戏和实用程序组合在一起!

目标:为自己设定一些目标。说两周后学习如何在C ++中使用STL。看看你做得如何。如果您花费更长的时间,请跟踪需要多长时间,它将帮助您将来做得更好。我从同事那里学到了这个技巧。到今天,他可以估计几乎所有任务将花费他多长时间。这样做有助于我了解自己在个人项目上花费了多长时间,并帮助我避免了它们因无法控制而迅速膨胀(他们称之为范围管理)。

好奇心:您必须有兴趣和参与。如果您不是那种不愿意寻求解决方案的人,那么一开始就很难进行编程,而调试则可能是噩梦。但这不是必须的。如果您有问题,请在类似的网站上提问,然后用Google搜索您的错误。如果您不知道如何实现某些功能,请询问!总是有愿意帮助的人!

信心:对您想做的事情充满信心,并有足够的信心提出问题。如果有人向您展示了另一种做某事的方法,请不要防卫,或以认为自己做错了事为由拒绝自己;当您被教给您解决问题的另一种方法时,请考虑一下!

最重要的是,保持乐观的态度,阅读大量的教程,并提出很多问题,您将成为一个快乐的程序员!我必须提供的另一项建议是选择一种语言,坚持使用该语言,直到您更加自信为止。您有很多时间来学习各种语言,但是当您入门时,只需使用一种语言即可。

祝好运!请记住,这应该很有趣!= D


感谢您的宝贵意见。我的问题之一一直是这样的事实,即我的目标(常常)太高了,然后先摔倒了。我的潜意识可能采取了“烧一次,害羞两次”的方法,并且可能阻止了我进行纠正的尝试。我一直很好奇,但是缺乏导师使我无视我的好奇心。随着时间的流逝,认真的SE看起来越来越令人敬畏,我一定会细读这一令人敬畏的资源,并实现成为一名合适的程序员的目标。非常感谢,我真的不能说您的帖子对我有多重要。
Ameen

我很乐意提供帮助!= D
bryanegr 2011年

最好的目标:发货代码!

7

在开发中,似乎似乎存在悖论“知道的越多,知道的越多”。

如果您是一个体贴,诚实的人,则需要接受这一事实并学会处理。

从问题的意义上讲,信心是一种非常私人的事情,与特定的技能或方法无关。

更为肤浅的是,http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/中描述的情绪(由于:与您闲逛的人群)一直对我有帮助。

我建议您学会对所做的工作更有信心,而不是对整体技能建立信心。做到这一点的最佳方法是为所有代码编写可重复的测试。它将为您的心灵带来奇迹。


4

WhiteFang34是完全正确的。作为一名生物学家,我发现学习编程的唯一方法就是开始学习编程。阅读几本书,让Google和SO始终在手边,然后“随便做”。您的程序在开始时将是非常基本的,编码错误且有错误的程序,并且随着时间的流逝,您会越来越好。我没有时间参加编程课程,但是我确实花了很多时间进行编码(因为这样做很有趣)。

选择一种可以让您更多地思考您想做什么而不是如何做的语言。c并不是一个很好的例子。尝试使用Java或c#之类的高级语言,因为它们可以让您做更多的事情,因此您将有勇气尝试更多的事情。

(当然,就是假设您不追求职业程序员的职业,在这种情况下,我只想说回到学校...)

祝你好运,编码愉快

PS:哦,您将需要大量的懒惰,急躁和自负

http://c2.com/cgi/wiki?LazinessImpatienceHubris


4

有趣的是:

程序员的想法与计算机,编程语言,
设计模式或算法无关

这是关于理解现实世界的精妙之处,事物之间的相互作用。思维抽象的能力。能够看到的东西,并记住他们。这不可避免地导致良好的问题解决。

实现之后,代码本身仅在此之后出现-在您成功
解决了内心的特定问题之后。


4

自信不是您应该尝试掌握的技能。信心与实际技能之间的关联度很差(甚至可能是负面的)。无论您对当前的技能水平有什么看法,都应该努力提高自己的专业(或宝贵的业余爱好)技能。

自信是别人(您认为自己有能力的人)在与您一起工作或看到您的工作后应该对您的技能感到的东西。


3

非常简单:对此感兴趣!您似乎已经在寻找一个您认为很酷的事情,然后去做,在途中询问您需要解决的任何问题,使用您可以利用的所有资源,按照您自己的方式来整理项目想要它。反复漂洗,您会发现自己是一个了不起的程序员,甚至没有花太多力气,因为在此过程中它很有趣/很有趣。

另外,在找出问题和提出很多问题之间要达到一个很好的平衡。特别是在开始时,让其他人告诉您您要去哪里出了错,对您在学习曲线的第一部分有所助益,这是一个巨大的帮助。从那里开始,尝试自行解决问题,如果过了一会儿卡住了,请提出一个问题。我通常要做的是在SO上发布一个问题,然后去寻找答案,并在此过程中偶尔检查一下SO。有时我首先找到答案,有时它首先找到我。

不必担心使用哪种技术,尽管使用HTML5 + JavaScript + canvas标签制作图形可能真的很有趣,因为设置起来非常容易,奖励是即时的,您可以共享。


非常感谢你。我对编程非常感兴趣(我确实解决了头脑中的问题,当然也解决了算法,流程图等问题),我似乎缺乏对项目的坚持并继续进行下去,并在遇到问题时寻求帮助死路一条。(尽管所有这些现在都必须结束:)感谢SE。)另外,我对HTML5 + JavaScript东西也非常感兴趣(部分页面加载-Mashable以令人敬畏的方式实现了这一点,在SE上加载了Answers等)。真的不知道他们可以从中学习的体面资源(W3C学校据说是庸医; W3Fools这么说!)
Ameen

3

以更积极的学习者态度进行编程。谁都不知道。其次,找出您对编程感兴趣的原因:

  • 解决问题
  • 学习新事物
  • 使计算机屈服于您的意愿
  • 还有别的...

一旦知道了自己喜欢编程的知识,就可以将学习重点放在该方向上。我是一个修补匠/问题解决者。这使我非常务实。算法和数据结构,计算机科学理论总使我入睡。

我的背景和你相似。从10岁开始构建计算机。在我十几岁的时候就做了一点HTML / C ++ ...对它感到无聊...退出了几年。我从来没有停止过玩电脑。

现在,我喜欢编程。那么,什么改变了?我找到了动力。我开始在有很多问题需要解决的地方工作。为复杂的问题找到聪明,简单的解决方案确实使我大伤脑筋。

最后,不必担心其他人如何编码或它的“正确”与否。如果它按您的意愿去做,那是正确的。一旦开始为团队工作,那么标准就变得很重要。这很大程度上是由于其他人将需要能够解释和修改您的工作。设计标准不是新程序员应该关心的问题。


3

学习新事物时总是要克服惯性。我认识的好奇的程序员努力寻找继续学习新语言和范例的动机。他们会说:“我需要一个项目来试用X。” 为了学习X。实际上会有一些人找到/发明该项目。

请注意,编程生涯将是一个终生的挫折,学习,实验以及对风车倾斜的过程。直到AI接管一切。

如果您仍在从事真实的科学,那么您应该能够想象某种项目/需求。例如,将来自互联网上或互联网之外的多个来源的数据进行组合。这可能会激发您学习javascript或R甚至Excel / VBA的兴趣。如果您可以为自己领域中的其他人连接一些点,那么您将得到认可,等等,您将成为一名程序员。

使用但要警惕导师。询问权限。

顺便说一下,“禅宗编码”是矛盾的。


3

您将永远不会对自己的编程技能充满信心。

描述技能的方式指向一种思维定式,使您永远不会对自己的技能感到满意。您精通C ++?等等,那里有Java!您精通Java?等待那里是并行编程。您精通C ++和Java的并行编程吗?等待那里有SOA!有OOD!和MVC!固体!功能编程!网页编程!云编程!移动编程!

关键是不要因此而感到沮丧。您需要按下一些按钮:对技能的怀疑是纯粹的动力。您可能永远都无法达到令人满意的编程技能水平。只要是这种情况,您就可以继续前进。尽管永远不会有目标,但困难的是要实现它并针对它采取一些措施。您承受的时间越长,您的技能水平就会越高。


哇,这是一种全新的研究方式。喜欢您所说的方式,总会有您想要做的事情。我真的应该开始把我的消极情绪变成积极情绪。非常感谢。赞赏!
Ameen

3

我曾经有同样的感觉,实际上是Stack Exchange网站使我充满信心。

我开始使用StackOverflow来查找问题的答案,有一天,我看到了一个我知道答案的答案。我发布了答案,得到了一些赞成票,并发表了评论,说这是一个很好的答案,这鼓励我四处寻找可以回答的其他问题。

对我来说,这很快就成瘾了,找到了我无法解决的问题,随着时间的流逝,我开始对自己的答案充满信心。我不再需要说“我认为这是因为...”或“这应该导致...”,而可以放心地说“这是因为...”或“这导致...”。

我喜欢拼图游戏,对我来说,问题就像小程序拼图一样,如果我得到正确的答案,就会获得一些积极的反馈。如果我得到的答案有误,我将其删除,并从其他人对相同问题的解决方案中学习。

因此,我的建议是继续进行下去,以您感兴趣的任何标签浏览问题,并寻找您认为可以找到答案的问题。人们告诉您的编程答案对您的编程能力很有帮助/很好,这并没有什么比这更好的:)


当然,我需要这样做。但是我的自我开始说道:“你不足以让别人做事,哎呀,你甚至都不足够能来这里”。我知道这听起来很愚蠢,就像这里的一些人提到的那样,也许我只是怕让我的大脑紧张,但是我会,我会强调那块脂肪直到什么都没有。非常感谢您的建议,我将继续坚持每天搜寻SE来解决有趣问题的新习惯。感谢您抽出宝贵的时间回答我的愚蠢问题。对此,我真的非常感激!
Ameen

3

您的大脑不喜欢太努力地工作。在有选择的情况下,它倾向于采取简单的方法。这就是为什么当您尝试解决一些过于雄心勃勃的事情时会轻易放弃的原因-太多的东西要学习,太多的琐碎细节无法解决,太多的ving牛剃须。

您可以采取多种措施来解决这个问题。首先是能量。当您有充分的休息和充足的饮食时,尝试进行练习,否则您的大脑从字面上看就没有足够的动力来进行复杂的抽象思维。第二招是兴趣或重要性。如果您可以说服大脑,知道行家对于逃避追逐老虎的虎至关重要,那么您将学到并保留更多的知识,而大脑却认为这对实现真正的目标毫无意义。重要的第三个因素是伸展而不过度。付出一些努力将使您从成就中获得嗡嗡声,并帮助您形成新的思维途径,而这并非不可能。

重复练习也有话要说。您希望有足够的变化使之新颖,但又要有足够的相似性,以使您执行相同的动作并使它们根深蒂固。

还有一点是,您应该尝试卷起袖子并弄脏手。很容易花很多时间考虑替代方法或理想的解决方案,以至于您从未开始过。这是您的大脑尝试采取更简单方法的一个示例。尝试识别发生在您身上的时间,并尝试着手避免这种情况。甚至测试或实验也不错。这还具有使您的大脑想要完成任务或寻找更好的解决方案的副作用。


哇,您刚刚确定了我所怀疑的最大罪魁祸首。我的大脑,我总是脚脚发凉,大部分时间我都会破坏自己。我总会编造一些借口,以避免做重要的事情。我需要成为一名黑客,而不必再担心由于过去的失败而导致的失败。我需要改变自己的生活,才能成为最典型的“是的人”。感谢您指出我确实需要改变的一些缺陷,我希望尽快做到。非常感谢,对此我再也感谢您了!干杯。
Ameen

2

要考虑的三件事:(当然不可以)

  1. 实践。如果失败仅意味着您正在练习,该怎么办?如果您第一次摔倒时就放弃学习走路,那么您仍然会爬行。
  2. 随心所欲玩。游戏只是尝试一些事情,并注意会发生什么。放弃判断好/坏结果,只是玩一下,看看会发生什么。放弃对特定结果的依附,只需尝试一些尝试,看看会发生什么。
  3. 如果您不是世界上唯一有这种感觉的程序员,该怎么办?

2

关于实践,这里有很多很好的评论,确实的确改变了一切。

您应该减少对“代码笑话”的担心,并就它们的含义接受建议或评论。如果很难在线程中处理它们,那么在现实生活中也可能很难处理。真的,谁有时间担心自己的社会不称职?

最终结果是,有数千种方法可以执行编程任务。很多事情都归结为个人喜好。例如,我不喜欢使用Tenary运算符读取代码。其他人,爱他们。我认为他们是对还是错?这是个人喜好,尽管将对该主题进行很多激烈的辩论。

如果有人因为您只用了25行而不是20行而对您的代码be之以鼻,除非他们发现逻辑上的实际缺陷,否则我往往会忽略它们。有时在现实世界中,我们只需要把事情做好(谁真的想听某人的胸口喘息,说它多么复杂...错了,优雅,他们设法编写了应该在10分钟内完成的一段代码) 。您能从无休止的关于抽象事物多远的哲学辩论中学到什么吗?当然...但是被100%的优雅吸引着回报是微不足道的。一直以来,这种假象都不如我们想像的那样现实。我不敢与任何人分享的一些我最不雅致的代码(我在职业生涯的开始就写过)节省了人们数周的时间,

乔尔·斯波斯基(Joel Spolsky)有一篇很棒的博客文章,叫做Duct Tape Programmer。这是一本很棒的书,而且IMO将您的一些担忧变为现实。

http://www.joelonsoftware.com/items/2009/09/23.html

我并不是说要编写废话,也不要忽略最佳实践,而是要让精通程序员的人大吃一惊。


1

问自己,为什么您实际上感到缺乏信心。我认为这是因为您关心同行的想法,这完全可以理解。但是要真正做到这一点,您需要清除这种想法,并随时间推移将自己与自己进行比较。在您的兴趣指导下,学习和努力工作,您将在没有所有基础BS的情况下成为一名优秀的程序员。

您并不是真的有信心,而是前进的道路上的噪音更少。

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.