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

对于好程序员,有很多好的习惯,为什么要把这个习惯放在第一个呢?有很多人如果阅读过《高效能人士的七个习惯》,其中第一个习惯就是积极主动。如果从这个角度来看,我把解决解决每一个问题放在首位从理论上是完全没问题的。但我要说说我们程序员独特的地方。

所有人都知道,程序员永远是拿着键盘在战斗的勇士。他们不能只是纸上谈兵。他们得有非常多的实战经验,人家才慢慢地说你是一个高手。可以说,高手绝对不是吹出来的,而是真枪实战干出来的。

在这里,我们不需要考试,不需要比赛。我们就看同样是一年年过去,到底谁做出来的东西最好,最多!因此,解决问题是我们提升自己能力,并且证明自己能力的非常重要的路线。我有一个非常好的朋友,大家认可他,就是因为往往全公司最难的问题,都是他解决的。还有一个朋友,就是因为他解决了全公司最大的技术问题,而得到了公司的十万元的奖金。

事实上,对我们来讲,任何一个问题,都可能是给我们打开了另外一个知识领域的大门,让我们了解到很多未曾关注的事物。这里面我有很多经验。

有一次我在研究代码注入的时候,发现Delphi的VCL对接口的实现方式。而且这个发现,让我很好的解释了,为什么在Delphi中做接口类型的强制转换的时候会发生错误。

还有一次,因为我做了一次技术分享,当时会上我的同事就提及了Ruby的不同设计思路,我当然也开始关注起来。这次事件,让我发现很多不同面向对象设计语言背后的实现思想,非常受用。像C++/C#/Java语言的继承,讲究的是类型的定义。而Ruby却可以动态修改任何一个已经定义的类。

当然了,这样的例子非常多。我们还不如反过来说说,如果我们遇到问题都绕过,或者不闻不问,或者得过且过,全然不当存在过一样。你会发现这样的人,事情分配给他的时候,他才会去做。偶尔也能看到他的聪明,但是就是看不到成绩。

是的,积极主动地解决每一个问题,让我们能够做程序员做得每天都不一样,每天都很精彩。而且,必须认识到的是,改变别人对自己的看法很难,唯有自己对事情的看法,才是我们可以,也是最容易去改变的。当我们心中真正开始热爱这些问题的时候,我们就走上了优秀程序员的长征之路。

是的,万里长征,这还只是开始!但是只要这一步走对了,下面就不会偏太多。

扩展阅读

一个平庸程序员的自白[1]


我一直以编写代码为乐,起因并不是我精于此道,而要部分归因于它是一大挑战。我发现没有什么比指挥个人电脑在显示器上显示Hello World!更令人激动的了。而在显示器上显示三个红桃或者黑桃A(Ace)和J(Jack)则是一个完全不同的问题。我毕业后写的第一个程序是用 Northstar Basic为NorthStar Horizon编写一个自动售货机程序,后来又为Northstar Advantage编写了基于图形的21点纸牌(Blackjack)游戏程序。

尽管如此陶醉于编程,但我必须坦白地承认:我是一个平庸的程序员,总在寻找一种方法来获得大的回报 - 即程序没有语法错误并能正常运行。这并不奇怪,我从未像一名程序员那样做好本职工作;我发现自己具有成为一名优秀开发人员的天赋。但是,在我们继续往下谈之前,我要给平庸程序员下一个定义。

平庸程序员--会使用一些现成工具的程序员。他只知道最简单的命令语法,但懂得在哪能找到更复杂命令的语法。他不知道如何编写最高效的代码,但懂得在必要时如何重写和测试比较高效的代码。他可以克服重重困难独辟蹊径达到目标,但他把每个困难视为挑战,并自信会找到每一个困难的解决方法。他可能需要较长时间才能完成,但总能达到目标。他不知道如何创建一个DLL,但在必要时可以弄懂。他与大多数程序员一样,并不特别喜欢做工作记录,之所以这样做是因为他是一个专家。

工作决定技能

虽然我很想继续编写游戏,但为了填饱肚子,我只得迁就本地就业市场;公司们有必需胜任实际工作这个奇怪的要求是众所周知的。产品、人力资源、会计、库存跟踪和数据报告只是做生意必要的一些东西 - 你知道,很无聊的东西。

当我真正为报酬而编写程序时,我的技能发生了戏剧性地变化。它不需要采用大量先进的编码技术来围着数据团团转,并耍魔术般地变成信息。

我被休斯飞机(Hughes Aircraft)公司雇用,通过IT服务来为产品控制部门提供支持。我的工作需要开发/分析技能,我热爱我的工作。编程不过是达到目的的手段。

开发人员身兼数职

程序员只是开发人员所扮演的诸多角色中的一个,通常你要身兼以下数职:

购买方(带预算)Buyer (with budget)
清道夫(无预算)Scavenger (no budget)
分析师(Analyst)
设计师(Designer)
规划师(Planner)
程序员(Programmer)
协调员(Coordinator)
测试员(Tester)
文档管理员(Documenter)
技术支持员(Support technician)

当开发人员未被认可为一个或更多角色中的专家时并不太令人奇怪。对我来说,工作职能就是编程。

一个还不太老的程序员的体会


谨以此文献给所有想当程序员的朋友

(一) 文章由来及个人经历

我是一名计算机专业的本科毕业生,毕业已经1年多了。毕业后从事的是软件编程工作,经常有其他专业的朋友想从事软件编程工作,向我请教如何,因为我自觉涉行不深,不敢信口开河,无奈朋友信任,我不得不郑重考虑一下这个问题了,来帮助朋友选择和回报朋友的信任。 这也就是此文的由来。

还是先谈谈我个人的经历吧。(是不是有点俗套,但我觉得了解我的经历,有助于理解我话的含义;我一向认为不了解古龙的生活经历的,不会真正读懂古龙的作品和古龙笔下的英雄的)我本科就读于南方一所著名的高校(因为自己的不成气,愧谈母校名谓),学的就是计算机专业。上本科时,几乎没有认真的听完一门专业课程,上课看报纸睡大觉,下课看录像看小说看球赛,临考抱佛脚,每次考试和课程设计都是蒙混过关。(于之相对是,我选修的工商管理和经济贸易方面的课到是听得不亦乐乎,考的分数颇高,也许这才是我的真正兴趣所在。)

