《程序员成长路线图 从入门到**》作者N216回忆和总结了自己几十
年的程序员成长经历,对当前程序员关心的热点、**、难点问题给出了
自己的看法和建议。通过对程序员的成长阶段进行划分,使得各个阶段的
程序员都可以“按图索骥”,解决自己所遇到的问题。同时,本书也能够
帮助程序员了解什么是程序员的价值,如何成为**程序员,如何实现自
身的价值等,从而给程序员提供向上进步的动力。本书既不是纯技术文章
,也不是纯个人传记,而是采用随笔形式,通过问题提出、分析、解答的
形式,并辅以个人成长的经,作者对程序员成长的实践与理解。本书以技
术成长和心理成长为两条主线,通过这两方面的结合,展示了程序员应如
何实现自己的价值。同时本书还涉及了“企业经营模型”,据此针对程序
员介绍了一些企业经营模型的知识,使得程序员能够看到更高层面的未来
。
《程序员成长路线图 从入门到**》适合阅读的对象包括程序员、软
件设计师、软件项目经理、软件公司(企业内部科技部门)职员、**政
府机关等相关企业信息化部门职员。
前言
引言:我的程序员成长之路 1
**部分 入门篇 6
1.1 程序员的梦想――中国的比尔?盖茨 6
1.2 谈谈程序员的基础知识 8
1.3 语言选择与就业方向 11
1.4 新手如何学习一门新的语言 14
1.5 理性看待考证热 16
1.6 选择大公司还是小公司 19
1.7 新手面试常见问题与对策 21
1.8 薪水的苦恼 27
1.9 求书、求网还是求人 29
1.10 新手看高手 31
1.11 新手应该具备的基本素质 35
第二部分 成长篇 41
2.1 加班,加班,加班 41
2.2 大量编程带来的快乐和烦恼 44
2.3 需求总是变化,程序总在修改 49
2.4 为什么程序员不愿写文档 53
2.5 为什么编程者总是高估自己低估别人 57
2.6 我?还是我们? 59
2.7 为什么程序员被喻为“IT农民工” 62
2.8 加薪的问题 63
2.9 门门通还是精一门 67
2.10 程序是给自己看的还是给别人看的 70
2.11 程序越长水平越高吗 72
2.12 动手能力强与技术水平低 75
2.13 调试高手和编程高手 77
2.14 如何快速确定自身水平 81
2.15 程序员应该掌握的实用编程技巧 83
第三部分 成熟篇 97
3.1 大项目或小项目都是程序员成熟之道 97
3.2 “顶梁柱”与“螺丝钉”的不同 101
3.3 如何对待新人 105
3.4 有关程序员的性别、年龄、个性、编程方法的话题 108
3.5 程序员的上升空间在哪里 112
3.6 跳槽还是留守 115
3.7 你能当老板吗 118
3.8 动手与动脑的关系 121
3.9 编程语言有高低之分吗 125
3.10 面向过程和面向对象的编程 127
3.11 功能和界面哪个更重要 130
3.12 你考虑过程序的复用问题吗 133
3.13 谈谈程序的参数化 137
3.14 漫谈程序的效率和水平 143
3.15 好的程序像一首诗 149
3.16 如何计算程序员自身的价值 151
3.17 程序员成熟的标志 154
第四部分 **篇
4.1 成熟到**的瓶颈问题 161
4.2 梦想回归 164
4.3 激情!激情!激情! 168
4.4 摆脱技术束缚,拓展业务视野 171
4.5 预测趋势,让你的目光看得更远 174
4.6 有意识才会有行动――谈谈市场意识 178
4.7 制作有价值的软件才是中国程序员内在的目标 181
4.8 从程序制作到架构制作 184
4.9 从定制软件到通用软件 188
4.10 何为EOM 192
4.11 用EOM的眼光批判“我要做全国*好的标准权限组件和通告权限管理软件”1 197
4.12 用EOM的眼光批判“我要做全国*好的标准权限组件和通告权限管理软件”2 201
4.13 用EOM的眼光批判“我要做全国*好的标准权限组件和通告权限管理软件”3 207
4.14 用EOM的眼光批判“我要做全国*好的标准权限组件和通告权限管理软件”4 214
4.15 程序员的春天:EOM与程序员 220
4.16 **程序员应该具备哪些素质 224
第五部分 附录
5.1 创新模型简介 230
5.2 项目简介 236
5.3 作者和网友之间的精彩回帖节选 239
只要在编程序就应该称为程序员。若以这个标准来衡量,我可能是国 内从事编程工作时间*长的程序员之一。几十年前我是一名程序员,几十 年后的今天我依然是一名程序员,未来几十年我还会是一名程序员。 2008年我提出了EOM(Enterprise Operating Model,企业经营模型) 理论,并把EOM系列文章发表到博客园网站上。也许是EOM对普通的程序员 来说显得过于抽象,若没有丰富的工作经历和一定的编程技术,一般人会 很难理解,因此网上反应平平。2009年年末,为了让普通程序员能够了解 EOM,于是我从程序员关心的热门话题开始,由浅入深地发表了几十篇博文 ,*终让大家看到了EOM是程序员成长中的一个重要结果,它与程序员的成 长密切相关。没想到这些文章一发布到网上就引起网友热议,无论是点击 率、回帖数,还是作者与网友之间的辩论,激烈程度都很高,而且转载甚 多。我的朋友、同事、家人甚至出版社见此状况都极力建议我将这些写成 书,让更多的程序员能够分享这种成长。 于是我在2010年5月正式和出版社签约,开始进行本书的撰写工作。在 写作的过程中,我和我的合作者对网上发表过的文章进行了整理,并根据 本书的编写大纲增加了很多新文章,把这些文章按照程序员的成长阶段划 分为入门篇、成长篇、成熟篇和**篇,从而形成了程序员成长的一个完 整的“路线图”。在这个过程中我重新回忆了我成长的各个阶段,每个阶 段的故事依然让我感到鲜活、感动和难忘。我努力去发现程序员*关注的 问题,努力去分析这个问题后面的原因,努力去给出解决问题的建议。我 想我的努力会给读者带来不一般的体会。 本书适用于各层次的程序员:有刚出校门寻找工作的新手,有在工作 岗位年限不长的程序员,有工作多年的项目经理、技术高手,有在编程事 业中表现突出的**人物。各层次的程序员都可以从中找到自己想要的看 点,例如:新手想知道如何找工作、如何面试、工资待遇、掌握什么语言 、编程的前途如何等一些经验和观点;成长期中的程序员关注的是如何面 对加班、如何提高自己的编程能力、如何确定自己的编程水平等;**的 程序员可能关注**程序员应该具备哪些素质、哪些技术水平,如何证实 其**,软件发展方向是什么,自己事业的未来发展方向是什么,如何实 现自己的价值等。 每个程序员的成长之路各不相同,但都会经历大大小小的成功和坎坷 ,很多人在这个过程中会迷茫、会不知所措。希望本书能成为程序员成长 的“路标”,打破那种程序员只看技术类书籍就能提高、就能成长的狭隘 想法。希望程序员能多了解其他程序员成长的经历,这些经历不仅指技术 上的,而且是指在心理上的、职场上的、事业上的和梦想上的。程序员可 以从中学到很多成功的经验,避免常见的问题,使得他们能够更快、更全 面地成长起来,更好地在这个职业中有所发展。 在此,我要感谢合作者张磊、吉阳两位同事,感谢我的朋友、同事、 编辑、家人,谢谢他们给我的每一次鼓励。他们中有很多人都是我的文章 的首批读者,在我写作的过程中给予了许多有益的建议。没有他们的鼓励 和支持我可能无法完成这项工作。我还要特别感谢远在英国的女儿倪好, 她的鼓励如同我给予她的鼓励一样,本书将是我送给她的一件礼物,希望 这份礼物伴随她快乐成长。 除了本书之外,我还打算在近期编写有关软件设计师、项目经理、EOM 、NSS等方面的系列书籍。我想通过这些系列书籍与那些有志促进我国软件 业发展的各位同仁分享自己的经验和观点。 由于篇幅有限,话题广度和深度也不可能拓展太多,请有兴趣的读者 访问我的博客,参与讨论程序员以及软件业相关话题。 N216(倪燕农) 博客:http://n216.cnblogs.com/ 邮箱:eom_216@hotmail.com 面试时,缺乏能力的时候,要表现出能力;缺乏风度的时候,要表现 出风度。应聘者,切记不要班门弄斧,弄斧可能伤到自己的脚。如果想要 表现自己的话,可以在同学、家人、陌生人面前尽情表现,虽然这些表现 可能不会影响你的应聘。 不过,有的企业不把表现欲很强的人录用为程序员,而是把其录用为 软件销售人员,这种情况在现实生活中也真的出现过。 4.准备不足 很多企业和单位在招聘的时候对招聘岗位和人员要求都是很明确的。 但是,有的应聘者往往对此没有针对性、**性的准备。例如,某用人单 位要招聘有金融软件开发经验、熟练使用C#语言的程序员,很显然用人 单位是要做金融方面程序的,而且缺少C#程序员。应聘者应该针对金融 方面的知识和C#语言两大方面多做准备,如果你有金融软件开发经历, 那就要在面试时突出这个方面的内容,如果没有,你*好多准备金融方面 的知识,谈谈对金融业务的理解和自己的看法,表明你对金融软件的了解 程度。同理,在C#方面,也要针对C#在金融软件方面常用到的技术做些 准备。这样有的放矢地回答面试官的问题,总比摆出一副叫我做什么我就 做什么的架势要好得多。 许多新手对用人单位的性质、员工人数、工资状况、同业中排名、产 品方向、单位特点、发展趋势、可能笔试、面试的内容都无准备,便匆匆 应聘,其结果是可想而知的。机会总是留给那些有准备的人。 5.性格内向 由于编程是一种个人劳动,很多学程序的学生很自然地沉浸于个人世 界里,与外界交往和交流并不主动和积极。表现在与人打交道上很内向, 少言寡语,给人看上去很“老实”的感觉。这些人往往对自己很自信,却 又埋怨别人不理解自己的能力。在面试时,往往和面试官形成一问一答那 种很机械的场景,严重缺乏主动性,从而给面试官留下一种很不自信的印 象。除了女人找对象要找“老实人”之外,很少有软件企业要招那种性格 **内向的程序员的。 在当今项目规模越来越大,项目内部越来越需要协调、交流和合作, 软件开发更需要团队精神来支持。无论是交流意识、交流方式都是**程 序员必须具备的。所以在面试的时候,要避免一问一答,要主动地在** 问题上谈谈自己的看法和想法,主动和面试官进行沟通。这样面试官自然 会对你另眼相看。我们不排除有的用人单位喜欢雇用性格内向的程序员, 但那毕竟是少数。 6.逻辑不清 程序员*重要特征之一就是逻辑性,凡事要讲逻辑、讲条理,有条理 才能成为程序。但是,面试时也常常遇到一些应聘者答非所问。如果你要 问他多高,他绝不会回答他1米70,而是可能回答“今天上午我才赶来面 试的”。你要问他常用的排序方法有几个,他绝不会回答有3个,第1个 是什么,第2个是什么,第3个是什么,而是回答让你不知道他在说些什 么,也许其中有那么个排序的名词。对于那些没有什么正确答案的问题, 那更是能回答得云里雾里,听不出其中的头绪。可以说这种人说话和思维 缺乏逻辑,能把一个简单事情复杂化,能把一个真实事情虚无化。 这种人在理解别人的话的能力方面,在处理问题的能力方面,在逻辑 方面都很欠缺。如果不加以注意和改进,那么进入了程序员这个行业后, 自己痛苦,同时别人也会跟着痛苦。了解这些后,应聘者在面试时,一定 要集中精力,要充分理解面试官提问的真正意图,回答简明而有条理,不 懂也不要胡乱说。只有这样面试官才会认可你是做程序员的材料。P24-25