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

我的问题是:提高您的编程技能最有效的方法是什么?您会向其他有待改进的人推荐什么? >

评论

练习,练习,练习。永远不要对想到的第一件事感到满足。

马克·兰索姆(Mark Ransom)+1 ...当您仍然不满意想到的第100件事时,就会遇到困难!
不浪费时间在Programmers Stack Exchange网站上,极大地提高了我的编码技能。

@Mark Trapp这怎么没有建设性?

@WTP-阅读说明。 “这个问题不适合我们的问答形式。” -作为提出这个问题的人,我同意。在更轻松的时候被问到了。

#1 楼

没有特定的顺序...


与比自己聪明的人一起工作
总是听别人怎么说,不管他们是大三,中级,中级或高级大师职位没有任何意义。
学习其他框架/语言,看看它们是如何工作的,并将其与我已经知道的东西进行比较
阅读模式,最佳实践,然后检查我的旧知识内容,并在必要时应用这些模式
配对编程
不同意Joel所说的一切。 ;)


评论


我知道这似乎确实是无缘无故的,而且可能是名誉who头,但是如果您将每个答案中的项目分开一个,人们可以投票赞成他们同意的项目,从而可以更具体地最终投票“解决”这个问题。

–davebug
08/09/16在23:10

观察更聪明的人如何处理错误-那就是我从错误中学到最多的时候

–麦克·罗宾逊(Mike Robinson)
09年2月2日在21:38

如果这是一个没有特定顺序的列表,那么它应该不是无序列表而不是有序列表吗? :P

–乔恩·W
09年8月31日在19:03

我同意mmyers-仅仅因为您不同意某人,并不意味着您就忽略了他们。实际上,情况恰恰相反-为了不同意他们,您实际上是在关注他们。

–克里斯蒂安·罗莫(CristiánRomo)
09-10-10在21:46

我并不反对乔尔所说的一切,我想他大部分时间都有一些有趣的事情要说。我的评论是tongue不休。关于Joel,我同意很多东西,但是大约每个月一次,他会让我摇头问:“什么?您是认真的吗?!”。我喜欢我喜欢的那些东西,因为我发现那些最具挑战性的事情迫使我真正检查自己的位置和我的信念。

–克兰利
09-10-19在17:14

#2 楼

在我职业生涯的早期,我决定成为“千篇一律的杰克”,是一位具有特定数据库和编程语言的专家。不幸的是,那个特定的数据库丢失了“数据库大战”,我发现我的职业选择受到了限制。在那之后,我有意识地决定,我再也不会让自己陷入困境。因此,我研究了所有可以动手的东西:Windows,Unix,C,C ++,Java,C#,Perl,Python,Access,SQL Server,Oracle,Informix,MySQL等。无论是新工具还是新技术,我成为了“首选人”-“问克雷格,如果他不知道,他会学的。”结果,我从事了各种各样的项目,从用于环境遥测的嵌入式系统到用于导弹防御的指挥和控制系统。

我遇到的唯一问题是那些坚持不懈的公司当我的专长是通才时,请让我进入专业。 [编辑:也被称为Polymath或Renaissance Man或专科医生。]

要记住的事情……高科技知识的半衰期是什么?它遵循摩尔定律:您知道的所有事物的一半将在18-24个月内过时。选择错误学科的专家很容易受到技术压力的破坏。通才只需添加更多技能,并记住过去应用这些技能的经验教训。

评论


“万事通,无精打采,尽管通常比精通一门精通。” -亚当·萨维奇(Adam Savage)

– jms
08年9月19日在6:08

极好的建议,值得投票。我过去的“孤儿技术”是我的8位Atari,后者输给了C64。不过,我得出了相同的结论-引用海因莱因:“专业化是针对昆虫的”。

– Sherm Pendley
08-10-23在20:48

总是需要权衡取舍,一天中只有86,400秒-您必须决定如何花费它们。就我而言,我选择花额外的时间(超出“工作”时间)来学习一些我认为有趣或将来会需要的东西。您需要做出自己的选择。

–克雷格商人
09年6月16日在16:23

“专业化是针对昆虫的。” -海因莱因

–凯利·法文(Kelly S. French)
09年7月15日在22:25