总而言之,大学是混过来了,对专业的理解和掌握程度,应该没有达到毕业要求的合格水平。(也很后悔,但是有什么用呢,当时不知道珍惜;如果上天再给我一次机会的话,我一定会抓住,多看点美国大片少看点港片;现在,重回校园是我的一大理想)但是大学的学习使我有了一个简单的知识框架(总算学费没白交),我对一个朋友这样形容过我的这个知识框架,它不是钢筋铸的,是稻草扎的,哈哈哈,不要笑,真的,我敢说很多本科毕业的朋友的本专业的知识框架也只不过是稻草扎的。直到现在,我一直觉得自己的基础知识还是很薄弱,一直想抓点时间,把基础书本好好的温习一下。(此项任务正在计划和实施中)

毕业后,分配到某研究所工作。当领导让我选择自己以后的工作方向时,我毫不犹豫的选择了软件(也不知道到底是对还是错,但我决不后悔)。此研究所主要是以硬件为核心搞通信控制设备的研发生产;软件是辅助,所以也不受什么重视,很多搞软件的人都跳槽走了,留下来的大都是一些已经废掉和行将废掉的伪/萎程序员(名副其实的软件人员)。在这里感觉不到什么高紧张和高技术程度的研究和开发;软件开发的技术含量极低,以致于大部分人只有半年的学习和开发经验,以后都是这些知识和经验的重复利用。(我问过其他到研究所工作的同学,他们说都一样,呜呼,我们的国防科研开发呀)对于软件的开发,领导的意志和老掉牙的经验在新课题的技术采用和开发中起了决定性作用,没有明确的需求,没有明确的开发计划和进度,大家在一天一天一周一周的浪费着宝贵的时间,最后开发出来的东西修来改去,直至它变成垃圾。 我越来越认识到一点,要么象那些废人一样废掉,要么自己去努力寻求出路,反正别指望从工作中得到什么高明的经验了(教训倒也许有)。期间发生了一些感情上的纠纷,严重的影响了学习计划和效果,直到现在浮躁的心仍然有些浮躁。

期间,我读了一些书,看了一些文章,编过一些小例程,搞了一些没有什么技术含量的开发工作,也和一些前辈和高手们谈过聊过。 我一直在思考几个问题;如何学习软件开发?如何搞软件开发,国外的软件开发到底其秘诀在何处?为何我们的软件业一直在低水平徘徊?我们难道真的离了Microsoft就活不了?我们的程序员到底在浪费时间干些什么?软件开发到底是如何分类的?我们如何走自己的民族软件之路?

我想了很久,一些想通了,一些还在想。但我知道有一点是肯定的,那就是我们一定要靠我们自己走出自己的软件之路!跟在别人屁股后面永远受制于人!

好了,关于经历和牢骚就先写这些吧,该进入我们的正题了。

如何成为一个真正的程序高手


经常有人问我:面对众多的开发工具/语言,我该选择哪一个?怎样才能学好一门语言?怎样才能算是一个真正的程序高手?

首先,我不算是一个什么程序高手,我也就半吊子水晃晃荡荡。我不太喜欢程序高手这个词,最多,只能算是一名熟练的开发者而已,很多时候亦是半懂不懂。我编程是靠自学的,没有人教,也没有人问。因此走了不少弯路。当然现在看来,那些走过的弯路也算是一种积累。从1994 开始,我所使用的开发工具/开发语言选择是这样一个经历:1994:GWBASIC, 1995:FOXBASE,TC,1996:VFP,VB,PB,DELPHI,1999:VC++,PHP.总的说来,各种开发工具各有秋千,应根据具体应用来采用不同的工具。例如,写MIS用PB/VB,界面设计用VB/Delphi,写系统软件,用C/C++是最好的,做网站,有PHP,ASP,JSP等等。对于初学者来说,先用一种可视化强的工具(如VFP/VB/DELPHI)比较好,容易掌握,上手也快。但如果你想走更深入一引起,我建议你还是很有必要去精通C/C++,甚至了解一些汇编。

有人说,C/C++太难学了,开发效率也不高。我先不说C/C++优越于其他语言的地方(这在很多的资料中都有介绍),就单从一个很功利的角度来说说。Delphi/ VB对于一般人来说学上几个月就可以上手了。易学的东西学的人肯定多。而对于C来说,由于它难掌握,学的人不火,但一旦你真正掌握了,你的竞争实力就比其他人强。就目前的现实来看,C/C++程序员的工资普遍高于其他程序员就是一个证明。

就我个人认为,程序员不应该拘泥于某个特定的语言,每天为某个开发工具的优劣争来争去是没有意义的。重要的只有两点:

◆你用的开发工具/开发语言能解决你所遇到的实际问题吗?实用为王,适合的,能用的,就是最好的。

◆你喜欢这个开发工具/开发语言吗?兴趣,兴趣才是最重要的。选择你所喜欢的。

那么,怎样跨越程序新手这道坎呢?下面这几点建议也许对你可能有些帮助:

◆遇到问题时从所有你能想到的方面考虑去试图解决;

◆一定多动手,学一个专题(如网络/多媒体)后写一个软件检验自己;

◆用好联机文档(如MSDN)查询函数和资料,利用网络资源;

◆掌握好的跟踪调试技巧,多看一些高手的程序,从本质上理解;

说白了,要想成为一名熟练的开发者,就是最大限度的利用现有的资源,然后加上你的汗水。没有什么稀奇的。

13个小方法,帮你成为一个积极的人


当我们谈论“积极”这个词的时候,我们往往会想到“快乐”。但是,积极的方面不止一种,即使是在你感到伤心难过的时候,在你感到愤怒或者面临挑战的时候,你都可以变成一个积极的人,而不是简单的快乐。

