在我的代码旅程和编程经历中,已经遭遇很多奇特的对手,还有更为奇特的盟友。我至少发现有5种代码勇士,有些是出色的战友,其他则似乎都在搅黄我的每个计划。不过他们都在软件开发的万神殿上都有一席之地。如果没有不同编程风格的良好组合,你可能会发现你的项目要不就是耗时过长,要不就是太不稳定或太过完美而无人去做。

(转)自学的程序员如何找到好工作?

不过他们都在软件开发的万神殿上都有一席之地。如果没有不同编程风格的良好组合,你可能会发现你的项目要不就是耗时过长,要不就是太不稳定或太过完美而无人去做。

【伯乐在线导读】:2016 年有位年轻的程序员在 Quora 上提问求助:
我今年 17 岁,从 14 岁开始编程。我主要关注 Java 语言,并在 AP
计算机科学这门课上拿了 5 分。我相当精通
Java(比如语法、主要类、GUI/JFrame 等),HTML5 和 CSS3
也不错。我感觉自己缺乏很多有用的技能,来帮助我在人才市场上推销自己(比如数据库的工作原理,以及我应该使用哪些工具),我很好奇其他人是如何学习这些东西的。我打算去大学拿一个软件开发的学位,但我开始感到有点沮丧,觉得读大学的目的就是为了工作。现在有哪些我应该上的课程,或者应该做的事情吗?

1. The duct tape programmer 喉咙贴了胶带的程序员
The code may not be pretty, but damnit, it
works! 代码或许不漂亮,但能用!

这种家伙是公司的基石。代码有问题的时候,他能快速补漏,下不再犯。当然他并不关注代码看起来怎么样,是否容易使用,以及其他琐碎的问题,但是他能搞定,没有一堆废话或不会唧唧歪歪。用这种程序员的最佳方式是,你指出问题后走开就可以了。
 
2. The OCD perfectionist programmer 有完美主义强迫症的程序员
You want to do what to my code? 你想对我的代码做什么?
这类家伙并不关心你的截止日期或预算,和编程艺术相比,那些都微不足道。当你最终收到最终成品时,你没有选择余地,只能对那漂亮格式的代码,不,是白玉无瑕的代码,衷心地赞叹。那代码是如此有效率,你无须再对它做什么,否则就是画蛇添足,亵渎大师手笔。他就是那位唯一有资格改动代码的人。
 
3. The anti-programming programmer 反编程的程序员
I’m a programmer, damnit. I don’t write code. 
我是一个程序员,擦!我不写代码。

他的世界只有一个简单的真理:写代码不好。如果你不得不写些东西,那你就错了。因为早已有人做过了,只需拿来就是了。即便他写代码所用时间和其他程序员差不多,或更长,他会告诉你,这种开发实践是多么多么地快。当你拿到他提交的项目时,可能实际代码只有20行,也易于阅读。代码或许并不快、高效或向前兼容,但所耗费之力是最小的。
 
4. The half-assed programmer 不称职的程序员
What do you want? It works doesn’t it?
你想要什么呢?代码不是能用么

这种家伙很少关注代码质量,那是其他人的工作。他只快速完成安排的任务。你可能不喜欢他的代码,其他程序员也讨厌,但管理层和客户喜欢。虽然将来他会给你带来很多的痛苦,但他可以单枪匹马地在期限之前干完活,所以你不能嘲笑他(不管你心里有多想)。
 
5. The theoretical programmer 理论型的程序员
Well, that’s a possibility, but in practice this might be a better
alternative. 嗯,有那种可能,但实践中这种应该更好。

这家伙对应该要做事之外的份外事更感兴趣。他80%的时间在呆呆地盯着电脑,15%的时间在抱怨不合理的期限,4%的时间在琢磨份外事,1%的时间在写代码。当你拿到他的最终成品时,总会看到这样的话,“要是时间多的话,这个地方我可以做得更好。”
 
你是哪一种?
个人而言,我自认为是完美主义者。所以,你是哪种类型呢?或者是哪几种的混合型呢?还是你觉得还有上面没有讲到的类型?请在评论留言。
澳门新葡亰,编注:看完此文后,推荐再看看 Jeff Atwood
的《程序员的8种级别》一文。
 
原文: Steven
Benner 
 编译:伯乐在线
– 黄利民
译文链接:

下面是 Brain Knapp 的回答分享︰
我认为你的看法错了。你觉得你需要上课,让别人来教你,告诉你答案。从根本上讲,自学的程序员能够做不一样的事情。
自学的程序员和自学的吉他手有很多共同点。我不知道你是否玩过吉他,所以我将向你解释如何自学吉他。
首先,这一切的开始是由于某人与某个吉他手产生了共鸣。大多数突然想要自学吉他的人,是想要成为另一个吉他手。之后,他们下定决心——“我也可以成为一个吉他手
”,于是去了当地的乐器店,买了一把二手吉他(因为二手吉他更便宜,但也很酷)。
接下来可能会有两种情况,要不买一本“吉他入门”或类似的书籍开始自学,要不打开
YouTube,开始学习如何弹奏自己喜爱的歌。那些尝试学习弹奏喜欢的歌的自学者,往往学得更好。
当年轻的吉他手主动地学习某首歌时,他们往往需要观看视频、打印曲谱、练习和弦等等。然后,根据拿到的视频和曲谱,他们会坐下来尝试重新演绎歌曲。
经过数小时的练习,不断重复和弦、独奏、节拍等,他们将能够以自己的形式表演那首歌。它不再是原来那首歌,但也够酷。
然后,他们会拿起另一首歌,重复这个过程。一路走来,他们不断学习节拍、技术以及其他的东西,甚至都没有意识到学习的内容。在知道专业名词和理论前,他们已经懂得如何操作。
最终,弹吉他变成了一种“直觉”,学习一首新歌也变得习以为常且不再痛苦。吉他的“语言”变得像你我说话那样容易。
这一切的发生,背后是数千小时的艰苦练习。即使每天只练习一小时,也需要耗费数年。
那么,这和自学的程序员有什么关系呢?
事实上,真正成就自学的程序员的,就是他们会自己创建东西,很多东西。要成为一个具有卓越技能的出色程序员,你必须创建东西,写代码。
上课学习理论知识固然是好的,但很多教授不能跳出条条框框的束缚,以自己的方式编程。就算他们努力尝试,也做不出别人愿意用的应用程序。
这并不是说他们不了解教授的知识,而是说,作为一名教授,他们掌握的技能是研究和理论性理解,而不是写代码和为客户提供价值。
你看到区别了吗?
我合作过的最好的程序员,他们的工作方式就是做东西,做很多东西,并且几乎一直这样。
例如,现在几乎每个人都使用 WordPress。在 WordPress 出现很久之前,我就用
PHP 和 MySQL 创建了 3 到 5
个不同的内容管理系统。我写过游戏、移动应用程序、框架,还有 SAAS
应用程序。
没人付钱让我做这些事情。我做这些事纯粹是出于好玩、学习或好奇的目的。
我已经好几年都没有上过课了,即使上了,我也不觉得这会对我的事业有任何帮助。然而,如果我决定坐下来,从头开始创建我自己的计算机语言或操作系统,我打赌我一定能在过程中学到很多有趣的东西。
是的,我可以带着那些想法上课,但在创建东西,犯下错误,以及真正“体会到”这一切的经历中,相比读一本书或听一次讲座,我能收获更多。
因此,我给你的建议(如果你做到了,相比没有做的那些人而言,会带给你巨大的优势),就是:
解决一个你想解决的问题。创建一个用于某件事的软件,解决一些你本人或他人想要通过软件解决的问题。每天为这个软件写代码,晚上写,周末也写,每天都写。即使你每天只花了
15 分钟写代码,也没关系。
最终,你将得到一个能用的软件,这很不错。
然后,你再重复这一过程。做一个其他的东西。不断地做。花费大量的时间,通过创建更多的东西来提升你的技能。
做东西的同时,注意在你的网站上保存工作,并将其放在一个作品集中。每次你结束了一个项目,就将它上传到
Hacker News、Reddit 或其他什么网站,并发条关于它的博文。
你现在仅仅 17 岁,当你 20
岁的时候,你已经轻松地将两千多小时用于锻炼技能,你的个人作品集中也有了大概十到二十多个软件,你学习到的经验是那些仅仅上课的人无法比拟的。
更重要的是,你已经清楚地告诉别人,你能够独立地写代码,解决问题并给世界带来一些新东西。这是最难能可贵的一点,也是公司在不断追求的一点。
一旦你找到了工作,请继续在业余时间创建东西,并提升你的工作技能。你的提升速度将比你的同事更快,因为他们在下班回家后看电视,而不是学习、成长或创建东西。他们拿到了薪水就回家享受去了。
你做的越多,你学的也越多;你学的越多,你的价值就越高;你的价值越高,你就越容易找到工作,你的工资也就更高,这是一个良性循环。
所以,去做些东西出来。现在就开始写代码吧!

网站地图xml地图