您的“通才”徽章在哪里? ^^

– Arnis Lapsa
09年9月2日在15:31

#3 楼

我一直以为自己是一个非常热门的程序员。然后,一个叫他亚伦的新人被录用到我们的团队中。亚伦显然在很多方面都比我强。他也比我小。他让我意识到过去几年我并没有真正进步。我是一个特别的黑客,当时是一个中等水平的黑客。

这使我警觉有意识地尝试提高自己,尤其是我编写的代码的质量。

Aaron带我学到很多东西。他教我如何将我编写的大部分代码至少保留和扩展几年,因此我在编写代码时应牢记这一点。我应该为我的代码编写自动测试。 Aaron一直在谈论我如何永远不停止在第一个工作版本上工作,而是重构和完善直到代码优美为止。我发现我使用的语言和工具有很大的改进空间。

我从亚伦那里学到的最重要的东西是永不停止学习。

几年后,亚伦离开了公司。我感到空虚。过去的几年里,他使我的技能提升到了一个全新的水平,我意识到我现在比团队中的其他成员要好得多。他们仍然在编写错误的代码,并像以前一样犯同样的错误。我试图教他们,但他们没有兴趣学习。实际上,他们很生气,因为有人会这么傲慢地告诉他们他们在犯什么错误。

所以,几个月后,我也离开了公司。我搬到一家拥有非常才华的团队的小型公司。那里的每个人都想了解更多,我喜欢它。

我很高兴认识亚伦。没有他,我可能仍会和那帮老帮在那家老公司打交道,无所事事,而且对自己的想法太多了。

评论


通常这是双向的。我现在以“亚伦”身份进入了几家公司,发现一旦我让其他编码人员充满活力,他们就开始为我争取金钱,并鼓励我加倍努力。很棒的帖子!

– Echostorm
08-10-24在11:46

为“ Aaron一直在谈论我永远不应该停止在第一个工作版本中而要重构和完善直到代码优雅为止”的+1

–iceangel89
09年6月16日在11:17

“永远不要停止第一个工作版本” -您应该什么时候完成其余工作? :)

–罗尼·奥弗比(Ronnie Overby)
09年10月2日,3:10

我曾经尝试过成为亚伦(Aaron),有时奏效,但有时我错了。 “那些无法从历史中学到东西的人注定要重蹈覆辙。”保持思想开放的新想法是件好事,但是倾听那些已经为您犯错的人是不好的。当我们从问自己和他人的问题中学到东西时,每个人都需要怀疑。

–丹·比姆
09年12月21日在3:58

问题是太多的人认为他们是“亚伦”

– cinqoTimo
2010年8月21日在17:46

#4 楼

两件事:



读取不同人编写的代码。

编写其他人编写的代码的文档。

编写代码非常容易;我认识的每个其他人都可以做到。但是,阅读别人的代码并弄清楚它的作用对我来说是一个全新的世界。

评论


以及学习不做某事的最佳方法之一:)

–AVID
08-09-21在10:46

您可以看到他们的工作方式。也许他们比您做得更好?

–琼塔
08年11月19日在14:52

我必须深入研究一个真正古老且完全未记录的项目,对其进行记录,修复其中的一些错误,然后将其移植到新系统中。我学到了很多东西,并不是所有的事情都是不做的。虽然我确实了解了评论的价值。

–赛迪乌斯
08年12月9日在6:56

并且在编写文档时,也许为它编写一些单元测试用例(如果不存在)。然后,您还将知道如何使用代码。

– dhable
09年7月23日在16:22

没错,这是我长期以来最艰苦的工作。

– Evernoob
09-09-16 13:34

#5 楼

定期去健身房。

严重的是,当我保持身体健康时,我的大脑会变得更好。问题变得更容易,也变得不那么令人头疼,烦恼不再是一种诱惑,一步一步地解决问题似乎不是一件艰巨的任务。

评论


可悲的事实是,大多数人不定期进行锻炼,甚至根本不做伸展运动,这在当今世界是一个巨大的问题。

–鬼S
09年12月3日在7:29

如果可以的话,我将扩展到任何程度的身体游览。有时候,当我一段时间没有做太多的手工工作时,我开始渴望身体疲劳。当您习惯于精疲力尽时,这有点新颖,当您只是想自己绕圈转圈时,它可以帮助您突围。