研究表明我们有选择积极的情绪和不同思考方式的能力。我们的经历其实都是对自己周边事物的解读和回应。想成为一个积极的人,与其说丢弃掉一些消极的情绪,不如说我们重新用不同的方式去解读和回应发生在自己身边的事情。你只需要一点点的练习,一些些的耐心,以及一些些的坚持,你钟会成为一个积极的人。

成为积极的人从认识自己开始。

1. 请接受自己。所有的改变都是从认识到问题开始。如果你认为自己有消极的想法和情绪,如果你觉得你不喜欢自己现在对待一切事物的方式,请先接受这样的自己吧。其实,所有的改变都是从自己接受自己的坏情绪开始。

*接受自己的坏情绪并不意味着你要对你的情绪和思维做出评价,请不要这样做!我想告诉你的是,当这些情绪和想法出现的时候你真的很难去控制他们,这些情绪也并不是天生就是“好的”或者“坏的”,他们只是一些“情绪”和“想法”而已。你真正能控制的是你对这些情绪和想法的解读和回应。

*请接受那些你无能为力不能改变的事情吧。如果你就是一个天生内向的人,你就是有时候需要给自己一些安静的时间缓解一下情绪,那么就请不要试图做一个外向的人。对一个内向的人来说,试图做一个外向的人只会使自己更加筋疲力尽,更加不开心!你就是现在的自己!

2. 试着给自己设定一些小的目标。有目标感会使我们看起来更积极一些。有研究表明设定一个目标往往会让人立即变得自信一些,即使我们并未立即达成目标。设定一些对自己来说有意义,和自己价值观相符的目标会更容易实现,也会让自己更有动力。

*开始设定一些小目标试试。人不能一步揽月,我们要有蜗牛爬墙的精神,虽慢但步伐坚定,总会实现最终的目标。你可以设定一些具体的目标,但是请不要把“变得积极”作为你目标的开始。虽说这个目标愿景很好,但是这个目标并不具体,也实在是太大了,大到你都不知道该如何开始。相反的,你可以试试这些目标,比如,“一周冥想两次”,或者“每天给一个陌生人大大的微笑”。

*请注意你的用词,给自己一个积极的目标。研究表明,如果你的目标都是更加积极的话语,你会更可能实现这些目标。换句话说,设定自己想努力达到的方向,而不是努力摆脱的方向。举个例子来说,“不要再吃垃圾食品”,这就是一个无力的目标,这样的目标反而会让你因为某次失误产生强烈的负罪感。你可以这样稍微修正一下,“每天吃3种不同的水果或者水蔬菜”,这是不是更具体也更让你感到积极和可行了呢?

*请基于自己的行动设定目标。你要知道,你只是你,你没有能力和权利要求别人为你改变什么。如果你的目标要求别人给你某些反馈,那么有可能你常常会因为对方没有按照你的想法行事而感到沮丧。所以,你要设定的目标往往是那些你能控制的事情。

3. 练习爱的冥想。这种冥想方式有些佛教的传统。它会放大你对家庭的爱,进而普及到世界上的每一个人。它也可以帮助你有更大的弹性——很快的从会情绪当中跳出来,很快的从和别人不愉快的关系中解脱。你可以尝试每天进行5分钟的爱的冥想。如果你不知道怎么去做,网上有一些指导性的音频材料。两个很好的网站:

The Center for Contemplative Mind in Society

UCLA Mindful Awareness Research Center

4. 养成写日记的习惯。最近有研究表明,坏情绪是有疗方的:每出现一个坏情绪你就用三个好情绪面对就好了。具体怎么做呢?写日记可以帮助到你。通过日记你可以发现自己的所有的情绪,你也可以找到你的特有的比例配方。记日记还有一个好处是你可以更多地关注到那些积极的经历,这样你会在面对坏情绪的时候想起他们。具体做法是:

*不要简单列一些你不喜欢的事物。调查显示仅仅关注那些消极的事物只会加强你不好的情绪,让你变得更加消极。

*只要写出你的感受就好。不要去评价你的感受,不管是好的还是不好的。比如,当你的同事取笑你的身材你产生了不好的情绪的时候你可以在你的日记本中这样写,“当我的同事取笑我的体重的时候我感到很受伤。”

*然后,想一想你当时是怎么回应的呢?如果你现在有机会再回应一次,你会怎么做呢?以上面的例子为例,我们可以在日记本里这样写“那时,我自己感觉很不好,感觉自己毫无价值。可是再想想的话,我意识到我的那个同事对每个人都会说一些冷漠无情的话。还有,别人并不能决定我是谁,也不能决定我的价值,只有我自己可以!”

*试着去想一想,你从这些经历当中学习到了什么呢?你能不能从中学习到成长呢?下次再面对这件事情的时候你会怎么做呢?请写在日记中。比如,我会在日记中这样写,“下次如果有人再说一些伤害我的话,我会提醒自己别人对我的评价并不能决定我什么。我会告诉我的同事他的评论是多么的无情,他的这些话伤害到了我。我也了解到我很在意我的情绪。”

*在你的日记中,请记录给那些让你感到积极的事情和经历。这些事情和经历可以是来自一个素不相识的陌生人的一次友好对待,可以是一次美丽的日落,甚至可以是你和某个朋友的一次愉快的聊天。这样的一些记忆都会让你在未来不断地回想起来。你要知道,美好的回忆总是很容易从身边溜走,你要努力去发现和记录才行啊!

5. 练习感恩。感恩这件事情并不仅仅是感受,而是一种行动。感恩这件事情总是有益的。常常是感恩使我们看事情的方式有了即刻的转变,我们感恩的越多回馈的也越多。感恩使得我们更加积极,使我们和他人的关系更加坚固,也使我们感到更多的快乐。

*有些人生来就有“感恩的特质”,他们的感激的心情会别被人更多一些。但是,我们同样也可以培养这种“感激的态度”,不管我们现在拥有的“感恩的特质”是怎样的。

*请不要怀有“应得”之心。不管什么情况,请不要认为你从别人那里获得的东西都是自己应得的。这并不是说你不值得拥有,也不是说你要忍受不公和虐待。我只是想告诉你当你获得回馈的时候,请尽量不要用“我本该有”这样的心情来面对。

