职业规划是对职业生涯乃至人生计划的过程,职业生涯规划的好坏可能将影响整个生命历程。感谢您阅读《IT人如何修炼编程的内功[1]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。

很多年以前,我还是一个学建筑的学生,但是很喜欢学计算机。不过呢,由于专业限制,我没有计算机用的。学校只开了一个学期的Fortran语言,上机时间只有可怜的5节课,那会把我憋坏了,呵呵。

大家不要笑啊,90年那会,生活不富裕,PC机还是一个很贵的东东,一般家庭都还停留在18吋电视机的时代,大学生又是最穷的,物质条件更为匮乏,我当时有个小收录机,京华牌的,呵呵,在同学中已经很牛叉了。因此,像现在的同学们,一考上大学,MP3、MP4、笔记本电脑家里给配齐的,在当时是根本不可能想象的事情。我作为过来人,还是要说大家一句,大家真是生在好时代了,很幸福的。

不过呢,我很喜欢编程,就养成一个习惯,想象编程,找一个题目,自己在脑子里把程序构思出来,写在纸上,然后自己模拟电脑的run,把程序过一遍,看能不能执行正确。这个习惯现在都还有。呵呵,我老是劝大家写简单的程序,其实和这个习惯有很大关系,因为我比较笨,稍微复杂的程序,脑子就想不过来了,就晕了。

也正因为有了这个经历,我就开始思考一个问题,编程究竟是什么?呵呵,当时我在学校,也是小有名气,大家都知道有这么个程序疯子,没事喜欢发呆,喜欢想程序。在一次舞会上(别激动,我也是过来人,也会跳舞的,虽然很难看哈,呵呵),一个计算机专业的师姐就考我,问我编程是什么?

我当时想了一下,很郑重地回答她,我的理解,编程就是拆解任务,把一个任务,拆解成很细很细的步骤,一步步教计算机去做。计算机很笨的,举个例子,我们说早上起来去上课,是个人都知道做什么,但是它不知道,因此,我们要告诉它:

起床--穿衣--拿饭盒--去食堂--买早饭--吃饭--洗饭盒--回宿舍--放饭盒--拿书--出门--如果人都走完,要记得锁门--去教室--推门--找到自己的座位--走过去--坐下来--等待上课--上课。

说到这里,我突然自己有点明悟了,编程,就是把复杂的问题简单化,简化到每个动作都是1+1=2那么简单,然后计算机照做就好了。这就是我理解编程的真谛。我师姐听到了,也若有所悟,这个话题就没有再说了。

我们来分析一下计算机的特点,准确的讲,目前我们这个社会的计算技术,还很原始,说它是计算机,正确,它确实只能计算,说它是电脑,太抬举它了,它不可能有思考能力。

在冯诺依曼体系架构中,计算设备就是具有一定计算能力,有能力和外界做出IO互动,并且能高速重复动作的这么一种设备,这可能和大家在教科书里面学到的不太一样啊,不过,我是这么理解的。

因此,我从一开始,就没有把计算机作为一个伙伴,一个可以帮助我出主意,或者代替我思考的伙伴,仅仅是看做一种工具,这种工具有什么用呢?我认为它最重要的,有两个作用:

1、无限可重复性,一个动作序列,一旦编订程序,计算机就可以无数次重复这个序列,不会感到累。这特别适合于那些乏味的,不断重复的劳动,比如,我们一个学校每天要敲钟,打上课铃,如果让人来做,这个人会很乏味,做久了,就可能出错,但是让计算机来做,它可没有什么思想,不会觉得累,而且做的很好。计算机特别适合做重复性工作。

2、服务品质的稳定性。计算机适合做重复工作,还有个有点,就是每次执行结果都是一样的。这体现了工业化时代最重要的一个思想:量产思维,大家可以看到,现在的社会,不可重复的艺术固然很好,但公众需要的是量产的产品,因为质量稳定,产量稳定,能满足大众需求。劳斯莱斯虽然很美,但绝大多数人在开大众、丰田等低端车。就是这个道理。还是打铃那个例子,如果是人,可能会生病,可能会请假,或者干脆搞忘了,但计算机不会,只要有电在正确工作,打铃就不会出错。

这样,我就慢慢理解到了,计算机其实就是能以恒定品质不断重复输出服务的机器而已。

延伸阅读

IT人如何修炼编程的内功[3]


我想说的,其实很简单,编程序,就是拆解问题,但讲究个拆解的技巧和方法,以前人做过的,别做,尽量用,没有的,做过一次,尽量保留下来,供下次使用,就这么简单。

那,这和本文的题目修炼编程的内功有啥关系呢?

当然有关系了,什么叫编程的内功?我的理解,就是对这个世界的抽象化理解能力以及描述能力。一个工作,能迅速从中提炼出下次可以重复的套路,并且能以一定的规则,就是计算机语言规范,描述出来,拥有这两个能力,就能保证遇到任何问题,都有办法写出程序来。

