Matt DeBoard本是一名退伍军人。他在12周的时间内,由一名非程序员成长为一名专业开发者。对于如何成为一名程序员?他有着自己独到的心得与学习经验。他在博文《How I Became a Programmer》中介绍了自己成为一名程序员的学习经历,并通过问答形式,分享了很多学习经验和心得。CSDN对该文进行了编译,译文如下:
我昨天在"HackerNews"上发表了一个简短的回应——有关于反对"Ruby on Rails"的八星期指导课能够令你成为一名初级RoR开发人员的声音。我没有得到很多赞成票,所以我得到一个结论即是互联网上的谈话正越来越趋向于融入大众舆论。你可以想象一下,当我在收集来自世界各地的少数有价值的邮件的时候,我是多么惊讶。这些邮件大多在问:我过去做了什么,我是怎么做的,以及我是怎样得到一份工作的。我做了一个假设——由于在这些少数的邮件里面有来自遥远的洪都拉斯,那么一定有很多人想知道应该怎样去追寻一个程序员的职业生涯。
首先声明两点
请注意这个博客的标题是“我如何成为一名程序员”,而不是“你如何成为一名程序员”。我不是一名自学专家,也不是一名聪明、优秀程序员。而我在人生转折点做了很有意义的事, 并获得了成功。
和女朋友协商后,我倾注了所有时间,以期成为一名职业程序员,而这个过程仅用了12周,而非我之前说的10周。
我的故事
简单来说,我在海军陆战队服役10多年后,于2010年7月退伍。同年八月,我在一家国立彩票机构做PR的工作,于今年的二月中旬失业。今年五月中旬,我在“DirectEmployers”协会找到一份叫做“初级用户体验工程师”的兼职工作。八月末,我成了公司正式的“用户体验工程师”。
当我结束了那份PR工作时,我觉得自己已经受够了,我想成为一名程序员。我拿出所有积蓄,并整日以方便面和水为食。我的家人(尤其是父亲)简直要急疯了。今年的二月至五月期间,我连走路的时候都在学习编程,学习Linux,学习计算机科学。我自学了Python, Django, 并学会了一些函数式和命令式编程。此外,我对Linux的命令行已相当熟悉。
瞧,不再说废话,接下来我要谈谈我并未做的事情,然后我会回答Email中的部分问题。
我并未做过的事情
Email中问到最多的一个问题是:你如何在11周内学会了Django?
在此我想澄清一下,起初我并非为了学习Django而学习Django。Django只是一个很不错的抽象工具包,它可以帮助Python很容易地开发各种Web应用。我专注于学习Django只是件偶然的事情。
我过去,乃至现在都没有期望成为一名Django开发人员。至今我也不确定自己是否喜欢被称为Python程序员。
换言之,如果我过去为成为一名Django抽象层方面的专家而花费过度精力,而不是用心钻研Django工作原理,那么如今我肯定不会获得现在的能力。
来自邮件的问题:
问:你是通过网络或书籍开始学习的吗?
答:是的。Django拥有丰富的说明文档,StackOverflow是更加综合性的学习资源。此外,对于普遍的学习问题,我认为MIT的公开课“Introduction to Computer Science”视频课程系列是非常棒的计算机科学资源。
问:你每天,每周投入多少时间来学习?
答:很多时间。有时8小时,有时12小时,有时甚至16小时。我计算机编程很狂热,并如饥似渴地学习。我从不给自己偷懒和自我满足的机会,并付出了比平时多十倍的努力。我不玩游戏机,不看电视,甚至整天不睡觉。我每天所做的事情只有学习代码,黑客技术,编程和开发。
问:有人为你指导吗?
答:有。有个非常聪明的人一直在指导我学习编程,虽然我现在有了很大进步不再需要过多依靠他了。他几乎用了所有的方法,来引导我成为一名合格的程序员。在编程知识(尤其是Python和Django开发)、命令行、emacs & vim的学习上,他都给予了详细的指导。他是一个成功的、很受人尊重的、见多识广的怀疑论者。
问:你之前的工作背景和经验对你的自学有什么特殊的辅助作用吗?
答:有一定作用吧。我之前是一个计算机极客,在80年代末泡过很多论坛,学习了QBasic 和VisualBasic,还断断续续地学了几年的Python。除此之外就没有了。
问:你最初为什么选择学习Django?
答:一直作为我职业发展榜样的人凭借Django获得了成功。为此我也选择了Django。
问:介意分享一下你的学习过程吗?
答:我想再次说明一下,我不是自学专家,也不特殊。我只是非常努力,因为我生活很艰苦,并将自己逼到了死胡同,我别无选择,只能成功。我花掉了我所有可以花费的积蓄,就是希望可以找到一份我喜欢的职业。这就是我的学习过程。
问:请分享一下您学习Django的过程,及学习Django(或者HTML/CSS, JavaScript等前端技术)的技巧、网站、书籍;
答:除了认真的学习这门技术外,我没有其他技巧。为了学习Django,我花费了大量的时间,其中也有很多乐趣。
正如我上面说的,我并不觉得“学会了Django”,“学会了Ruby on Rails”,或者“学会了Noir”就成功了。我认为我之所以成功,因为我在学习这些语言的同时,还学习了这些语言背后的原理,之后我通过运用Web框架进一步深入学习了这些语言。框架也是在偶然机会学的。
阅读一些Django文档,加入irc.freenode.net中的#Django,经常在里面提问。这是我经常做的,感觉还不错。坦白讲,我不会死坐在那看这些东西,我会试着编写一些程序以加深理解其中的概念,然后再阅读来验证我的结果。有些人可能觉得没效果,但对我十分有用。用不用这种方法,最终由你决定。
现在HTML&CSS的学习资料非常多,它们也较容易学习。我学习了我能用到的所有HTML&CSS相关知识。我记不太清楚HTML&CSS的工作原理,比如语法&语义。我不知道如何创建“Gradient”,但我可以找到创建它的方法。我认为这是很重要的。
问:你是怎样向公司展示你的技术技能的?是否给他们看过你之前的作品?
答:Github。我十分强调使用Github。做一个项目,把它导入Github,以此向大家展示你的激情、智慧和好奇心。
当然,还有网络。参加一些技术会议;多和同行进行交流;要善于用Twitter、博客。多在自己专注语言领域的社区中进行交流;去认识更多的技术人员;同时向大家展示你是多么热爱编程工作。在我得到第一份编程工作前的一个星期里,我在Fabric上发起了一个关于“Python中Capistrano”的小型对话。这件事让我拥有了自己的人际小圈子。
结论
如果对我所做事情进行一个总结的话,我想说的是:
● 多提问,充满好奇心,充满热情;
● 要努力学习一种语言,而不是Web框架;
● 努力工作;
● 运用互联网,多参加技术会议,多用Twitter和博客。多参加社交活动,向大家展示你对工作充满热情,是团队的光荣;
● (可选项)把自己置于绝望的境地,除了成功,别无选择。
我最后想表达的观点是——我很幸运。我不是一个很了不起的程序员。今天结束后我仍然是一个新人,仍然有很多东西要学。我的职业生涯才刚刚开始。我通过努力改变了自己的人生,我感到十分自豪。希望我的经历能够帮助大家。
联系客服