–八十一团结
2010-10-21 8:20

是的,今天是最大的问题。我们没有时间,尤其是在巴基斯坦,那里的工作时间很多

– maz3tt
10 Nov 27'7:45

+1提醒自己多运动。

–SingleNegationElimination
2011年2月6日,下午4:01

我发现一项运动是一种伟大的动力-对我来说,这是篮球。

–咖啡因
2011年9月7日18:56

#6 楼

编程。从事有趣的项目。没有什么比进入和工作更重要了。特别是在压力下。我总是告诉任何问我如何编程的人-只是找到一个很酷的项目(即使必须要编写一个项目)并继续工作。

评论


我同意。在项目中弄脏我的手可能是对我的改进的最大贡献。 ; )

–迈克·格雷斯(Mike Grace)
09年7月18日在23:14

究竟。成为更好的编码器的唯一最佳方法是编码。您可以从书籍,播客和同事那里学习所有想要的知识,但是您必须先应用它,然后才能真正理解它。编写更多代码,编写更多不同的东西。因为您不会从重复相同的老技巧中学到很多东西。

–mcv
2010年1月12日在16:30

选择具有挑战性和有趣的项目。我认为克服困难的努力确实提高了您的技能。他们没有去月球,因为那很容易。

–金正宇
11年11月16日在2:08

#7 楼

在我的大学从事兼职工作,为CS学生提供辅导。当您不得不向他人解释时,它确实迫使您从完全不同的角度理解某些东西。

评论


我可以保证。

– John Calsbeek
08年9月17日在4:10

在我还是学生的时候,大学的一位老师就向我介绍了开设的时间。毕业后,我住了近一年(兼职)。

–比尔蜥蜴
08年10月1日在20:05

正如道格拉斯·亚当斯(Douglas Adams)在《德克·根特利的整体侦探社》中所写的那样:“最好的方法是尝试向别人解释它。这迫使您在脑海中理清它。还有更多,您必须将事情分解为越来越简单的想法。”

–琼塔
08年11月19日在14:58

太正确了。摄影教学使我成为一名更好的摄影师。没有太多的编码器

– CAD bloke
08年11月20日在6:41

穆托伊斯塔·菲恩特等人-塞内卡

–pageman
09年8月12日在20:45

#8 楼


我非常喜欢“每年学习一种编程语言”系统。一年让您有足够的时间克服“好吧,我知道语法,所以现在我知道了语言”的偏见,并迫使您走得更远,了解该语言的优点,并以该语言(我的意思是,您最终不会使用Ruby语法编写Java应用程序)。每种语言都会改变您对编程的思考方式-我知道如何使用递归,但是直到我在Prolog上一堂课后,才进行递归思考(我想像ML这样的功能语言会产生相同的效果)。 />启动Pet项目。我个人对于一个好的宠物项目的方程式是,您有过的经验+您没有的经验=您会发现有用的应用程序。例如,Migratr(我自己的将咖啡因变成周末的正在进行的项目)起初是“我知道c#,但我从未针对Web API进行过编码。我想将我的所有照片都移至Zooomr”。就像以前“我曾经使用Web API编写过代码,但我不知道C#”一样容易。

发布宠物项目本身就是一种了不起的教育体验。突然之间,所有事情几乎都没有人教,但每个人都应该知道(对我而言,这是在建立自己的测试系统,从版本控制系统中获得最大收益,在没有其他人设置截止日期时如何调整自己的速度,如何与您的交互)用户以及如何知道何时对功能请求说“不”),所有这些东西都会浮出水面,并迫使您以前所未有的水平进行自我教育-至少不要懒散地阅读dzone上关于这些问题的烈火“ foo”和“ bar”处理方式的优缺点。

做这两件事涵盖了频谱的两端。学习一种新语言将使您成为更好的编码员。宠物项目将使您成为更好的开发人员:P

评论


我只能同意;我可以确认“使用以前未知语言的宠物项目”很好

– Manrico Corazzi
08年9月17日在7:26

一个很好的建议,学习一些半途而废的东西。

–俱乐部
2010年7月27日在9:58

