业余爱好者有可能成为一名优秀的程序员吗?[关闭]


46

专业的全职程序员可以通过不断学习他们的工作来做得很好。业余程序员如何训练成为一名优秀的程序员?

**如果您喜欢播放音乐或唱歌,可以这样做,因为这是您的爱好,并且您很感兴趣,因此您可以成为一名优秀的歌手或音乐播放器。但您无需成为专业歌手或唱歌来谋生。对程序员来说也是如此吗?有一位著名的业余程序员吗?


3
对。因此,直到第一个苹果被出售之前,沃兹尼亚克才是一名优秀的程序员(因此他成为了“专业人士”)。
KeithS 2011年

定义“好”

2
每个“好”程序员都曾经是一个业余爱好者。
spudwaffle 2011年

Answers:


84

变得真正优秀的关键是在一个好的团队中工作。许多业余爱好者独自工作,所以他们只能做到这一点。在团队中,您可以向他人学习,并且可以自律,因为您的同伴会以其他任何有用的方式来打击您。

因此,我建议您加入一个团队,例如一个开源项目,或与一些朋友一起做一个爱好项目。


9
+1为了在一个好的团队中工作。在团队中拥有同等或更高技能的人非常有动力。
BenR 2011年

忘记了我的“陷阱”列表中的团队部分+1
keppla 2011年

2
我认为+1是关键:向比你有更多经验的好人学习。加入一个好的团队说起来容易做起来难。

1
+1为团队。如果团队不如您出色或优秀,您将不会学。
Spencer Rathbun

4
您无需加入团队就可以向他人学习。
2011年

53

擅长编程的道路与唱歌或播放音乐相同:练习,练习,练习。如果您花费足够的时间定期开发软件长达数年,那么您很有可能会变得精通-无论是在工作时间内还是在工作时间之外。

现在,除了花费更多的时间练习外,还有另一个原因使得专业人士通常在某种意义上(在音乐以及程序设计方面)变得比业余爱好者更好。如果您是专业人士,则必须执行不必要的任务,但属于软件开发的更广泛的工作(例如,测试,与客户讨论,编写文档,设置开发/构建环境,编写构建脚本等)。 )。有时您还会被迫进入陌生的领域,学习新的语言或平台。作为一名业余爱好者,您不会被迫做任何自己不想做的事情,这很可能使您一生中都停留在舒适区内。换句话说,您可以轻松地将自己限制在最喜欢的一个或几个特定领域,

OTOH也有许多专业开发人员也加入了该行列,他们在同一家公司从事相同的日常工作,几十年来几乎没有学到任何新东西。因此,变得更好的关键是您的态度。如果您继续学习,并且有意识地寻找从舒适地带搬到陌生的新领域的机会,您最终将胜过那些逐渐僵化的“专业人士”。一个好的方法可能是对一些开源项目做出了贡献。

推荐阅读的书是《实用的程序员:从旅人到硕士》,其中有很多非常实用的建议,说明如何不断变得更好。


3
从+1马尔科姆格拉德威尔10000小时规则en.wikipedia.org/wiki/Outliers_(book)
StuperUser

尽管专业人士必须完成令人不快的工作,但另一方面是-那些不愉快的工作通常是乏味,乏味的工作,几乎没有教益。通过选择开发有趣的项目,业余爱好者通常可以在同一时间学到更多东西。但是,当然,重要的一课是您必须做好枯燥乏味的工作。我特别喜欢你的“贡献的开源项目”,因为与别人的代码工作是手段-通过实例学习如何阅读陌生代码等
Steve314

@StuperUser您的链接已损坏(超链接中未包含第二个括号)。
Paperjam 2011年

我读过的一些最好的建议是:“如果您想成为一个像样的艺术家,那就画画。每天早上做素描,您会情不自禁地变得更好。” ..找到一个项目。利润不菲,需要帮助..寻求建议(“我正在建立发票系统,从哪里开始?”,“如何处理上下文安全性?”等)。失败的成本很低,并且你可能只得到支付演出了它..
鲍比d

