http://www.blogjava.net/hao-zhang-hi/archive/2011/02/15/344372.html
程序员的位置:在软件公司程序员是企业中最基础的岗位,只要保质保量的完成分派的任务就可以了,但在我看来好多程序员就连这一点都做不到。代码写得是一塌糊途,只要能正常运行就算是万事大吉,而且总是会告诉你没有重构的时间。可在我看来程序员更应该是个“作家”而不仅是个“司机”,写出来的代码是用来运行的,想像一下别人都看不懂你写的代码,那你写的程序会运行多久呢?作家只有写出好的文章别人才会去阅读去欣赏,试想如果一作者写出一篇连自己看了都觉得讨厌东西又怎么会启齿让别人去看。同样的对于程序员来说也应抱有作家的心态,始终想着我写出的代码是否别人看了会笑话?是否会赞叹?应该想到决大部分的代码重构工作是在开发阶段完成的,而非后期逐渐完善的。一般来说,一套系统上线这后很少会再做代码的重构工作。
程序员的发展方向:我想没有几个人会想做一辈子程序员(即然有这样的人年龄大了精力上也不允许),但很少有程序员会想到以后应该做些什么,下面是我总结的几个发展方向
走向管理:有两种原因会使部分程序员走上管理的道路,一是与生俱来的对权力的欲望;一是在程序员的岗位上对自我价值重新认知。对于前者如果欲望过去强烈就会急功进利,很容易走捷径,会出现不能服众的情况。对于后者自我价值的重新认知是一个缓慢的过程,一个程序员在长期的开发过程中会慢慢发现一个人的力量是有限的,做一件事情必须要借助其他人的帮助,如果需要别人的帮助就必须能影响他人。从而认识到一个人的价值对公司来说几乎是不值一文,如果想让自己的价值得到提升必须要影响到他人,借助他人的力量使自己的价值得到最大提升
走向行业:即成为某个行业的行业专家。一般来说走这个方面需要机遇,需要长时间的从事某一个领域的开发与管理工作,对某个行业无论是大局还是细节都了如指掌。
走向专业:即成为架构师。一般来说这些人对开发有狂热的兴趣,逐渐的从代码的编写中认识到设计与软件架构的重要性,并对软件设计乐此不疲。
自已干:这些人是野心家,也是风险最大的一条路。好多程序员都认为软件开发不需要什么成本,只要能接到单子完全可以自己干,自己当老板。然而很少了解只有长期持续的订单才是一个企业不断稳定发展的最重要因素。
程序员的价值:程序员很少能认清自己的价值,总是用我会多少东西,我做了多少工作来衡量。然而对于企业来说,他看的是你为公司创造多少价值,这种双方认知的偏差往往带来不可调和的矛盾。举个例子,一个公司只做SQLServer做数据库端开发,而你即使对ORACLE再精通,你一样对这个公司来说是没有价值的。再比如你在某个公司做了很多工作,但你做的项目都没有使公司赚到钱,同样老板是不会多给你多少奖金的。人生的机遇就象在等车,只要你有足够的准备,站在一个站牌很多的地方,一定会搭上你希望去的方向的公车。一个程序员的价值在于他的机会,而很多机会一定会留给有实力的人,不要认为自己怀才不遇,不要怨天尤人!
如何成为优秀的程序员:
拨三心:恒心、耐心、细心
兴趣决定一切:当一个人把自己的职业仅当成谋生的手段时,那他的人生将会失去很多乐趣。如果你不喜欢软件开发,那最好离开这个职业,没有兴趣只会让你一事无成。
自我学习:做程序员就是这样,走上了一条永无止境的学习之路,不学习新知就会被淘汰。然而学习也是有方法的:1)拿来主义;2)知其然也要知其所以然。细细分析与研究别人的优秀框架会对你大有好处
自我修复:不断的重构与完善你的代码,是对所学知识的达到溶汇贯通的最简捷的途径
找到一个圈子或老师:有时别人的一句话会对你的点拨很大。对于知识点有时只是一层窗户纸,看似玄妙,也许你差的只是那灵光一现或是换一个角度思考,这并不难。难的是将你所了解的知识点串接起来,使其能上下贯通运用自如,而在这点上通过一己之力会变得非常的漫长与痛苦。
分享到:
相关推荐
乔治·奥威尔的这部反乌托邦小说,提醒人们关注隐私、自由和权力滥用,对程序员理解技术的社会影响有所启示。 5. 《哥德尔、艾舍尔、巴赫:集异璧之大成》by Douglas Hofstadter(推荐数:275) 这本书探讨了数学、...
在Java等语言中,GC是自动进行的,程序员无需手动管理内存,这大大简化了开发过程,但同时也对程序员理解内存管理提出了新的要求。 GC的工作原理主要包括三个阶段:标记、扫描和清理。在标记阶段,GC会遍历所有的...
《理解专业程序员》一书由杰拉尔德·温伯格撰写,主要探讨了程序员这一职业的专业性,以及如何理解和成为真正的专业程序员。书中通过轻松幽默的文风,揭示了程序员心理、工作特点和行业的独特性,旨在帮助程序员、...
这个压缩包可能包含了关于以上知识点的教程、案例分析、习题集等,通过系统学习,可以帮助程序员深化对软件设计的理解,提升编程技能,为成为高级程序员或软件设计师打下坚实基础。同时,对于准备参加软考的人员来说...
通过对进程管理的理解,程序员可以更好地设计多任务程序,提高程序的执行效率。 #### 3. 内存管理 内存管理是操作系统的核心功能之一,书中介绍了虚拟内存的概念,以及现代操作系统常用的内存管理技术,如分页、...
该书深入浅出的讲解了编程的相关知识,其中不乏很好的代码案例分析,值得推荐(wh706483)。
深入学习异常控制流有助于程序员理解程序的运行时行为,以及如何处理程序运行中可能出现的错误和异常情况。 7. 虚拟内存:虚拟内存是现代计算机系统中普遍采用的一种内存管理技术,它提供了一个比实际物理内存更大...
“我可以重载甚至覆盖这个世界里的任何一种方法”这句话体现了程序员对编程语言中的重载(overloading)和覆盖(overriding)机制的理解和运用能力。重载是在同一个类中,允许有多个同名的方法,但参数列表必须不同。...
1. **基础编程概念**:面试通常会测试你对基本编程概念的理解,如变量、数据类型、控制结构(条件语句和循环)、函数、数组和链表等。理解这些概念的原理和应用场景是必要的。 2. **算法与数据结构**:熟练掌握常见...
《程序员面试全攻略》是一本全面指导程序员求职过程的实用指南,旨在帮助程序员们在竞争激烈的IT行业中脱颖而出,成功找到理想的工作。这本书涵盖了从准备简历、与猎头接触,到面试技巧和程序设计能力的提升等多个...
一个程序员的成长不仅在于技术的磨炼,如编程能力、设计思想,更在于如何理解和满足客户需求。需求分析是整个软件开发过程中的关键环节,它直接影响项目的成功率。 1. **深入理解客户需求**: 场景1中,B店老板和B...
以上知识点构成了程序员进行毕设的主要学习内容,每个部分都需要深入理解和实践,以确保毕业设计的成功完成。通过这样的学习和实践,不仅可以提升编程能力,也能为未来的职业生涯打下坚实的基础。
操作系统是管理计算机硬件与软件资源的核心系统,理解操作系统的原理能帮助程序员更好地优化程序性能,处理进程调度、内存管理等问题。 ### 4. 计算机网络知识 计算机网络涉及数据传输、网络协议(如TCP/IP)、...
这款计算器不仅能够执行基本的数学运算,如加法、减法、乘法和除法,还包含了对程序员至关重要的进制转换和位运算功能。下面将详细阐述这些知识点。 1. 进制转换: 在编程中,我们经常会遇到不同进制之间的转换。...
《程序员教程》是一本针对初学者和有一定经验的程序员精心编写的教材,旨在全面介绍编程基础知识和实践技能。这本书以PDF格式提供,便于电子阅读和随时查阅。它涵盖了程序员需要掌握的各种关键知识点,无论你是刚踏...
这些英语单词和短语是编程语言的基础,掌握它们对提高编程效率和理解新技术非常重要。 1. 数组相关英语单词 * array 数组 * add 增加 * accessible 可存取的 * area 面积 * audio 音频 * addition 加法 * action ...
9. IT行业的相关知识:尽管从程序员转型为项目经理不需要直接编写代码,但仍然需要对当前IT行业技术趋势有基本了解,以便更好地理解技术团队的工作,并能和客户及干系人进行有效对话。 10. 适应性与学习能力:项目...
"从程序员视角理解计算机系统" 计算机系统是由硬件和软件组成的,它们共同工作来运行应用程序完成特定的业务功能。从程序员视角理解计算机系统,需要了解计算机系统中信息的表示方式、C语言程序的编译过程、处理器...