所以,大家学校中学了很多数学,语言,算法,数据结构,甚至编译原理,操作系统,其实这些统统是工具,不是写程序的目的。

写程序,就是遇到需求,能迅速抽象,理解其共性,并能以清晰的语言描述出来。上述学科,不是帮助提升你的抽象能力,就是帮助提升你的描述能力,大家看是不是这个道理?

所以,我在带徒弟的时候,有时候喜欢说一句话,其实作为程序员,学习一点语文有好处,因为最能培养描述能力的,其实还是语文。英语不算啊,英语虽然也是一门语言,但中国的教育,一般是能看懂,很少从一个英文文学家的角度培养学生用英文的描述能力。只有我们的语文课,这不但是教语言,而且通过无数次造句和作文,在教大家描述问题的组织能力,这个能力在写程序的时候,很有用。

这个时候,话题就出来了。中国的语文,先是甲骨文,然后古文,然后白话文,大家发现没有,总体是越来越简单,这是发展的趋势。为什么呢?因为大家觉得,语文就是让人懂的,太深奥的东东,不太适合普及,就没有生命力,反而越简单的东东,普及越快。

因此,请大家注意,写程序时拆解,是把问题简单化,不是说把一个问题描述得晦涩难懂,才叫本事。真正的程序高手,都是简化问题的大师。

当然,从这个话题,我们是不是可以得出一个结论,其实写程序的方法本身,编程的内功本身,其实是没有什么语言特性的,C、C++、Java、PHP、Python是不是都用的同一种方法在做事情?

因此,我这里提出,修炼编程的内功,是学习抽象能力和描述能力,与语言无关,换而言之,从任何一门语言入门,都可以修炼到内功的极致,关键看你用不用心。

因此,学习期间,我的建议,不要好高骛远,不要去评价语言的好坏,平台的好坏,没有多大意义的,你并不能确定这辈子最终能在哪个平台下用哪种语言开发。捡着手边有的书,老师教的课程,埋进去学扎实,出来后,换语言比吃盘菜也难不倒哪去。

修炼程序员职场内功心法[1]


职业规划是对职业生涯乃至人生计划的过程,职业生涯规划的好坏可能将影响整个生命历程。感谢您阅读《修炼程序员职场内功心法[1]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。

程序设计在任何时间点都是一个起点,而没有终点的一条路。

写程序,是用计算机来解决某些特定的问题,而程序设计的理论与方法,则是为了解决写程序的人的问题。就像管理一样,我们必须要订定管理的准则与规范,让业务的运作得以流畅,达成预期的目标。管理的理论则是帮助我们制定规范,并避免掉可能发生的问题,与带来实质的效益。(当然多少有些理想化)理论建构的再完整,但执行的还是人,实施的对象,也是人.人的特质,就是我们不得不考虑与正视的因素了。

当然,这是管理的议题。而管理所需花费的最小成本,就是自我管理,也是最有效的管理,我们管理好自己的工作态度,管理好时间的分配,管理好自己负责的范围,在既定原则与方向指引下,朝一致性的目标前进。

除了专业知识与专业技能是我们职场上必须具备的之外,常常被忽略的两件事情,就是专业的服务与信任度.

信任度往往是最后您能不能把事情做好的关键要素。客户或老板对你不信任,那么他对于你做出的成果也不会抱以高度的期望,就不会给你充分的支持,以及帮你排除可能遇到的障碍与问题。而专业的服务则是帮助您取得信任的好方法。服务的对象,从客户、老板到公司的同事、Team 里面的同仁端看您的工作性质而定,最主要的是心态.

您有没有把事情做好的决心?您有没有让客户百分之百满意的企图心?除了把事情做完之外,您还可以再多提供些什么?什么是您还没有想到的?如果你是客户,你会有什么样的期待?在什么情况底下,您才会觉得满意?(想一下您自身使用过的产品的经验)

举个之前看过的一个买螃蟹的例子。老板交付的同样一件事情,两个同事,一个把老板交代的事情做完把螃蟹买回来了,一个做到了市场调查、分析,提供给老板建议,让老板做决策,这相较之下就很明显了。(管理的案例,并不是要你真的照着做,而是在于你能不能从中得到的启发)

在职场上,做到 100 分,只是基本要件(就像考试考 100 分,那只是代表你学习的基本功夫,没有 100 分表示你学习的不透澈,还有努力的空间),更要思考的是如何超越 100 分。衡量自身的能力,不足的地方,想办法补足。(当然这也是我自己必须努力的目标)

在工作上,我们也常常会对一些事情发牢骚,或对同事的某些行为或态度不满。但是,在发牢骚或批判之余之余,是否曾认真想过,为什么人家可以只出一张嘴落得轻松?为什么人家总是得到老板的称赞而你总是老板口中的笨蛋?为什么升等加薪的人永远不是我?

修炼程序员职场内功心法[2]


职业规划就是对职业生涯乃至人生进行持续的系统的计划的过程。一个完整的职业规划由职业定位、目标设定和通道设计三个要素构成。

而您有没有想过问题真正的原因?

