我是如何在12周内由零基础成为一名程序员的

jopen 13年前
     <p> <strong>我的故事</strong></p>    <p> 在海军陆战队服役超过10年后,我于去年7月份退役了。随后在8月份找到了一份赌场的工作做公关,到今年2月中旬的时候又被辞退了。到5月中旬的时候我在 DE 协会找到了一份临时的“初级用户体验工程师”工作,而到了8月底我则成了正式的“用户体验工程师”。</p>    <p> 当我丢掉赌场的那份工作时,我就在想公关这行可能真的不适合我。我想做一名程序员。于是我开始节衣缩食学习编程。家人对我的情况非常担心。从2 月份到5月份的那段时间,我几乎只要是没睡着就是在学习编程,学习 Linux 以及计算机科学。我自学 Python,自学 Django。我学了一些函数式编程和命令式编程。对 Linux 命令行有了一个不错的了解。</p>    <p> <strong>我没有做的</strong></p>    <p> 有人问我:“你如何在11周内学会了 Django?”</p>    <p> 事实上,我并没有针对 Django 本身去学。而是在为了使得用 Python 编写应用更加容易的情况下学到的。也就是说完全出于偶然。因此我不想被称作一名“Django 开发者”。换句话说,如果我过去是在花大量的时间去专门学 Django 本身,而不是去学如何使用 Django 工作,我可能远没有现在的编程能力。</p>    <p> <em>以下是好奇的朋友们给我的一些问题以及我的回答</em></p>    <p> <strong>你是以网络资源开始的还是以书本资源开始的?</strong></p>    <p> 我都有用。这包括 <a href="/misc/goto?guid=4958185537882919486" rel="external nofollow" target="_blank">Djangoproject</a>,<a href="/misc/goto?guid=4958188962313964239" rel="external nofollow" target="_blank">StackOverflow</a> 和 <a href="/misc/goto?guid=4958201241480563607" rel="external nofollow" target="_blank">MIT 关于计算机科学的开放课</a>。</p>    <p> <strong>你的每天或者是每周时间是怎么安排的?</strong></p>    <p> 有时每天8个小时,有时12个小时,有时16个小时,总之每天都要花很多时间。因为没工作,又是单身父亲,所以会特别有意志特别有激情。这样的一个境况使得我能十倍努力的工作,不玩游戏,不看电视,甚至整天不睡觉,完全沉浸在代码,编程里。</p>    <p> <strong>你有指导老师吗?</strong></p>    <p> 是的我有。他是一个非常聪明而且成功的人,几乎在我成为程序员路上的每一个方面都给了我指导。这其中包括很多非常具体的编程知识(比如 Python&Django),还有职业建议等。</p>    <p> <strong>之前有过什么特别的经历对于你现在自学成为程序员有什么帮助的吗?</strong></p>    <p> 没有很多特殊的经历。我很早之前对电脑有过狂热的爱好,学过一点 QBasic&VisualBasic,后来又断断续续的弄过一点 Python,但大部分时间都没怎么弄。除此之外没有其他的了。</p>    <p> <strong>你怎样选择学习 Django 的?</strong></p>    <p> 这个很简单。因为我想要模仿的一个人就是通过 Django 取得了很大的成功。</p>    <p> <strong>可以分享一下你的学习过程吗?</strong></p>    <p> 我想重申一下我并不是一个自学天才也没有什么很特殊的天分。我只是很努力的学习罢了,因为我穷困潦倒而且没有其他选择。我几乎消耗了所以可以帮助我达到现在这个地步的资源——一个既可以让我赚钱又喜欢的工作。这就是我的学习过程。</p>    <p> <strong>想了解一下你具体学习 Django 的过程,或者给我一些建议或推荐一些学习资源(HTML/CSS,JavaScript)?</strong></p>    <p> 事实上,我唯一的建议就是动手去做。我真的花了很多时间学习,而且我也享受学习的过程。</p>    <p> 正如我在上面已经说过,我没有刻意去学 Django,Ruby on Rails 或者 Noir。我想帮助我成功的一个重要因素是学习语言以及其背后的工作思想,然后再通过一个网络框架去更好的学习那门语言。因此对网络框架的学习都是我在学习编程语言中偶然所得的。</p>    <p> 我建议想学的朋友去看看 irc.freenode.net,去读读 Django 文档并不懂就问。我就是这样做的,而且效果也很不错。不过我并不是完全坐着读文档,大部分的时间我都会自己做一些东西以更好的理解背后的工作思想。我个人是一个动手学习者,有些人可能不是,但是动手帮助我获得了成功。而你可以选择更适合你自己的方式。</p>    <p> <strong>你是如何向公司展示你自己的技能的?是给他们看你的项目了吗?</strong></p>    <p> <a href="/misc/goto?guid=4958201242228769538" rel="external nofollow" target="_blank">Github</a>,Github 还是 Github。我觉得强调的再多有不过分,做一些东西,放到 Github 上去,让人们知道你很富有激情也很聪明好学。</p>    <p> 另外还有网络。参加一些行业活动,发微博,写博客,和你周围的圈子进行互动。在我看到我现在这份工作的前一周,我就曾在一个论坛上发布过一个简短的演讲,这也使得有些人注意到了我。</p>    <p> <strong>结论</strong></p>    <p> 如果要我概括我的整个学习过程的话,我想以下几点值得一说:</p>    <blockquote>     <p>1. 问问题,有好奇心,富于热情</p>     <p>2. 学习一门语言,而不是一个网络开发框架</p>     <p>3. 努力学习</p>     <p>4. 构建一个网络,参加行业活动,写博客等,告诉人们你是一个值得共事的人</p>     <p>5. (选择性的)将你自己放到一个没有退路的地方,破釜沉舟</p>    </blockquote>    <p> 最后我想说的就是我觉得自己非常幸运。我现在还算不上一个很棒的开发者,而且我的职业也才刚刚开始。但是我很高兴通过自己的努力改变了我的生活轨迹。我也希望我的经历可以帮到你们。</p>    <p> <strong>后记</strong>:有人可能会对文中提到的神秘老师感兴趣,作者 Matt 并未在文中说明他是如何遇到这位老师的,不过在读者评论下面他给出了回复。Matt 是通过经常逛这位前辈的网络论坛认识他的。后来随着逐渐的熟悉便开始寻求他的帮助指导,最后也才有了 Matt 今天的程序员之路。</p>    <p> Via <a href="/misc/goto?guid=4958201242982841670" rel="external nofollow" target="_blank">MattDeboard</a><br />       来自: <a id="link_source2" href="/misc/goto?guid=4958201243730499775" target="_blank">www.36kr.com</a></p>