it-swarm.cn

我不会在业余时间编程。那会让我成为一个不好的开发者吗?

网络上的许多博客和建议似乎暗示,要成为一名出色的开发人员,仅仅做日常工作是不够的。例如,您应该在业余时间为开放源代码项目做出贡献,编写智能手机应用程序等。实际上,很多建议似乎表明,如果您不喜欢整日编写程序,那么您会可能是在错误的职业中。

我不这样认为。我很喜欢我的工作,但是当我从办公室回家时,我并没有心情直接跳回到计算机上并开始编码,直到就寝为止。我每天只有几个小时的空闲时间,我宁愿将它们花在其他爱好,见朋友或出门旅行上,而不是在电脑前。

我确实从编程中受益匪浅,偶尔会在工作之外闲逛。我致力于个人发展,并花时间阅读技术博客和书籍,以保持学习和不断进步。但这并没有延伸到我想用我所有的业余时间进行编码。

这是否意味着我不是一个真正的“真正”软件开发人员?不用做额外的工作就能成为一名优秀的软件开发人员吗?我很想听听您的想法。

更新:感谢大家的评论和回答。很多好的想法和建议!

387
not-my-real-name

IMO的这种态度来自具有可怕的吸吮性工作的人,再加上可怜的时间管理技能。如果您基本上整天都在键入Web表单,请出去找一份更具挑战性的工作,或者自己开始。

就是这样。一位音乐会音乐家(大提琴手/钢琴演奏家/随便什么),每天最多练习6个小时。大多数人每天只练习几个小时。 最高级别

人们说更多的程序,因为您了解更多,但这是一个烟幕。每天8小时是大量