伟大的建议“你有经验的东西+你没有的东西”!谢谢

–sica07
2011年6月8日在11:06

我现在需要一只宠物。

–咖啡因
2011年9月7日在18:58

#9 楼

教自己组装。我13岁时是否使用旧的6502芯片? 14吗太早了。但是我想不到的任何东西都可以使您的开发更加深入。

学习汇编使您可以洞悉计算机在根本上较低的层次上进行“思考”的方式,并且在此层次上的优雅令人惊讶……没有浪费的动作,没有数据的“处置”。在此级别上进行开发将教会您效率,并磨练您的批判性思维和逻辑技能。

65xx芯片具有三个寄存器(累加器,X和Y),并且没有用于乘法或除法的机器级指令,它也可以很快治愈所有草率的习惯。我记得自己编写了一个程序来计算战斗伤害,翻阅了本书,突然意识到我必须编写自己的数学库。花了几周的时间在我的笔记本上书写1和0,试图找出“除”和“小数位”的真正含义。

从那以后我就学习了C ++,pascal,.NET,还有很多其他的东西……但是他们中的任何一个都没有教给我太多,吸引了我很多,或者让我感到“哇”那个在我的旧将军上的集会做到了。

评论


我要投票给您,只是为了带回美好的回忆!也许我什至撕了一点:)

–查理花
09年5月5日在20:16

我仍然在思维上将C / C ++转换为68K汇编语言。令人惊讶的是,它如何帮助您为任何平台编写有效的代码。

–鲍勃·墨菲(Bob Murphy)
09-10-10在20:19

6502啊,带回了美好的回忆。我在该芯片上的汇编器中学到了很多。

–迈克·尼尔森(Mike Nelson)
2010年1月12日在16:52

每个编程专业的学生都应该在他们的早期教育中深入了解汇编器!

–mickeyf
2010年6月15日15:32

我和年轻人做过同样的事情。它确实教会了计算机如何工作,这是高级语言无法比拟的。

– CAD bloke
2010年9月6日下午5:42

#10 楼

回顾我写的旧东西,意识到它们有多糟糕。

评论


我赞成……我什至几乎看不懂我的一些旧东西。

– Unkwntech
08/09/16在20:10

当我浏览我的旧东西时,我几乎无法抗拒地删除整个文件。有时是整个目录。

–克里斯托弗·马汉(Christopher Mahan)
08/09/16在21:03

+1为客观。查看旧代码不会告诉您如何进行改进,只有在进行了改进之后才能进行改进;反之,在没有进行改进的情况下。

–亚伦
08年9月17日在5:47

我已经做到了-我用VB6编写了整个脚本解释器,我写了两年多;它可以制作窗口,处理事件,等等。它变得很大且无法控制,以至于我无法在不破坏所有内容的情况下添加它。那是我在放弃编程书籍之前写的最后一本书。现在我好了。重读那个怪物项目使我意识到自己已经走了多远

–卡森·迈尔斯(Carson Myers)
09年8月20日在18:37

@克里斯托弗·马汉(Christopher Mahan):在非常糟糕的情况下,请看整本书。

–Thanatos
2010年9月3日,下午5:35

#11 楼

阅读

书籍,而不仅仅是网站
用于自我完善,不仅用于最新项目
,有关改善您的贸易,还不仅仅是关于最新技术,
阅读代码,而不仅仅是您正在从事的工作。

只发展阅读的胃口。

评论


另外,frickin',1.我开始怀疑这个选择在哪里。

–Thanatos
2010年1月11日,9:24

#12 楼

编程。

认真地说,有书,有代码katas,有这样的网站,但我认为,作为开发人员的最佳改进方法是与真实的客户一起工作在真实的项目上对真实,不断变化的要求以及真实的工程问题。经验无可替代。

评论


如果您想在某事上变得更好,那没有比做得更好。

– Jeff Siver
2010-09-12 21:03

+1-这使我想起Finding Forrester:“写作的第一个关键就是……写作”

–Wizard79
2010-09-12 21:45

没有其他答案了。您不能真正说出您知道自己在做什么,直到您编写了一批平凡的代码并与业务人员+客户进行了几次产品迭代,并坚持了下来。直到是时候进行更改以满足新的需求之前,您不真正知道自己的代码有多好。

