想成为一名顶级程序员,17岁开始学编程晚么?

年龄太大了,真的不能当工程师么?

我22岁开始学习编程,以下是我的学习“大事记”:

  • 22岁 – 我学了什么是if条件判断语句。
  • 24岁 – 我在Fackbook找到了一份分析师职位的工作
  • 25岁 – 我在Facebook的职位变成了工程师
  • 26岁 – 我业余时间做了个小项目,赚到一大笔钱,我在Facebook拿死工资是永远赚不了这么多钱,于是我离开了Fackbook,用这笔钱开了一家创业公司。通过Y-combinator(译者注[1]),我从一家顶级风投公司获得一大笔投资。

我今年正是26岁。

我很幸运,但我并不特别。如果你也全身心地投入到一件事中去,你也可以做到这样。接下来,我将要告诉你我的故事,希望这能激励你去做你感兴趣的事,永远不要因为觉得“太晚了”而放弃换一份新工作,放弃学习新知识。

这是我之前针对Quora里某个问题的回答,后来我邮箱里收到了50多封邮件,请求我把我的故事分享给大家(貌似这些邮件都是来自印度的大学生)

如果你只是想看看我关于如何学习编程的建议,那你可以直接跳到文章结尾。

如果你要问我问题,我的Twitter账号是@whatsdonisdon。

更详细的“大事记”:

2007年(18岁):成为瓦萨学院(Vassar College)医学预科班的一名大一新生。
与其他新生一样,我告诉自己以后就是医学预科班的一员了。

2008年(19岁):大二,把专业换成了经济学。
这一年,我喝了好多啤酒,玩了滑雪,在经济学中学到了许多有趣的知识。

2009年(20岁):大三,发现教科书很多知识值得一学。
这一年,我染上了mono病毒,大部分时间都躺在床上,不能上课。所以我只好看书,看着看着发现能从书中学到很多东西,真希望我在毕业前能把它们统统学完。

2010年5月(21岁):大四,总算取得了好成绩。
好吧,我写得太夸张了。过去,我的成绩也算是体面,但这一年我第一次得了全优(straight A)!(这是我16年学习生涯中的头一遭…)

大四之前,我一周只有一天花在学习或工作上。我想出一个好办法,这样我可以花最少的时间却能成绩良好(B)。事后想想,这很重要。因为我无情地把我的工作放在优先位置,所以我不得不花最少的时间应付考试,这样我才能腾出更多时间做其他事情。

如今,我从书中学到了很多,再加上我有能力分清工作的主次,终于得了优秀(A)。

2010年7月(22岁):大学毕业。开始在Morningstar公司工作,职位是数据分析师。

我成为了Morningstar这家金融公司的一名数据分析师。当时的我完全不会写代码。

2010年8月(22岁):为Morningstar公司的新主页出了个主意,他们挺喜欢的。
所在项目:FindData

当时,我提出为公司开发个新主页的想法,他们很喜欢,因此给了我一个5人团队来实现我的想法,这5个人都是新招的兼职员工。

这是我第一次“管理”一个项目,或者说,是我第一次带领别人跟我一起实现自己的想法。这对我来说十分困难,所以我犯了很多错。其中最严重的一个是我

没有听从团队的建议。如果你只知道一条关于如何管理一个创意团队,那这一条无疑是:把自主权交给你的团队,而你只需要聆听。你的时间应该花在为他们提供所
需要的一切(因为你听他们的),以及其它他们没时间完成的工作,通常是与一大波潜在客户沟通。

我每每有个新想法,我总是无法自己来实现,因此只能依靠我的团队来实现我的产品。但他们是兼职员工,除了我的项目外,还要完成自己的本职工作,可我却希望项目能进展得快一些。于是我开始学习编程。

2010年12月(22岁):开始学习编程
所在项目:FindData

我开始学习HTML、CSS和Javascript,这三个术语可以理解成构建一个网页的三种“语言”。从博客,到普通的网站,再到Facebook —— 所有这些都是用这三种语言写成的。如果我学会了它们,我就能自己完成我的产品了。