对于动不动就因为与人相处的问题而换工作的朋友,我认为很不值得(当然纯就工作性质而言,其他如感情、隐私等不在话下).因为A公司的甲君,也不过就是换成B公司的乙君罢了,没有认清楚自己心中的魔,到哪里,它,都会跟着你。

人家会排挤你,打压你,那是因为你对他造成威胁(或觉得你会对他造成威胁).这是很现实的,因为位置就只有这么几个,一个萝卜一个坑,想要到这个坑,势必要把占住坑的萝卜拔掉,而谁又想被拔掉呢?这就是竞争。但是我不喜欢竞争这两个字,我想提的是竞合.竞争是一种零和游戏,非生即死,弱肉强食。竞合是除了竞争的必要性之外(或说竞赛,不保持高度竞争力,还是会被淘汰),还需要合作;藉由合作的力量,让大家同步的提升。(你觉得你的主管阻碍你的升迁?想办法让你的主管 Promote 上去,你去接替他留下来的位置,这也是一种方法。当然,现实层面还是有很多需考虑的)

能够做一份自己心中理想的工作,说真的,是运气。能够在一份理想的工作待下来,除了运气,更重要的是努力与实力。方向掌握住,目标清楚,就按照您的步伐前进,职场上的形形色色,恩恩怨怨,都不过是人生中的点缀。主管跟您一样也是个人(当然很多人会不同意或者有很多主管不是XD),不用对他有太多的期许,因为他也是完成指令的人,只不过跟你接收指令的来源不同而已。主管的好与坏,都有我们可以学习的地方;好的见贤思齐,坏的当做借镜,时时警惕,期许自己将来会做的跟他不一样。

放下抱怨,虚心学习,将那些时间,拿来充实自己,准备好了,机会自然来临。不多说了,说多了难免老生常谈,最终是希望大家都能走出属于自己的一条大路。

编程语言有高低之分吗[1]


高低之分在这个社会很普遍。大到什么主义,什么社会制度制度,小到单位个人,方方面面不比出个高低好像不过瘾似的。这真是一个比高低的国度。记得在很久很久以前就被教导过程序语言分之为低级语言和高级语言。高低这两个词比较单纯容易记忆,而且从小就被灌输要高不要低的价值观。因此,那时候自己就有要学高级语言,不学低级语言的简单朴素的想法,仿佛学习高级语言自己就会高级起来一样。

没想到今天这个话题依旧。无论新手还是老程序员中都有许多人都在问 什么语言是最好的?什么语言是最高级的?,言下之意就是要学习最好的语言,掌握了最好的语言自己就是最好的了。我看到有人这样说:地球人都知道要选择C#,java.你能说说为什么吗?也看到了有人对自己原先选择VFP感到后悔,因为他感到VFP语言已经被淘汰了,同时他对自己没有选择C语言感到后悔,因为他认为使用C语言才能看出程序员的水平。

归纳起来有以下:

1) 什么语言是最好的?
2) 我现在掌握的语言是否已经或将要被淘汰,我今后要学习什么样的语言?
3) C语言是真正的高级语言

这些问题就其本质上来说,他们都给程序设计语言定下高低之分,并且他们想知道谁高谁低。

那么程序设计语言是否有高低之分呢?根据我长期编程经历和经验,我认为:

1) 程序设计语言本质上没有高低之分