进度是[〜#〜]不是[〜#〜]线性的。它是对数的:

enter image description here

音乐家练​​习超过3个小时的唯一原因是,他们需要挤出那些课时给他们的额外1%。如果您认为适用于您,重新解决了20年前CS解决的问题,那么您就有了从表面到表面的复杂性。

我以前在压力锅公司工作过,并且相信我,这些人完成的实际工作量并不比像37signals这样对工作量有所限制的公司要好: http:/ /37signals.com/svn/posts/996-why-i-love-working-with-family-people

最终发生的事情是,可以肯定的是,您可能在计算机前呆了10-12个小时,在办公室呆了另外2个小时,但这还不包括您花的90分钟午餐,您花2个小时浏览讨论的时间论坛和时间休息,您必须玩办公室里布置的众多游戏之一(桌上足球,台球,雅达...)。

回头看一下这张图。现在回到我身边

如果您参与其他活动,您的思想实际上就有机会扩展更多学习弹奏乐器学习外语。最好还是出去做做些运动,并与真实的人交流

关于生产率的对数性质:

在著名的1993年有关年轻小提琴家的研究中,性能研究人员Anders Ericsson发现,最好的小提琴演奏者都以相同的方式练习:早晨,以不超过90分钟的三个增量进行练习,每次间隔一会。埃里克森在其他音乐家,运动员,下象棋者和作家中发现了相同的模式。

对于实际生产力,少就是多

这实际上是商业世界中众所周知的原理,令我惊讶的是更多的程序员还没有听说过它。

更新:有关爱立信研究的更多信息。

整个过程需要10,000小时/ 10年才能完全熟练,这实际上是由爱立信而不是Malcom Gladwell进行的研究得出的。

众所周知,您可以将1年的经验重复10次……因此,仅将屁股坐了10年就没有资格。 符合的条件是爱立信所说的故意实践

他发现这项原则在田径,音乐,写作,国际象棋和数学中都适用。他进一步将故意练习定义为如此努力,以至于即使在最高级别下,您每天也只能花费大约4个小时。否则,您将遭受过度训练或倦怠的痛苦。再次,他认识到有意练习的回报率递减,最长约4小时。

关于没有良好/具有挑战性的工作:

G。要么找到更好的工作,要么是一个主意:至少在现在,将您当前的工作变成not

我认识的最好的程序员之一,是在一个由数十个程序和成千上万行代码组成的遗留系统上担任维护程序员的工作。多年来,其中大多数已经被黑客入侵,以至于您不得不说它不再具有任何连贯的设计。

这几乎是无用的,死胡同的工作。管理层希望您保持警惕,并修复这些臭虫。优秀的开发人员正在从事未开发的项目。人们要么来这里休息直到退休,要么就积累了几年的经验,然后再进行新的应用程序开发。尽管大多数程序员会抱怨缺乏职业发展,或者没有机会学习新事物,或者没有令人兴奋的项目来开展工作,或者更笼统地说,只是无聊地没有人支持他们,这个家伙只是坐下,去做需要做的工作。

在过去的2年中,他将系统从杂乱的意大利面条代码转换为精美的东西,并像瑞士手表一样运作。如此彻底的变革使该部门的副总裁开始越来越重视现有项目,并开始质疑未开发项目的价值。尽管他没有头衔,但运营人员还是以他作为事实上的组长来找他。当我离开时,副总裁正在谈论为他创建新角色的系统架构师...

我不确定那之后他怎么了,但是他教了我一些非常重要的教训:

  1. 您的工作就是自己做的,并且有一个有趣的问题要解决无处不在。如果您讨厌编写CRUD屏幕,请通过自动生成屏幕来解决问题。

  2. 不要坐在周围等待机会来找你。他们永远不会。

446
red-dirt

此消息中还有更多隐藏的内容。

许多热心的程序员喜欢探索事物,进行实验,遵循他们的想法,这就是我们学习和获得技能和愿景的方式。

通常,您不会在工作时间内关注自己的兴趣。您只要做被告知要做的事情就可以了。我们中只有极少数人有幸能在工作中完成即使不付薪水也能亲自完成的工作。

因此,如果您不做任何额外的事情,您就无法发挥自己的潜力。而这正是问题所在。

150
user8685

它并不能使您成为一个糟糕的开发人员,但是不幸的是,您仍然必须与做这些的人竞争。

Seth Godin的博客 中阅读:


不合理

在下雪天(学校取消了)下床,将停机时间变成一个额外的学分物理实验室的六个小时的工作,这是不合理的。

推出将产品开发曲线缩短九个月的技术产品是不合理的,下一代产品要比更合理的竞争对手早得多地推出。

对于货运公司来说,在第一铃响起接听电话是不合理的。

没有风险投资可以带来的保证,成立新公司是不合理的。

期望医生办公室有一个愉快而乐于助人的前台工作人员是不合理的。

即使您想做一些勇敢而新颖的事情,在当今的经济环境中放弃出色的演出也是不合理的。

老师期望我们可以让处于劣势的内城区孩子在高中表现出色,这是不合理的。

考虑到您承受的压力,以尊重的态度对待您的同事和竞争对手是不合理的。

不能指望一个伟大的女人,一个既有干劲又有优势的人,除了一个伟大的女人,在这个与普通百姓抗争的世界里,能做任何重要的事情都是不合理的。

花一生的时间来生产大多数人永远不会欣赏的产品是不合理的。

幸运的是,世界上到处都是不讲理的人。不幸的是,您需要与他们竞争。

70
Ryan Hayes

要回答提出的问题:不利用业余时间进行编程使您成为不好的开发人员,但是,利用业余时间进行编程可以使您成为更好的开发人员。

在业余时间进行编程当然不会损害您的技能,但是您不应感到有义务去做。编程似乎是一个相对独特的领域,因为对于许多人而言,编程既是他们的工作,也是他们的业余爱好,因此他们在业余时间喜欢编程。

57
shortkaik

不,这不会使您成为一个不好的程序员。从长远来看,根据您的操作,它可能使您成为更好的程序员。在您职业生涯的早期,这可能会影响您学习所需各种技能的速度。但是,您可能会获得长期有用的技能和信息。做些运动也不会受伤。

有大量的研究表明,大约40个工作周可以看到绩效。虽然我们可以长时间生产,但从长远来看,我们会降低效率。我看到的研究表明,工作80周的人的生产率与每周工作40个小时的人的生产率差不多。

您可以在下班时间(或上班时间)反映以下几点,以帮助您更好地表现:

  • 你在做什么?你能做得更好吗?您需要这样做吗?
  • 你在学什么?您需要学习什么?
  • 您遇到什么问题?谁是最好的解决方案?你能做什么?
23
BillThor

不用做额外的工作就能成为一名优秀的软件开发人员吗?

绝对是.

这可能比花费额外的时间来磨练自己的技能要花费更长的时间。我还发现,如果我全职工作并且在工作时间以外很少做编程,那么很难花足够的时间进行自我完善。

年轻的时候,我比现在多投入更多来学习。在这一点上,我日常使用的概念已经根深蒂固,在这种经验的带动下,似乎更容易获得更多知识。

“好”的程序员似乎会多花一些时间,因为他们天生痴迷,倾向于反社会,并真正享受编程和整个解决问题的过程。

15
quentin-starin

在大局上,关键在于找到正确的生活平衡。

重要的是,无论您处于何种水平,您是否喜欢编程以及是否继续学习。无论您是否在户外工作,都不会自动使您成为“好”或“坏”的程序员。

从个人角度来看,我从事编程已有25年了(从小开始,然后是专业)。我绝对喜欢.

但是,我几乎从不对外部工作进行编程。这与几件事有关:

  • 我很幸运,在工作中,我每天都能整天做自己喜欢的事情。
  • 简而言之,生活中还有其他事情,一天只有几个小时。
13
NPE

您可以仅在工作期间进行编码就可以成为一名优秀的程序员,尤其是如果您能够很好地管理自己的职业。但是,最出色的程序员也会在下班时间进行编码。话虽这么说,一个能找到很多学习机会的好工作,善于利用工作时间的人,等等,比起在家编写代码的人来说,它会是一个更好的程序员,因为他找不到在工作中遇到有趣挑战的工作。工作日。

虽然在家编写代码很有价值,但我想说,最大化工作环境的价值(通过向同事学习,挑选好工作,积极管理职业)通常更有价值。最伟大的程序员会同时做这件事,并且对学习和指导他人也怀有很高的态度。

9
Ethel Evans

真正的问题是,新开发人员是否能够编写足够的代码(应对足够多的问题),以通过数十万行实践代码并成为一名体面的程序员。

从理论上讲,这可以在工作中完成,也可以在您自己的时间完成,或两者兼而有之。实践必须一定是自我指导的,因此您可以学习需要学习的东西。这意味着工作有点灵活。

很多时候,入门级工作都是大量的错误修复或其他工作,这些工作都不会教你变得更好。您需要做的是从头开始编写很多代码,而这些代码可能很糟糕。雇主很难为此付出代价。这就是为什么人们最终会一边做一个开源项目,或者启动一家初创公司之类的原因。

当人们说您必须在业余时间进行编程时,我认为这确实意味着您必须尽早通过多年的有意义的实践来发挥作用。您必须尽一切努力来进行练习,并学习从头开始编写和维护大型代码库。如果没有人付钱让您从头开始编写可能是灾难性的系列项目,那么只有空闲时间是唯一的选择。

如果您在年轻时就已经开始练习,并成为一名优秀的程序员,那么我认为如果以后再保持9比5的水平,您不会失去基础技能。后来更多的是跟上不是很费时的新技术。

但是,这是一项难得的入门级工作,它本身就能为您提供实践的数量和质量,从而首先成为一名优秀的程序员。新开发人员需要主动学习,而不仅仅是从事入门级任务的入门级工作。

如果您已经有一个家庭,并且非常强调工作与生活之间的平衡,那么从头开始成为一名优秀的程序员真的很难。就像在这种情况下要成为一名医生或成为一名熟练的音乐家或其他任何人一样,真的很难。人们倾向于在年轻时而不是年长时经历数千小时的练习。

7
Havoc P

成为任何专家都需要10,000个小时的努力。 [Michael Gladwell,“异常值”]

因此,在达到该水平之前进行额外的工作将使您加速迈向真正的专家状态。

一旦您超过了该水平,那么花更多的时间将获得很小的收益/收益递减。

5
Jorgen Thelin

如果我在接下来的六个月中花时间在业余时间开发基本游戏,而您却不这样做,并且假设所有其他条件都相等(它们永远都不会),那么我们中谁会知道更多?我们中哪一个会有更多的技能和经验?

这种影响将是累积性的,因为较早的下班时间知识将融入新工作和新的下班时间知识中。

据我所知,这就是为什么人们建议在业余时间进行编程。

5
Paul Nathan

在好与坏之间,有许多不同的层次。您一天仅做8个小时左右的工作,就不可能成为一名优秀的开发人员,这可能会解决非常有限的领域中的问题。

如果您的工作变化多端,您可能会变得“体面”或“成就”或您喜欢的任何形容词,但恐怕要成为一名出色的开发人员,您必须要有一点头脑。

进行业余编程的另一个原因是,在工作中,您通常必须遵守次优标准,并做出一般性的妥协,即使您确实学习了新事物,也可能不允许使用它。

还有一个甚至更平淡的是,您在工作中编写的任何代码均归您的雇主所有。当您为其他人工作时,您无法回到过去并从多年的错误中学习。

5
biziclop

您不应将其视为“它使我成为一个不好的程序员”,因为像每项技能一样,多练习只会使一个更好。

因此,如果您想变得比现在更好,并学习工作不允许的新技术和领域,那将是您不费吹灰之力和时间所用的地方。

但是,花费额外的时间编码(只是为了向某人证明您编写了额外的代码)并不一定意味着您成为一名优秀的程序员,除非您了解自己的工作并做一些不同的事情或对已有的知识有所改进,而不是盲目地剪切/复制/粘贴。并整理技巧。我认为,投入额外的时间并一遍又一遍地做同样的事情不会对您有所改善。

4
Simon

白天,您的编程是短期选择。有钱可赚,您确切知道要赚多少钱,用什么来赚,除了薪水之外,您没有其他收益。

在晚上,您需要进行长期押注-这些疯狂的想法基本上根本不会起作用。这些项目会使您脱颖而出。这就是您成为PHP)的发明者,而不是使用它的代码猴子)的发明者。

