第1篇 求职面试第一步
第1章 你了解程序员吗
程序员的工作是伟大的,是他们的智慧推动着信息世界前进的车轮;程序员的工作是神奇的,大到航天飞机,小到手机或MP4,都离不开他们编写的代码;程序员的工作是另类的,他们喜欢颠倒时空般的疯狂工作;程序员的工作是令人激动的,在这个行业中,缔造了无数的创富“神话”,从世界首富比尔·盖茨到中国内地首富李彦宏,他们都是程序员出身。可以说,没有任何一个职业,能和程序员行业相比。
当然,伟大的程序员不是天生的,而是后天炼成的。伟大的程序员不是在旦夕之间就可以成就的,有些人可能要花费数年,有些人甚至需要十几年。
1.1 程序员的那些事
1.1.1 激动人心的职业
程序员的工作无疑是非常具有创造性的,充满挑战和乐趣的。在这个行业中,谱写了一段又一段的传奇。在已经发布的2011年福布斯世界富豪排行榜前5名中,有两个人来自软件行业。
比尔·盖茨(Bill Gates),微软公司创始人之一,微软公司主席兼首席软件架构师。他与保罗·艾伦一起创建了微软公司,曾任微软CEO和首席软件设计师。1995年—2007年的《福布斯》全球亿万富翁排行榜中,比尔·盖茨连续13年蝉联世界首富。有趣的是,作为世界最大软件公司的创始人,比尔·盖茨竟然没有大学毕业。
拉里·埃利森(Lawrence Ellison),生于美国芝加哥,是世界上最大数据库软件公司Oracle的老板。埃里森在32岁以前还一事无成。读了三个大学,没得到一个学位文凭,换了十几家公司,老婆离他而去。开始创业只有1200美元,却使得Oracle公司连续12年销售额每年翻一番,成为世界上第二大软件公司,他自己也成为硅谷首富。
在中国,软件及互联网行业同样演绎着创富“神话”。2011年福布斯中国富豪排行榜前10名中,有两名软件行业的人士。
中国的下一个李彦宏、马化腾在哪里?就在怀揣伟大梦想的中国程序员的大潮里。
1.1.2 关于程序员
程序开发可以说是当代最激动人心的行业,激励着无数青年人进入这个行业。但实际上,软件开发工作并不是轰轰烈烈的,软件开发者更愿意在一个安静的环境里做出惊天动地的大事。让我们来近距离了解一下程序员。
1.梦想家
梦想有多大,舞台就有多大。每一个程序员,都有或大或小的梦想。他们以能用代码改变世界为荣,他们有着强烈的荣誉感。
2.忍者,挑战者
作为程序员,不但要面对各种技术问题,还要忍受长期的精神压力和体力压力。成功后,还要承受财富暴涨暴跌的过山车。软件开发这一行,不是谁都可以尝试的,只有敢于迎接挑战,有足够心理承受力的人士才能涉足。
3.天使或是魔鬼
程序员意味着责任,意味着一大群企业和一大群人要受你的代码摆布;意味着企业可能井井有条,也可能一团糟。有些程序员成了黑客,给世界带来了大麻烦。
4.苦行僧
程序员的工作是世界上最困难、最辛苦的工作之一。他们夜以继日,经常回家很晚,要么是在加班,要么是忘了下班。
5.学无止境
在有些行业中,也许很多年不学新的东西也能干得很好。但在软件开发行业,每天都有新技术产生,程序员需要时刻关注新技术。伟大的程序员从不停止学习。
1.2 测测你的潜力
如果你已经了解了程序员的大概情况,并且认同他们的工作,那就测试一下,看你是否适合软件开发的工作吧。下面只是进行最基本的测试,如果你要成为伟大的程序员,你需要学习更多、了解更多。
1.数学能力
会加、减、乘、除等基本数学知识,起码要学过初中数学。当然,数学越好,成为伟大程序员的可能性越高。假如只是想编写简单的程序,初中学历就够了。假如你要做比较厉害的程序员,起码要高中学历。
一般程序员应该解决的问题(每空10分):
(1)56+32 × 3=()
(2)1+2+3+…+99+100=()
伟大程序员可以解决的问题(本题20分):
(3)一支队伍100 米长,一个传令兵在队尾和队伍同时运动,传令兵须沿着队伍运动的方向追到队头,追上队头后立即转头与队尾会合,这时队伍正好运动了100米,问传令兵跑了多少米?
你的答案()
数学能力测试分数()
2.英语能力
学习编程,需要有一定的英语基础,起码要掌握初中水平的英语词汇。当然,如果你英语非常好,那再好不过了!通过查看一些英文资料,你能快速学习新技术,并有助于你走得更远。请写出下面汉字的英文(每空5分)。
(1)管理员()
(2)函数()
(3)位址()
(4)数组()
英语能力测试分数()
3.逻辑思维能力
(1)你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?(本题20分)
你的答案()
(2)一个村庄有70户人家,每户人家养一条狗。已知这些狗中有一部分病狗,由于某种原因,狗的主人无法判断自己的狗是否是病狗,却能够分辨其他的狗是否是病狗。现在,大家决定每户人家自行处决各自的病狗,但如何知道自己的狗是病狗呢?大家必须对其他所有人的狗进行观察,但不允许指认他人的狗是病狗,只能通过别人的狗是否生病判断自己的狗是否有病。如果判断自己的狗生病了,就要自行处决自己的狗。过了10天之后,所有的病狗都被处决了,问,一共有几只病狗?(本题20分)
你的答案()
逻辑思维能力测试分数()
4.答案
5.统计分数
计算一下各项的分数,然后添在表格里。对照评价,看一下自己的潜力(见表1.1)。
表1.1 分数统计表格
6.你通过测评了吗?
根据上面的测试分数,如果测试总分超过40 分,说明你可以进入程序开发这个行业。如果测试总分超过80分,说明你有成为优秀程序员的潜力。
这些最基本的职业技能通常决定了一个程序员的级别,能否用好这些技能,直接关系到程序员的职业生涯。作为编程新手,一定要努力补齐这些基本技能。
除了以上知识,你应该具备一定的计算机技术,同时也要有想象力,程序开发是把抽象的东西现实化,所以,好的想象力可以让你如虎添翼。
1.3 比尔的建议
在程序开发这个行业,学历不是最重要的。梦想、兴趣和坚持才是最重要的。世界上最大的两家软件公司的创始人比尔·盖茨和拉里·埃利森,都没有大学毕业。所以,不要太在意个人的学历。让我们一起来听听比尔·盖茨的建议吧。
1.兴趣是最好的老师
我能够取得今天的成就,与我从小就喜欢电脑是分不开的,回想起来,我不过是选择了自己喜欢的事,爱做的事。
——比尔·盖茨
你的金矿不在别的地方,就在你最感兴趣的地方。不管你在哪里工作,成为一个优秀的员工、优秀的软件开发工程师的过程是一样的。现在很多人认为软件行业薪资高,发展潜力大,可以快速致富,也不管自己是否感兴趣,是否适合,就匆忙进入到这个行业。其实程序员是没有办法一夜暴富的,大部分程序员都是经过5年以上的努力才有所成就。如果你想快速致富,做程序员不如去做销售、做股票,这些行业一夜暴富可能性要大得多。
2.要做就做最好
要么不做,要做就做得最好。
——比尔·盖茨
一个人是否成功,完全取决于对待工作的态度和投入的热情有多大。奇虎360公司董事长周鸿祎在总结自己成长经历时说:“一件事情的成功与否完全取决于对这个事情的态度和投入,而不取决于事情本身。我有一个信条:一件事情,要么我不做,要么我就做好,做得有创意!因为如果不认真做,既浪费公司的时间,同时也浪费自己的时间。但如果认真做了,就会发现从这个项目得到的收获远远超过项目本身。”
周鸿祎在北大方正集团工作时,做了好几件很多人不愿意去做的事情。第一件是刚到北大方正的时候被分派到新疆做银行系统集成开发。这是一个苦差事,但周鸿祎想:“既然来做这件事情,就一定要做得最好”。到达之后,他潜心钻研,借助毕业设计时研究Visual C++的基础,在UNIX字符模式下实现了一套Visual C++的类库和软件开发的平台。这个界面编辑器能够自动形成程序框架代码,自动检测错误,使用这套工具可以提高开发效率十几倍。就是这样一个不是机会的机会,不仅仅轰动了整个建行系统,同时也奠定了周鸿祎在方正的位置。第二件是给国务院办公厅的领导培训电子邮件的使用,很多人可能就随便讲讲,应付了事。但周鸿祎却非常认真,他找了很多电子邮件的相关资料,并且对电子邮件产生了浓厚兴趣。通过和学员交谈,周鸿祎发现他们很难掌握机械化的电子邮件操作,于是产生了开发一套人性化的电子邮件系统的想法,这就是周鸿祎后来主持开发的方正飞扬系统的基础和思路。第三件事情是到新疆解决银行系统处理数据的难题。因为大家都知道这件事情的难度,所以没有人愿意去。周鸿祎当时也不想去,但既然去了,就要做出成绩来。经过一年半的苦心钻研,反复调试,在解决了大量技术难题后,终于攻克了这个银行系统大难题。同时也收获了大量宝贵经验,有些经验是在其他项目开发中很难遇到的,这些都为周鸿祎开发3721 搜索引擎打下了坚实的基础。因此周鸿祎说,如果当时没有去新疆,对于3721来说,即便有了一个很好的想法,但是否能够做成一个成功的产品还很难说。
如果你希望自己有更多的机会和更大的发展,就要抱着“要做就做最好”的精神去做任何事情。这样,非凡的发展与机会,就在前面等着你!
3.只要坚持就有未来
坚持,是每一个成功者的秘诀。
所谓的奇迹,不过是坚持的结果。
——比尔·盖茨
——比尔·盖茨
坚持是获得成功的必经之道,只有在不断地对目标的坚持中,才能实现伟大的梦想。就像长跑比赛冠军是由一步一步跨越而来的;高楼大厦是由一砖一石堆砌成的;万里长征是由红军战士一步一步走成的一样。如果在这个过程中放弃了坚持,后果可想而知。
1.4 对程序员的误解
1.程序员是吃青春饭的
经常会听到“程序员是吃青春饭的”的议论。其实,这是对程序员的误解。
据美国调查企业Evansdata公司发表的调查报告显示:全球从事软件开发的程序员中,大部分开发程序员都是36~50岁。而在中国,因信息技术起步较晚,在中国信息技术大面积普及的时间大约是1990年以后,那个时候的年轻人,现在也只不过是30多岁,最多40岁,所以中国软件开发行业大部分从业人员都是些年轻人。
另外,中国的软件开发普遍是小作坊模式,不规范,个人英雄主义严重,大部分软件企业研发能力弱,减弱了对高级开发人员的需求。但随着技术的发展和企业规模的扩大,企业对人才的需求会越来越强烈。优秀的程序员什么时候都是缺乏的。
2.程序员必须高学历,必须大学毕业
在程序开发这个行业,学历不是最重要的。世界上最大的两家软件公司的创始人比尔·盖茨和拉里·埃利森,都没有大学毕业。所以,不要太在意个人的学历。至于中学生,只要他在编程方面有浓厚的兴趣,逻辑思维能力较强,也可以成为伟大的程序员。
3.程序开发工作必须加班
很多人觉得程序员很辛苦,经常加班工作。其实各个行业普遍都有加班多的现象。只是说软件行业的加班比较突出,其实可以从两个方面来看。
● 软件行业是创新型行业,是和时间赛跑的行业,如果你在一个非常有前途、有发展的公司里面,加班加点可以让你感到成就感,可以更快实现人生梦想,那加班又有什么不好呢?其实,国外的一些软件公司,加班也是很正常的。
● 我国的软件企业也在逐渐规范化,开始脱离小作坊式的发展。从目前的趋势来看,软件企业加班相比5年前,已经减少了不少。有些达到一定规模的软件企业,已经不希望通过加班来完成工作,而是提高工作效率。
1.5 你的榜样
如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,你还是另找一份更合适的工作,这份工作不适合你;如果现在你还不是一名程序员,只是想看看自己是否适合当程序员,那还是趁早算了;如果你想成为一名优秀的程序员,看看你的榜样吧(附赠软件提供国内外软件开发20人的人生故事)。
成功经历
John Carmack——世界第一人称射击游戏之父
成就:享誉世界的著名程序员,第一人称射击游戏之父,30岁步入美国互动艺术和科学学院名人堂
创始公司:Id Software(世界著名的游戏公司和3D引擎开发公司)
财富巅峰:亿万富翁,占有Id Software公司的40%股份
最高学历:高中
出生日期:1970年8月20日
超级语录:在信息时代,客观障碍已经不复存在,所谓障碍都是主观上的。如果你想动手开发什么,你不需要几百万美元的资金,你只需要在冰箱里面放满比萨和可乐,再有一台便宜的计算机,和为之献身的决心。我们在地板上睡过,我们从河水中趟过。
出生于得克萨斯州的约翰·卡马克(John Carmack)与许多电脑天才一样,从小就对电脑和程序设计充满狂热,七年级时的卡马克对《创世纪》和《巫术》等游戏痴迷不已,开始制作基于AppleII的小游戏。由于对编程的热爱,卡马克中途放弃了在密苏里大学就读计算机科学专业的机会,开始了自己艰辛的创业之路。为了获取Softdisk公司的程序员职位,他在雪地中徒步走了三英里才得以赶到招聘地点。在这里,约翰·卡马克结识了约翰·罗梅洛(John Romero《文明》系列游戏的缔造者)、汤姆·豪尔(Tom Hall)等意气相投的好友,随后他们一同返回得克萨斯州建立了自己的游戏公司—id Software。
约翰·卡马克是一个天才的程序设计师,仅仅依靠自学和钻研就掌握了高深的程序设计技巧,他甚至相信可以用编程完成一切。在当今这个3D技术飞速发展的时代,没有哪一家公司可以像Id Software那样引领技术潮流,也没有哪一家公司可以让硬件制造商俯首称臣,这都要归功于约翰·卡马克开发的3D加速技术。《雷神之锤》刚刚问世的时候,3D加速卡在人们眼里还只是一个可笑的空想而已,只有约翰·卡马克对3D技术的威力深信不疑,他为《雷神之锤》制作了一个专门在Verite显卡上运行的特别版本,画面看上去非常漂亮,可惜的是Verite显卡未能在市场上站稳脚跟。随后卡马克又采用OpenGL标准为《雷神之锤》制作了一个新的版本,使所有具备3D加速能力的显卡都能以更快的速度、更高的分辨率渲染出更华丽的图像。一时间,所有的电脑用户都争相购买这款游戏,人们甚至为了能玩上3D游戏而去购买昂贵的PC,这给Id Software和约翰·卡马克带来了上亿美元的商业利润。直到今天,显卡生产商在研发新产品之前还会先同约翰·卡马克商量一下,以确保他们的硬件可以完美地支持id Software出品的游戏,并确保硬件性能符合时代潮流。
现在,约翰·卡马克仍然担当着id Software的游戏软件首席程序员,出自他手的电脑游戏已达数十部之多。但卡马克并不满足于现状,他的最新目标是有关火箭技术的研究项目,并为此特意成立了Armadillo航空宇宙技术研究公司,为着又一个梦想继续努力。
亲自开发的游戏:德军总部3D(Wolfenstein 3D)、毁灭战士(Doom)和雷神之锤(Quake)等10多部经典游戏。
使用其游戏引擎开发的游戏:反恐精英和荣誉勋章等。
深度评价
如果你问比尔·盖茨,“你最欣赏的程序员有哪些人?”,在他的回答中,肯定会出现John Carmack的名字。没错,John Carmack在程序员中的受崇拜程度,甚至到了无以为加的地步,微软在很多问题上都非常尊重他的意见。正是因为对游戏和编程的热爱和孜孜不倦的追求,才使得高中毕业的John Carmack成为享誉世界的著名程序员,并开创了游戏领域的最大传奇。
王江民——不可思议的传奇人生
成就:我国最早的计算机反病毒专家、江民杀毒软件创始人,拥有各种创造发明20多项
创始公司:北京江民新科技术有限公司
财富巅峰:2003年,入选“中 国IT富豪榜50强”,IT亿万富翁
最高学历:学历:初中
出生日期:1951年10月
超级语录:“我38岁开始学计算机,没有感觉我老了,没有感觉我不行,只是感到我的英语基础不好。再说,计算机是实践性非常强的学科。我搞计算机是用计算机,不是学计算机。”
成功经历
王江民,1951年出生于上海,3岁因患小儿麻痹后遗症而腿部残疾。初中毕业后,他回到老家山东烟台,从一名街道工厂的学徒工干起,刻苦自学,成长为拥有各种创造发明20多项的机械和光电类专家。作为所在国营企业的技术骨干,先后被授予“全国新长征突击手标兵”、“全国青年自学成才标兵”称号。
改变王江民人生的阶段是1987年,那时王江民是所在国营企业的技术骨干。当时的国内计算机发展还处于预热期,但经常与高科技打交道的王江民认定计算机必将伴随高科技的发展,改变人类社会的生活。“如果不学,很可能会跟不上科技发展的步伐”。“于是先买书,晚上熬夜,每天一点点地看”,开始了一个崭新领域的理论与实践探索之路。王江民说:“我38岁开始学计算机,没有感觉我老了,没有感觉我不行,只是感到我的英语基础不好。再说,计算机是实践性非常强的学科。我搞计算机是用计算机,不是学计算机。”
机遇偏爱有准备、肯钻研的人。1989年,王江民花1000多元自己买了一台中华学习机,第二年又买了一台8088PC机。王江民首先学的是BASIC语言。当时,王江民的孩子正上小学一年级,他在辅导孩子功课时突发奇想,能否编一个程序代替家长辅导。没过多久,3个月前尚对软件领域一片空白的王江民就编好了一套数学语文教学软件,试过后发现效果奇佳,拿到电脑报参加了一个评奖,结果被誉为“教育软件第一”,并被第一个在全国隆重推广。王江民从一开始就是在用计算机,而不是在学计算机。
软件获奖激发了王江民对软件业的极大兴趣,使他从此把精力转到了软件领域。在开发工控软件时,王江民发现一些或明或暗的病毒。他先是用Debug手工杀病毒,跟着是写一段程序杀一种病毒。王江民有一个很好的习惯,就是杀一种病毒就在报刊上发表一篇文章,公布这段杀病毒的程序。后来,王江民觉得这些各自独立的杀病毒程序用起来很麻烦,就把6个杀不同病毒的程序集成到了一起,命名为KV6,后来发展到KV8、KV12、KV18、KV20。随着时间的推移,KV系列杀毒软件在国内市场中一路高奏凯歌,先后囊括16 项大奖,成为杀毒软件行业中无可置疑的领头羊。依靠KV系列软件,王江民也成为中关村的亿万富翁,并跻身“中国IT富豪榜50强”,成为新世纪(002280)“知识英雄”的典范,创造了中国软件行业的奇迹。
深度评价
王江民的成功启示我们,每一个想追求成功和传奇的人,都会在他身上看到自己的希望和信心,因为王江民各方面的起点都非常低,低到在外人看来凭着王江民的外在条件,他根本就没有任何成功的可能性。后来者们只要少一些浮躁,多一些热情和专注,多一些勤奋和执着,就一定能发现机会,并抓住机遇,书写一段属于你自己的编程传奇。