所谓程序设计语言是指让计算机能够听懂、并能指令计算机进行操作的语言。每种语言的产生都有一定功能范畴,也就是说这个语言是为了解决什么问题而产生的。不同的问题就可能用不同的语言来解决。不同的问题是很难用高低来区分的。例如,基于计算机底层的操作(汇编语言、C语言)与计算机应用层上的操作(C#、Java),哪个是高级的,哪个是低级的是很难说清楚的。又例如,基于单机程序的VFP和基于网络的ASP、C#也是很难说清楚的(虽然VFP也可以用于网络编程、ASP、C#也可以用于单机编程).他们的侧重点是不同的,而这个侧重点正是这个语言的别于其他语言的特点。

因此,没有任何一种语言是最好的,哪怕是暂时的。

C语言的确是一个高级语言,也能反映出程序员的技术水平,但是C语言有它的适用范围。我们不能以自己不懂的语言,或使用人数少得语言,或其稀缺就感到其高级。

计算机编程新人入行指导[1]


从2003年加入现在的公司,已经有了快6个年头,自己也从一个计算机软件开发方面的新兵变成了老人。在公司里也做过几个不同的项目,有一些新的同事加入项目组,会有这样那样的疑惑和问题。在这里想简单说说,一个新人如何能快速的融入一个新的开发组,让其他同事能够接受自己。

首先是读文档。计算机方面有个著名的黑话叫做RTFM,什么意思呢?按字面翻译就去去读他妈的文档,这是在新闻组或者论坛里可能常见的回复,一些人娇滴滴的说我是妹妹,能指导一下这个问题么或者贱兮兮的跪求某某问题答案.当然,同事之间不可能搞这些,不过也经常碰到有人问一些感觉非常简单问题,这些问题实际上都在项目文档或者软件规范里就明白写着。

一个新人加入某个项目,或者转换到一个新项目,都会感觉到手足无措,就像老虎吃刺猬不知如何下嘴。领导不会让这样的新人去完成一些复杂模块的开发或者修改一些相对困难的bug,基本上都是先分一些界面上的小改动,或者是让他开发耦合程度低一些、相对独立一些的功能作为练手,这个时候作为一个新人就要尽快的掌握整个项目的大概,然后泛读一下项目的重要文档。如果要开发某个业内标准的实现软件,那这个标准的相关文档至少要通读一遍,不需要投入很长时间,可以快速掌握一下大概,做做简单的笔记,不懂的地方先记下来以后有空再说。读文档不要作为一个整体任务完成,可以用一些零碎时间来读,以免很长时间没有什么进展,领导看了还以为在磨洋工呢。

注意事项一,尽管有这样那样的软件支持,一支笔一个本子仍然是最方便最快速最实用的学习工具,我几乎每年都要写掉八九个大笔记本,里面写着项目开发的心得、文档书籍的感受、领导指示的一些开发问题等等,不需要有什么文章格式,先写下来就可以了。

如果是第一次进入公司,项目组长会分一个任务作为对新人水平的考察,就好比网游中的新手任务。我们公司大多数的新手任务都是半个月一个月左右的时间,注意要尽量赶在期限结束前完成所有的编码和单元测试,而且最好完成代码清理和代码注释工作,注意命名规则,这样看起来比较专业一些。

注意事项二,接到一个项目第一个要问的就是这个项目结束期限(dead line)是什么,这样心里比较容易对进度有个估计,免得最后无法完成任务。领导可能会反过来咨询老程序员对分到的项目难度估计。一般来说,估计一个大概的编码时间,然后把估计时间乘二,留出一定余量比较好。

读文档不要作为一个整体任务完成,可以用一些零碎时间来读。实际上接手一个新任务,必须要做的就是理解需求。一个开发人员如何不理解他想做什么,基本上这个任务一定会失败。我们高考时候都会写一篇大作文,对题目的理解非常重要,偏题跑题就没法拿到高分,开发也是如此。对需求的理解需要反复的进行,定期和项目组领导或者客户进行沟通,以免自己做了无用功。但是沟通之前一定要注意,自己先掌握一定的背景知识,比如前面提到的规范文档,或者是读一读已经有的代码,跑一跑成型的产品,免得问的都是不必要的问题。

搜索一下可以找到一篇题为提问的智慧的文章,里面介绍如何在网上问问题。其实项目组内沟通也是如此,要注意问有意义的问题。打个比方说,有时候自己会有一种感觉,跑到别人面前,把问题说了一遍,还没等人回答,突然拍着脑袋说啊我明白了,也许是反应挺快,可是还是耽误了别人的功夫,像这样的问题,自己组织组织语言或者写出来,答案就很容易发现。另外也有的人,总是这是怎么回事那是怎么回事,其实到搜索引擎一搜或者是把动手做做就知道结果,但是非要张嘴问,这样的人说得难听点就是问题不经过大脑,其实一思考就能得到答案了。问问题之前也可以试着理清一下思路,看看前因后果,简化一下问题模型,也许经过这些方式,自己就能找到答案。有同组的同事问问题,很多时间我反问几句,把思路理清,他自己就知道答案是什么了。忘记在哪有看到一个轶事,在某个著名软件公司里,开发组的桌上会放着一只小熊,大家互相问问题之前,先对着小熊把问题说一遍,看能不能把问题描述的清晰,基本上说的比较有条理以后,答案也就随之而来了,大家可以试试这个办法。

“追梦人”必须修炼的降魔术


我一直有这样一个信念:求助于生涯咨询的人,一定是智慧而勇敢的。因为有智慧才能有对自我的思考,有勇气才会主动尝试和求助。保持着敬畏和欣赏,我和来询者们一起发现自己,寻找梦想。

然而,我发现,很多人并不缺梦想,而是在追求梦想的路上体验着各种无力和纠结,从而怀疑、打转、退缩。伴随着这些似乎有点虐心的经历,有人逐渐成长,有人半路夭折。有没想过,经历本身就是梦想的一部分,我们需要战胜追梦路上的种种心魔?

阻碍梦想实现的诸多心魔中,有三类是最常见的,借着大量咨询中炼就的火眼金睛,我们一起来看看追梦人如何降魔。

第一类心魔,完美模式,这是让人不敢行动的心魔。很多人把完美作为自己的庇护所,甚至拉过来给自己的纠结做垫背。在我看来,“完美”这个词就是一个障眼法,让产生了梦想的人快速地在不完美的现实中预见到了自己的失败,从而放弃行动。完美一点都不美,完美是一种幻觉:一切都是设定好的路径,这样的路径可以适合每个人的体力要求,每前进一步都会有积极的反馈,经历是在喜大普奔的过程中完成的。现实呢?基本不可能是这样,于是判断就来了:我的体力不够好,需要继续准备;我选的路径不够好,需要继续探索。看似积极的背后,其实是一种胆怯,不敢上路的胆怯把人禁锢在原地,而且带上“完美”的桂冠,像陀螺似地打转。于是,完美模式变成了一种诅咒,一种对失败的预见。

有个来询者一直想做培训师,但是总也不开始基本的职业调查,他的理由似乎理直气壮:我听说培训师都是从高管出来的,我听说培训师都是很有职场经验的,我听说培训师都需要在某个领域做到精深的,我听说……总之,听说的,与自己相去甚远。于是,就准备啊,参加各种学习、各种考试,时隔多日,发现他自己的状态不仅没有改观,反倒越来越怀疑自己的想法了。

有人会说,或许真的是不适合啊。我们都知道小马过河的故事,或许是真的不适合,但是,至少要开始问问周围的人,要试着把腿伸进河里探探深浅。

完美模式是可以克服的,秘诀就是打破幻觉,接纳自己的成长性。梦想一定是目前达不到,需要努力才可逐渐实现,但是完美的幻觉又假设出每次都会成功的反馈。于是,我们就接纳不了任何可能的“意料之外”。却没有想到,我们的现实和梦想之间的距离,正是依靠我们在一次次反馈中不断调整,然后积累资源,提升能力实现的。那一个个看似“失败”的反馈中,包含了我们追求梦想所需要的全部代码,却被一个“完美模式”全部忽略了,此心魔不除,无法开始行动。

调整方法很简单了:制定执行计划,然后行动,从行动结果中分析每次的反馈和成长点,继续下一轮行动。在这个过程中,没有失败,只有反馈。随着反馈的积累和调整,资源也在增长和变化,你就会获得更多的可能性。

第二类心魔是受挫模式,这是让自己否定自己的模式。很多人并不缺乏行动,有了梦想之后,立刻制定计划,但是在行动中却总是发现没有哪个计划是可以很好执行的。于是顺理成章地,心魔就出现了:否定自己行动力不强,验证自己是得了拖延症,得出一个“人命天定,求之不得”的结论。追求梦想的过程就成为了一种痛苦的经历了。你有没有想过,这样的挫败感是在一开始就给自己设定好的?

梦想很好,也带出了诸多的欲望,包括一蹴而就的贪欲。在雄心勃勃地上路之初,浑身都是力气,于是计划承担超出自己力量两倍的负重,结果做不来,反过来给了自己差评。这样的模式经常发生在一些追求平衡的人身上。比如一个企业管理者来找我做咨询的时候,我让他把所有希望兼顾、平衡的事情都列出来,他竟然把一页 A4纸都写满了,我再让他从其中选择重要的5项,然后给每项重要程度打分,这还不算很纠结。可是,当我让他回顾过去一个月在这五项的投入时,他一下就恍然大悟了:那些原以为很重要的事情根本没什么投入。

我们是不是也在沿袭着这样的模式:定计划时的重视程度是5-6分,执行时的投入是2-3分,评估结果时的重要程度是7-8分。于是就整天给自己挖坑,这样的模式,不受挫才怪。受挫还不罢休,再给自己扣上拖延、行动力差的帽子,我们对自己得有多狠啊?远远地,贪欲的心魔在看笑话。

看到即瓦解,一本书看了两个月还没有看完,先不要着急在内心责骂自己,先问问自己,看这本书对自己到底有多重要?每个人都有自己的能力限制,要事优先就是接纳这样的限制。当投入度和重要度匹配的时候,结果才会如人所愿。

第三类模式是比较模式,这是一种让人永不幸福的模式。摘果子的时候争先恐后地和别人比,拿到了果子依然和别人比大小,你有没有想过,人的高度有不同,喜欢的水果也有不同。我们对于比较模式一点都不陌生,以至于熟悉和麻木到根本没有发现我们在和别人比较,我们大部分的不愉快也是源于此。特别是在经过努力之后,梦想正在逐渐地实现,我们本可以满心欢喜地追随内心,逐渐升级梦想。但是,偏偏把眼光放在别人那里了,一下子就让梦想坠落了。这是扼杀梦想的最后一个心魔。

这样的事情总在发生,俯首即是。我们在培养生涯规划师的时候也发现,很多人因为助人和自我成长的愿景进入这个行业,开始的时候还很谦卑,努力探索,持续进步。慢慢地,有了些成绩的时候,反倒不快乐了,细聊起来,竟然是因为某些课的粉丝不如别人多,做的咨询满意度没有别人高。社会的发展秩序,人为地设定很多规则,其中重要的就是比较和排序,这样的比较,有显性的,比如晋级、职称,也有隐形的,比如赞誉、评价。把这些规则当做一种参考反馈的设置确是一件益事,但是如果被规则控制了,自我的追寻就失去了意义。

这样的事情在真的追梦者那里很难发生,因为追求梦想本身就已经足够让人兴奋的了,他们顾不得左顾右盼。除了经常反思之外,还可以在追求梦想的过程中,特别是拿到一些阶段成果的时候问问自己:我的收获是什么?我要去往哪里?这样的问题其实是假设每个人都不一样,要在独特中保持自我,就要看自己,而不是盯别人。

对于追梦人来说,这些心魔的出现,也是为了修炼我们的,所谓的梦想成绩单,只不过是标记我们在攀登过程中的痕迹。纠结、彷徨的时候,学学降魔术

每个人都有自己需要修炼的功课,你的是哪一门?

强中自有强中手 调试高手和编程高手[1]


第三部分,未来职业生涯规划、家庭环境分析、例如经济状况,家人期望等。感谢您阅读《强中自有强中手 调试高手和编程高手[1]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。

业界总是有高手之说,高手成了程序员心中之偶像,成了程序员成长之目标。但是,现实中人们往往对自己所了解的程序员,很难认同为高手;人们反而对那些自己不了解的,甚至是道听途说的人会认作为高手了。高手,同武林高手一样,神秘之至。

许多程序员都有这样的经历:无论自己编写什么很短很短的程序,一般是很难一次就能通过编译的;通过编译的其功能还不一定是正确的。我在很早就注意这样现象了,开始的时候,我还不信这个邪,还试着编写程序看看自己能否一次能否编译成功,为这个事还和别人打过赌呢!这当然是年轻时做过的事了。后来我渐渐明白了,编程出错是编程的一个重要的部分!出错是正常的,不出错才是不正常的。出错怎么办?当然是改错啦!不知道错在什么地方怎么办?当然是调试啦!调试于是和编程相依相伴了。程序员不但要会编写程序,还要会调试程序。

程序出错一般有:未定义、语法、运行出错三个方面。

1、 未定义

未定义往往是程序员的忽略定义或定义后名称与定义不一致造成的。

1) 要避免忽略定义这个问题,程序员首先要养成严谨工作的习惯:先定义,后使用。

