写点什么

谈谈那令你永生难忘的编程之路

2015 年 12 月 20 日

在 2015 年 7 月份进行的一项名为“从个人特质、个人倾向和个人偏好的角度重新描述年轻时的自己”的调查中,有超过 2200 名程序员和开发者踊跃参与到其中,发起人说,主要是想了解这些人在年轻的时候,是什么因素引导他们最终选择了计算机科学专业。这项由 Code School 委托发起的活动最后得出的结论是:这些程序员和开发者平均在 16 岁的时候就已经对计算机产生了浓厚的兴趣了。除此之外,还有一些别的发现:

  • 一般男性在 15 岁或之前就已经开始接触电脑了,而女性则在 16 岁或更晚。
  • 被调查人群中,占比例最高的 83% 男性最爱仍然是电脑,其次是 61% 的人最爱是体育,59% 的男性最爱是音乐。女性调查者中 63% 的最爱是音乐,而喜欢计算机的只有 52%。
  • 女性当中很少有人拖延,而男性中有 41% 的人会等到最后一分钟才做作业。
  • 女性中只有 7% 的人会辍学,是男性的一半。此外,多数女性能够获得学士学位(51%)或研究生学位(30%),相比之下,男性只有 27% 和 42% 的人能获得上述学位。
  • 谈到收入这个敏感话题,32% 的女性更倾向于 5-10 万美元的稳定年薪,只有 17% 的女性朝着 10+ 万美元年薪努力。而在男性方面则出现了两极分化现象,25% 的人年薪超过 10 万美元,而 20% 的人年薪少于 2.5 万美元。

随后,InfoQ 网站也做了一个类似的调查:您是如何开始编码的?这个调查主要是通过社会化媒体渠道在读者中进行推广,包含三个问题:什么时候开始编码的?你的第一台电脑是什么?你喜欢编码吗?最后根据 120 多名参与者的反馈得出了一些结论:

  • InfoQ 读者群中开始编码的年龄段在 5-30 岁之间。
  • 45% 的回复者开始编码是在 10-14 岁之间。
  • 总体上的编码年龄段在 14 岁。
  • InfoQ 的读者开始编码年龄 5 和 30 之间。
  • 36% 的年轻读者刚开始工作都是在 Windows 上,19% 相对年纪大一点的程序员使用的是 Commogore,14% 的开发者使用的是 Spectrum,只有少数的 5% 在大型机上工作。
  • 当谈及喜欢编程的原因时,可以精简为:实现自己的创造力(35%),解决实际问题(16%),被编程的神奇所吸引(15%)。有的人从事编程完全是因为兴趣,而有的人从 30 岁开始编程则是为了赚钱生活。

InfoQ 的读者中有很多都是经验丰富的软件架构师、研发团队领导或自由职业者。我们通过邮件采访的形式和他们进行了沟通,并将他们的在早期是如何开始编码的故事呈现给大家。

Ben Evans,jClarity 联合创始人

在我 8 岁生日的时候,父母给我买的生日礼物就是 ZX Spectrum(上世纪 80 年代一款标志性的计算机)。我父亲在上世纪 60 年代编写了 IBM S/360 系统的程序。也正是在我 8 岁的那一年,为了生活的更好,举家搬到了 Cornwall(英国康沃尔郡),父亲成了一名电视工程师。他认为,由英国广播公司、Commodore 和 Spectrum 这三家公司发起的“家庭电脑”潮流是一个非常重要的风向标,有可能引领接下来的科技走向,所以他和我妈妈凑钱给我买一台电脑。我用这台电脑学会了 Spectrum BASIC 和 Z80 assembler,此外还订阅了一个包含程序清单的电脑杂志。很荣欣,Spectrum 在转移到 PC 端之前的几代版本我都使用过,只是后来由于钱的问题退而求其次买了 286 英镑的没有显卡的电脑,搭配上相当便宜的 Hercules 监控适配器,用起来还是相当不错的,也是一段很好的回忆。

在大学里学习了 PASCAL 高级程序设计语言和一些基础的 C 语言,足够去写一些简单的“Light Tracer”/Snake 克隆。但是后来我对 PASCAL 有些沮丧,而且我不想以这种技术来开始我的职业生涯,所以,我最后选择了学习数学。

在大学里,我侵入了连接大学和 JANET 之间的基层接入网络,所以我可以轻而易举的连接到早期基于 telnet 的聊天服务,这重新点燃了我对 C 语言的兴趣,尤其是当时第一次听到 Perl 编程语言。我说服我的导师在一个 UNIX 帐户上签字,并且有一个可以打到家里的拨入号码,也就是在第一学期结束时,我发现我父亲的新工作是用远程方式来减少文书工作的,每天工作结束时都要在 Windows 3.1 版本的笔记本上下载字段调用。

后来我学会了 Dijkstra 算法并掌握了足够的图形理论知识,在班级里面保持领先水平。学期末,Dijkstra 问我是否愿意到另一个班级听一种新的编程语言——Java。