*学着和别人分享你的感激之情。和别人分享你的感激之情会加强这些感受在你脑中的记忆。它也同样可以让你的朋友变得更加积极。看看你周围有没有这样的感恩伙伴,试着每天分享三件让你们感恩的事情。

*试着去寻找在你周边值得记录的一些小事。写在你的日记中,拍照传到你的微薄,或者写下来发到你的朋友圈里——这些都会帮助你记住那些你感觉值得感激的事情。比如,今天的蛋糕做的刚刚好,或者今天去办公的路上没有那么糟糕,或者你的朋友因为你的穿着给了你一个大大的赞美,等等等等。记录下来这些事情!总会积少成多!

*学会感恩美好的事物。人总是关注那些不好的事情,总是让美好的事物从身边溜走。当你记录下那些你生命中的美好,请花一些时间真心的感谢这些回忆。努力把他们记录到你的记忆中。如果你在日常散步的时候看到一朵美丽的花儿,请不要吝啬你的时间,停下来告诉自己“这是多么美好的时刻,我要为拥有这样的一个时刻而感激”。请在脑海中拍下这个时刻。

6.自我肯定。自我肯定看起来有些自欺欺人,但是研究表明这会极大的改变我们对自己的看法。你要知道,人的脑子从来都喜欢走捷径。什么是捷径?捷径就是那些我们经常走过的路。如果你总是对自己说一些积极地事情,你的脑子最终会把这些事情看作是常见的事。积极地自我对话和自我肯定同样可以减少压力和低落的情绪。

*选一些对你来说有意义的自我肯定。所有让你感到积极和使你平静下来的事情都可以进行自我肯定。

*比如,你可以这样告诉自己“我有一个健康的身体,我的思想是那么的纯洁和健康”,或者“今天我要尽量友好”,或者“今天上帝会与我同在”,等等。

*如果你在某些方面感到痛苦,你也可以在那些方面找一些积极的自我肯定。比如,如果你对自己的样貌不是很满意,你可以这样进行自我肯定“我很漂亮,我很健康”,或者“我可以学习像喜欢别人一样喜欢我自己”,或者“我值得被爱和尊重”。

7. 培养乐观主义精神。早在1970年科学家就发现这样一个现象:那些我们认为中得彩票大奖(在我们看来是极其幸运的事情)的人他们应该更加的快乐,但是事实是,在一年以后他们的快乐程度并没有比那些没有中过彩票的人更快乐。我们称这种现象叫做享乐适应。

我们每个人都有一般认知上的快乐(我们假设以我们平常的快乐程度作为基准),在遭遇到重大的外在事件之后(不管是好的还是坏的)我们都会回到一般的快乐上来,这就是享乐适应现象。

*乐观主义是解读这个世界的方式之一。你要感谢自己的大脑有这种适应性,它让你能够从不同的角度看待不同的事情。悲观主义者是这样看待这个世界上的所有事情的: “一切都不公平”,“我没有能力改变这些事情”,“我的生活一团糟,都怪我”。但是一个乐观主义者却会认为世界上的一切都是可变的。

*举个例子来说,一个看起来悲观的大提琴手如果这样告诉你:“我下周有个大提琴独奏,但是我的大提琴水平烂透了,我肯定会把事情搞砸,或许我还不如去打游戏呢”。这里这个大提琴手做了这样一种假设,他的大提琴水平永远都不可能提高,永远那么幼稚,他并没有把这种弹奏看作是可以通过刻苦努力可以改变的事情。当他说“我的大提琴水平烂透了”的时候,这里面充满了自我谴责,他把大提琴水平不高看作是一件很失败的事情而不是一件通过练习有待提高的事情。这样一种悲观主义可能意味着说他以后再也不需要练习大提琴了,因为这样做对他来说并没有意义,或者他会因为自己不擅长演奏大提琴而产生罪恶感。这两种情绪对我们自身提高来说并没有什么帮助。

*如果是一个乐观主义的人,他面对上面的那种情况可能会这样想:“下个星期就是很重要的大提琴演奏会了,我对现在自己的水平并不满意。所以我每天要比平常多花一个小时练习的时间直到那场演奏会为止,尽力就好!毕竟这是我现在唯一可以做的事情,但是至少我自己知道我为那次演奏会拼尽了全力”。乐观主义不是说那样一种演奏会不是一种挑战,更不是说我们不要有坏情绪。挑战和情绪都在,但是我们选择从不同的角度看待这种挑战和情绪。

*你要知道,这个世界上有两种乐观主义:真乐观主义和假乐观主义,而他们是很不一样的事情。如果是假乐观主义面对上面的事情可能会有期待:“我会通过那一次大提琴演奏就进入到顶级的音乐学院进修。”这种想法并不现实,不仅如此,这样的期待很可能会让你更加的失望。真正的乐观主义看得清现实,也会为面对这些现实做努力。一个真正的现实主义者可能知道自己即使花了几年的时间努力提高大提琴水平也有可能最终不被自己理想的学校录取,但是他依旧会为自己的梦想去做自己能够做的一切。

8.学会重构不好的经历。人常常犯的一个错误是总是尽量避免或者忽略掉那些不好的经历。在一定程度上是有道理的,毕竟那些经历让我们感到痛苦。但是,试图压抑或者忽略那些悲惨的境遇却会削弱你面对他们,处理他们的能力。所以,不如我们想想看如何重构那些不好的经历。你从这些经历中能够学到什么呢?你能不能从另外的角度看这些事情呢?

*曾经有一个人,叫Myshkin Ingawale的人。在20xx年的TED上他给我们讲述一个自己发明设备想拯救印度农村那些孕妇的生命的故事。他说开始的32次的努力都没有成功。很多时候,他都会把这32次没有成功的经历看做是失败,一次又一次他都想放弃掉。但是,他选择了从过去的经历中去学习,并且最终他发明出来的仪器使得印度农村怀孕妇女的死亡率下降了50%。