我采访了许多程序员,他们是否在工作时间以外做过有趣的怪事,这是一个即时的开绿灯。这是非常罕见的。

尽管我会这样说:有一次,一个在工作时间之外做了很多很酷的事情的家伙竟然完全被雇了。我仍然被那个家伙迷住了。

4
lucas

要回答您的问题:不,这不会使您成为不良的开发人员。

但是,这可能会使您的职业生涯更加艰难。如果您有一份工作在不断学习可以帮助您进一步发展职业的新技术(无论是当前职位的晋升还是其他公司的新职位),那么您就定下了脚步。

但是,如果您目前在一家公司使用的技术很少变化的公司工作,那么在2或5到10年内,您可能会很难找到下一份工作。如果您要在家中使用新技术进行编码,并且要展示一些东西(应用程序,网站,开源项目等),那么您会发现获得下一份工作要容易得多。

当然,在接下来的40年中,您可能完全乐于做同样的事情,只要您的公司和技术继续存在,那么您就定会了!

3
taggartgorman

真正的问题是你整天在做什么。通常无法正确应用与运动员和音乐家的类比。除非您有明确的能力将部分工作时间花在真正的“练习”上,否则您的日常工作不是练习,而是表现。你怎么知道的?如果您没有时间做任何“正确的事”或彻底学习新的语言/技术/框架/等知识,那么您就没有在练习,而是在练习。职业运动员和音乐家在比赛或音乐会中并没有进步,而在专注练习中会变得更好。因此,如果您像大多数人一样,只有真正的编码“实践”才是户外工作。话虽如此,只有集中精力才值得。如果您整天乱砍然后整夜乱砍,您只会感到疲倦,而不是更好。

