it-swarm.cn

您提高编程技能最有效的方法是什么?

回顾我作为程序员的职业生涯和生活,我有许多不同的方法可以提高编程技能-读取代码,编写代码,阅读书籍,收听播客,观看屏幕录像等等。

我的问题是:您做过哪些最有效的事情来提高您的编程技能?您会向想要改进的其他人推荐什么?

我确实希望这里有各种各样的答案,而且没有一个“一刀切”的答案-我想知道对不同的人有用的方法。

876
Oded

我试图将良好的编程技术应用于TI-83 + BASIC之类的语言。

0
user14563

参加马拉松比赛很容易。暂时退后一步,看看其他人如何实施类似项目至关重要。

阅读优秀作家写的书。浏览诸如“ C:一种编程语言”,“ The Perl CookBook”之类的书,或者浏览最适合您喜欢的语言的书。阅读有关它们解决的问题的知识,不要查看代码示例,自己编写代码,然后将您的代码与他们的代码进行比较。弄清楚为什么他们/您的更好。

0
SammyO

使用了不同的框架,IDE,操作系统和语言。通常,如果您不感到困惑,那么您就不会成长。不好的事情是不要平庸。不好的是,当您认为自己很棒时,表现平庸。

0
hoyhoy
  1. 我参加了以开发人员为中心的社区网络
  2. 阅读/尝试阅读别人的代码。
  3. 编写代码。
  4. 阅读阅读阅读(博客,播客,书籍等),并按照阅读阅读的方式去做。
0
Coda

阅读大量的书籍和文章。

0
Legend

阅读更多书籍,并编写更多代码。

0
William

我认为对我来说最大的事情是当我从实现退后一步,开始着眼于大局,并更好地理解架构,模式,流程,需求分析等时。

0
mattlant

我敢肯定,这只是重申先前的评论:

1:从多种语言中读取代码。了解该语言如何处理给定情况。它可能会让您对想要变得更好的语言更加了解。

2:团队...辩论编程实践,方法,测试,计划,实施等。

3:使用以上内容专注于较小的语言集。

4:永远不要假设您100%正确,那么您将没有理由质疑任何事情。

0
Matt

与比我聪明得多的人一起工作

0
Kevin

使用计算机并全面了解它。
编写您认为可能的所有代码。
阅读优质的代码,学习如何编写。阅读错误的代码,学习如何不编写代码。

0
amadamala

有很多东西,但是以下内容对使我成为一个更好的程序员有很大的影响

1)在大学期间,我一直在与一位才华横溢的同学不断竞争,以创造出其他同学评判的最佳游戏/程序。就像两家小型初创公司争夺市场份额一样。

2)阅读“深层C秘密”

3)参加开源项目,在此项目中,精明的人可以对您的代码进行注释。

0
azeemarif

当您单独编程时,很容易假设对您来说最简单或最明显的事情是最好的。但是,当您与一群知识渊博的人(尤其是经验丰富的人)保持积极联系时,您可能会发现许多您从未考虑过的问题,以及您也未曾想到的解决方案。从别人的经验中学习要比犯下自己的错误要好得多,这样做会搞乱(您自己或您的雇主的)重要项目。如果您可以在与同龄人面对面之前向他们学习这些东西,那么可以避免许多早期的失误,这些失误使大多数程序员不知道。如果您对其他经验丰富的人的工作给予足够的关注,那么可能会成为一名具有初级经验但对软件开发有高级理解的程序员。

我做过的最有用的事情大概是花几年的时间定期(每天或至少每周一次)阅读在线论坛,例如comp.lang.c,comp.lang.c ++和comp.lang.Java,以及参加论坛讨论。 (在我经常光顾论坛的那一天,大多数论坛都在Usenet上。现在,它们倾向于与特定的网站和开发者社区建立联系。)