首次品尝 Java 之后,研究生办公室问我为什么不选择更高薪水的编程工作,而到学校里任教。后来经过思考,我决定到公司里做一些跟 Perl 和 JavaScript 相关的网站工作。实际上,在那个时候我也开始与一些朋友搞在线音乐杂志的事情。在当时(1997-1998)这也是一件很新奇的东西,所以很多唱片公司乐意送我们黑胶唱片和音乐会门票。从运作杂志和运行网站程序当中获得了很多乐趣,尤其是在这其中,我的乐趣给我带来了经济收益。

Charles Humble,InfoQ 首席编辑

记得我 9 岁那年的一个暑假,我借一个朋友的 ZX Spectrum 开始编程,想想自己那个时候真是好奇心很重啊。于是在我 10 岁圣诞节的时候,父母给我买了一台 Commodore 64。虽然我当时特别想要一只小狗,但拿到这么先进的玩物后,还是很兴奋!不管怎样,这是我学的主要机器。

于是我开始学习 Commodore Basic,但刚开始的时候想用 Basic 语言在这个 Commodore 上写一个 Elite 克隆和一个高分辨率支持的克隆简直是太慢了,可以说是出奇的慢啊!所以我放弃了编写 assembler,坦率的说,Commodore Basic 汇编程序在移动编码组件上很稳定,基本上没什么大的跳跃。我的 Elite 克隆是最后废掉了,但它有一个很奇怪的声音轨道。Commodore 64 也有一个惊人的音效芯片,通过设计,振荡器的输出信号甚至从未停止过。这算得上是一个设计缺陷。

在学校学习的时候有一个 BBC 的模型,我经常在上面编写字节代码。后来有一个基于 RISC 系统的 Acorn Archimedes 计算机也为我的编程提供了很多便利,(RISC 是 Acorn Computers 为 Archimedes 和 RISC 计算机开发的操作系统,由于存储在 ROM 中所以启动只需几秒钟)。紧随其后,在学校里就能够接触到 Windows、C 和 C++ 语言了,而我的第一份编码工作就是为一家出版公司在 Excel 和 Access 里编写 VBA。Java 在银行里可谓会最好的归宿。

Abraham Marín Pérez,Java 程序员、敏捷开发拥趸者

我 8 岁的时候,父亲在办公室当会计,有的时候星期六早上也去工作,所以我有机会跟他一起去办公室用电脑。当时的电脑还用 5”1/4 软盘,其中有一些游戏。我当时最喜欢的程序是 AccuType,学习触摸式打字(touch-type),这意味着我在 9 岁之前就可以不看键盘打字了。

后来我的表弟有了一台 Amstrad 计算机,其实就是一块扁平的键盘,需要用一个看上去很古怪的软盘跟电视连接起来用。这里面有一个可以学习 BASIC 程序的书,只有 9 岁的我们就按照这本给专业程序员制定的书自学编程。我们只能一边看书一边拾取代码的随机样本,并复制下来看看都是什么功能:有时会画一个圆,有时会打印一系列数字……直到有一天我复制了一段在屏幕上绘制矩形的代码,然后写下书中的另一段代码,一个长方形出现了,这让我到,两个代码段基本相同,唯一的区别就是数字变化了。接着开始写三分之一代码块,只把数字改变,就能出现不同的形状。虽然那个时候根本不知道里面的深奥秘密,但是我心里清楚,不管要什么形状,都必须准确的告诉计算机。

最终我有了属于自己的电脑,一个 100MHz 顶配的 generic i486,400MB 硬盘和 4MB 内存。那个时候就在开始在学校学习 BASIC 编程,这是我当时最大的乐趣,我还记得写出来的第一块代码(或更确切的说是脚本)是一个批量脚本:我当时把一些游戏存储在硬盘上,然后我老爸说游戏太占内存,要删除。于是我自己写脚本将这些游戏压缩、解压缩、运行。只记得这是在 MS-DOS 上完成的,现在想起来还是很有成就感的。

另外一件感觉很有意义的但是很简单的事情就是,帮我老爸的电脑设置个人权限。因为当时的电脑就像是一台电视或 VCR,只能打开、使用,所有程序都是基于 MS-DOS,为了不让别的同事随意使用它,我就帮我老爸写了一个简单的程序,用 BASIC 编了一个密码,这样就只能给有密码的人使用。

奇怪的是,虽然我的第一份工作是跟 Flash 和 ActionScript 相关的编程工作,但我对这些工作内容没什么感觉。我不喜欢编程的那种感觉,更喜欢画一些框框,把代码片段嵌入进去。随后的工作是跟一个“将 COBOL 翻译成 Java 语言”相关的代码库,我称它为 Javol。也正是这份工作的需要,我不得不逼迫自己学习一些 COBOL 知识,这样才能正确理解运作原理。之后我到了一家银行工作,并施展了我的各种编程能力:将 Excel 表格与数据库相连;VBA 和手写的 XML 解析器连接;用 C#将 VBA 代码嵌入 Word 文档等等。这份工作我一直做到现在。

Ralph Winzinger,Senacor Technologies 首席架构师

