`

写给即将入行的程序员的一封信

阅读更多

  首先,欢迎来到程序员的世界。在这个世界上,不是有很多人想创造软件并解决问题。你是一名hacker,属于那些愿意做一些有挑战性的事情的人。

  “当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题。” –WhyTheLuckyStiff

  对于下面的文字你不必完全接受,所有这些来自一个其貌不扬的程序员。我喜欢把事情做到最好,而不是对原来的东西修修补补。

  仅仅是因为爱好,开始做一些创新,这是一个很好的开始!如果你说“我要先学习一下再开始做”,那么你永远不会真正开始。每个人都需要从某个地方开始,所以现在打开你的编辑器开始写代码吧。

  下面是一些很重要的建议,虽然有人并不认同,但我保证你看完我的分析以后会站在我这一边。一开始,先不要管算法和数据结构。大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后找一些相关的论文去理解算法并动手编程实践。如果没有现成的函数库(其他程序员提供的可重用代码),你用自己喜欢的编程语言来实现它。

  0. 选择一门好的编程语言,一门你自认为可以用它快速地做出一些有用东西的语言。

  不要选择C语言作为你第一门编程语言。也许选择C语言会给你一种过时的满足感。虽然它比早期的汇编语言提供了更好语法描述,但是今天C(或者C++)不是能够快速编写软件的语言。毫不偏袒的说,我建议你学习一种动态语言。选择一种你觉得语法(文档)让你使用起来更舒服的编程。为此,你可能需要花费一些时间来在几种不同的语言之间进行比较。这么做目的不是为了让你感觉更好或者让编程更容易。更快地完成自己的作品并且能够看到成果,才是激励你编程的源动力。不要选择一门需要某种重量级的IDE(IDE是一种能够帮助你编写并运行代码的工具)才能轻松编程的语言。你所需要的仅仅是一个文本编辑器。(注:原文并没有标号,是我们加上的,请大家别忘记了哦,我们是从零开始数数的。:))

  1. 选择一个好的编辑器。

  编辑器对程序员而言,就是像是弓对弓箭手一样重要。这里有一些推荐的编辑器:

  • SublimeText 2 – 如果你刚开始编程,推荐使用SublimeText 2
  • Emacs – 学习曲线陡峭,快捷键复杂。如果你想定制自己的使用习惯,需要学习Emacs Lisp.
  • Vim – 不仅操作简洁而且它默认包含在linux的发行版中,所以深受大家欢迎。我开始使用了2年Emacs。由于Emacs的快捷键操作过于复杂,我的双手开始经常疼痛,这迫使我转向了Vim阵营。了解Vim的快捷键是非常有必要的。当你在远程的服务器上编辑代码时,你唯一不需要安装的编辑器就是Vim。

  注意!Emacs和Vim可能已经成为成为古董了。但是,它们都具备一些现代编辑器多不具备的功能。

  2. 选择一个你可以从中学到东西的操作系统

  Windows不会教会你任何东西。使用Windows你唯一学会的就是打开一个exe(可执行)文件来安装软件和使用它。可能刚开始的时候你会觉得很酷,但是长远来看,如果你立志成为一个web开发人员,可能还是要具备基本的Linux知识,尤其是当你要发布程序的时候。Linux也允许你根据自己的要求来定制程序。Macs也很酷,但是我认为你现在经济上还负担不起。

  3. 不要通过复制粘贴来做备份

  一个新手程序员通常会把文件复制粘贴到一个临时目录下面来进行备份。这也许也是他们唯一知道的方法。不要那么做!你需要使用版本控制软件。我强烈推荐使用Git,它是个目前很流行的版本控制工具,而且使用起来非常简单。对一个Git新手,有一个良好的社区和很多参考资源来学习。(除了Git之外,还有mercurial, darcs, fossil等等。但是我还是建议从Git开始,我有很多的理由来支持Git,这里就不多费口舌了。)

  4. 知道去哪里寻求帮助

  参加一个和你相关的(你使用编程工具相关的)程序员社区。比如StackOverflow就是程序员的Facebook。那里没有消息状态和回复,取而代之的是问题和答案。除此之外还要学会使用IRC。IRC是一种老式的聊天室,现在还在被大多数开发人员用来分享技术信息和帮助解决问题。

  5. 培养你的礼仪

  知道什么时候问问题。你遇到的大多数问题都是别人碰到过并且在Internet上能够找到解答的。在IRC或者任何论坛里发问之前,先搜索一下google(或者blekko)来看看是不是有现成的答案。在IRC上问问题需要有耐心。永远记住,人们只是处于好心来免费帮助你。有时你发问以后需要几个小时才能有回复。所以,耐心等待。除此之外,记得问问题的时候要礼貌。世界很小,你怎么对待别人,别人就会怎么对待你。

  6. 结交朋友,技术书籍只能教你解决常见的问题(他们说:书是死的)

  当你在捣鼓一些程序或者从程序的作者那里学习,你能学到一些书本上没有的东西。当你散步的时候,请和遇到的朋友打招呼。你肯定不是唯一的程序员。和其他的程序员一起交朋友一起工作。你会注意到,当一群技术爱好者在一起的时候,不论话题是从什么地方开始,最后总是以技术话题收尾。这是必然的现象。所以你可以尽情参与。在你的黄金年龄努力编程,我能告诉你的是,我在开始6年前寻找朋友并开始讨论编程,从那时起才学到那些书本和文章不会告诉我的东西。所以我总是说,我的编程经验有6年,因为只有那个时候开始,我才开始与人交流并开始感觉真正地开始学习编程。

  7. 参加开源项目

  为开源项目编写代码能带来回报。这不仅仅是帮助别人,你留下的代码会被其他人使用或(可能)改进。当别人给你的代码添加功能或者提出修改意见时,也是在提高你的编程水平。开源软件项目不一定要是一个大工程,编写一个下载youtube视频的小程序也是很有用的。更重要的是,你会惊奇地发现你编写的代码会成为与他人有效沟通的桥梁。(其实关于参与开源项目,伯乐在线编译的不少有关程序员的文章都是如此建议,比如Justin James 的《程序员开始编程生涯的5个建议》)

  最后,若干年之后如果本文的内容曾经对你有一点点的帮助,作为回报请写一封类似的信给希望开始编程并不知如何入手的朋友,有可能的话请纠正本文中过时的内容。

  智者说过,掌握某个东西需要10年或10000个小时,也就是汉语中的“十年磨一剑”,所以不用着急。

53
20
分享到:
评论
10 楼 bitlanghen 2011-08-10  
这时写给刚入行的人看的。
我也说说我的感受吧
大学四年到现在工作一年多,从c到java再到python,scala,从windows到linux到mac os x,从结构到类到函数式编程,思维换过很多次,编程语言用过很多种,当我写简历的时候,我总感觉我缺少点什么。看了这篇文章之后,最后我发现我缺少的是朋友。
原作者说得很对,拥有一群志同道合爱好技术的朋友,那才是编程的开始,所以,我还没开始编程。
9 楼 tou3921 2011-06-16  
给即将转行的程序员的一封信:赶紧转吧
8 楼 lancelotly 2011-06-16  
说白了就是基本功要扎实,不是能写出代码就可以了,要知其然更要知所以然,流行的东西玩的在花对你自己来说没什么提高,紧紧会用,扎实的基础确是一辈子的财富,不变应万变,这个需要慢慢积累,如果做不到还不如不入这行,做一辈子代码工人对你来说是个悲剧,对行业也是悲剧,因为老板又可以为压价找出行业的新标准了。
7 楼 lucane 2011-06-14  
对于在JE混的初级程序员还要多挖挖坟,再来发言,这点比较有用
6 楼 justjavac 2011-06-14  
qinglintan 写道
博主有两种可能
      一种是技术牛人,有一定的专业基础
      二种是技术不怎么样,还不知道搞什么的应庙生
我从事情Java Web开发二年,觉得以上博主写的不太适合现状,倒有些像学校里的老师,因为没有太多的项目经验,所以会背书。

谢谢“qinglintan”猜测的两种可能,其实都不是,我既不是技术牛人,也不是应届生。
我已有四年java开发经验。
而且以上内容不是我写的,看到比较不错,觉得写得很到位。在学校的那些老师肯定不会讲这些的。
我也给qinglintan提点建议:你的博文应该分几个目录。
5 楼 qinglintan 2011-06-14  
博主有两种可能
      一种是技术牛人,有一定的专业基础
      二种是技术不怎么样,还不知道搞什么的应庙生
我从事情Java Web开发二年,觉得以上博主写的不太适合现状,倒有些像学校里的老师,因为没有太多的项目经验,所以会背书。
4 楼 hzw2312 2011-06-14  
最后的话、最为经典。
"十年磨一剑、霜刃未曾试。今日把示君、谁有不平事!"
~~~~~~~~~~~~~~~
3 楼 wkcgy 2011-06-13  
  
2 楼 一口三个汉堡 2011-06-13  
什么事即将入行,即将领着工资开发程序的程序员算是入行吗?或许是吧。
希望多年以后我能回你这个贴
1 楼 bestchenwu 2011-06-13  
赞一个~
不过对于这篇文章的几个观点我有一些不是很赞同。
1:大多数简单的程序不需要用到算法和数据结构
  在你做任何编程工作之前,你至少需要知道数组、链表、堆、栈、队列这些概念以及他们区别,即使你从来没写过这些方面的程序。

2:选择一门好的编程语言,一门你自认为可以用它快速地做出一些有用东西的语言。
  对于这一点,我也不是很认可。如果你时间充足的话,还是尽可能的选择C语言作为你的入门语言。它几乎是现代所有语言的鼻祖。虽然C语言和它的IDE在很多时候没有其他语言的那么方便,但学会和掌握它,尤其是指针(这几乎是只有在程序员世界里才有的概念),对你去学习其他任何语言都很有帮助。

相关推荐

    写给即将毕业的电子信息工程专业一封信

    "写给即将毕业的电子信息工程专业一封信" 这封信是写给即将毕业的电子信息工程专业学生的一封信,内容涵盖了毕业后该如何选择继续深造还是找工作、如何准备找工作等问题。信中首先提到了两条路:继续深造和找工作。...

    李开复写给大学生的第4封信

    标题中的“李开复写给大学生的第4封信”是指著名科技人士李开复针对大学生的成长和学习提出的一些建议。李开复,曾任谷歌、微软高管,以其丰富的行业经验和对教育的深入理解,常常给青年学子分享他的见解。这封信是...

    给舅舅的一封信作文.docx

    文档名为“给舅舅的一封信作文.docx”,其中“.docx”表明该文档采用的是Microsoft Word的一种现代格式。这种格式支持复杂的内容布局和样式,包括但不限于文本、图片、表格等元素。对于IT行业而言,处理这类文档通常...

    写给数学老师的一封信-条据书信.docx

    综上所述,这几封写给数学老师的感谢信不仅表达了学生们对老师的感激之情,还蕴含了许多关于教育的重要知识点,包括感恩教育、全面发展、教师的角色与影响力、学习方法与态度以及师生情感的培养等。这些内容对于教育...

    一个家长写给即将升入高三孩子的寄语.doc

    作为家长,如何指导即将升入高三的孩子,进行心理准备和大学目标规划是一个非常重要的议题。以下是相关的知识点: 心理准备 1. 自己的肩膀承担人生:高三学生需要意识到自己将要承担自己的生命,父母不能代替他们...

    台大校长给即将进入社会的准毕业生们的一封信.doc

    台大校长给即将进入社会的准毕业生们的一封信.doc

    google李开复给大学生的信

    《给中国学生的一封信:从诚信谈起》 2003年12月,李开复在写了《给中国学生的一封信》之后,又写了《给中国学生的第二封信》,这封信侧重于谈领导者的重要品质。  详细阅读:《给中国学生的第二封信:从优秀到...

    父母给成年孩子写的一封信精选.doc

    部分内容展示了两篇不同的父母给孩子写的信,表达了父母对孩子的关爱、期许以及对生活哲理的传授。 在这封信中,父母们传达了以下几个关键知识点: 1. **成长与转变**:成年对孩子和父母而言都是一个重要阶段,...

    给老师一封信500字优秀

    【给老师的一封信500字优秀】的标签表明这是一个关于师生关系的课件,内容主要是学生们写给老师的信件,表达了对老师的感激和怀念之情。这些信件揭示了教育的重要性和教师对学生深远的影响。 在第一封信中,学生向...

    程序员在囧途 高清完整.pdf版

    【写给程序员看的书,满是辛酸满是泪,是苦也是甜!最真实的草根程序员的创业之路】《程序员在囧途》通过幽默有趣的故事,潜移默化地把技术开发、程序员求职、项目管理、创业思路、软件行业商业运作、职业转型、自我...

    《Java程序员》

    本书对于即将从事Java职业或初步从业的程序员来说是一本难得的好书。从生存、制胜、发展三个方面入手,为大家展示出程序员求职与工作的一幅3D全景图像。本书中既有在公司中的生存技巧,又有高手达人的进阶策略,既有...

    宏志班主任写给宏志生的一封信范文-4页.pdf

    这封信来自你们的班主任,我想借此机会分享一些深思熟虑的话语,希望它们能在你们即将开始的新篇章中提供指引。你们离开熟悉的凯里一中,踏入更加广阔的世界,我为你们的机遇感到喜悦,但同时,我担忧你们可能会在新...

    给14岁儿子的一封信范文4篇.pdf

    【给14岁儿子的一封信】这封信中,父亲以深沉而充满关爱的口吻,向即将步入青少年的儿子传递了许多宝贵的生活经验和人生智慧。以下是对信中关键知识点的详细解读: 1. **法律责任与成长阶段**:14岁意味着在法律上...

    6一封信【第2课时】.ppt

    标题中的“6一封信【第2课时】.ppt”指的是语文教学的一个课件,主要讨论的是关于小学生写作的一篇课文——《一封信》。这篇课文通过露西给在国外的父亲写信的故事,展现了她的成长和情感变化。 在描述中,强调了...

    苏教语文六年级下册习作给老师的一封信PPT学习教案.pptx

    1. 书信写作:本资料是关于苏教语文六年级下册的一次习作教学,主题是写给老师的一封信。书信是一种常见的书面表达形式,要求学生掌握书信的基本结构和写作技巧。 2. 习作要求:小学六年级学生在即将结束学习生活...

    程序员开发手册.pdf

    1. 当表达式超出或即将超出规定的列宽,一行被分为几行时,通过将串联运算符放在每一行的末尾而不是开头,清楚地表示没有后面的行是不完整的。 Stri ng querySql = “ SELECT ProjectId ” + “ ,ProjectTitle ” + ...

    2022年JAVA程序员求职信.docx

    Java 程序员求职信写作指南 在这篇文章中,我们将讨论 Java 程序员求职信的写作指南。这篇文章将从三个方面入手:自我介绍、技能展示和职业目标。 首先,自我介绍是求职信的开篇部分,目的是让雇主了解我们是谁、...

    给毛老师的一封信作文.doc

    这篇文档实际上是一篇学生写给老师的信件,虽然标题和描述都表明这是一篇作文,但从中我们可以提炼出一些与教育、师生关系以及个人成长相关的知识点: 1. **师生关系的重要性**:信件表达了学生对老师深深的感激之...

    给爷爷奶奶的一封信作文.doc

    这封信虽然是一篇作文,但从中我们可以提炼出一些关于学习和教育的知识点,特别是对于孩子们的成长和进步: 1. **学习进步与自我评估**:作者提到他在学习上的进步,语文、数学和英语的成绩都有显著提高,并且意识...

Global site tag (gtag.js) - Google Analytics