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

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

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

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

我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上了……

相关推荐

MySQL进阶五之自动读写分离mysql-proxy

自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...

Postgres vs MySQL_vs2022连接mysql数据库

...

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...

一文由浅入深带你完全掌握MySQL的锁机制原理与应用

本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...

验证Mysql中联合索引的最左匹配原则

后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...

MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)

目录1.索引基础...

你会看 MySQL 的执行计划(EXPLAIN)吗?

SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...

MySQL 从入门到精通(四)之索引结构

索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...

mysql总结——面试中最常问到的知识点

mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...

mysql总结——面试中最常问到的知识点(2)

首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...

MySQL基础全知全解!超详细无废话!轻松上手~

本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...

深入剖析 MySQL 中的锁机制原理_mysql 锁详解

在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...

Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析

引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...

MySQL基础篇:DQL数据查询操作_mysql 查

一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...

MySql:索引的基本使用_mysql索引的使用和原理

一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...