Skip to content

Commit 139ea99

Browse files
authored
Merge pull request lingcoder#337 from 1326670425/master
附录:成为一名程序员翻译更新
2 parents a2cba9e + 335be52 commit 139ea99

File tree

1 file changed

+46
-1
lines changed

1 file changed

+46
-1
lines changed

docs/book/Appendix-Becoming-a-Programmer.md

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
这是一条相当漫长和曲折的道路。我在高一学代数时(1971年),有个非常古怪的老师有一台计算机,还弄到了一台配有一个300波特的音频电话耦合器的ASR-33电传打字机,我学会了如何执行命令并得到响应,以及一个可以在高中区使用的HP-1000计算机上的帐户。我们能够创建和运行BASIC程序并将它们保存在打孔磁带上。我对此非常着迷,所以尽可能地把它带回家后在晚上写程序。我写了一个赛马模拟游戏--HOSRAC.BAS,用星号来代表马的移动,由于是在纸上打印输出,所以需要一点想象力。
1212

13-
我的朋友丹尼尔(和设计我的书的封面是同一个人)有一个兄弟,他有段时间通过向酒吧和餐馆提供弹球机来赚钱。他有一台投币式街机(老虎机),最早的《乓》游戏之一,我对此全然不知,到现在我还忍受不了这东西(现在我几乎不玩电脑游戏,这样看来我可能是个没有幽默的人,但似乎编程比玩电脑游戏更有趣、更具挑战性。)
13+
我的朋友丹尼尔(就是设计我的书封面的人)有一个兄弟,他有段时间通过向酒吧和餐馆提供弹球机来赚钱。他有一台投币式街机(老虎机),最早的《乓》游戏之一,我对此全然不知,到现在我还忍受不了这东西(现在我几乎不玩电脑游戏,这样看来我可能是个没有幽默的人,但似乎编程比玩电脑游戏更有趣、更具挑战性。)
1414

1515
后来我在高中参与了摄影和新闻工作,在大学的第一年就主修新闻学。我觉得自己已经从学校学到了足够多的东西,又转修了物理学。后来我在加州大学欧文分校完成了物理学位,如果我当时选择了一个特定的工程领域,修了足够的工程课就能拿到双专业,但我试图走得更远一些,所以最后我获得的本科学位是 "应用物理"。作为一名本科生,我多多少少学习了一些可以自娱自乐,但又没有任何深度的计算机编程课程。我个人认为在这些课程细细熏陶下,帮我打下了一定的基础,但事实我理解的这些东西没有任何深度。我不知道计算机、编译器或解释器有什么区别(只是对编译器和解释器一点点的理解)。对我来说计算机是绝对可靠的,而且我从来没有想过在程序语言和操作系统中会有出现错误的可能。
1616

@@ -37,6 +37,51 @@
3737
<!-- A Career in Computing -->
3838
## 码农生涯
3939