2) 解决定义名字与使用名字不一致问题,程序员在对函数名、变量名、文件名、数据库名、表名、字段名定义的时候,不要信手拈来,象不花钱似的任意取名。一定要定下心来慢慢地斟酌,这个名字自己不但要能懂能记得,别人一看也要能懂能记得。程序员可以假设自己定义一个变量就要花出去100元钱,如果别人看不懂就要另外支付200元。有了这种名字的有偿使用,这样程序员就不可能乱取名了。长此以往,在使用这些名字的时候程序员就会有行云流水感觉,而且很少出错。

2、 语法问题

1) 新手编程走一步一个跟头,走两步两个跟头,主要是对语言的语法不熟悉,丢三拉四,关键字拚错等。这种情况不可怕,多看看语法说明,多改改程序就会对语法越来越熟悉了。

2) 老程序员语法问题出现较少。但是,很多情况下程序员在使用新语言编程序的时候,会采用老语言的语法,反之亦然,导致出错。例如,某人先使用C语言,后使用VFP.当用VFP编程的时候,往往习惯性地在语句后面加上;,这导致VFP语法出错。当熟悉VFP后,再编写C语言的时候,往往在语句后面忘记加上;,导致C语言语法出错。类似常见问题如:IF语句后面表达式是否要加()等,for 语句,while 语句,case语句在不同的语言的语法都有可能不同。另外,不同数据库中的SELECT 、INSERT、语法都有一些不同处,这些不同之处,往往让程序员不知所措,老是要停下来思考一下,现在用的是什么语言用的是什么语法。