@ Steve314,更好的专业人士将编写工具来自动完成繁琐的任务。通过使用正确的工具完成正确的工作,我将某些任务的时间减少了数百倍。(即使是更好的工具,也可能能够完全自动化完成该任务,但我达到了在编写工具和节省时间方面的良好平衡。)
sarnold 2011年

18

但是对于一个业余程序员来说,如何训练成为一个好的程序员呢?

通过学习,您会变得更好,这部分是在做,部分是在反思所做的事情。

因此,基本上,业余爱好者和专业人士之间没有区别,但是“陷阱”的安排有些不同。

业余陷阱,恕我直言

  • 无论您是什么专业人士,完成项目的需求无论如何都不会那么强烈。这可能是一件好事,因为就质量而言,您不会像以前那样偷工减料,但是精加工(根本来说!准时甚至更好)是一项非常重要的技能,这对于业余爱好者来说更难训练,因为让一个项目终止然后再开始一个项目很容易。

  • 良好沟通的需求并不那么强烈。在专业项目中,强烈地激励他们真正了解客户,即使他们完全无法就他们希望您解决的问题仅形成一个连贯的句子。如果您误解了他们,或者(通常情况下)没有注意到他们没有谈论您需要了解的内容,迟早会成为您的问题。一个业余项目由于无法解决他们的问题而很容易失去所有潜在用户,并以技术方式“完成”。

专业陷阱是

  • 通常很少有动力变得更好。无论您是要找到治愈癌症的方法,还是只是以看起来有成效的方式喝咖啡,您每周都会有40小时的服务。学习是您主要为自己做的事情,通常,如果您尝试应用所学到的东西,就会有相反的作用(保守的集体思维,层次结构,甚至样式指南也可以用作改进的武器)。不仅要放弃职业,减少工作时间,并在生活中寻找其他目的,这需要专业人士的极大热爱。

  • 通常没有什么可学的。是的,可以尝试将所有内容视为挑战,但是我们必须坦白:在使用意大利面条代码1年之后,您将不允许使用已经使用多年的语言进行重构(“您正在使其复杂化!”)。经验的积累可能会持续多久,唯一学会的就是建立对挫败感和公司政治的容忍度。

如果您播放音乐或唱歌,可以出于兴趣而播放,您仍然可以成为一名出色的歌手或音乐播放器,但无需成为专业歌手或为生活而唱歌。

您当然不需要,但是有多少音乐家会拒绝一个真正辞职并通过音乐赚钱的机会?

在IT领域,这些机会比在Music中更有可能,因此,我认为并不是不可能成为一名著名的业余爱好者,但通常,业余爱好者会发掘自己的工作(音乐家在不得不找出他们在商业和艺术之间的界限)


这伤害了我的灵魂,对我的atm如此真实,哈哈。1年的意粉代码不允许重构(“您正在使其复杂化!”)
Terrance

1
“通常很少有动力去变得更好。” 如果我有任何以这种方式对待软件开发的员工,我宁愿开除他们,而不是试图做得更好的人,即使他们在尝试中无意间破坏了工作。

@Chris Marisic:那我很乐意与您合作。可悲的是,您将是我雇主的例外
keppla 2011年

8

恐怕与全职公司无人机相比,业余爱好者有更多的学习机会。作为业余爱好者,您不受限于任何给定的技术,环境,设计和开发方法。您可以做对自己的个人发展有用的任何事情。作为一名全职开发人员,您可能会按照相同的例行程序,受相同的公司准则限制,多年从事同一产品的开发。对于我们大多数人来说,这只是停滞。熟悉通用基础知识后,您可以从公司环境中学到一些东西。

这就是为什么许多全职开发人员也是业余爱好者,他们在下班后继续编码,他们在玩自己的玩具项目的原因-成长需要一点自由。


6

作为一名业余程序员,如今您有许多提高技能的可能性。在学习软件工程时,我做了以下事情来提高自己的技能。

当然,您还需要运用您的知识。通过实习,与朋友一起进行项目或学习课程来实现。有很多方法可以改善自己,您只是愿意投资自己的空闲时间。此外,玩得开心,学习新东西


4

业余爱好者有可能成为一名优秀的程序员吗?

是的,有可能,但是需要很长时间:

在各个领域,包括国际象棋,音乐创作,电报操作,绘画,钢琴演奏,游泳,网球以及神经心理学和拓扑学研究中发展专业知识,大约需要十年的时间。关键是深思熟虑的实践:不仅要一遍又一遍地做,还要挑战一项超越您当前能力的任务来挑战自己,尝试一下,分析执行前后的表现,并纠正任何错误。然后重复。再重复一次。


业余程序员如何训练成为一名优秀的程序员?

同样来自同一来源

  • 对编程感兴趣
  • 程序
  • 与其他程序员交谈
  • 如果需要,可以在大学读四年
  • 与其他程序员一起从事项目
  • 在其他程序员之后从事项目
  • 学习至少六种编程语言

我不经常+1答案只包括链接,但这篇文章值得一读。谢谢。
sarnold 2011年

您介意对此进行更详细的解释-它如何以及为什么回答所提出的问题?“链接,只回答”不太欢迎堆栈交易所
蚊蚋

1
@gnat链接说明了一切-希望编辑后会更好。
2013年

3

作为一名业余爱好者,与许多专业人士相比,您有更多的选择来寻求更好的做法。专业人士经常承受着“只做就完成”的压力。

我还没有看过像我从那里学过编程的任何课程,但是我从我参加的大学提供的一些短期(1-3小时)免费课程中学到了东西。它们旨在使业务人员能够理解为他们编写的代码。这些课程提供了很好的书面代码(包括注释),解决了一个常见的现实生活问题。然后,对代码进行了审查,并解释了语言功能以及为什么在地方使用它们。我见过的全部语言课程都没有比我从该课程中学到的质量更高的代码。过了几年,我才开始学习计算机科学。

互联网和图书馆提供了大量资源和示例。我发现许多示例除了完成工作之外,对任何事情都不是很好。查看示例时,请先查看代码。您无需解释即可了解其目的和结构吗?如果是这样,您可能已经找到了一个很好的例子。

您应该学习并应用一些关键实践:

  • 干(不要重复自己)。
  • DRO(请勿重复其他内容);使用标准语言库,使用其他库。
  • 保持代码简单。优雅的代码往往难以维护。更糟糕的是,与简单代码相比,优化器生成的机器代码通常速度更慢。
  • 模块应该只有一个目的。(最好是目的是做工作或做决定。)
  • 使用好名字。不要使用短名称来避免键入,而应使用具有自动完成功能的IDE。了解您的语言的命名约定。
  • 不要优化您的代码。等到可以测量其性能,然后知道优化它会产生明显的效果。
  • 保持学习。学习识别资源,这些资源将提供您现在可以使用的有用信息。

2

如果您喜欢演奏音乐或唱歌,可以这样做,因为这是您的爱好,并且您很感兴趣,因此您可以成为一名优秀的歌手或音乐播放器。但您无需成为专业歌手或唱歌来谋生。对程序员来说也是如此吗?有一位著名的业余程序员吗?

一点也不。这是软件工程。它不是基于“天赋”。成为优秀的程序员是基于多年的教育和多年的经验。您只能在实际项目中使用它


2
实际上,在很大程度上,这是一种天赋。您不能训练一个贫穷的软件工程师成为一个好人,但是通常您可以训练一个人成为一个好人。这很像音乐或艺术天赋,您可以训练几乎任何人都可以成为非常出色的人,但是您不能训练任何人都可以成为很棒的人,他们可以自我训练,并且可能比他们的任何教练都更好。就像世界级的运动员一样,很少有人遇到过世界级的编程天才,这也许可以解释为什么大多数程序员都不知道他们的存在:)
Bill K

2

在我去过的工作面试中(在雇主方面),我总是要求被访者将其编程为业余人员(学校作业除外)的内容-这确实表明了对该领域的真正兴趣,并且拥有自己学习的热情。这不仅是可能的,而且几乎是成为好人的要求


2

可能吗?是。但是,您花费在编程上的时间越多,您就越需要花费更多的时间来改进它。据说要花10年/ 10万小时的沉思实践才能发展出技术技能的专门知识。这不是在舒适区域中进行相同类型编码的10000小时(例如,为不同的网站编写简单的jQuery代码),而是10000小时的学习/阅读编程知识/阅读源代码/编写源代码/学习其他语言/与他人合作,等等。