– blucz
2010-09-12 22:27

毫无疑问,我改善程序设计所做的最好的事情就是找到了一份工作。

–马特·艾伦(Matt Ellen)
2010-09-13 15:25

我的猜测是,这个问题暗示着“除编程之外”。

– UncleZeiv
2010-09-13 15:57

#13 楼

我认为您可以做的最重要的事情就是有意识地努力改进。没有万能的灵丹妙药,您必须不断寻找新的信息资源,新的经验和更多的实践。重新做,以及如何做得更好。与以前的项目相同。回顾一下您已完成的工作以及现在可能会有所不同的方法。考虑一下本可以做得更好的地方,或者您仍需改进的地方。

我每天都会看到两个很好的例子。我有一个喜欢学习的同事,想成为他能做的最好的开发人员。他利用任何停机时间来阅读博客,阅读书籍,讨论编程技术以及提出大量问题。在过去的一年中,他的进步也非常明显。另一个同事干得很好,做得很好。但这就是他所做的一切。他坚持自己所知道的,不花很多精力去改进,不在现有项目之外的任何项目上工作,四年后,他拥有与我见面时完全相同的技能和编程能力他。

评论


而且他的技能可能更少,因为他的一些知识已经过时了。

–琼塔
08年11月20日在14:14

#14 楼

许多人建议编写代码。我不得不说,阅读别人的代码会更加有益。

评论


两者的混合实际上是最适合我的;阅读别人的代码并对其进行重构以使其更具可读性是一个很棒的练习

– Manrico Corazzi
08/09/17在7:23

当然,请阅读良好的代码...并理解它。并对其进行修改或编写测试。

–phjr
08-09-17在19:36

读取代码很有趣,但是直到您真正做到这一点,它才真正被您发现。

– tovare
08-09-17在19:38

您必须学习它。就像骑自行车...

–user1249
09年11月21日在9:16

#15 楼

与非常多元且有见识的人结伴编程

评论


我对结对编程的唯一“经验”是我必须帮助同事的时代。当有人陪伴我一起讨论我所面临的问题以及如何解决这些问题时,我的编程会变得更加快乐。

–mhitza
2011年2月6日,0:09

#16 楼

帮助我成为程序员的基本知识:


学习了触摸打字。
学会了克服害羞和提出疑问的方法。

为程序员打字至关重要。每个人都有一个“程序员”同事,正好用两个手指打字,不得不看键盘上的所有东西。不好玩。学习触摸式打字可以大大提高您作为程序员的工作效率。

如果您不问,没人会告诉您。

评论


触摸打字是最重要的技能。试图节省一些击键的人就犯了编程中最大的罪行。

–詹姆斯·柯伦(James Curran)
08-09-23在16:45

我认为这胜过所有其他答案。键入可以节省大量时间,这意味着您可以花更多的时间输入代码并进行尝试。这意味着您可以在书中输入示例,而不仅仅是点头,前进和忘记。尝试成为一名狩猎与啄食的程序员,就像试图通过用脚踩痒痒地成为音乐会钢琴家一样。

– Kyralessa
09年8月26日在18:22

我已经看到人们击中15个向上箭头以恢复2个字符的命令。真伤心就像有些没有IDE的孩子一样……完全没有能力。

–xcramps
09年9月2日在16:09

与此相反,我从来没有学会触摸式。我曾经尝试学习一次,但是立即开始感到手腕疼痛,将它们放在桌子上以假定正确的手部姿势正在给最重要的腕管施加压力。因此,我认为选择类型至少具有一些人体工程学上的优势。而且我已经做了很久了,我只是断断续续地看了一眼键盘,所以并没有真正的生产力损失。无论如何,我大部分时间不是花在输入字符上,而是花在阅读代码和弄清楚如何最好地解决问题上。

– Eloff
09年11月12日在2:39

手的位置并不重要-重要的是您无需看就能打字。我不会在笔记本电脑上腕部休息。

–user1249
09年11月21日在9:19

#17 楼

对我来说,贡献/参与开源项目是迄今为止最大的事情。

#18 楼

