百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

大龄学编程,一样可以成为顶级程序员

wptr33 2025-01-29 18:23 17 浏览

年龄太大了,真的不能当程序员么?

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

22岁–我学了什么是if条件判断语句。

24岁–我在Fackbook找到了一份分析师职位的工作

25岁–我在Facebook的职位变成了工程师

26岁–我业余时间做了个小项目,赚到一大笔钱,我在Facebook拿死工资是永远赚不了这么多钱,于是我离开了Fackbook,用这笔钱开了一家创业公司。通过Y-combinator,我从一家顶级风投公司获得一大笔投资。

我今年正是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上了……

相关推荐

Python自动化脚本应用与示例(python办公自动化脚本)

Python是编写自动化脚本的绝佳选择,因其语法简洁、库丰富且跨平台兼容性强。以下是Python自动化脚本的常见应用场景及示例,帮助你快速上手:一、常见自动化场景文件与目录操作...

Python文件操作常用库高级应用教程

本文是在前面《Python文件操作常用库使用教程》的基础上,进一步学习Python文件操作库的高级应用。一、高级文件系统监控1.1watchdog库-实时文件系统监控安装与基本使用:...

Python办公自动化系列篇之六:文件系统与操作系统任务

作为高效办公自动化领域的主流编程语言,Python凭借其优雅的语法结构、完善的技术生态及成熟的第三方工具库集合,已成为企业数字化转型过程中提升运营效率的理想选择。该语言在结构化数据处理、自动化文档生成...

14《Python 办公自动化教程》os 模块操作文件与文件夹

在日常工作中,我们经常会和文件、文件夹打交道,比如将服务器上指定目录下文件进行归档,或将爬虫爬取的数据根据时间创建对应的文件夹/文件,如果这些还依靠手动来进行操作,无疑是费时费力的,这时候Pyt...

python中os模块详解(python os.path模块)

os模块是Python标准库中的一个模块,它提供了与操作系统交互的方法。使用os模块可以方便地执行许多常见的系统任务,如文件和目录操作、进程管理、环境变量管理等。下面是os模块中一些常用的函数和方法:...

21-Python-文件操作(python文件的操作步骤)

在Python中,文件操作是非常重要的一部分,它允许我们读取、写入和修改文件。下面将详细讲解Python文件操作的各个方面,并给出相应的示例。1-打开文件...

轻松玩转Python文件操作:移动、删除

哈喽,大家好,我是木头左!Python文件操作基础在处理计算机文件时,经常需要执行如移动和删除等基本操作。Python提供了一些内置的库来帮助完成这些任务,其中最常用的就是os模块和shutil模块。...

Python 初学者练习:删除文件和文件夹

在本教程中,你将学习如何在Python中删除文件和文件夹。使用os.remove()函数删除文件...

引人遐想,用 Python 获取你想要的“某个人”摄像头照片

仅用来学习,希望给你们有提供到学习上的作用。1.安装库需要安装python3.5以上版本,在官网下载即可。然后安装库opencv-python,安装方式为打开终端输入命令行。...

Python如何使用临时文件和目录(python目录下文件)

在某些项目中,有时候会有大量的临时数据,比如各种日志,这时候我们要做数据分析,并把最后的结果储存起来,这些大量的临时数据如果常驻内存,将消耗大量内存资源,我们可以使用临时文件,存储这些临时数据。使用标...

Linux 下海量文件删除方法效率对比,最慢的竟然是 rm

Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...

Python 开发工程师必会的 5 个系统命令操作库

当我们需要编写自动化脚本、部署工具、监控程序时,熟练操作系统命令几乎是必备技能。今天就来聊聊我在实际项目中高频使用的5个系统命令操作库,这些可都是能让你效率翻倍的"瑞士军刀"。一...

Python常用文件操作库使用详解(python文件操作选项)

Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能...

11. 文件与IO操作(文件io和网络io)

本章深入探讨Go语言文件处理与IO操作的核心技术,结合高性能实践与安全规范,提供企业级解决方案。11.1文件读写11.1.1基础操作...

Python os模块的20个应用实例(python中 import os模块用法)

在Python中,...