我24岁了,刚刚开始学习编程,想成为一个程序员。是否为时已晚?
这是个以前我碰到过很多次的问题,对我来说,答案很简单:什么才是你真正喜欢做的?
编程有很多种类型,比如Web工程师或者软件工程师。有很多的编程语言和开发环境,一直处于演进之中。所以关于年龄的问题根本就不是问题,因为编程需要用到不断演进工具。你现在所学习的,5年或10年之后可能已经过时。任何职业的关键点在于知道你想要什么,如何得到它?自从我开始学习编程算起,40年已经过去: 我的技术工作职务也从程序员到软件工程师,从软件工程师到系统管理员,从系统管理员到经理,周而复始。任意一个公司都会有技术和管理两条职业发展道路,一般5年左右开始选择:在不同的公司,不同的学校,我两条道路都走过。
现在,我是一个独立咨询师,有自由去选择自己想做的事情。我很幸运,找了一个自己喜欢的差事谋生,并乐在其中。这一切开始于,22岁时上的第一堂编程课,24岁找到的第一份真正的编程工作。做你喜欢的事情,永远都不会晚。如果你还有其它问题,尽管发问:我乐于帮助新入行的程序员达成它们的目标。
Erin Parker的回答
永远不会太晚。一年之内会发生很多的事情,有可能让你大吃一惊。
我的专业是经济学。在我23岁的时候,我偶然的决定去参加一个Railsbridge举办的交流会,在那里你将学习如何在一天之内开发一个基本的ruby on rails应用。我开发了一个普通的应用,并非常的享受。那天一颗种子就此种下。
几个月之后,对一个我一直想创建的站点,有了idea。尽管idea还不是很清晰,在这个站点,我想象着它能够鼓励女士成为了不起的社会中坚。我想它可能是个职业规划类型的站点,或者涉及健康领域。我很确定地想以Spitfire来命名它。我强烈地感觉到这样一个产品是很有必要的,并且我感觉我有一个很好的视角和愿景来创建它。
尽管那时我还没有下定去学习编程的决心,不过我还是画了如下的一张草图:
我把草图邮寄给朋友,想参考他们的意见。
恰巧那个时候,我热衷于举重,并取得了一些成果。同时令我沮丧的是,找一些女性举重相关的高质量,值得信赖的资料很困难,所以为了解决这些问题我觉得也许自己该做点什么了。
最终,我决定付诸实践。朋友们总是问我如何健身,如何举重,如何健康的饮食。我决定学习ruby on rails,并且把这些问题及答案发布上去。
我估摸了一下,如果我学习编程,即使我失败了,我至少是失败于构建一个能够把我所学普及给潜在的数以百万计的人的这样一个网站。就这事本身来说,值得付出。
然而就在同时,我决定只许成功,不许失败。除非已经把我大脑里Spitfire该有的样子构建出来,否则我决不罢手。我知道如果我历尽困难并坚持下来,最终的结果一定不会辜负我。
我开始通过各种免费的资源废寝忘食地学习ruby on rails,比如Learn Ruby the Hard Way,Try Ruby, Codecademy, Michael Hartl的书, Why‘s Poignant Guide to Ruby, the Rails Guides, 以及我的最爱Railscasts。
我很有恒心。如果某些东西第一次遇到的时候我不懂,我并不较真。我会一遍又一遍的回顾它,直到弄明白为止。我会查找对这个概念的不同解释。我会请教我的朋友。在一个咖啡店里的时候,如果我正在编程,并且对面坐的人能够从他笔记本电脑的贴纸看出是个程序员,我就会友好地问他能否帮忙(我通过这种方式交了很多朋友,其中几个现在还是非常非常要好的朋友)。
我会去参加很多的开发者交流会,特别是Women Who Code,很喜欢他们"一交流会一教程"的形式,以及所有的Ruby小组交流会,因为在那里很容易得到帮助。
我坚持了几个月的时间,并且我大脑里的idea一点点蹦出来。你依然可以查看许多我早期的项目:
http://spitfiredarkstar.herokuap...
http://spitfiredauntless.herokua...
http://spitfirehellcat.herokuapp...
https://spitfireocelot.herokuapp...
我投入精力最大的是这个:
http://spitfireathlete.herokuapp...
这个站点功能丰富。它界面美观,用户体验良好,是所有我学到的ruby on rails的好特性的集大成者。然而不幸的是,没有人使用它。
喜悦和失落同时充斥着我,我感觉自己拥有很好的设计技巧,但是我在开发没有人想使用的东西。
当问我的朋友为什么他们不使用它之后,我得知他们真正想要的是“仅仅告诉我怎么做”。并且他们想要那些在手机上看起来很好的东西,让他们能够在健身房参照来训练。
所以我决定转变方向,学习jQuery Mobile,并且构建了这个:
http://spitfirewarrior.herokuapp...
令我比较惊奇的是尽管它界面粗燥,逻辑简单,但人们确实使用了它。并且他们想要更多的东西。他们希望它像一个叫做gasp的iOS应用一样。
作为一个时间节点,自从我学习rails算起,那时大概有6个月了。
我意识到如果想更近一步,我得学习iOS开发。我确实成功的运用了jQuery Mobile,但是很快意识到它只适合做一些原型(非常简单的应用)。
记得那是2013年的4月份。我决定了,你知道是什么吗?我已经24岁了,但是我要成为一个iOS开发人员。即使不是计算机专业那又怎样?我有比大多数人有更大的动力和决心。他们也许比我聪明,但是我就是永不放弃。我已经走了那么远了,干嘛停下来?
所以我做了相同的事情。我又废寝忘食地学习所有我能够找到的iOS资源。做了所有的练习题,挑战题,并且从头到尾的完成手边每一本书的学习。O‘Reillys书很昂贵的啦,对于那些发给我O‘Reillys书PDF副本的朋友,我充满感激之情。
我频繁的参加Women Who Code的iOS交流会,从Big Nerd Ranch的关于Obj-C和iOS的书里,从Ray Wenderlich的教程里,从Apple的官方文档里,受益良多。
我开发了很多个小的应用(那就是你如何学习的)!我也对自己许下诺言,永远不要把任何技术想象成困难的,因为我认为那就像在你自己的学习上面自动加了一块天花板一样。所以我,无畏地,学习完了很多让iOS开发人员望而却步的内容,尽管现在我没有用到它,我意识到它让我成为一个更强的开发人员,尽管花了我很多个慢慢长夜。
下面是一张我参加技术交流会时做技术演讲的照片,主题是如何开发自定义的Rails API,如何通过AFNetworking把那些数据发送到你的iPhone应用上。
那是2013年的5月,24岁。我自己完成的演讲...尽管我刚刚学习了我演讲里面的那些知识。我感觉自己很像一个"iOS骗子",并且刚刚退去“rails骗子”的感觉。
下面一个我学习tableviews并把Spitfire的功能移植到iOS应用的截图,尽管我一切从头开始开发。我是在学习Obj-C两周之后开始做这个的。
几个月就这样过去。一点点的,我做得越来越好。诚然,iOS是用户界面比重很高的系统,如果你没有学习设计,那么你的应用将看起来很丑陋。把你自己从前端解放出来基本是不可能的。所以我决定通过Hack Design上面的课程来学习设计和Photoshop。
Photoshop比学习编程简单得多,所以很快我就设计了这些看起来不错的模拟程序。
后来,大概在2013年10月份,我把模拟程序转化为"Spitfire Athlete pre-Alpha"应用。下面是该程序运行在我的手机上的一个截屏。
经过几个月的使用,很多热情的用户开始要求开发更多的功能,我觉得是时候把我的这份疯狂热情转化为一个初创公司,并且我雇佣了一个厉害的创业伙伴,Nidhi Kulkarni,一个出色的MIT计算机毕业生,像我一样,她也是个运动员(她在MIT的时候完成了D1 rowing)。
有了两个技术人员,两个积极向上的女士掌控着Spitfire的方向。我感觉我们的效率提高了10倍。我们大概在2013年的11月份开始合作,我处于24岁的尾巴上,知道自己正在追求一些令人期待的东西。
我们一起参加了Code Path iOS Mobile训练营,一个针对专业iOS开发人员的训练营。我们完成了"Spitfire Athlete pre-Alpha",在demo那天(由硅谷的顶级软件公司的总监评价),我们赢得了"Best iOS App" and "Best Overall App"。那真是太酷了,因为我是那整堂课程里面的唯一一位非计算机专业学生。
2014年1月份,我25岁了。2014年4月我们把它发布到app store,并被放置于最佳新应用的首页,排名所有健康类App的首位。现在我们有数万用户,收到了很多的赞许邮件,它让我深深地觉得一路的坚持是值得的。
你能够从App Store下载该应用: Spitfire Athlete
我之所以决定今晚写下这些答复,是由于最近我也想重新回顾我的iOS开发资料。我曾想,“花一年的时间?绝不,时间如白驹过隙。”。然后我记起了第一次开始的感觉。
我希望这个回复能够激励你以及那些读它来学习如何编程的人,并且把你所爱好的东西转化为实实在在的事物,因为开发了一个数万人喜欢的应用之后的美妙感觉,难以言表。