*不要每次遇到困难和不好经历的时候都选择马上用消极的态度来面对,试着退后一点点,重新审视现况。到底是哪里出了问题?从这次经历中你有没有获得一些经验,下次再遇到的时候用一些不同于这次的方式面对?这些悲惨的经历有没有教会你或者更加善良一些,或者更加慷慨一些,或者更加聪明一些,或者更加坚强一些?花一点点时间反思这些经历而不是简单自动的把他们看成一件消极不好的事情,这会有助于帮你重新解读他们。

9.学会利用你的身体。人的身体和大脑是紧密相连的。如果你感到让自己变得积极一点很困难,这可能是由于你的身体在对抗着你。社会心理学家研究表明,不同的肢体动作会影响到压力荷尔蒙的分泌。试着站直一下,手往后放胸往前伸,眼睛直视前方。有没有感到舒服一点?这个动作叫做“能量姿势(power pose)”,它会帮助到你让你感到更加自信和乐观。

*请保持微笑。研究表明当你微笑的时候——不管你是否感到快乐,你的大脑会提升你的情绪。当你杜尼式微笑(duchenne smile)的时候这种感觉会更明显。曾经有调查说人在接受疼痛治疗的过程中如果微笑会比那些接受治疗而没有微笑的人感到更少的痛苦。

*穿出更能够表达你自己风格。人的穿着当然会影响到我们的感觉。曾经一个调查表明在实验室工作的人在进行简单实验的时候如果穿着实验服会比那些没有穿着实验服进行实验的人表现更好。你看,仅仅是衣着的不同就会有不同的表现。找一些让你感觉还不错的衣服穿,不管别人对你的衣着如何评价。

10. 做一些运动。人在运动的时候体内会分泌多芬胺,多芬胺是让人感到快乐的物质。运动会有助于缓解紧张和消极情绪。经常适当的运动会让你更加平静,也更加健康。这里,给你一些小建议:

*每天适当运动至少30min。

*不用考虑健身方面的效果,只要是有规律的运动就可以。比如慢走,游泳甚至是园艺工作都会人让你感到更积极。

*运动除了我们平常所说的跑步,游泳等剧烈运动,也可以是一些温和的运动方式。比如冥想,瑜伽和太极也是不错的选择。

11.从内在构建自己的生命。如果你想更成功,就多关注你已经成功的方面;如果你想要更多的爱,就多关注那些关心你的还有那些你给予过爱的人;如果你想更加健康,就多关注那些让你健康的方面……

12.不要为小事烦恼。我们每个人的生活中都会面对那些在当时看起来很重要但是如果我们退后一步看的话都不是问题的问题。关注于那些事情只会占据你的精力反而让你忽略了那些需要完成而没有完成的事情。事实上,拥有以下的五件事会让你的生命丰富起来:

*积极的情绪

*专注(专注忘我到把其他事情忘掉)

*和别人融洽的关系

*感到有意义

*成就感

请记住只有你自己才能够决定一件事情对你来说是有意义还是没有意义!不要被别人定义的“有意义”或“有成就的事情”绑住了你。如果你不在自己所做的事情当中找到属于自己的意义,那么无论是物质,名声,还是钱财都不会让你快乐。

程序员职业规划解决方案


为自己做职业规划,已经不必再来讨论其重要性,只有谨慎对待。

职业规划更要根据个人的理想,从实际出发。那么怎么才算实际呢?所谓的实际应当包含以往的经验、现有掌握的技术、教育背景、现实的工作环境、以及一些其他因素。如:婚姻、年龄、学习能力。花一些时间来思考这些问题,不能总是跟个感觉走,也不能总是太理想主义。

1、经验对一个人来说是绝对重要的,频繁的跳槽无疑是职业生涯的最大忌讳。如果是为了一点点工资而转移阵地那更不值得。所以不管当初是因为兴趣、还是因为无所选择而介入这个行业,这么多年的体会也绝对是一笔财富。如何运用我们的经验以及如何掌握更多才是值得考虑的。

2、衡量一下现有掌握的技术,要不要在学习新的技术。这一点也相当重要,就这个行业来说你不学习就势必落后。但新技术太多了,很多朋友还在感慨XXXX还没用熟,XXXX又出来了。在这一点上,我对新技术的定义是,你未知的技术都是新技术,也许它已经出来好多年了,但他很好用。我们的目的是在于解决问题。所以在学习新技术也就带有了一定的选择性,不能一味的追求,什么东西比较绚,什么东西强,永远从提高生产力和时间成本上考虑。总结这一点就是,要不断的学习,从而增强自己解决问题的能力,这样就永远不会out。(但如果你是绝对新手,还是多学点新技术好)

3、我的学历很低,要去自学考一个证吗?这个可以从成本和收益上考虑。考虑一下你现在的工作一年的收益是多少。如果考到一个证书,一年的机会收入是多少。继续受教育所花费的时间、以及其他成本是多少。还要考虑其他的影响因素。我的建议是,这个证书真正有用,让你能达到一个比别人更高的起点;你的志向中学历有最基本的要求,如果有这两点当中的任一点,你就应该去考取文凭。

4、如果现实的工作环境还不错,那在好不过了。每个人都应该珍惜自己的这份工作,首先是要干好自己本职的工作。希望能根据公司的制度的到晋升。现实当中可能并不会这么尽如人意,好多人努力工作不一定能得到回报。但大多数情况,你的努力领导会看在眼里,你应当在适当的时候向领导提一下。如果你的老板不太抠门,我想10有89还是能成功的。如果实在是不行,也不能怠慢工作,你应该在工作中得到更多的行业应验、提高综合素质。如果你的所做的工作,或者是你自身已经对公司来说具足轻重的时候,我想钱不是问题。

5、还得考虑一些现实的问题,你得花一些时间来找女朋友、陪老婆逛街。还有很多事情需要考虑。

以上是在做职业规划之前需要考虑的一些实际的问题。接下来具体的分析如何实现,在最后你可以根据自身情况给出一套合理的解决方案。以下是一个帮助个人分析发展、学习的导图。其中你看得出有很强个人色彩,很多的地方都只是提到了微软的技术方案,而忽略了其他的,你也可以再此基础上加以补充。

程序员职业规划解决方案

一、在工作中寻求提升