3、 运行问题

定义、语法这些都是显式出错,相对好解决。但是运行中出现错误就五花八门了,我试着归纳一下:

1) 运行中程序突然中断了并退出了。

往往是内存出错!可查变量、指针是否越界,指针是否为空等、例外没有处理。

2) 环境问题

例如,数据库密码错导致数据库打开不了、要打开的文件不存在、参数定义错,参数表为空,参数表没有缺省值等。

3) 程序的输出的不是自己的预期结果

往往是程序逻辑和算法存在问题。

4) 程序不停地运行没有停止的迹象

查一下循环的条件表达式是否永真、导致死循环。

5) 程序无法退出

程序乱了,导致内存错,覆盖了退出指令!

6) 程序运行了很长时间才出现了错误

累计误差、数据原因造成的错误等。

出错是必然的,如何找出错误,有些人编写C语言的人只会用在可能出错的语言前后,通过显示语句print来判别出错的原因。他们不懂debug、sdb、dbx等调试工具,来调试程序,他们会编不会调。我们很难想象不会调试的程序员是如何编程的,调试对于程序员如此重要,以致于可导致出不会调试的程序员就不是程序员的结论。

修炼一名程序员的职业水准[1]


第三部分,未来职业生涯规划、家庭环境分析、例如经济状况,家人期望等。感谢您阅读《修炼一名程序员的职业水准[1]》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。