您可以阅读自己喜欢的所有书籍,代码和开放源代码项目,但是您需要了解软件开发的最终用户方面。您需要走出回波室。因此,我将介绍一些非技术性的要点,这些将对您的技术职业有所帮助。


远离键盘,与最终用户互动,并通过他们的眼睛看到如何他们使用该软件。最终用户通常不是技术人员,因此他们将软件视为一项神奇的工作,而您将软件视为一组合理的步骤。这两个世界是完全不同的。因此,对您而言似乎容易且合乎逻辑的事情对其他人而言似乎是神秘而又令人生畏的。
测试,测试,测试。我在大型公司中看到的许多软件都使用测试用例。地狱,他们使用JUnit,xUnit和其他所有单元测试语言。但是我所看到的问题是,大多数程序员从未看到过他们的软件在生产环境中的样子。了解用户(或系统,如果它们是批处理作业)如何与您的应用程序,库或界面进行交互,以找出他们向其扔出什么样的可憎信息。这将帮助您生成良好的测试用例,并停止假设您的程序将始终获得正确的数据集。


评论


真正。您可以测试一堆(直到现在)的最终版本,方法是让一帮您认识的非技术人员试用并听取他们的评论(确保选择不会说“很好”的人,因为这显然对您没有任何帮助。)

–琼塔
08年11月20日在15:18

#19 楼

学习计划。

评论


是的,那对我来说也很重要。触摸打字和配对编程也很重要。

–匿名
2010年1月12日在22:08

#20 楼

编写代码和很多代码。

评论


我们都开始编写糟糕的代码。如果您写的足够多并且努力工作,那么您会变得更好。代码检查有帮助,但是最好的方法是检查您自己的代码。

–斯科特·罗森鲍姆(Scott Rosenbaum)
08/09/16在20:44

阅读代码及其很多内容。

– Stefan
08-10-25在15:46

读写大量代码...开源对我们来说是一个福音;)

–奥德
09年1月11日在17:13

#21 楼

学习正则表达式。

评论


就在四个月前我开始自学perl时!我在一般天空中使用vim和unix的能力猛增了!惊人。

–sixtyfootersdude
2010年5月20日20:18

正则表达式不仅有用,还可以让您以不同的方式思考。

– Tikhon Jelvis
2010年6月17日下午6:10

+1。完全同意。令我惊讶的是,人们常常在vi,sed或grep中做相当基本的事情时,会感到惊讶。

–瓦伦丁·海尼兹(Valentin Heinitz)
2011年1月11日在21:55

#22 楼

参加TopCoder算法竞赛。

评论


我发现TopCoder有点问题。好的,它使您可以更好地考虑算法,但是由于时间紧迫,您不得不使用糟糕的风格(所有代码都在一个类中),因此您可能不会注释和测试。也许欧拉计划是更好的选择。

– hstoerr
08-12-10在16:12

您不会被迫以不良的风格工作;您可以根据需要选择任意多个班级。另外,如果要始终通过,则最好进行测试,因为在单边情况下失败的解决方案将获得零分。

–mquander
09年2月13日在19:39

@hstoerr-更不用说竞争者因其代码难以阅读而获得奖励(他们的解决方案更难挑战)

– Shane Fulmer
2010年5月18日在14:27

(很抱歉,这听起来很冒犯)我发现不喜欢Topcoder(或其他类似竞赛)的人试图找出原因,使他们成为可怕的程序员。如果您不喜欢它们,也可以。但是弥补虚假的原因对恕我直言没有帮助。 TC中没有认真的参赛者会故意混淆代码(如果被捕获,这实际上是取消比赛资格的理由)。我看到很多不参与竞争的人一直在编写错误的代码。算法竞赛的目的不是教导良好的编码习惯(从其他地方学习),而是旨在教导/开发更深入的东西。

– MAK
2010年11月3日,12:45

TopCoder是一种向自己展示自己可以变得更好的方法。

–托马斯·阿勒
2011年2月6日在2:07

#23 楼

全力以赴:创建自己的项目,里程碑,资源,依赖关系,需求和测试计划。它不仅会迫使您提高编程技巧以在特定参数内运行,而且还会突出显示您最需要改进的地方。定期更新进度(无论是通过博客还是进行更正式的项目更新),以便您可以准确地看到自己去过的地方和希望去的地方。