我给出了3类程序员可能发展的方向。其中最强调的就是在工作中得到提升。在工作中提成,一般对程序员说来有2个目标。一个是做架构设计-将来可以做产品的规划,或者项目规划和指导。另一个往管理发展,将来可能涉及的不知是单纯的技术。以下的步骤只是一些常规的做法。

目标

架构方向

第一步

1、基础必备:至少看过2本语言基础书和一本领域技术书。

2、部分参与项目1-2个。

所需时间:3-12个月

第二步

1、行业知识领悟、扩展相关应用知识。

2、完整参与项目1-2个。

3、可以指导新人完成工作。

所需时间:6-12个月

第三步生涯设计

1、深刻理解面对对象知识。熟悉常用架构,对公司采用的架构能提出改善意见。

2、参与需求讨论并能提出简化方案。

3、能为决策提出一些建议。

第四步

1、能够对整体需求方案做出精确描述。

2、运用一种架构对项目、产品进行设计。

3、评估项目风险、以及预留方案。

4、实现核心组件、技术难关。

5、行业技术指导。

第五步

艺术领域

管理方向

第一步

1、学习常用项目管理工具。

2、学会人际交往、协助项目管理。

3、和三教九流交朋友学会喝酒。

第二步

1、熟练运用一种项目管理工具。

2、能采用非技术手段实现需求(不用写代码的)

3、了解行业动向。

上表中第一步、第二步是基础阶段,都可以在制定

的时间内明确的达到目标。当你进入第三步的时候,应该就有点主要开发人员或管理助理的意思。等到第四步的时候就应该上位,如果一直不上位也很难发展。至于怎么上位,也许还得学习一些其他方面的知识。后两步都跟具体的成长环境和个人领悟相关,更多地是需要你学习本行业的知识,然后运用你所学到的技能将他用软件的形式表述,具体的做法也只有到自己领悟了。到了最后就达到了艺术的领域。我的上图给出的一些知识点,关于企业级应用开发说的比较多一点。这些也最多只能让你达到第3步,如果和你所从事的领域一点不沾边,你需要针对自己所从事的行业,列出能解决自己行业需求的技能,划出主次,针对不同的步骤,找出重点学习的知识点。

和人相处、与人沟通是当中隐含的,但非常重要的一个因素,只有掌握了这一点,才有可能达到艺术的领域。

最后还是强调那句话,能够解决问题才是王道。

二、树立自己的品牌形象

这一点必须是在你经历了一定的磨练之后再能够进展,至少你应该在原先的企业内已经完成了前三步的目标。已经积累了很多的行业经验。

如果你从开始就考虑要自己干,就要从上述表格第一步的时候开始准备。要将自己本身就看做是一个品牌。在和客户、和同行、和老板沟通的时候要处处注意维护你的形象。即使你没有任何产品,你的名字就是最好的产品,把自己推销出去。很多时候客户买你的产品不是因为你们的产品有多么的好,而是认可你的公司,或者是认可你们老板,或者单纯的喜欢你。所以一定要培养自己的行业名气,最重要的是合作机会。说不定就因为某个客户的一个单子,你就起来了。

一旦你树立了自己的形象,你还需要一个属于你自己的团队。得要有一些人愿意跟着你干。你需要一个很强的可以搞业务的伙伴,也后可能你从此再没机会写代码了。有更重要的事情等着你去做。

何谓程序员?何谓中国的程序员?


程序员,曾经是很多人尤其是计算机初学者为之崇尚的一个职业,仿佛就是理想、激情和事业的象征,从此就开始了IT白领人生。计算机技术发展之初,几乎就是一个个人英雄主义时代。一个天才的程序员,几乎就可以主宰一个计算机时代,创造出无数奇迹和梦想。

今天,计算机技术的发展日新月异,技术朝着愈加复杂和简单的两个看似矛盾其实一致的方向发展。计算机技术越加普及,无数非计算机专业的人群,出于爱好或者生存的需要,也加入了这个程序开发大军,并且都称之为程序员。

软件技术的发展,已经进入了一个大分工、大整合的时代,由此导致了软件开发工作的分层和分类越加细致复杂,同为程序员,彼此之间工作的技术含量可以说有天壤之别。系统软件、应用软件,是一个大的分水岭,几乎大多数程序员,都在应用软件这个层次进行开发,国内的程序员更是几乎全部如此。

既然是应用软件,就必然要和实际应用结合,而实际应用,是非常复杂多变的,尤其是具有中国特色的国内应用。于是乎,大多数程序员都在为开发应用层面的软件忙得不亦乐乎,财务软件、ERP、CRM、OA等等,几乎成了国内软件开发的主流方向,更不用说电信、石化、铁路、电力等具体行业应用软件的开发了,这些早已被称为项目了。国外的应用软件,除了以上业务应用之外,尚且还有像CAD、3D等专业领用的软件,具有一定的核心技术。

很多工作了多年的程序员们,在回首往事的时候突然发现,自己依然是一个辛苦的打工者,一个IT行业的苦力。反思一下,我们这些自认为程序员的工作者,其实是在核心技术的外围做一些表面工作,和那些非软件开发人员相比,我们觉得自己有技术,其实我们到底掌握了多少核心技术呢?现在的很多程序员,连数据结构、编译原理、操作系统等这些基本的知识都掌握得模棱两可,天天跟着老外的屁股后面追捧所谓的新技术、新框架。其实,又有多少是我们自己的呢?作为JAVA程序员,经常听到很多人自称精通Spring、Struts、Hibernate等主流框架,并有大型项目的开发经验,其实我们只不过比那些初学者多干了几年,使用这些框架更加熟练而已。国内软件行业的面试经常有此类现象,一个面试者可能这次面试不合格,但是他回去看一下书之后,再来面试,很可能就通过了。为什么?因为我们的面试太初级,太表象化。

我们经常接触IBM、微软等公司的面试,他们一般情况下是不会考核面试者具体掌握了什么框架、什么语言的,一般都是考核的面试者最基本的逻辑思维能力和分析判断能力。这也说明了,同为程序员,其间的差别是如此之大。

