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


876

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

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

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


18
练习,练习,练习。永远不要对想到的第一件事感到满意。
Mark Ransom'9

2
马克·兰索姆(Mark Ransom)+1 ...当您仍然不满意想到的第100件事时,困难就来了!
Stimul8d 2010年

5
不浪费我任何时间在Programmers Stack Exchange网站上,极大地提高了我的编码技能。
Job

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

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

Answers:


753

没有特定顺序...

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

  • 不论别人是大三,中级,中级或上师,都务必倾听别人怎么说。职位名称没有任何意义。

  • 学习其他框架/语言,看看它们是如何工作的,并将其与我已经知道的东西进行比较

  • 阅读有关模式,最佳实践的信息,然后检查我的旧知识并在必要时应用这些模式

  • 配对编程

  • 不赞同乔尔所说的一切。;)


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

117
观看更聪明的人如何处理错误-那是我从错误中学到的最多知识

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

3
我同意mmyers-只是因为您不同意某人,并不意味着您就忽略了他们。实际上,情况恰恰相反-为了不同意他们,您实际上是在关注他们。
克里斯蒂安罗莫

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

557

决定TO是“杰克的万事通”

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

我曾经遇到过的唯一问题是那些坚持聘请皮特翁让我进入专业领域的公司,而我的专长是通才。[编辑:也被称为Polymath或文艺复兴时期的人或多专家。]

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


224
“万事通,无精打采,尽管通常比精通一门精通。” -Adam Savage
jms

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

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

74
“专业化是针对昆虫的。” -海因莱因
凯利·S·

31
您的“通才”徽章在哪里?^^
Arnis Lapsa 09年

459

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

这提醒我有意识地尝试改善自己,尤其是所编写代码的质量。

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

我从亚伦学到的最重要的事情是永不停止学习。

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

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

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


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

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

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

4
我曾经尝试过成为亚伦,有时候行得通,但有时我错了。“那些无法从历史中学到东西的人注定要重蹈覆辙。” 让我们的思想开放给新想法是件好事,但是倾听那些已经为您犯错的人是不好的。当我们从问自己和他人的问题中吸取教训时,每个人都需要怀疑。

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

257

两件事情:

  1. 阅读不同人编写的代码。
  2. 为其他人编写的代码编写文档。

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


42
以及学习不要做的最好方法之一:)
AviD

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

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

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

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

199

定期去健身房。

认真地讲,当我保持身体健康时,我的大脑会好得多。问题变得更加容易,不那么令人头疼,烦恼不再是一种诱惑,一步一步地解决问题似乎并不那么艰巨。


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

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

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

2
+1提醒自己多运动。
SingleNegationElimination's

我发现一项运动是一种伟大的动力-对我来说,这是篮球。
阿德尔(Adel)

181

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


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

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

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

172

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


1
我可以保证。

1
我还是学生的时候,大学的一位讲师告诉我有关开设的信息。毕业后,我住了近一年(兼职)。
比尔蜥蜴

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

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

9
穆斯塔·伊斯塔·弗恩特等人-塞内卡

135
  1. 我是“每年学习一种编程语言”系统的忠实拥护者。一年让您有足够的时间克服“好吧,我知道语法,所以现在我知道了语言”的偏见,并迫使您走得更远,了解该语言的好处,并以一种该语言(我的意思是,您最终不会使用Ruby语法编写Java应用程序)。每种语言都会改变您对编程的看法-我知道如何使用递归,但是直到我在Prolog上一堂课后,才进行递归思考(我想像ML这样的功能语言会产生相同的效果)。

  2. 启动一个宠物项目。我个人对于一个好的宠物项目的方程式是,您有过的经验+您没有的经验=您会发现有用的应用程序。例如,Migratr(我自己的咖啡因周末转变为正在进行的项目)起初是“我知道c#,但我从未针对Web API进行编码。我想将我的所有照片都移至Zooomr”。就像以前“我曾经使用Web API编写过代码,但我不知道C#”一样容易

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

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


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

一个很好的建议,以学习一些熟悉的东西。

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

我现在需要一只宠物。
阿德尔(Adel)

118

教自己组装。我13岁时是否使用旧的6502芯片?14吗 太早了。但是我想不出什么能比深入到位更能改善您的开发了。

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

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

从那时起,我就学习了C ++,pascal,.NET以及许多其他东西……但是,他们中没有一个教给我太多,吸引我太多,或者让我感到“哇”,就像我的旧将军上的汇编所做的那样。


16
我要投票给您,只是为了带回美好的回忆!也许我什至撕了一点:)
查理·弗罗里斯2009年

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

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

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

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

110

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


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