在诸如此类的活跃讨论组中,这些讨论组吸引了大量的专业开发人员(尤其是高级专业开发人员,例如语言作者和重要库的实现者),可以轻松地了解哪些编程技术有用而不是灰心,以及哪种编程语言,工具和库受到青睐或青睐。同样,注意其他专业人员正在使用的软件工程技术也非常有用,从版本控制系统到可视化建模语言再到编程方法等等。了解哪些领域有争议也很重要-观看两位意见截然不同的高级经验丰富的开发人员之间的长时间辩论可能会带来极大的教育意义。

一段时间后,您可能会发现您最喜欢的语言或编程方法并没有像您最初认为的那样普遍受到欢迎,并且您可能会发现您正在开始考虑替代方法-很好!这意味着您开始对自己的信念变得更加细微和更加现实(而不仅仅是采用最新的时尚),并希望扩大视野以包括不同的做事方式。

0
unknown (yahoo)

花一些时间真正地思考它,而不只是去做。

  • 考虑一下您的技能。
    • 考虑一下您没有的技能。
    • 考虑一下您想拥有什么技能。
    • 考虑一下您认为行业希望您拥有什么技能。
  • 0
    Paul Rowland

    一年学习一门新语言非常棒(尽管我仅去年一年就学习了三种语言)。我仍然更喜欢C++,但是了解解决问题的不同方法在许多方面提高了我的编码技能。那和我有一系列的“ Katas”或小型编码目标,我会在业余时间不断尝试,每次将新知识应用到其中。

    0
    Robert Gould

    我会和最聪明的人一起工作,并向他们提问。不要害怕问。

    有人应该建立一个网站来做到这一点... ;-)

    0
    Stuart Helwig

    多次参加 ICFP编程竞赛

    没有其他类似的编程竞赛!每次我学习很多。特别是与比我聪明得多的人一起工作。

    0
    Anton Orlov

    我第二次阅读《 K&R2》。然后第三次阅读。

    0
    Serafeim

    回到基本情况,我想创建一个假的登录屏幕,该屏幕会从父亲的办公室PC上窃取密码。它只是在MS-DOS上运行的批处理脚本,没有花哨的地方。然后,在高中时,我继续编写简单的MSWord宏病毒,因为我发现能够根据自己的喜好“自定义” MSWord令人着迷。

    然后,我学到的编程技能只是做我发现很着迷的事情的副作用。

    0
    simoncpu

    没有人能想到改善它。它是一种博学的技能。通过实践将使您变得更好。通过实践,我并不是指单一属性。我能想到的最重要的属性是1.编写代码2.配对或收集来自不同ppl的persapactive(活动类似于编码dojo - http://www.codingdojo.org/ )。 3.代码审查

    0
    kiritsinh parmar

    与50多名Smalltalk专家一起进行配对编程。我们当时使用Java进行编程,但是我确实学到了很多有关面向对象的设计和调试技术的知识。

    只要我们保持开放的态度,就建议与经验丰富的导师结对编程。

    0
    Mario Ortegón

    与比我聪明(不那么努力)并且对您的工作方式感到好奇的人一起工作。阅读很多内容,但是您必须能够找到解决问题的方法。

    0
    FrankS

    与他人一起工作是使我的技能爆炸的唯一原因。我开始从他们的失败中学习。 :)

    0
    zgoda

    编写很多代码,不要害怕学习新事物

    0
    reuven

    我知道其中大多数已在前面提到过,但是由于它们为我工作,因此我将再次重申。

    1)最重要的是对自己的工作感兴趣。如果您对此感兴趣,那么您就走了一半。没有什么比无私地杀死您工作/进步的欲望了。

    2)在您的组织中找到比您更聪明/更好/更快的人,并尽可能吸收他们的知识和专长。这适用于任何人,初级/高级/等。就我而言,职位名称毫无意义。我见过“初级”级别的开发人员,他们拥有的专业知识/知识要比高级开发人员要丰富得多。

    3)我已尽力遵循自己的编码规则。写,读,分析,评论,讨论。编写代码后,请重新阅读。它可以维护吗?评论得好吗?看起来像它应该做的吗?作为此过程的一部分,您需要分析代码。这是您可以做到的最好方法吗?可以通过任何方式加以改进吗?相应地进行更改。接下来,对其进行检查,然后进行测试。它会做什么吗?它做了什么不应该做的事吗?尽力尝试破坏您的代码。对它感到满意之后,请与他人讨论您的代码。他们对此有何看法?他们还是不同意您的决定?他们是否有其他想法可以改进它。

    4)总是乐于学习新事物和/或新想法。

    0
    Jason

    100%单元测试覆盖率。

    进行单元测试确实改善了我的编程。

    但是,使用代码覆盖率工具来度量单元测试的覆盖率会将其提升到另一个层次。

    一个很好的动机是采取一个模块并尝试进行100%的单元测试覆盖率。

    您甚至可以通过每个模块都与您的同事进行友好的竞争,看看如何获​​得最高的覆盖率。

    -

    在CrowdNews.eu上关注我

    0
    equanimous

    开始教授编程和程序设计。直到我教了新生级OO课程和初级软件工程课程,直到我才对Java.

    0
    Lewis Baumstark

    用我的大脑,而不是敲出毫无意义的代码。编码一次,编码正确。

    0
    leppie

    我发现从头到尾阅读Steve McConnell的Code Complete 2(并且实际上试图遵循他的大部分建议)极大地提高了我的编程技能,特别是因为我没有在大型公司环境中与其他程序员一起工作而受益。

    此外,练习好的设计(在书中有解释)并分析其他人的设计对于朝着正确的方向,在技能方面前进也很重要。

    0
    Levi

    我认为我做过的最有效的事情就是强迫自己根据最合适的方式在项目中使用各种语言和替代工具。 IOW我试图查看该语言的功能,以了解它是否比我的标准选择之一更好。这迫使我根据他们各自的优点学习和使用各种工具。

    当涉及到我的编程风格时,我也非常努力地将方形钉塞入圆孔中。我们可以使用多种语言,因为有许多不同的处理方式。我对其他样式了解得越多越好!

    0
    flxkid

    提高编程技能的一种方法是学习不同的业务领域,以及如何使用软件解决这些领域中的问题。例如,如果您仅使用业务Web应用程序,则可能会获得有关HTML,CSS和关系数据库的大量知识,但不一定有机会掌握并发或3D图形编程等概念。

    0
    newdayrising

    用多种语言/系统编写简单的应用程序。我已经在VB6,常见的LISP,Java/jsp,Java/spring/struts,Rails,grails和Django中编写了一个博彩池应用程序。我现在正在Ruby/cocoa OSX中编写它

    每个实现都是不同的。而且我了解了系统之间的差异。

    0
    sal

    与一组经验丰富且聪明的程序员合作。

    说“只写代码”的人是近视的。我看过很多项目,有人“只是写代码”。这并没有使任何人了解良好的习惯和实用的编程,也没有帮助在编码的第二部分中培养扎实的技能。规格,文档,清楚地传达了想法。

    0
    Geekoid
    1. 在您的专业领域中,阅读任何(开放源代码)软件的源代码都很出色,也很重要。

    2. 学习和欣赏不同的编程范例(即OO不能解决所有问题)

    3. 编写库/组件而不是整体的“系统”,学习界面设计,文档和概念简单性的价值。

    0
    Marijn

    至少与另一个(有经验的)人一起编程,最好在极限编程环境中进行。辩论替代方法将有助于哈希出每种方法的优缺点。

    0
    Adam

    编写许多此处已编写的代码。

    但是,要写太多,而又不想写太多,得到 基本上是懒惰,这三大美德中的第一个

    “简洁是机智的灵魂” –莎士比亚

    0
    epatel

    在开始学习其他(最佳程序员)代码编写方式之后,我看到了巨大的进步。我所做的一件事是开始观看我感兴趣的任何技术的“我如何” 专家/专家的视频

    与看书相比,我在学习视频中看到了很大的好处。不否认阅读书籍也是一个好方法的事实。但是视频互动性更高,速度更快,并且给人留下了深刻的视觉印象(也就是说,如果视频质量不错)

    Dnrtv是Tech Podcasts,是我的其他偏爱。阅读此 SO线程。

    0
    Vin

    我总是脑子里有一个“小”项目清单。每当我想到“应该……”时,我都会将其归档以备将来使用。然后,每当我遇到一种看起来很有趣并且想使用的技术时,都会将其功能与我的项目列表进行比较。如果一个人看起来很合适,我就去参加比赛。

    这使我总能拥有比“ Hello,World!”更实用的东西。努力。

    0
    cmreigrut

    我认为,对于真正喜欢自己的研究对象来说,提高技能非常重要
    重要的是与他人分享您的知识。
    在另一个站点上,您需要对您需要更多了解的主题进行一些研究。
    最后,对开源项目的工作对我作为程序员来说非常有用。

    0
    Peter GA.

    实际上是出于目的进行编程。一旦开始编写并编写供用户实际使用的程序,而不仅仅是上一年级,我就开始对程序产生的影响有更好的了解。我看得出来了。

    0
    Mogura

    进行基础计算机科学并学习相同的知识。所有这些都归结为相同的概念,并且都建立在逻辑和图灵机上,并且您可以完全相同。

    将OOP应用于装配和数字逻辑很有趣...

    0
    Aethylred

    当我开始编写看起来“漂亮”且非常干净的代码时,我的程序几乎在刚开始运行时就开始运行,几乎没有错误。如果存在错误,则往往很容易找到它们。

    因此,我只是追求简单,清洁和美观。 :-)

    永远不要以“聪明”或复杂的方式编写代码。编写尽可能清晰易读,程序可以正常工作且易于维护。

    0
    Jesper Hertel

    阅读有效的C++之类的好书。请注意,我已经用C++编程了几年,但是直到我开始阅读优秀的C++和其他编程书籍后,我才意识到知识的突飞猛进,最终转化为成为一名更好的程序员。

    0
    A Non

    在我发现至少要批评的部分之前,我不会进行审查,因此要进行大量代码审查。

    顺便说一句,在很多情况下,为了能够进行这样的代码审查,我需要坐在原始作者旁边,并要求他们逐行向我解释代码,直到我理解为止。如果您碰巧幸运地被要求查看优秀程序员的代码,那么您也会很快提高自己的技能。

    0
    A Non

    为了提高语言水平,请挖掘核心API并编写利用每种方法/类的代码。这有两个好处:

    1. 您将学习API,因此可以停止重新发明轮子。
    2. 更重要的是,您可以很好地理解该语言的主要习语。这样可以使您的代码保持干净和可读性。就像当您最终停止尝试在LISP中进行程序编码时一样。
    0
    noah

    阅读,与他人合作,以及与他人一起玩耍:)

    0
    knight0323

    任何鼓励您编写更多代码的方法。我目前正在通过 Project Euler 进行工作,以提高自己的技能,但是去年,仅通过查看我正在处理的代码库,我也学到了很多东西。此外,阅读更多书籍并没有什么坏处,尽管最好是专注于软件工程领域的书籍,直到您知道实际要使用的语言为止。

    0
    deworde

    1)我犯了很多错误,并通过问别人或阅读来从错误中吸取教训
    1)有一位导师
    2)听了很多播客,然后阅读我所听说的主题
    3)配对编程
    4)审查开源项目的样式和技术(并调查我不了解的部分)

    0
    Mike
    0
    Jeremy

    不仅在我的工作中而且在家里编写代码。这给了我没有时间去发现非常有趣和有用的东西的时间。

    0
    Andre Gallo

    痛苦地复制了1980年代计算机杂志上的印刷样本。逐行。只是想知道某个地方有错误。

    一般而言,阅读他人的样本并进行修改;在其中发现错误;从他们推断。

    0
    akauppi

    从我曾经担任首席程序员的团队转移到一个新团队,该团队处理的是我一无所知的广泛不同的技术。

    然后在2年后再做一次。

    0
    shoosh

    用C语言编写了Scheme编译器。我不仅必须从内到外学习Scheme,而且还学习了所有有关编译器,如何在硬件上执行代码,如何实现垃圾收集器的知识。

    0
    Josh Segall

    正如许多其他人所说的那样,编写大量代码,并确保您学习几种不同样式的语言。那样的话,我的意思是不要将自己局限于相似的语言。例如,如果您知道Java,那么学习C#并不会太困难,因为存在许多相似之处(自动垃圾回收等),但是在Java或C#之后学习c ++将会有所改善您的技能就更多了,因为如果迫使您以不同的方式考虑您的应用程序。另外,学习使用正确的工具完成工作。当您可以使用Perl中的一半代码或诸如awk之类的标准工具执行相同的操作时,用Java编写简单的文件转换毫无意义。

    做对我来说是挑战的事情最大的帮助

    0
    Sean

    在我的经验中:

    • 练习沉重的测试驱动开发(TDD),直到您在实际实现之前编写测试感到舒服为止。它将使您成为一个更好的程序员。
    • 将宠物项目放在一边,或者干脆参加开源项目。
    • 尝试与比您更好的人合作。观察他们使用什么工具以及如何解决问题。
    • 总是找到让您对编程感到兴奋的新事物。充满激情。
    • 创建。如果您只是为了赚钱,可以忘记成为一名编程专家。
    0
    mislav
    • 犯错并从中吸取教训-其中之一是在三周内编写原型,而我仍在12年后维护该原型,因为我允许它发布,而不是正确地重新证明它。
    • 做算法300,尤其是复杂度的顺序。在某种程度上,这是明显的流血,但在我的脑海中,我每天都在使用的观念已经明确。
    • 回到基础知识,在OS和C语言中编写代码。 (这部分是对原型投入生产的反应。)使代码变得更快,更健壮。我认为随着计算机性能的改善趋于平稳,这在未来将变得越来越重要。我不是框架的忠实拥护者。我怀疑我是这里的少数派,以后可能会将其发布为问题。
    • 阅读“代码完成”。因此,最大的事情就是代码的布局以及对简单性的关注。
    0
    David L Morris

    研究各种技术和程序。关键是要继续尝试新事物,所以我想一件事情正在挑战自己去做我未做的事情!

    0
    Mitchel Sellers

    我读过Josh Bloch的Effective Java。隔夜,我是一个更好的程序员。

    0
    Craig Day

    很多人说过要编程,我同意。具体来说,我喜欢:

    1)参加编程比赛!我今年夏天刚做完第一个,这确实很值得(尽管我承认,但我做得并不出色)。它迫使您快速处理有趣的问题。 Google Code Jam非常适合此操作。

    2)用我刚刚使用的语言的有用功能来编写我很熟悉的算法(对此来说很棒)。当从功能上实现优雅时,就不必在ML中编写命令式排序了。

    3)与喜欢特定语言的人交谈,为什么他们喜欢这些语言。我不想在Perl/Python辩论中选择一方,而是宁愿与每一个人谈论他们为什么喜欢他们选择的语言并抓住有用的地方以供将来参考。

    4)阅读技术博客。通过阅读了解不同语言的人的博客,您会发现很多关于不同语言的信息。当然,这不仅适用于编程。

    当然,这些事情往往会使您变得更好,从而使您成为一名更好的程序员,并且可能会或可能不会帮助您进行软件工程。

    0
    Alex Gartrell
    1. 阅读有关您感兴趣的主题的研究论文[ACM,IEEE]

    2. 尝试解决难题即使失败,你也会从中学到东西

    0
    Steven A. Lowe

    弄清楚我的学习风格(或者我的学习障碍)。

    我发现听别人说话是我学习的最困难的方式。因此,课堂讲课,播客和视频是我学习的最不理想的方法,如果可以的话,即使尝试这些,我也不会浪费时间。我的阅读能力更好。因此,我购买和阅读了大量的书籍和网络文章。 (您知道。有点像这个网站。)

    正如解决问题的方法不止一种,学习的方法也不止一种。优化对我而言最有效的方法是提高自身水平的最佳途径。

    0
    OldGreyTroll