#24 楼

辞掉我的上一份工作。

评论


我也是! (需要更多字符...)

– synhershko
2010-09-28 8:50

如果您告诉我们原因,这甚至可能是答案。 ;-)

– hstoerr
2010-09-28 10:45

用内部框架(基于EJB2)进行的支持项目并不是我的乐趣。没有新的东西,只有废话。而且在新工作中的观点并不更好。 :(

– mihn
2010-09-28 17:57

去过也做过。

– Allbite
2010-09-29 6:05

+1祝您顺利完成不死的工作。

– Tomome Szpakowicz
2010年9月29日在7:08

#25 楼

我认为不断质疑自己在做什么是最大的事情。永远不要认为您的代码是完美的,请始终努力对其进行改进。

我认为我的代码很完美,好像经历了2到3次,然后意识到我还有很长的路要走。

我想最大的事情是是当我开始看到自己的代码本身被其他程序员而不是机器占用的时候。编写您的机器可以处理的代码很容易,但是编写干的,易于理解的代码却很困难。

我的意思不是仅仅理解“这行代码是做什么的”,我的意思是使图变得微不足道“使该类与所有其他类相适应”,同时使类的接口格式正确,以至于几乎不可能滥用它。

#26 楼

他们说70%的良好代码是错误检查和处理。当我以这种方式开始编程时,我的代码变得更好了。考虑可能出了什么问题然后立即进行处理已产生了巨大的变化。感觉就像检查只是阻碍了代码的启动和运行一样,但是从开始到完成的时间缩短了2到4倍。


这些人“他们”到底是谁,“他们”住在哪里?


#27 楼

当我开始思考在实现某个东西之前该如何记录这个东西时,我的编码技能有了很大的提高。

这里的“事物”应该具有所有可能的粒度。从方法到整个产品。例如,在方法级别,它防止在实际编写之前在API中添加不合适或不清楚的方法。而且,如果我真的需要实施一种我无法轻松记录的方法,则表明某个地方存在设计问题...

自动出现的态度是“如果我无法解释它,我会不要写“”可以过滤掉错误的代码,反之,一旦我知道如何正确记录事物,它就会变得更简单,更清晰地实现。

#28 楼

不断学习和实践所学知识。

通过以下方式:个人项目:自从我开始编程以来,我一直在从事个人项目。从小游戏,图像处理,隐写术,实现文件类型规范,从头开始实现各种协议,或者随着时间的推移实现各种程序。
读书:我决定在业余时间阅读和阅读各种书籍。专家们围坐在一旁等待阅读,有很多写得很好的书。通过阅读各种论坛帖子,您可以从书中获得无与伦比的深度。


评论


+1提及书本。如果所有的经验都花在了错误的事情上,那么很多经验是不值得的。

–millard
2010-09-13 4:53

#29 楼

通常这是我学习任何新技术的时间顺序:


定期阅读优质博客(Atwood,Martin Fowler等),了解最新技术新闻,关注相关内容关于有趣的新技术。这些步骤将让我决定是否有任何值得进一步探索的东西。
阅读正确的书或任何其他资源以适合您的水平(例如,对于初学者而言,如果您想学习设计模式,我建议您“先行学习”设计模式”)。我还特别喜欢书籍。
使用我学到的东西来设计一个或两个玩具项目。我不担心该项目的用处。我的目的只是利用我的学习。 (例如,用于OOP的计算器项目就可以了)
我是否可以在工作中使用这些东西。 (例如,尽管我们在工作中不使用Subversion,但我将其用作本地存储库,但我使用Ruby来完成一项任务,否则该任务将过于单调且耗时)
这是我认为最好的部分人们错过了。知识共享会议。例如,与团队成员进行一到两次会议。我相信教学是真正学习技术的最好方法之一。我保证,不管您的听众是否接受,您对技术的理解程度都将变得多元化。 :-)


#30 楼

破解一些开源项目几个月;越大越好。当您与一些不认识您的知名度高,地理分布多样的人进行交流时,您会不由自主地从错误中更快地学习-我认为这是一个令人尴尬的因素。另外,如果您确定一个或两个真正聪明的人,则可以从他们那里收集有价值的见解,即使不是纯粹的知识也是如此。