我从www.w3schools.com开始学习。在这个网站上,我学会了HTML和CSS,并为我老爸的公司开发了公司主页。这个主页很挫,我老爸没用————真是个明智的选择。

接着我去lynda.com,学了jQuery,它本质上就是javascript。现在我可以为一个网站做出交互式原型了。

在lynda.com上,我又学了PHP和MySQL。这样,我就可以将数据存在数据库中,我的网站有了“后端”(backend)。到目前为止,我总算修成了“全能型”码农,可以自己搭建一个完整的web应用了。

两个月内,我从对编程一无所知,到能够搭建一个完整的web应用。虽然这个web应用看上去不够好,但至少能用了。

2011年(23岁):Morningstar没有将我的项目上线。我搭建了4个网站。
所在项目:FindData、BarCraft、Morningstar图形交互、Amuse.me

Morningstar不喜欢我的产品(FindData)。他们没有上线使用。事后想来,这是个明智的选择,如果是我,我也不会上线使用这个产品。

但我对这事耿耿于怀。我转到另一个团队,在新团队里,我每天的工作都跟Excel打交道。我不喜欢这样的工作。于是我又回到了以前的习惯:每周拿出一天把本职工作做完,另外四天都花在编程上。五个月左右的时间里,我几乎每个月都搭建出一个新的网站。

2012年(24岁):12次面试后,成为Facebook的一名分析师。收获很多,也搭建了更多网站。
所在项目:Tickur.com、Lookgr.am、Roomidex.com、Searchnwork.com

Facebook的标准面试流程并不需要12轮面试。我最初申请的是项目经理的职位,但几轮面试下来,我被拒了。

不过数据分析团队对我挺有兴趣。我着迷于消费类网站,懂数学,而且有些许金融行业背景。经过了几轮面试之后,他们录用了我。

Facebook的那段时间,整个工作环境迫使我的内心不断成长。因为我周围的同事全都比我聪明,我不得不尽自己最大的努力,让自己不断前进。曾经的大学生活以某种方式让我的想法达到了另一个层次,如今Fackbook再一次推动着我前进。

我不能胡乱给出一个问题的答案,并让同事们接受培训,因为他们都太懒了,不愿意去思考或是评判我的逻辑是否正确。如果我给出了错误的答案,我要马上自己纠正它,如果我给出了正确的答案,我就应该顺着这个思路继续想下去。就这样,我成长了。

我还学到了世界上最优秀的面向个人的科技公司是如何运作的。我发现,当你看到Mark
Zuckerberg是如何做决策时,像“数据驱动(data driven)”、“最小化可行产品(minimum viable
product)”这些流行术语根本就不起作用。我在报纸和博客上读了很多关于公司的介绍,还参加了公司的每周五例行的与Mark的答疑互动活动,并从中
探寻真相(不管怎么说,这个真相至少是来自专家的观点)。

因此,白天,我学着如何运作一款产品、一个项目、甚至一个公司。

晚上,我继续写代码,实现自己的想法。现在想来,当时写的代码烂得很,但我的编码水平不断地在进步,从中吸取了很多经验教训,构建网站的速度也越来越快了。

2013年(25岁):成为一名Fackbook的工程师
所在项目:DataFinder(Fackbook的项目)

我不是个优秀的工程师,虽然我知道什么是“继承(inheritance)”,在构造个人项目时,也能将PHP用得很好,但仅此而已。我不知道什么是“排序(sort)”,并且对算法和数据结构一无所知(不仅当时是这样,现在也还是…)。

我只知道针对分析团队使用的内部数据工具(基于网站)可以进行哪些改进,并且我很清楚该如何做。因此我以工程师的身份加入了数据工具团队。

虽然我写代码的速度可能只有科班出身的工程师的十分之一,但由于我之前做过分析师,而且在交互及视觉设计方面能力不错,因此团队内部给了我较高的评价。