例如,您需要在工作中优化一段代码,然后将常用的分析工具投入其中,并可能将其速度提高50%,然后继续执行下一个任务,但是您认为还有其他事情可能会对您有所帮助更多,但您没有时间尝试。如果您将这段代码带回家,并花了几个小时才能真正拧干代码,那么您正在学习的技术将使您下次优化某些内容时变得更好。您在家工作与在办公室做的事情不同。

练习是关于增加技能和磨练技能的,而这些活动必须以人工方式进行(就像隔离健身房中的肌肉群,没有人在正常的体育锻炼中那样)。在家构建应用程序不会自动练习。在家工作应侧重于技术和过程,而不是最终产品。如果最终产品是您需要激发的动力,那就太好了。只是不要陷入以与工作相同的方式进行开发的陷阱。

编码kata运动是实践的全部示例。

3
wai

作为一个优秀的软件开发人员,内心真正取决于您的内心。您可以尝试成为一名出色的音乐家,并在音乐上投入大量时间,但这仍然不能使您成为一名优秀的音乐家。您需要享受自己的工作才能成为一名优秀的音乐家。曾经有过,但现在由于我的喜欢,我开始在软件上进行除正常工作以外的其他工作,这提高了我在正常工作中的表现,也使我有很多时间参与与软件无关的其他活动。因此,基线就是享受您所做的事情,并且您最终将做所需的事情。

