① 程序员的4种境界,你能修炼到几级
对于软件开发人员来说,通常,他们职业发展有几个选择:专注于技术,成为技术专家;转型到技术型销售、技术支持等;所以要想走得远一点,必须有一项本领是过人的。 随着技术成长,从技术性管理到高级管理。这是大家都看得清楚的方向,也都在向这些方向的金字塔尖努力。但是无论那个方向都要学会多读书。
程序员要根据本身的基本素质、技术能力选择开发层次,由低到高,逐步发展。 也是一名程序员本身具备相应素质的循序渐进的发展轨迹,包括很强的技术背景和综合管理才能等素养,这也就是所谓‘两条腿走路’的职业规划发展路线。”如果这样的话,我相信你总有一天能达到自己的理想标准。
希望可以帮到你,谢谢!
② 程序员是否需要学习底层知识
这两天每天中午午休前都会看一些《编程人生》。现在已经看了七八个人,这些人开始编程的时候,正好是计算机的起步期,所以对整个计算机的底层都比较了解。不知道这是不是这些人能够成为大师的一个必要条件,自己有没有必要在这方面努力一下。我想这也是很多程序员思考过的问题。现在分享一下我的思考,和大家一起探讨。ps:这些人大部分在中学的时候就开始编程,而那个时候我们一般都正在为考试闷头学习,这个差距要我们现在来弥补。 好的,首先有必要 澄清一下底层知识的概念 一般情况下,我们可能会认为底层知识就是操作系统,编译器,寄存器等等相关知识。我认为这个问题是相对的,而不是绝对的。这取决于程序员从事那个层次的开发工作。如果是一个c语言开发者,把这些知识归为底层知识也许很合理,但是对一个java或者更高级语言的开发者来说,有些不准确,或者不可以称为直接的底层知识。 我认为,所谓的底层知识,是指他编程或开发所依赖的平台(或者框架,工具)的知识。比如,对于java开发者来说,java虚拟机,以及它所用的框架等知识就是他的底层知识,而更底层的知识,姑且叫它间接的底层知识吧。 不学习底层知识可能不会阻碍你称为一个称职的程序员,但也许会阻碍你成为一个优秀的程序员。 了解底层的知识有助于解决问题,并且做出更好的设计。打个比方,就像庖丁解牛,他看到一个牛后,不止看到的是牛,而是由各个骨骼,经络,肌肉等模块组成的有机体整个系统对你来说就是赤裸裸的,没有任何神秘的面纱。这样也许能够给程序员提供更多的安全感。 但是如果你编程所依赖的平台需要你去了解更底层的知识才能够解决问题,那么,他可能没有做好他应尽的职责。 《编程人生》中有一个人提到过,要敢于去打开盒子 现在开发有个特点,就是分工越来越明确,而且整个编程的知识体系结构也越来越庞大,我们面前的盒子很多,我们没有精力去把每个盒子都打开。学习底层知识就要从你最直接的底层开始学起。一方面,你在工作中会遇到类似的问题,有了需求,学习效率就会高很多;另一方面,你也有这方面的基础,学起了可能更加的水到渠成。 当你把你的底层知识征服了,你就有资本(基础,能力)去征服更底层的知识了。 不学习最底层的知识是否会阻碍成为大师?思考中。 发现我对学习本身的投入超过了对学习内容的投入。不知道是好事还是坏事。总之,要专心学习技术了。
③ 如何成为真正专业的程序员
这是我前不久回答另一个人提问时写的,希望对你有用:
要做真正的程序员,从C起步绝对是正途之一...以后可以学C++,java,C#等这些面向对象的语言...但还是强烈建议在底层把基础扎牢,不要一开始就去弄什么java,C#,.net之类的东西...
给你一个路线图:
第一个阶段:入门
C语言 计算机系统基本组成以及原理方面的知识,了解操作系统基本知识
第二个阶段:基础
数据结构与算法方面的知识(基础的至少要懂),可以选择一个面向对象的语言学习,比如C++,java等,
汇编语言
学习数据库方面的知识
学习网络编程方面的知识
第三个阶段:进阶
学习操作系统原理。
深入了解Windows,linux等常见流行操作系统的相关知识。操作系统知识非常重要。
基于C,汇编,深入一下系统内核,了解一些反汇编,编译原理,硬件系统构造的知识。建立起对计算机系统的一个非常具体的认识。
基于C,C++,java等进行项目实践.了解软件架构方面的知识...
了解Web方面的知识.
了解一下软件架构平台:.net,j2ee等...系统学习一下相关知识.
第四阶段:高手
大力提高自己的算法设计与分析的能力,实际上这个能力从一开始你就应该非常重视。。。缺少了算法分析和设计的能力,一个程序员只是一个工匠而已,当然,工匠也有层次之分。
大力拓展自己的知识面,一方面要深入系统底层,一方面要对网络和数据库方面的知识有深入的了解。
除此之外,
你自己去想了,以上每一点都是独立的方面,还有很多没有提到。
当然,要做程序员,最好还是上上大学,因为广见博闻很重要。不过自学成材也是可能的,但学习阶段一定不要把自己局限于一个人的空间,否则个人提升速度会非常地慢。要想成功,没有超乎一般的毅力和恒心是不可能.... 不论以哪种方式。。。
④ 一个标准的程序员,它的代码应该是怎样分层次的
每个代码的层次都是不一样的,都是非常缜密的,除此之外,不光是要会写代码,还要成为一个好的程序员才是最重要的。
程序员,随着计算机和软件行业的发展,基数越来越大。如何在茫茫的程序员中脱颖而出呢,来看看作为一个好的程序员的标准你都占了几条?
1.经常和其他的人交流
什么时间做什么事情,做事情按照一定步骤来,好的程序员从来不会在时间紧任务多的时候手忙脚乱。
7. 保持谦虚
技术永无止境,技术范围很广,技术水很深。即使在一个领域是专家,到了其他领域还是需要其他人的指点。好的程序员总是把姿态放低,虚心请教。
⑤ 程序员入行门槛真的那么低吗
程序员入行难易度分析:
程序员门槛
①从业不需要执照或资格证书,能写代码即可入行
②学习渠道丰富,可以通过课堂、网络、书籍、培训等获取相关行业技术知识。
③需求量大,校招抢学生的时候,不会写代码都能招进去。
入行门槛是不高,发展门槛就不低了。
①行业在高速发展之中,造就了无数的岗位,岗位一多没经过系统培训的人就这么入行了。如果工作过一段时间,你就会发现那些程序员会“差那么一点点东西”。
②现在的码农队伍起码缩水90%。就互联网来说,到处充斥着 一群 “HTML文本构造人员”。仅此而已。
③程序员这个概念太大了,会 html/css 的人、会写 linux 内核的人,都是“程序员”,前者门槛有多高?后者门槛又有多高?
④程序员这个行业,能力层次太多。而恰恰社会也需要各个层次的程序员。
⑤再比如同样会写 html/css 的人,能写出优雅的兼容的 css 和不兼容的 css 又是不同层次,而且层次相差也不小。
入行门槛不高,多掌握技术才是发展硬道理
这行竞争很激烈工作强度大,入行也只是万里长征的开始而已。一个行业,都有他的付出。不断的学习才是程序员的归宿。
⑥ 程序员不同级别的定位
哦,看来落后了,早都改了,分别叫程序员,软件设计师,后面一个忘记了,好象是分析员什么的了..。..
分别用来衡量你对软件设计的一种能力了....
如果可以对立开发软件的话,就基本上达到了程序员的级别,也就是以前的初级程序员了。..
而软件设计师呢,它主要是对软件开发的一种总体规划了...建议你多看看软件工程.如果你仔细看完软件工程,应该可以达到这个级别了..
而到最高境界的话,就必须能够对软件的设计提出详细的模块化的分割.
然后分割后交给程序员去完成的了....
所以我说你应该是基本上达到了程序员的级别了。.
⑦ 一个程序员要具备的基本素质是什么
团队精神和协作能力 :
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。
文档习惯:
作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
规范化,标准化的代码编写习惯:
作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
需求理解能力:
作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
复用性,模块化思维能力:
复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作。
测试习惯:
软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
学习和总结的能力:
善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。但是学习也要找对目标,一些小coding fans们,他们也津津乐道于他们的学习能力,一会学会了asp,一会儿学会了php,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目的追逐一些肤浅的,表面的东西和名词,做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理,这样的技术人员,不管掌握了多少所谓的新语言,永远不会有质的提高。
⑧ 普通的程序员和大神级的程序员有什么区别
⑨ 计算机系统按程序设计语言划分为哪几个层次
计算机系统按程序设计语言划分为微程序级、一般机器级、操作系统级、汇编语言级、高级语言级这几个层次。计算机系统是一个由硬件、软件组成的多级层次结构,每一级上都能创造程序设计,且得到下级的支持。
第一级是微程序设计级。这是一个硬件级,它由机器硬件直接执行微指令。第二级是一般机器级,也称为机器语言级。它由微程序解释机器指令系统。这一级是硬件级。第三级是操作系统级,它由操作系统程序实现。这些操作系统由机器指令和广义指令组成,这些广义指令是操作系统定义和解释的软件指令。这一级也称混合级。第四级是汇编语言级。它给程序人员提供一种符号形式的语言,以减少程序编写的复杂性。这一级由汇编程序支持执行。第五级是高级语言级。这是面向用户为编写应用程序而设置的。这一级由各种高级语言编译程序支持。
第一级到第三级编写程序所采用的语言,基本是二进制数字化语言,机器容易执行和解释。在第四、五两级编写程序所采用的是符号语言,用英文字母和符号来表示程序,因而便于大多数不了解硬件的人们使用计算机。
(9)程序员的是个层次扩展阅读:
计算机层次之间的关系紧密,上层是下层功能的扩展,下层是上层的基础,这是层次结构的一个特点。层次结构的另一个特点是,站在不同的层次观察计算机系统,会得到不同的概念。例如,程序员在第四层看到的计算机是高级语言机器:系统操作员将第三层看作一个系统级的资源;而硬件设计人员在第一、二级看到的是计算机的电子线路。
层次划分不是绝对的。机器指令系统级与操作系统级的界面,又称硬、软件交界面,常常是分不清的,它随着软件硬化和硬件软化而动态变化。操作系统和其他系统软件的界面,也不是很清楚的,例如,数据库软件也部分地起到了操作系统的作用。此外,某些常用的带有应用性质的程序,既可以划归为应用程序层,也可以划归为系统软件层。
⑩ 初级程序员和中级高级的区别
不用,可以直接考,至于有什么区别
三言两语很难讲清楚,这不仅仅是一个水品高低的问题
下面这段话希望对你有启发
-------------------------------------------------------------
一般对于一个问题,初级程序员和高级程序员考虑这个问题的方法绝对是不同的。比如,在初级程序员阶段时,他会觉得VB也能做出应用来,且看起来也不错。
但到了中级程序员时,他可能就不会选择VB了,可能会用MFC,这时,也能做出效果不错的程序。
到高级程序员时,他绝对不是首先选择以上工具,VB也好,VC也好,这些都不是他考虑的问题。这时考虑的绝对是什么才是具有最快效率、最稳定性能的解决问题的方法。
软件和别的产品不同。比如,在软件中要达到某个目标,有n种方法,但是在n种方法中,只有一种方法或两种方法是最好的,其他的都很次。所以,要做一个好的系统,是很需要耐心的。如果没有耐心,就不会有细活,有细活的东西才是好东西。我觉得做软件是这样,做任何事情也是这样的,一定要投入。
程序员到达最高境界的时候,想的就是“我就是程序,程序就是我”。这时候我要做一个软件,不会有自己主观的思路,而是以机器的思路来考虑问题,也就是说,就是以程序的思考方式来思考程序,而不是以我去设计程序的方式去思考程序。这一点如果不到比较高的层次是不能明白的。
你设计程序不就是你思考问题,然后按自己的思路去做程序吗?
其实不是的。在我设计这个程序的时候,相当于我“钻”入这个程序里面去了。这时候没有我自己的任何思维,我的所有思维都是这个程序,它这步该怎么走,下步该怎么走,它可能会出现什么情况。我动这个部分的时候,别的部分是否要干扰,也许会动一发而牵全身,它们之间是怎么相互影响的?
也只有到达这个境界,你的程序才能真正地写好,绝对不是做个什么可视化。可视化本身就是“我去设计这个程序”,而真正的程序高手是“我就是程序”,这两种方法绝对是不同的。比如,我要用VB去设计一个程序,和我本身就是一个程序的思维方式,是不一样的。别人也许觉得操作系统很深奥,很复杂,其实,如果你到达高手状态,你就是操作系统,你就能做任何程序。
对待软件要有一个全面的分析方法,光说理论是没有用的。如果你没有经过第一、第二、第三、第四这四个阶段,则永远到达不了高境界。因为空中楼阁的理论没有用,而这些必须是一步一步地去做出来。
一个高级程序员应该具备开放性思维,从里到外的所有的知识都能了解。然后,看到世界最新技术就能马上掌握,马上了解。实际上,技术到达最高的境界后,是没有分别的。任何东西都是相通的,只要你到达这个境界以后,什么问题一看就能明白,一看就能抓住最核心的问题,最根本的根本,而不会被其他的枝叶或表象所迷惑,做到这一步后才算比较成功。
从程序员本身来说,如果它到达这一步以后,他就已经形成了开阔的思维。他有这种开放性思维的话,他就能做战略决策,这对他将来做任何事情都有好处。事实上,会做程序后,就会有一种分析问题的方法,学会怎么样把问题的表象剖开,看到它的本质。这时你碰到任何具体的问题,只要给点时间,都能轻而易举地解决。实际上,对开发计算机软件来说,没有什么做不了的软件,所有的软件都能做,只是看你有没有时间,有没有耐心,有没有资金做支撑。
这几年,尤其是这两三年,估计到2005年前,中国软件这个行业里面大的软件公司就能形成。现在就已经在形成,例如用友,它上市后,地位就更加稳固了。其他大的软件企业会在这几年内迅速长大。这时候,包括流通渠道、经销商的渠道也会迅速长大。也就是说,到2005年以后,中国软件这个行业的门槛比现在还要高很多,与美国不会有太大的差别。此时,中国软件才真正体现出它的威力来。如果你是这些威力中的一员,就已经很厉害了。
别人可能知道比尔·盖茨是个谈判的高手,是卖东西的高手,其实,比尔·盖茨从根本上来说是个程序高手,这是他根本中的根本。他对所有的技术都非常敏感,一眼就看到本质,而且他本身也能做程序,时常在看程序。现在他不做董事长,而做首席设计师,这时他就更加接近程序的本质。因为他本身就有很开阔的思维,又深入到技术的本身,所以他就知道技术的方向。这对于一个公司,对他这样的人来说,是非常重要的。
如果他判断错误一步,那公司以后再回头就很难了。计算机的竞争是非常激烈的,不能走错半步。很多公司以前看上去很火,后来就
销声匿迹了,就是因为它走错一步,然后就不行了。为什么它会走错?因为他不了解技术的本质在哪里,技术的发展方向在哪里。
比尔·盖茨因为父母是学法律的,所以他本身就很能“侃”,很有说服力,而他又是做技术的,就非常清楚技术的方向在哪里,所以他才能把方向把握得很准确,公司越来越大。而别的公司只火一阵子,他却火了还会再火。就算微软再庞大,你如果不把握好软件技术的最前沿,一样也会玩完。就像Intel时刻把握着CPU的最新技术,才能保证自己是行业老大。技术决定它的将来。
所以,程序员要能达到这样的目标,就要有非常强的耐心和非常好的机遇才有可能。事实上,现在的机会挺好的,2005年以前机会都非常大,以后机会会比较小。但是,如果有耐心的话,你还是会有机会的,机会都是出在耐心里。我记得有句话说“雄心的一半是耐心”,我认为雄心的三分之二都是耐心。如果你越有野心,你就越要有耐心,你的野心才有可能实现。如果你有野心而没有耐心,那都是胡思乱想,别人一眼就能看穿。最后在竞争中,对手一眼就看到你的意图,那你还有什么可竞争的?