其实我小的时候也是一个乡村里土包子,我在 12 岁第一次看到电脑的时候,电脑已经可以放到桌子上了,一个朋友拿来一个相当经典的 Commodore C64。刚开始的时候只是为了打游戏,不久就开始自己写游戏了,虽然不知道怎么编写智能的软件程序,但是我们尝试写硬编码的文字冒险。

后来搬家弄丢了我的 Commdoore C64,却收获了一台老旧的 ZX81 Spectrum——一个带有塑料膜键盘的微型电脑。于是我照着维基百科上的讲解做出了一个乌龟图形和别的东西。

在我 15 岁的时候,我终于有了我自己电脑——一台带有 1571 个软盘驱动器的 Commodore C128。之后我就花了很对时间开始创建一个可以管理音频磁带的软件,这是我创建的第一个大型系统。

在上大学期间,我一边学习 Java 语言一边打理我的日常业务。和大多数学生一样,靠编程赚钱。而在当时,我主要是为掌上电脑编写程序,这也是我跟移动世界联系的收个入口。从那以后我就迷上了 WAP 手机,尤其是在我把移动方案应用在家乡公共交通规划中的时候。

事实上,无论开发者从什么年龄段开始从事编程,也不管开始学习编程之前是做什么工作的,只要他们敲下第一行代码,就证明这个人是很有激情的,至少他们愿意花大量的时间时间学习语法,锻炼编码技能,并为这个世界创造优秀的软件。

文中所讲的主人公全都是国外的牛人,这里我觉得也可以简单的讲讲中国国内一些比较牛的程序员们的编程史。如果您觉得自己的编程史很励志,可以在下面的评论处留言哦!

关于作者

Abel Avram,自从 2008 年起,就参与过多起由 InfoQ 组织的活动,热爱撰写关于移动、HTML、.NET、云计算、EA 和其他类型的新闻报道。她也是《 Domain-Driven Design Quickly 》联合作者。

查看英文原文: How Did You Start Coding?


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015 年 12 月 20 日 16:491867

评论

发布
暂无评论
发现更多内容

架构训练营 - 第9周课后作业 - 学习总结

Pudding

第九周作业

Geek_4c1353

极客大学架构师训练营

0到1产品需求整理分析模型参考

燕陈华

产品设计 产品需求

“人上人”大专学历,通过系统的六个学习步骤,艰难4面终砍offer,“跳进”字节跳动

Java架构追梦

Java 架构 字节跳动 面试 微服务

云原生趋势下的迁移与容灾思考

阿里巴巴云原生

云原生 迁移 容灾

鹿鼎记 · 韦小宝,丽春院、天地会、入皇宫等五个场景的恶搞版多线程锁学习!

小傅哥

Java 程序员 小傅哥 多线程

vivo 调用链 Agent 原理及实践

vivo互联网技术

Java 架构 调用链

开发霸总:我要让所有人知道,这个扫码组件,被你承包了

蚂蚁集团移动开发平台 mPaaS

支付宝 uniapp mPaaS

Java程序员说:世界上有三个伟大的发明【火、轮子、kafka】

Java架构师迁哥

田哥:面试被问== 与equals 的区别,该怎么回答?

田维常

面试

阿里云原生中间件首次实现自研、开源、商用“三位一体”,技术飞轮效应显现

阿里巴巴云原生

阿里云 云原生 中间件

华为云MVP付健权:从机械工程师到AI开发者的华丽转身

华为云开发者社区

AI 转型 工程师

5G革命:如何让「数据」实现最大性能?

VoltDB

数据库 数据分析 5G 工业互联网

Istio 中的智能 DNS 代理功能

Jimmy Song

开源 云原生 Service Mesh istio 服务网格

软件测试系统学习流程和常见面试题

测试人生路

软件测试

从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目

阿里巴巴云原生

阿里云 云原生 开源项目

详解企业管理系统工作流配置

Marilyn

敏捷开发 工作流 软件架构

讲武德,你们要的高性能日志工具 Log4j2,来了

沉默王二

Java log4j

第九周课后练习

饭桶

第9周学习总结

饭桶

第九周作业

智能灯串开发资料全开源!为这个冬天装点烂漫“星空”

智能物联实验室

人工智能 物联网 智能硬件 智能家居

架构师训练营 - 第 9 周课后作业(1 期)

Pudding

排序与二分

落曦

展现非凡领跑力,京东会展云斩获“十大云原生行业落地典范”奖项

京东智联云开发者

云计算 AI 云原生

《Elasticsearch服务器开发》.pdf

田维常

elasticsearch

Minikube-运行在笔记本上的Kubernetes集群

网管

学习 Kubernetes k8s minikube k8s入门

LeetCode069-x的平方根-easy

书旅

go 数据结构 算法

Serverless 架构就不要服务器了?

华为云开发者社区

云计算 Serverless 架构

记一次HEX和RGB互换算法的思考及应用

徐小夕

Java 面试 算法 前端

第九周总结

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

谈谈那令你永生难忘的编程之路-InfoQ