作为一名程序员,尤其是国内的程序员,应该对自己有一个清醒的认识,不要被表面的感觉所迷惑。到了这个时代,不是说程序员已经失去了光彩,而是我们所从事的层次,技术门槛已经大大降低,很多人处于同质化竞争。

怎么办?很多人说软件行业是个辛苦活,国内的很多软件公司更把程序员当牲口使用。其实,根本上还是怪我们自己没有很好的反思和调整。一方面,如果对技术真的有浓厚兴趣和激情,那就不妨向软件的底层核心技术迈进,另一方面,如果觉得自己真的缺乏这方面的潜力,那就努力适应国内环境,实现技术与应用的完美结合,争取向公司的中高层发展,如果不给与机会,那就自己创业,选择好技术和市场的切入点。

此外,一名优秀的程序员,一定不能是一个唯技术论者,如果持这样的观点,即使专心做个技术专家,也会存在发展障碍。微软的例子,sun公司的例子,都生动地说明了技术与市场的辩证关系。

当然,每个人的成败观是不一样的。如果始终把技术追求放在首位,追求技术完美的境界,并以此为乐,也未尝不是一道美丽的风景。

程序员对经验的一点思考[2]


那么,个体应该怎样对待经验呢?

我个人觉得,可以从经验的形成和使用这两个角度来思考一下如何对待经验的问题。

1、经验的形成

在经验形成的过程中,不能仅仅满足于经验的获得,还要对产出经验的前因后果进行深入系统地思考,确保经验能够有机,系统地融入到自己已有的知识体系中。很多时候,我们解决问题的经验方法,思考过程,是以一种非显意识的,灵光一现的方式得出的,我们的大脑会以一种近似于直觉的形式从记忆深处跳跃性地抓取一些线索,得出问题的解决方案。这种背景下形成的经验,如果不对其加以整理,回顾,不将经验背后的东西从潜意识翻到显意识的话,不去将经验涉及到的知识点和相关事物进行整理联系的话,这种经验很容易就会淡化,甚至随着时间的推移发生扭曲。即便是没有发生扭曲和淡忘,但是因为对得出经验的前因后果不甚了解,往往在个体真正需要借鉴经验的时候很难建立出来一个有效的参考系统。在经验形成的过程中,要透过经验,去观察经验背后的本质规律,通过具体的经验接触乃至掌握了主导经验的本质规律,才能够让自己在以后遇到问题的时候有效运用经验。

2、经验的使用

在获得经验的同时,要警惕经验成为自我意识的一部分,以减弱因为人潜在的维护自我完整性的心理倾向所导致的对经验的过度使用。

保持一颗鲜活的大脑,对不符合经验的东西,对经验不能解释的东西要保持一种敏锐的觉知能力和思考的自由度。而作到这一点的关键是要确保内心的纯净,安静。在我看来,只有一颗不带欲望,不带喜好,不带情绪,不带偏见,不带过多自我意识的心,才能够在运用经验和创造经验之间获得完美的平衡。把文章发给了一位朋友,他的回复我觉得很精要,附在下面作为对自己的思考的补充吧:

关键的是要能够透过具体的经验,看到背后的规律,所谓透过现象看本质。有的人,事情只做一次,就能成为专家;有的人会不停地在类似的事情上失误,这就是对本质看法的能力不同所致。 能够看到本质的人,一定不会滥用经验。

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