如果您要花费那段时间的时间;您可能会像程序员一样找到工作,并放弃业余身份。(除非您是独立富翁)。


1

每个人在任何方面都是业余爱好者。如果您想成为一名优秀的程序员,并且喜欢这样做,那么您会。关键是自己编程。学校将一无所有地教您。您的大部分学习将由您自己和在工作中完成。如果你想成为一个好人,那就去做一个好人。


1

考虑到实际字的本义(法国业余 “的情人”,源自古法语和最终源自拉丁语amatorem NOM。amator,“情人” -维基百科),一想就相信专业人士的也大量业余爱好者。如果您不喜欢自己的手艺,您会练习吗?

当然有可能-如果您喜欢编程,您将练习它,并且随着时间的流逝,您将变得擅长于此。(考虑到个人才能或缺乏才能,也许永远不会很棒),但至少是好的


业余爱好者的真正含义是您在OED或NOAD中找到的含义。单词的词源并不决定其含义。“以消遣而非职业从事追求,学习,科学或体育的人”。
Django Reinhardt

真正。也许我应该写的是“原始含义”,而不是“真实含义”。不幸的是,我们当前的语言并没有一个通用的词来表示“做某事的人,因为他们确实喜欢做某事”。我认为这将有助于回答OP的问题:“业余爱好者有可能成为一名优秀的程序员吗?” 当然有可能-如果您喜欢编程,您将练习它,并且随着时间的流逝,您将变得精通它。(考虑到个人才能或缺乏才能,也许永远不会很棒),但至少是不错的。
StevenV 2011年

0

我没有定义好的程序员。但是学习自己的东西并与一群人一起工作是不同的。充满热情的业余程序员真正致力于学习新事物和黑客技术。他们发现事情变得更有趣。但是与一群人一起工作只是一种纪律严明的行为,您可以在该领域进行协作,交流,共享/获取该领域专家的信息。

但是获得知识只是激情的问题。有些人花了很多夜来学习东西,最后最终带来了比尔·马克·马克·扎克(Bill G Mark Zuck)等世界新事物。但是如果您想成为一名更好的软件工程师(我不会叫Programmer),请加入一家公司或为其他人使用的一些好的产品工作。

最后阅读很多书,以提高您的技能,态度,行业动态,发展品味并满怀热情。事情将轻松跟随您!


比尔·盖茨和马克·扎克伯格都在Hardvard学习计算机科学,直到他们开始自己的事业并退出。并不是业余爱好者的好榜样。
vartec

除了怪异的环境外,我怀疑哈佛是否在培养他们的编程技能方面发挥了重要作用!
萨拉特2011年

0

问题是,“有没有业余程序员成名?” 答案是“是的,但大多数人并没有那样做。” 我能想到的最著名的例子是罗伊·菲尔丁(Roy Fielding),他做了一些他最重要的工作,而我(在我看来)在大学没有薪水(按定义,业余人员意味着无薪)。

具有专业素质的诀窍是要有一位或多位导师(例如,开源项目中的团队)和认真的时间专注于该主题。作为一名以前的专业音乐家,我的经验是,无论是作为专业人士还是业余爱好者,这两个方面都是必须的。有些可以通过书本来学习,但是如果没有一致的外部批评,就很难通过新手养成的不良习惯。

就是说,对于程序员而言,它比音乐家的学习起来要容易得多–根据我的经验,作为音乐家,作为音乐家,要看到您的教学错误要比仅仅看到代码困难得多。不起作用。另一方面,要成为一个好的开发商,还需要大量的时间投入。


0

像其他任何事情一样,最好的方法就是使自己沉浸在您希望变得良好的环境中,并与愿意容忍和教您的远超您的人包围。做起来并不容易,但这就是我发现最快学会擅长某件事的最好方法。

但是,要成为一个真正有天赋的程序员,就必须是那样,有天赋。如果您不是天生的小提琴演奏家,那么无论您多么努力尝试或购买哪种乐器,您都不会像大师那样出色。同样,如果您没有使程序员真正天才的天赋,那么您也永远不会成为他们。

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.