假设你是一名软件专业毕业的本科学子,如何在工作中修炼成为一名有较高职业水准的程序员呢,本文试图总结作者从事15年软件开发工作的感想,希望对有志成为职业程序员的人有所帮助,并借此机会感谢原昆明工学院计算机系的和智玲老师和张怀宁老师,特别感谢我的硕士导师,南京大学计算机系的博导郑国梁教授。

注:本文辞尖刻,乃作者脾气秉性使然,如果你看着有气,就请多多见谅,放下别看了。

程序就是一系列按步骤进行的操作序列,它有好多种级别,比如最低级的微程序、次低级的汇编程序、高级的各种编程语言程序、最高级的脚本语言程序,也许我列的不对,但没关系,我要说的是不管是那个级别的程序,其本质都是操作的逻辑序列。大多数系统和应用程序都是建立在高级编程语言上的,比如C、C++、C#、FORTRAN、BISIC、JAVA等等,就让我们只关注这一级的编程能力吧。因此如果一个程序员的逻辑能力不高,他永远都不能成为一名具有合格职业水准的程序员,我们在下面的讨论有关编程能力的方方面面,最终都是为了最大程度地提高和实现一名程序员的逻辑能力。

一、掌握基础知识:十六年寒窗的持续积累 从7岁读小学起,经过16年的学习,你从软件专业本科毕业后,必须完成以下几门专业课程的学习:计算机组成、操作系统原理、汇编语言、数据结构、编译原理、数据库原理、软件工程、结构性设计语言(PASCAL、C)、面向对象设计语言(C++、C#)、计算机网络等,你最好还懂一些算法分析、分布式系统、计算机图形学、形式逻辑、人工智能原理、软件设计模式、软件构架/框架等研究生的课程,16年来,你积累的除了知识,更重要的是形成最适合自己的学习方法和工作方法。这些是你具备程序员职业水准的基础能力,不要受什么计算机软件怪杰之类传奇的影响,那不过是小概率事件,而且这些怪杰们就算没有读过软件本科和研究生,也往往自学了大多数专业课程,很可能比在校学习的学生对这些课程的精髓部分理解的更好,还有他们的工作方法和思维方式是特别而高效的,但普遍性差,可以借鉴,不宜模仿。好,所以现在你只需要问问自己,那些课程和知识都学会并掌握了吗?如果是,那就准备好进行实践了。

二、在实践中提高:成为一名高水平的Coder好了,你毕业了,在校功课都不错,也找了一个专业对口的工作,你想大展鸿图了,可是别急,你的翅膀还不够硬,不信我们说来看看。 通常,你在工作中都会用到某一种单位/公司固定的操作系统和编程语言开发环境,比如Windows、UNIX、LINUX等操作系统,又比如用VC、VB、PB、Delph、JAVA、Motif/XWindow、QT、OpenGL、OpenInventor等编程语言和开发环境,我们在后面把它们合称为开发环境。就在校学习的有关开发环境的知识而言,大概你距工作需要的差距是不小的,当某个操作系统和编程语言环境成为你的饭碗时,就不应也不能用通过课程/认证考试之类的眼光和要求来评价你的能力,即使你能考100分。你需要深入地学习该操作系统和编程语言环境的各类开发手册的所有内容,你会说大多数你都用不上,其实你既对又不对,对的是单从使用的角度而言,你确实用不上开发手册的大多数内容,比如庞大的VC开发类库和复杂的开发环境,你在实际工作中能用到的不到总数的1/10或1/5,不对的地方在于,你用到的部分不是孤立存在的,它们是整个体系中的一部分,只有对整个体系有了一个较完整的了解,才能得心应手、随心所欲地用好你用到的部分,你才算初步具备在这种开发环境下进行Coding的职业水准(还远不够程序员的职业水准呢),而这只是刚开始。如何才能真正掌握一种开发环境的全面的知识呢,最原始的办法就是读开发指南/教程、参考手册,一般来讲,学习开发指南/教程时,你如果是一个认真的人,都会完成5/10~7/10左右内容的学习和练习,如果你想成为职业选手,就应该完成9/10以上内容的学习和练习。参考手册不同,大多数所谓的程序员们只是用到了才翻翻,这差的太远了,你应该象读开发指南/教程一样,每个环节都要读,比如VC,参考手册中的每个类,类的每个函数,都要读上几遍,它们往往是一小伙一小伙地纠缠在一起使用的,开始时读得你毫无头绪、心烦意乱,不要紧,还有一手呢,如果你开发环境安装的全面,它们往往都有开发商做的demo例子可看,你就进入另一个境界了,开始时你关注demo中的具体技术,后来你发现这些demo的程序写的都还算不错,结构简单但合理,如果你真的用心,就一定能发现一些个别的demo是极品,它所展现的程序逻辑结构是你设计不出来的,你现在有点更关心它的程序设计构架,甚于对你原始目的(某种相关的技术/技巧)的关注,这时的你,开始了从一名Coder向一名Programmer的转变,你会忍不住要看看开发商提供的源程序,比如。h和。cpp,通常你会找到include路径下所有的。h程序,你才知道,哇!好多好多东东在参考手册中都没提到,你要学的太多了,没时间顾及其它的业余爱好了,现在知道为什么程序员是年轻人的职业了吧,你要有足够多的时间才行,即使你的智商有160.如果你走到这一步,在你工作的团队中,已经是经常有人向你请教技术问题,经常有人请求你帮忙debug,你已是公认的高手了,别得意,因为你仍然是个Coder,为什么这么说呢,你想想,你已深入了解了这个开发环境中的各种技能,知道一名Coder如何用好这些东西,可是你能设计的出提供给Coder们用的东西吗?唔,你想了想,可能还不太行。对了,就是这样,你还是一名小我境界的程序员呢,本质是个Coder,当然已是一名高水平的Coder了,然而你需要进一步登堂入室才能成为一名真正的程序员。 让我们继续吧,通常你都是从精通一种编程环境开始的,假设你已经较为精通在Windows下用VC开发软件了,这时在技术和技巧方面你将面临一小一大两个挑战,第一个小挑战是如果公司/单位改换了开发环境,比如用LINUX下的QT交互语言工具进行开发,你不过是把前面掌握VC的过程再来一遍,由于在主观上经历了VC工具的学习过程,在客观上各种开发环境都有太多相似的方面,这回你掌握的应该较快。要小心,在这时第一次诱惑之门打开了,因为你感觉良好,看!这回这么快,我就这么好地掌握了新的开发环境,你开始关注其它暂时还用不到的同类环境,比如VB、Delph、JAVA,如饥似渴地掌握各种开发工具,证明自己的学习能力和价值,但你忘了一点,你仍然是个Coder,只不过是一个在好多开发环境下都能编程的Coder,就像你生活在中国,因而精通了汉语,工作需要你又掌握了英语,然后你就来了劲,把俄语、日语、阿拉伯语、拉丁语,等等等等,都学习个遍,我只能说,有点BT.你忘了自己是个职业人,同一类的东西工作中用得到才需学习,太多太多的Coder们喜欢在一起比较和炫耀自己会掌握了几种开发工具,不信你看看招聘时的求职书就知道了,sigh!他们中绝大多数人永远都只能停留在这个层次上,心浮气躁,一生都再也当不成真正的程序员了。

后CIO人如何规划自己的职业生涯[1]


相对于正在人生发展道路上不断攀爬的初级CIO(首席信息官)或准CIO,那些已经度过初始职业摸索期,进入职业生涯稳定期的CIO我们姑且将其称为后CIO人。这些后CIO人大都处于40-55岁(毕竟国内不少CIO吃的还是青春饭),职业生涯已经接近最后一站,该怎样规划好这段生涯?

IT人有四个职业发展阶段:1.探索阶段:20~25岁之间;2.确立阶段:25~40岁之间,这一阶段是大多数人工作周期中的核心部分。3.维持阶段:40~55岁;4.下降阶段:55岁以上,退休临近的时候。处在不同职业发展阶段的人,应该考虑不同的事情。

相对于正在人生发展道路上不断攀爬的初级CIO或准CIO,那些已经度过初始职业摸索期,进入职业生涯稳定期的CIO我们姑且将其称为后CIO人。这些后CIO人大都处于40~55岁,职业生涯已经接近最后一站,该怎样规划好这段生涯呢?

后CIO人的种种状态

纵观后CIO人,一部分人因把握好这其中的转折,而令自己人生规划继续拓展,稳步踏进,突破职业天花板,成功迈向CEO、CFO、COO。然而,更多人则因各种原因而步入误区,如对新职业判断失误,自己个性与公司长远目标格格不入,无法适应遽变,从而使职业生涯晚节不保。

有些CIO遭遇薪资封顶,保持了权位,但职业价值却处于下跌状态;有些CIO面对日益陈旧老化的网络设备以及业务部门的冷眼旁观,少不了遭受夹板气,壮志难酬;有些CIO虽劳苦功高,但因技术老化,精力不济,最后沦落到鸟尽弓藏、兔死狗烹;有些CIO虽然对目前职业状况基本满意,但是不能确定下一阶段该如何进一步发展,在犹豫间陷入职业停滞。

据调查统计,目前国内的CIO平均任期3-4年。圈内人开玩笑说,CIO有两层含义:一是首席信息官,一是CareerIsOver(职业生涯已经结束)。也有CIO45岁就可退休之说。

40岁对CIO是个坎,过了这个年纪,技术生涯即告终结,开始面临职业转型,面临为某种长远目标或个人理想去放弃已拥有的东西,如何利用前半生所积累的经验、人脉、知识、资本去实现自己另一个新天地?CIO们在40岁之后重新规划自己的职业生涯是很有其必要的,必须冒着一定的风险与压力,勇敢地为自己人生最后的职业生涯做出新的战略规划。

以上《IT人如何修炼编程的内功[1]》一文,由编辑精心撰写而成,希望对您的职业规划有所帮助,更多精彩请访问“如何修炼职场礼仪”专题!

相关文章

最新更新