3
Siva

如果拥有一份可以为您提供完全引人入胜的知识体验的工作,那么这很可能就是您的精神生活-外面的工作是为了消灭Steam。如果您的工作不吸引您,那么下班后您很有可能会获得智力上的满足。在任何业务中都是如此,而不仅仅是编码。

在办公室中编码会降低您的创造力和时间。每天至少有8个小时,您的想法代表他人在不断冲刺。出现这种情况是正常的,而不想回到计算机上。当我在办公室工作时,情况对我来说是一样的-我会回家,只想做饭,或者去看电影,和朋友一起闲逛,或者只是坐在电视前。然后从2001年至2004年左右,在我为油罐车工作的公司工作后,我开了车,然后退学,开了辆出租车,等待餐桌。那是我真正开始在下班时间编码的时候。

事实是,我认为没有人每天有超过8个小时的高质量编码时间。许多编码器只有2-3个,但他们可能是那里效率最高的人。这就是您使用它的方式,以及如何传播它。

1
strike

这是一个很棒的帖子。

我会说,不,这不会使您成为不良的程序员。如果您的评论很好,并且您按时完成了任务,那么您就完全相反了。老实说,我很羡慕您在工作时就可以编写代码。

我在业余时间进行编程的主要原因是,我并不真正在意工作,而是利用业余时间做自己喜欢的事情。我喜欢做的是视频游戏编程。没有有效的游戏公司在我的住所工作(我现在在这里有一个家庭),所以我会尽可能帮忙开发独立游戏。这是治愈瘙痒的唯一方法。如果我一整天都做着自己喜欢的事情,那么很可能我不会在业余时间去做。

1
Corv1nus

不用做额外的工作就能成为一名优秀的软件开发人员吗?

这取决于您从事的行业。有些行业比其他行业更具竞争力。

如果您不想自己学习新知识,则很可能会保持目前的技能水平。那可能就足够了……还是没有。

这与投入的时间无关,它与好奇心有关,对知识和掌握的渴望。显然,它与保持最新无关,它与基础知识(通常是硬东西)有关:编译器,monad,内存体系结构等。这些东西会扩展并扩展您的大脑。

想要在家编写代码只是一个重要的副作用。但是不要小看它,不这样做,学习往往很肤浅。

我知道的所有最好的开发人员都具有这些特质。

1
Lionel Barret

我的建议是:利用通勤时间学习东西,使您了解情况:阅读IT书籍,听Dev播客,等等。关于您的工作后活动:什么都不会改变。否则,你会变得无聊。

1
Pierre Watelet

它不会使您成为一个糟糕的开发人员,甚至可能不会使您成为一种“好的”开发人员,而只会使您成为真实的人。但我认为,您会发现大多数真正优秀的黑客往往都喜欢尝试新事物。在任何给定的时间,我都会研究许多不同的语言,数据库,Web框架,机器人技术等。我有两个小孩,一个妻子,抵押贷款,所有这些东西-但我期待能获得2或3的时代几个小时来闲逛。当然,C#和.NET都能很好地赚取薪水,而我确实很喜欢我的工作,但是在Scala=的工作中,Lift对我来说是真正的爆炸式增长几个月,有些开发人员将自己归类为“充满激情”,而那些只是“渐行渐远”。我倾向于发现不断挑战自己的开发人员往往比那些没有挑战的开发人员进步更快。