28
当我浏览我的旧资料时,我几乎无法抗拒地删除整个文件。有时是整个目录。
Christopher Mahan

+1为客观。查看您的旧代码不会告诉您如何进行改进,只有您有所改进,以及如何进行改进;反之,如果没有进行改进。

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

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

93

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

只是增加阅读的胃口。


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

87

编程。

认真的说,有书,有代码katas,有这样的网站,但我相信,作为开发人员的最好的改进方法是从事真实的项目,让真正善变的客户对真实的工程有不断变化的要求问题。经验无可替代。


8
如果您想在某事上变得更好,那没有比做得更好。
杰夫·西弗

4
+
1-

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

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

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

81

我认为您可以做的最重要的事情就是有意识地努力进行改进。没有什么灵丹妙药,您必须不断寻找新的信息资源,新的经验和更多的实践。

第二重要的事情是,思考您在做什么,为什么要做以及如何做得更好。与以前的项目相同。回顾一下您已经完成的工作以及现在可能会有所不同的方法。考虑可以做得更好的地方,或者您仍可以改进的地方。

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


7
而且他的技能可能较低,因为他的一些知识已经过时了

72

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


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

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

4
阅读代码很有趣,但是直到您真正做到这一点,它才真正被您所接受。

您必须这样做以学习它。就像骑自行车一样……

70

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


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

67

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

  • 了解触摸输入。
  • 学会克服害羞和提问。

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

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


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

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

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

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

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

56

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


53

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

  1. 离开键盘,与最终用户互动,并通过他们的眼睛看到他们如何使用该软件。最终用户通常不是技术人员,因此他们将软件视为一项神奇的工作,而您将软件视为一组合理的步骤。这两个世界是完全不同的。因此,对您来说似乎容易和合乎逻辑的事情对其他人可能看起来有些神秘而又令人生畏。

  2. 测试,测试,测试。我在大型公司中看到的许多软件都使用测试用例。地狱,他们使用JUnit,xUnit和所有其他单元测试语言。但是我所看到的问题是,大多数程序员从未看到过他们的软件在生产环境中的样子。了解用户(或系统,如果它们是批处理作业)如何与您的应用程序,库或界面进行交互,以找出他们向其扔出什么样的可憎信息。这将帮助您生成良好的测试用例,并停止假设您的程序将始终获得正确的数据集。


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

48

学习计划。


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

46

编写代码和很多代码。


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

阅读代码及其很多内容。
Stefan

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

45

学习正则表达式。


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

正则表达式不仅有用,还可以让您以不同的方式思考。
蒂洪·耶维斯

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

39

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

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

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

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

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

38

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


36

辞掉我的上一份工作。


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

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

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

去过也做过。
Allbite

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

29

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

当我认为自己的代码完美无缺时,似乎经历了2到3次,然后意识到我还有很长的路要走。

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

我的意思不是仅仅理解“这条线是做什么的”,而是要弄清楚“该类如何与所有其他类相适应”,同时使类的接口如此结构以至于几乎是不可能的滥用它。


29

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

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


28

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

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

自动地,“ 如果我不能解释它,我就不写它 ” 的态度过滤掉错误的代码,反之,一旦我知道如何正确地记录事物,它就会变得更容易实现。


28

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

通过:

  1. 个人项目:自从我开始编程以来,我一直在从事个人项目。涉及小游戏,图像处理,隐写术,实施文件类型规范,从头开始实施各种协议或随着时间的推移实施各种程序。

  2. 阅读书籍: 我决定在业余时间阅读并阅读各种书籍。专家们围坐在一旁等待阅读,有很多写得很好的书。通过阅读各种论坛帖子,您可以从书中获得无与伦比的深度。


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

27

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

  1. 定期阅读优质博客(Atwood,Martin Fowler等),了解最新技术新闻,关注有趣的新技术。这些步骤将使我决定是否发现任何值得进一步探索的东西。

  2. 阅读正确的书或任何其他资源以适合您的水平(例如,对于初学者来说,如果您想学习设计模式,我建议您采用“ Head First设计模式”。)我还对书籍特别的偏爱

  3. 用我学到的东西推出一两个玩具项目。我不担心该项目的用处。我的目的只是利用我的学习。(例如,面向对象的计算器项目就可以了)

  4. 我会看看我是否可以在工作中使用这些东西。(例如,尽管我们在工作中不使用Subversion,但我将其用作本地存储库,但我使用Ruby来完成一项任务,否则该任务将过于单调且耗时)

  5. 这是我认为大多数人都错过的最好的部分。知识共享会议。例如,与团队成员进行一到两次会议。我相信教学是真正学习技术的最好方法之一。我保证,无论听众是否接受,您对技术的理解水平都将变得多元化。:-)


24

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

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.