40+
我会定期收到有关职业建议的请求,所以我尝试在这里回答一下这个问题。
41+
42+
人们提出的问题通常是错误的问题:“我应该学习 C++ 还是 Java ?”在本文中,我将尝试阐述我对选择计算机职业所涉及的真正问题的看法。
43+
44+
请注意,我在这里并不是和那些已经知道自己使命的人聊(译者注:指计划成为程序员或者已经从业的程序员,暗指这里是讲给外行的小白的)。因为无论别人怎么说,你都要去做,因为它已经渗入你的血液,并且你将无法摆脱它。你已经知道答案了:你当然会学到 C++ ,Java ,shell 脚本,Python 和许多其他语言和技术。即使你只有14岁,你也已经知道其中几种语言。
45+
46+
问我这个问题的人可能来自另一职业。也许他们来自 Web 开发等领域,他们已经发现 HTML 只是一种类似编程,他们想尝试构建更实质的内容。但是,我特别希望,如果你提出这个问题,你就已经意识到,要在计算机领域取得成功,你必须教自己如何学习,并且永不停止学习。
47+
48+
随着我做的越来越多,在我看来,软件越发比其他任何东西都更像写作。而且我们还没有弄清怎样成为一个好的作家,我们只知道何时我们喜欢别人写的东西。这不是像一些工程那样,我们要做的只是将某些东西放到一端,然后转动曲柄。诱人的是将软件视为确定性的,这就是我们想要的,这就是我们不断推出工具来帮助我们实现所需行为的原因。但是我的经验不断表明事实是相反的:它更多地是关于人而不是过程,并且它在确定性机器上运行的事实变得越来越没有影响力(指运行环境受机器影响,与机器相关这个事实),就像海森堡原理(不确定性原理:不可能同时知道一个粒子的位置和它的速度)不会在人类规模上影响事物一样。
49+
50+
在我青年时期,父亲是建造民居的,我偶尔会为他工作,大部分时间都从事艰苦的工作,有时还得悬挂石膏板。他和他的木匠会告诉我说,他们是为了我才把这些工作交给了我 —— 为了不让我从事这项工作。这确实是有效的。
51+
52+
因此,我也可以用比喻说,建造软件就像盖房子一样。我们并不是指每个在房屋上工作的人都一样。有混凝土泥瓦匠,屋顶工,水管工,电工,石膏板工人,抹灰工,瓷砖铺砌工,普通劳工,粗木匠,精整木匠,当然还有总承包商。这些中的每一个都需要一套不同的技能,这需要花费不同的时间和精力 房屋建造也受制于繁荣和萧条的周期,例如编程。为了快速起步,你可能需要当普通劳工或石膏板工人工作,在那里你可以在没有太多学习曲线的情况下开始获得报酬。只要需求旺盛,你就可以稳定工作,而且如果没有足够的人来工作,你的薪水甚至可能会上涨。但是一旦经济低迷,木匠甚至总承包商就可以自己将石膏板挂起来。
53+
54+
当 Internet 刚兴起时,你所要做的就是花一些时间学习 HTML ,就可以找到一份工作并赚到很多钱。但是,当情况恶化时,你很快就会发现需要的技能层次结构很深,HTML 程序员(例如劳工和石膏板工)排在第一位,而高技能的码农和木匠则被保留。
55+
56+
我想在这里说的是:除非你准备致力于终身学习,否则请不要从事这项业务。有时,编程似乎是一份报酬丰厚,值得信赖的工作,但确保这一点的唯一方法是,始终使自己变得更有价值。
57+
58+
当然,也可以找到例外。总会有一些人只学习一种语言,并且足够精通,甚至足够聪明,那么可以在不用多学很多其他知识的情况下继续工作。但是他们靠运气生存,最终很脆弱。为了减少自身的脆弱性,必须通过阅读,参加用户组,会议和研讨会来不断提高自己的能力。你在该领域的走得越深,你的价值就越大,这意味着你的工作前景更稳定,并且可以获得更高的薪水。
59+
60+
另一种方法是从总体上看待该领域,并找到一个你能成为专家的点。例如,我的兄弟对软件感兴趣,并且涉足软件,但是他的业务是安装计算机,维修计算机和升级计算机。他一直都很细致,因此,当他安装或修理计算机时,你会知道计算机状态良好。不仅是软件,而且一直到电缆,电缆都整齐地捆扎在一起,并且不成束。他的工作多到做不完,而且他从不关心网络泡沫破灭。毋庸置疑,他是不可能失业的。
61+
62+
我在大学待了很长时间,并以各种方式设法度过了难关。我甚至开始在加州大学洛杉矶分校攻读博士学位。这里的课程很短,我欣慰地说是因为我不再爱上大学了,而我在大学待了这么长时间的原因是因为我非常喜欢。但是我喜欢的通常是跑偏的东西。例如艺术,舞蹈课程,在大学报社工作,以及我参加的少数计算机编程课程(由于我是物理本科生和计算机工程专业的研究生,所以也算跑偏)。尽管我在学业上还算是出色的(具有讽刺意味的是,当时许多不接受我作为学生的大学现在都在课程中使用我的书),但我确实很享受大学生的生活,并且完成了博士学位。我可能会走上简单的道路,最终成为一名教授。
63+
64+
但是事实证明,我从大学获得的最大价值一部分来自那些跑偏的课程,这些课程使我的思维超出了“我们已经知道的东西”。我认为在计算机领域尤其如此,因为你总是通过编程来实现其他目标,而你对该目标越了解,你的表现就会越好(我学习了一些欧洲研究生课程,这些课程要求结合其他一些专业研究计算,通过解决这个领域相关的问题,你就会形成一种新的理论体系并可以将它用在别处)。
65+
66+
我还认为,不仅编程,多了解一些其它的知识,还可以大大提高你的解决问题的能力(就像了解一种以上的编程语言可以极大地提高你的编程能力一样)。在很多情况下,我遇到过仅接受过计算机科学训练的人,他们的思维似乎比其他背景(例如数学或物理学)的人更受限制,但其实这些人(数学或物理学领域的人)才更需要严格的思维。
67+
68+
在我组织的一次会议上,主题之一是为理想的求职者提供一系列功能:
69+
70+
- 将学习作为一种生活方式。例如,学习一种以上的语言;没有什么比学习另一种语言更能吸引你的眼球。
71+
- 知道在哪里以及如何获得新知识。
72+
- 研究现有技术。
73+
- 我们是工具使用者,即要善于利用工具。
74+
- 学习做最简单的事情。
75+
- 了解业务(阅读杂志。从 *fast company*(国外一家商业杂志)开始,该公司的文章非常简短有趣。然后你就会知道是否要阅读其他的)
76+
- 应对错误负责。 “我用着没事”是不可接受的策略。查找自己的错误。
77+
- 成为领导者:那些沟通和鼓舞别人的人。
78+
- 你在为谁服务?
79+
- 没有正确的答案……但总是更好的方法。展示和讨论你的代码,不要有情感上的依恋。你不是你的代码。
80+
- 这是通往完美的渐进旅程。
81+
82+
承担一切可能的风险,最好的风险是那些可怕的风险,但是在尝试时你会比想象中的更加活跃。最好不要刻意去预测某个特定的结果,因为如果你过于重视某个结果,就会经常错过真正的可能性。应该“让我们做一点实验,看看会把我们带到哪里”。这些实验是我最好的冒险。
83+
84+
有些人对这个答案感到失望,然后回答“是的,这都是非常有趣和有用的。但是实际上,我应该学习什么? C++ 还是 Java ?”,以防这些问题,我将在这里重复一遍:我知道似乎所有的 1 和 0 都应该使一切具有确定性因此此类问题应该有一个简单的答案,但事实并非如此。这与做出选择并完成选择无关,这是有关持续学习和有时需要大胆的选择。相信我,这样你的生活会更加令人兴奋。
4085

4186
### 延伸阅读
4287
* [Teach Yourself Programming In Ten Years](http://norvig.com/21-days.html), by Peter Norvig.

0 commit comments

Comments
 (0)