1
Nodey The Node Guy

这是否意味着我不是一个真正的“真正”软件开发人员?

绝对不。这只是意味着您喜欢做除编码之外的事情。这没什么不对的,它不会使您比其他任何人(无论开发与否)都好或坏。

不用做额外的工作就能成为一名优秀的软件开发人员吗?

当然。其中一些取决于您的工作环境。如果您的工作无聊,令人soul目结舌,然后又花一些时间进行无聊的维护工作,那么利用工作时间来发展自己的技能将非常有限。如果您拥有这样的环境,可以自由地去做自己想探索和学习的事情,那么就可以利用这个机会来发展新技能,这些新技能也可以帮助您的雇主或同事。

如果您发现一些有趣的东西想要了解更多,而又没有时间或可能性在工作中使用,那么您就必须权衡其他时间需求,无论是家人,朋友还是爱好。

1
afrazier

不,它不会比其他任何人都使您成为程序员。您更具社交性。老实说,我很羡慕。

您不必花费所有的业余时间来编写代码。我的工作很简单:服务器管理。我写了很多代码,因为我不必做很多工作。这并没有使我比任何人更好或更坏。如果您对编程充满热情,为什么不做一些自由职业呢?我经常为我的服务投放Craigslist广告,并从中获利颇丰。这也是一种很棒的学习体验,因为您将与初创公司甚至有时与大型网站合作。希望这可以帮助。 :)

1
iamandrus

我最近参加了许多采访,以聘请程序员。我发现,无论是程序员还是我不介意与之打交道的人都给我印象最深的是那些花费大量时间从事非编程工作的人(尤其是音乐,还有纯数学的人,哲学和文学)。可以肯定的是,大多数人也会做一些爱好编程,但是他们也有平衡的利益。

1
PSU

在我的生活中,有时候我会在工作以外进行很多编码,有时因为我在做其他事情而没有做任何事情。您应该一直在学习,但这并不意味着您总是必须在业余时间学习编程。如果您想在业余时间从事其他技能,例如木工,针尖,园艺等,它将帮助您成长为一个人。

只是不要陷入认为您了解编程所需的全部知识的陷阱,从而可以停止学习。

1
Zachary K

这确实是一个有趣的帖子。我已经为pas开发了10年的软件,并且热爱我的工作!我也有很多爱好,并设法适当地管理它们。但是我确实可以尝试在睡觉前花一两个小时在电脑前尝试新事物。就我而言,我沉迷于学习和编写游戏代码。我并不总是有时间玩游戏,但是我喜欢阅读有关游戏的代码。老实说,我认为我见过的最好的代码来自游戏,我将这些技能应用于工作中的代码。我每天都在不断学习,所以IMO,如果您是一名开发人员,您将永远无法达到顶峰,总有一种更好的方法来做某事..。

1
user17544

我问了一个类似的 question 几天。似乎人们似乎对我们的工作更加热情,如果我们不仅全天都致力于这项工作,而且还会投入我们所有可以用于个人生活的时间。

我偶尔会在业余时间写一些代码,但我这样做只是为了好玩,而不是因为我打算获得一些专业上的成长或认可。我为有能力为此付出努力的人鼓掌,但您更愿意因工作更长的时间和从事额外的项目而精疲力尽,而不是实际上变得更精通任何事物。

归根结底,重要的是您学习新事物的能力(尤其是在工作中),沟通能力以及良好的时间管理技能。使您成为一名优秀的专业人员。

0
Pablo

不用做额外的工作就能成为一名优秀的软件开发人员吗?

对我来说,一切都与平衡有关。

尽管我喜欢编程,但这只是我的一方面,但我还有其他兴趣。从长远来看,如果我很高兴(做自己喜欢做的​​其他事情),并且发现自己的工作很有趣并且很有意义(我所做的),那么从长远来看,我正成为一个更好的软件开发人员。

附言我承认我没有阅读过此页面上的所有先前帖子。

0
Ilan Huberman