2013年4月:开始构建Blockspring.com
所在项目:Blockspring

我业余时间跟我的一个高中同学一起合作一个小项目。他是个聪明而且努力的人(我只是委婉地说说而已:D),比我还更不算个工程师,因为他只懂一些基础。那时候他刚辞了咨询师的工作,开始创业。

那时候我已经接过很多私活了,但Paul是我真正开始建立一个公司时的第一个共同创始人。

我们项目中的其他共同创始人都是兼职的,Paul是第一个全职加入的。

其他几个共同创始人总喜欢就着网站的着色,以及是否需要加入一些小的功能而争论,这花费了我们大量的时间和精力,实际上我希望在我构造网站的时候,他们去做营销的工作。Paul每个月都邀请许多人访问我们的网站,同时他还自学编码,并帮我一起构建网站。

我并不是想说我的第一批共同创始人很糟糕,我认为主要是我不知道如何处理与他们之间的关系,也不知道怎么为自己设定一个预期目标。当你拥有一家创业公司时,你要做的最重要的事之一就是为公司设定好预期目标及所有权。

我们完成了Blockspring项目。

2014年3月(26岁):为Blockspring.com找到了个客户
我们试着向许多公司推销这个产品,但都失败了。

我们产品介绍公开在博客上,一个来自纽约的聪明的家伙认为这个产品有潜力。于是我们飞往纽约去做推销。但我们还是没能将产品卖给他,不过他答应让我们在纽约呆上一周继续开发Blockspring,这一周的费用由他来承担。

我当时还是Facebook的全职员工,所以以“有急事”为由请了一周的假,呆在纽约继续开发Blockspring。

业余兼职并不违反Fackbook的规定。每个工程师都有自己的业余项目或者兴趣爱好。如果你想留住那些有创业精神的员工,你就得让他们追求他们的
“雄心壮志”,同时你还得把你的公司环境打造得更有吸引力,让他们觉得相比兼职,他们更喜欢这份本职工作 ————
是不是觉得这种做法太疯狂了?去Fackbook工作,体验一下吧!

但无论是我推销Blockspring,或是花时间继续扩展它的功能,都分散了我的精力,没法集中于Facebook的本职工作,我认为这无论对公
司还是对团队都不公平。如果我还想继续开发Blockspring(虽然这个网站几乎没有用户,而且只有一个潜在的客户),我就不得不离开
Facebook(虽然Facebook给我提供了全世界最好的工程师的职位,高额的薪水和福利,还让我交到了很多好朋友,诸多种种…)

于是,我离开了Fackbook。

2014年6月:Y-Combinator公司
我们加入了Y-Combinator公司,这家公司为创业公司进行估值,并提供全世界最好的条件加速发展。

我们一共工作了三个月,每天工作16个小时。

这种方式可一点儿也没意思。有些校友称之为“高压锅”,这算是最不夸张的形容。大多数人在一个项目上连续工作两天就会感到厌烦了。在加入Y-
Combinator之初,我们在白板上写下了一个数字:85。这表示从那时起至产品演示,一共有85天时间。用85天来扩展产品功能。我们做累了睡(算
是睡了吧…),睡起了做,跟各自的女票说她是全世界最体谅我们的人,然后再接着干活。

85天过去了,我们向大家演示了我们的产品,也因此获得了投资。

2014年8月:回到正常生活

我们结束了与Y-combinator的合作,搬到了旧金山的新办公室。我开始把自己的周末从
Blockspring项目中解放出来。这种状态大约持续了一个月,现在,我又开始周末也写代码了,实现一些与Blockspring有关的功能,学习图
像、动画、博客技术,看看人们在网上都是如何交流的,等等。

这就是我的全部经历。

总体说来,我比较擅长于吸引人才加入我的公司,并让他们对我的想法感兴趣。同时,我还能自学编程,这意味着,我能做到一边促进自己的事业发展,显露自身的管理才华,一边促使我提高自身的执行能力。

如果你现在就希望自己成为一名工程师,那么以下就是你的任务清单:

1. 到w3schools.com网站上学习HTML和CSS。
2. 思考一下你想做一个什么样的网站。已经有想法了?很好,那么开始实现吧,不管别人告诉你这个想法有多么困难。
3. 在你的电脑上打开一个文本编辑器(不是Word),并保存成index.html。把你从w3schools.com学到了HTML和CSS的知识应用到的你网站上,试着在页面上显示些内容,看看你能实现多少功能。
4. 到lynda.com网站上,看一些关于HTML和CSS的新手视频。
5. 尽量往index.html文件中加你所想的内容,仿照你喜欢的网页上的配色。如果你遇到无法解决的难题,到“jsfiddle.com”网站上测试你的代码,并把问题贴到StackOverflow上寻求解答。
6. 到lynda.com网站上看一些关于jQuery的新手视频。引入这个技术将使你的页面交互变得非常简单。
7. 在index.html文件中加入jquery,这会让你的页面使用起来像个真正的网页,你可以在上面虚拟一些交互。至此,你的网站原型就算构建好了。
8. 把index.html转成Rails项目。现在你可以算是一个全能型的网页开发者了,虽然技术还很挫,但至少你已经会做了。你所需要的是努力提升自己的水平。
9. 继续实现你的项目,遇到难题找google,或者把问题放到StackOverflow上求助。你一定会为自己的飞速进步吃惊的。
10. 继续构建你的网站。

你也许会说:“可这个清单写得实在太不具体了,而且听说w3schools差得很,我朋友告诉我代码只能在GO上写。”

我将这么回答你:“我的小乖乖,当你成为一名工程师时,你最厉害之处应该是能独立解决问题。因此,跟着这个任务清单去做,是将你带上一条学习曲线。顺着路线走,你会真正学到如何把自己的想法构造成产品,这会让你对自己更加有信心,相信自己无所不能。”

好了,我说完了,可以把这一大堆废话贴到Quora上了…

作者:小胖妞妞

来源:51CTO

时间: 2024-11-03 21:18:47

想成为一名顶级程序员,17岁开始学编程晚么?的相关文章

从零开始成为一名开源程序员,其实只需要九步!

探索技术世界,是一件非常令人兴奋的事情.你会发现有非常非常多的领域,等待你去学习,去深挖.如果有兴趣参与和帮助创造更好的功能,加入到开源的队伍当中,你知道要从哪里开始吗?第一步该做什么?第二十步又是什么? 首先要明白,开源是开放的.这听起来似乎是句废话,但现实中有很多人恰恰就忘记它只是一个文化现象的描述,而不是一家500强公司的名字.不需要去面试或完成注册表或注册表单才能成为开源程序员.只需要做好程序,然后共享代码.在理想情况下保证代码能保持开放,不管它被如何使用. 就是这样,你就是一名开源程序

我是一名老程序员!如何学习java-web

问题描述 我是一名老程序员!今年34,我想学习java-web,以前有些基础做过VB项目.也做过一些简单的java-web项目,也就是用JDBC连接数据库,认识JAVA的一些基本元素,不知道从那里学起,还来得及吗. 解决方案 解决方案二:servletjsp然后再结合自己需求再看看哪些需要解决方案三:如果你搞开发多年,你应该懂得怎么学习了,不应该彷徨了.呵呵.VB9和c#基本差不多少.学java也快.主要是多练习,熟悉就好了.解决方案四:兄台,你的工作经验比我们多得去,对于久混于IT的人,却对新

如何像NASA顶级程序员一样编程 —— 10条重要原则

引言: 你知道 NASA 顶级程序员如何编写关键任务代码么?为了确保代码更清楚.更安全.且更容易理解,NASA 的喷气推进实验室制定了 10 条编码规则. NASA 的开发者是编程界最有挑战性的工作之一.他们编写代码并将开发安全的关键任务应用程序作为其主要关注点. 在这种情形下,遵守一些严格的编码规则是重要的.这些规则覆盖软件开发的多个方面,例如软件应该如何编码.应该使用哪些语言特性等. 尽管很难就一个好的编码标准达成共识,NASA 的喷气推进实验室(JPL)遵守一个编码规则,其名为"十的次方:

呵呵。想问问大家,一般程序员的月薪是多少啊?

问题描述 呵呵.想问问大家,一般程序员的月薪是多少啊? 解决方案 解决方案二:引用楼主Linhai8336的帖子: 呵呵.想问问大家,一般程序员的月薪是多少啊? 分在哪,工作年限,相关经历,少的几百(小城市),多的1.8W(上海,北京,广州).建议非专业大龄人士,别以此行为业(爱好可以的),前途对这些人不眷顾解决方案三:青鸟一类的培训学校出来的,可以找到工作但,薪水不会高,与他们说的高薪白领天地之别---.有那闲钱建议自学,就算学不成,也不后悔不是-解决方案四:引用1楼octverve的回复:

PHP程序员必须遵循的PHP编程准则

  怎样才能成为一个优秀的PHP开发者?这肯定是每一位PHP新手都在提出的问题.其实要成为一名PHP编程高手并不容易,真正的PHP高手还需要考虑更多的其它问题.那么如何才能更快的成为一名优秀的PHP开发者呢?跟随绿茶小编一起来看看吧! 以下三条准则是一名成熟的PHP程序员在编程中应该首先遵循的准则: ◆懒惰是金 ◆编写漂亮的代码 ◆追求程序的速度,而不是编程的速度 懒惰是金         对于一个程序员来说,懒惰的方法有两种: 其一,大胆使用现成的别人的程序代码,把这些代码融入到你自己的程序或

。net程序员多少岁该转型。或者说转行。

问题描述 rt 解决方案 本帖最后由 hlxcoo2007 于 2011-10-15 10:45:04 编辑解决方案二:压根不应该做程序员,苦逼的职业解决方案三:读的计算机专业,出去还能做啥.解决方案四:呵呵,这个问题可以问问比尔.盖次吧解决方案五:听说外国的程序员是越老越值钱.中国的程序员却越老就越没人要.解决方案六:该回复于2011-10-17 13:26:28被版主删除解决方案七:3年还做不了设计的话,就转行把...解决方案八:100岁解决方案九:刚在另一个帖回的,很适合你这问题...不要

编程报错-初级程序员 正在学习老黑莓编程,有几个问题请教

问题描述 初级程序员 正在学习老黑莓编程,有几个问题请教 我是照着黑莓开发入门到精通那本教程书,编的,但是到后来一些页面,编的代码,老是报错,下载的JDE是7.1的,是不是跟教程比是新的,教程里6才刚出来,咋办

像谈恋爱那样去招顶级程序员吧!

本文编译自First Round Review,他们准备的文章既讲故事,还同时向创业者提供可操作的建议,以助力打造优秀的公司. Coursera的首席产品经理John Ciancutti在1999年加入Netflix担任工程师,那时候它只是由四个程序员组成的创业团队.在Netflix起步的阶段,他帮助这家当时籍籍无名的公司招来了上百个工程师,而在Coursera的两年时间里,他把技术团队由25人扩展到了如今的60人. 近日在First Round举行的CTO峰会上,他将自己多年招聘的经验分享出来

作为一名Java程序员,我为什么不在生产项目中转向Go

自Google在2009年发布Go语言的第一个正式版之后,这门语言就以出色的语言特性受到大家的追捧,尤其是在需要高并发的场景下,大家都会想到是不是该用Go.随后,在国内涌现出了一批以七牛为代表的使用Go作为主要语言的团队,而许世伟大神本人也在各种场合下极力推动Go在国内的发展,于是在这种大环境下,中国的Go开发者群体逐渐超越了其他地区. 那么问题来了,业余时间好学是一回事,真正要将一个新东西运用到生产中则是另一回事.JavaScript的开发者可以义无反顾地选择Node.js,但是对于Java开