四、天生神力:成为系统分析员 本来就论述如何成为一名职业程序员而言,本文已基本完成任务了,但《菜根谭》有言:竭世机枢,似一滴投于巨壑,穷诸玄辩,若一毫置于太虚。既已乘兴到此,何妨多置一毫于太虚呢,作者不才,干脆尽兴写算了。 你要是运气好,直接进入了一个严格规范生产的软件企业就业,刚开始就应该是按别人做好的软件设计来实现编程,你可以有机会直接学习软件设计,当你积累的足够多了,能够对其中的一些设计提出好的改进建议,而且干得又快又好,就会渐渐地展露头角,我相信你终有一天成为一名软件设计人员(注意,不是软件产品设计人员),步入系统分析员的行列,但这还需其它的一些条件和自我修炼。如果你在一个不规范的软件企业工作,那也不错,你很可能直接就有机会进行软件设计,然后开发、测试,甚至还不得不自己定义需求,把软件开发过程的各个环节走一个遍,当然这样对你的要求更高,而且你也不容易得到及时有益的指点,在正态分布的情况下,你应该是成长的很慢。但不管就业的单位如何,如果你决心要成为顶尖软件职业选手,通常什么客观困难都阻挡不了你,然而你个人的因素可能会阻止你的前进。下面提出的观点纯属一己之见,伤人自尊之处作者在此提前道歉,并建议你除非对本文有强烈的兴趣,否则就请直接看第五节或放下别看了。丑话已说在前头了,在各种软件开发组织的发展过程中的事实也证明,只有少数程序员能成为系统分析员,我想这一点不是我杜撰的吧,因此你要是在看接下来的部分时感到气愤难当,那也实在没着,纯属活该,因为作者只是在说明自己的观点而已,你最多可以呲之以鼻,表示一下你的轻蔑好了,但没有任何理由可以骂人! 作者自己没有到微软面试过,但身处软件行业,关于微软的许多东东当然还是有耳闻的,据说微软招聘一名程序员要过五个已经成为微软程序员的面试关,而且是一票否决制,又据说大多数面试题并非编程,而是一些有关逻辑和智力的题,作者私下也做过许多流传的微软面试题,并对此做法深以为然。程序的本质就是逻辑,所以几十年前就有人提出编程是一门艺术,而艺术是要靠天份的,这一点少有人反对。一个人的逻辑能力可以不断提高,但其能到达的终极逻辑能力的层次必定为其天生智力所限制,这一点就让人不易接受了。好笑啊!人们可以公开承认自己没有某种或全部的艺术天份,但要说自己逻辑天份不够,换句话说承认自己笨、IQ不够高,往往是要怒发冲冠的,其实这又有什么区别呢?话都说到这儿了,再次建议你如果不够自信,就跳过这一节吧,直接看第五节,好吗? 好了,把话题说回来,你已经成为一门合格的职业程序员了,如果要想成为从事软件系统设计的职业系统分析员,第一件事就是悄悄找一个标准智商测试的网站或其它渠道,严格认真的测一测自己的智商,如果IQ低于130 (正常智商是110),就请别费劲了,打消掉成为系统分析员的念头吧!好!好!先请你冷静一下,好好想想,其实微软面试时就是在测你的智商和逻辑数学素质呢,这就是本节的标题为天生神力的原因,因为设计就是从无到有地进行创造,无论是软件还是其它行业都一样,可以有借鉴的,没有现成的,设计就是创造!如果你IQ在130以上,又决心要当一名职业软件系统分析员,其实你不过是要准备好吃更大的苦而已,有什么好虚荣的呢? 修炼还是从基本功开始的,过程和成为一名职业程序员差不多。必须使用设计工具这一点是不用多说的。在工作中,你基本上遇到的是两类方式的设计,一个是结构化设计,另一个是面向对象设计,就个人经验而言,面向对象的设计更好。如果你工作中不得不采用结构化的设计,你必须熟练地掌握数据流图和控制流图的分析和设计,一般来讲,如果你把一个软件中用到的数据模型设计好了,针对功能化的流程,不难设计出数据流图,但下一步设计控制流图才是挑战,如果你按照需求走不通设计好的控制流图,那么你或别人在按照这个设计编程实现时,必定也走不通,没有奇迹会发生,还是在设计阶段严格要求吧,又有一点需要牢记:返工是最慢的。当你在进行控制流图的设计时,也不要妄想得到需求人员提供给你明确的指点,通常他们要是能够把需求的功能和操作次序写完整的话,你应该就感恩戴德了,从需求中整理出功能、操作的拓扑次序和条件是你作为系统分析员的职责。看看,要是没有一点图论的基础和拓扑学的入门知识,你是当不好一个职业系统分析员的,即使你天赋不错,必要的数学和逻辑素质仍然不可或缺。也不用气馁,永远没有最好的设计,只有更好的设计,反复地进行设计迭代,勇于推翻旧的设计,你将快速进步。如果你在工作中是采用面向对象进行设计的,那就更有利了,有关面向对象设计的书太多了,不用作者在此多费口舌,建议精读一本经典的书,比如北大邵维忠等编译的《面向对象的分析》,有些方法和技巧可能过时,但其逻辑的基本原理是非常正确的,其本质是,你在逻辑上是如何认识这个世界的,你就是如何设计软件体系结构的,然后读读其它书,触类旁通,自己创造机会多实践,成功自然会到来的,总之,不管是结构化设计还是面向对象设计,评价一下自己的软件系统设计方案吧,有好多指标呢,比如是否均匀和平衡?局部独立性强不强?有没有歧异的结构?有没有层次太多或太少?有没有某个层次太大、太广?是不是逻辑结构先复杂了再化简的?还是只会设计简单的,复杂不起来(这一点是笨哦,如果出现多次,请你不要意气用事,转行吧)?最重要的一点,是否容易理解、实现和改进?你自己会得出评价的。如果有机会看到别人的设计,一定不要错过学习的机会,自己推导一遍,认真比较比较,获益会较多。 走到这一步,你就应该关注设计模式了,首先还是学习,这方面的好书有的是,但一般在工作中用到的设计模式较为单一,应该多尝试一下其它的设计模式。其次必须要明白设计模式不是设计思路,也不能代替设计思路,比方你要从A到B修一条路,设计模式只是让你选择,是修水泥的还是柏油的?是高架路还是普通的,但线路必须你自己定,而线路就是设计思路,模式对思路是有影响,但不能代替,所以如果你的智商高达250,我相信你直接用汇编语言也能写出面向对象的程序来。第三在此有一个陷阱,很多系统分析员生搬硬套设计模式,全然不懂如何融会贯通,在你的一项具体工作中,往往是以一种设计模式为主,其它模式为辅的,思维不拘泥于形式才是关键,而且也为你到达更高的软件设计的境界做好准备。 唉!都不知该怎么向下写好了,因为已达到作者水平的极限了,我胡乱说一点,你凑合看吧。软件设计最终的层次是:以无法为有法、以无限为有限,这句话是李小龙说的,不是我说的。再拾人牙慧一把,类比一个故事吧,金大侠在《倚天屠龙记》里讲到张无忌初学太极,学会的标志是把刚学的招数全忘了,记住的是太极的道理和精神,和李小龙有些相似喔,软件设计也一样,忘记所有的设计模式,随心所欲进行设计才是至高境界,所以你能到达多高的软件设计的境界最终将取决于你的哲学素质,这一点实在是不好写啊,你自己领悟吧!作者只有祝福了!

五、职业人的终极目标:全面修炼,成为Leader 这一节更不好写,涉及到太多其它非技术方面的因素,特别是个人人生观和世界观的修炼,如果本帖的点击率超过作者私下期望的一个数值,那我就争取尽力厚着脸皮再补上吧。我只说一句,虽然大家都知道软件开发是一个团队性的工作,但追求参与一个大型软件系统的成功开发,是一名软件人员的本能,就像拿破仑说的不想当元帅的士兵不是好士兵,所以不追求实现大系统的软件人员,也不是一个好的职业软件人员,但你只有成为Leader,领导一个优秀的软件开发团队,才有机会实现这个终极职业目标,对不对? 好吧,不管你现在的感受如何,我都谢谢你能读到这里!我不习惯假歉虚,就不说什么作者水平有限,本文抛砖引玉,欢迎大家批评斧正之类的客套话了,虽然作者水平确实有限。所以我认为你尽管有权砸砖,但实在没必要搞回帖、或回骂、或顶之类的玩意儿,我只是尽兴写一点多年从事软件开发工作的体验,因此接下来我就高挂免战牌,不回复任何回帖了。再次谢谢你能有耐心读到这里!希望本文对你有所裨益,祝你成功!再见!

以上《好程序员的习惯之一 积极解决每一个问题》一文,由编辑精心撰写而成,希望对您的职业规划有所帮助,更多精彩请访问“如何做一个懂礼仪的职场人”专题!

相关文章

最新更新