职业规划是对职业生涯乃至人生计划的过程,职业生涯规划的好坏可能将影响整个生命历程。感谢您阅读《成为职业高手,一定要修炼这三口气》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。
经常会有朋友问我如何提升核心竞争力,修炼成职业高手。
我常常反问他“在你的周围有木有你羡慕的高手,他们都是什么样子呢?”
于是对方张嘴就来马云,俞敏洪这群大CORE。
我说停,这些人和你半毛钱关系都没有,说你们办公室,谁是销冠,谁是技术大牛,
或者谁摄影好,谁化妆最棒就可以。总之大家的认可的。
这是职业高手吗?他们都是普通人呢。对方说。
“职业高手。。。。呵。。。呵。。。”我轻捋了一下胡须(其实木有),笑着斜眼看他继续说。“真正的高手,不是让你望而止步的牛人,而是在资源同等的情况下,仍然能够脱颖而出的人。真正的高手,不用职位的高低来衡量,而用技艺的精湛来对比。真正的高手,不是专业的限制让他们牛逼,而是心态的修炼让他们出众。哪怕和你玩斗地主,即使随即发牌,在相同时间花费上,却会把你杀的片甲不留。
即高手修炼的三口气。
第一口气,精进
通常人在接触新任务时,随便努个力就能达到七八分,我们把这称做“新手的好运”。就如你偶尔一次讲课、表演个节目,本来没经验,凭着一腔热血,加上冲刺性的准备,然后收获从0到1,自己很爽。
但职业高手会用更多的精力在某一个领域深耕细作,就为比平常人多出那么一点点。
这不是二八法则吗?你会问。
是的,谁都懂这个道理,但却不肯下心思。
举个例子,王鹏老师当年以培训师师身份进入公司,他深知自己在授课上是强项,于是每天提前半小时来公司,嘴不停的练习授课内容。每次还用手机把声音录下来自己反复听,找里面不满意的部分完善。
我也见识到他在授课初期严格按照教学大纲讲授:每个定义,每个案例,每个笑话(包括黄段子)都会掐好时间点。当我自己听烦时,这货却在以惊人的速度熟悉课程内容。
半年后。他……更……胖了……不对,他的课程讲授突飞猛进。打分比我还要高,现在,他是我们培训特训营的主讲教师,随时在课堂上把人说的潸然尿下。。。不。。。是泪下。
用他的话说,把自己的优势发挥(修炼)到极致。
如果你想做一个精进的高手,记得下面几招会让你快速提高:
1、找个高手作为学习对象,以超越他为目标。
2、刻意的练习,直到吐,边吐边记录你的练习次数和时间。
3、不断进行自我和他人反馈,相信客观评价,无理由从反馈中学习。
第二口气,去贪
精进最大的敌人就是贪心,我们都想艺多不压身,但往往样样通,样样松。
举个例子,你伸出手,想手指能做什么?
除了吃饭之外,是不是还会挖鼻孔,还可以画画是不是?
你的手指可以做很多事情,所以你总在尝试不同的可能,今天学个戏法,明天弹个吉他,或者后天练习舞蹈,但你有没有想到,大部分情况下,除了好奇,你学这些是在下意识和别人攀比自己也能做到。
所以,你会几首吉他歌曲,会几个拙劣魔术,转笔会一两个动作,但是每项都……差不多。
所以,那些高手不会想要那么多,他们会在你变戏法的时候弹吉他,练舞蹈的时候弹吉他,挖鼻孔的时候弹吉他,因为对这事情放下了,才会有时间精进。
职场上你也这样,一方面想做管理,另一方面也想做技术大牛,你想方方面面比别人抢,结果每天跟在别人屁股后面跑。
所以精进最大的敌人,就是贪心。(重要的话再说一遍)
对于自己不擅长的事,要果断放弃。
实在放不下,做到及格就成了。
如果你想做个去贪的高手,记得下面几招可以帮到你。
1、果断找到其他能力比你强的,和他们搭档补短板,发挥你的优势。
2、学会开口说不,拒绝能力不及的任务和困扰。
3、及时不逞能,对于不擅长的事情认怂。
4、把时间花费到那些你值得做,做得好的事情上。[88教案网 wWW.JAB88.COM]
5、安心等待,等你老了,岁数大了,认清这个世界就是有人比你在某方面牛,你就服了。
第三口气,沟通
《一球成名》里的一个场景,主人公足球技术很流弊,带球不传球。教练看不下去了,散场后让往球门方向跑,主人公撒腿就跑。就在他跑到一半的时候,教练一脚把足球飞进大门。
主人公正在纳闷教练为什么这样做,教练说了全剧特经典的一段话:
“足球是个集体运动,你以为你很牛逼,但你永远跑不过足球。你跑的再快,我只需要一脚就可以快过你,足球不是你在球场上带着球窜,而是和队友传球……传球……传球。(重要的话说三遍)”
职场是个群体活动。独狼的形成,是因为他能力强,而且周围一群猪队友。但吕布再彪悍,不也是干不过刘关张长群殴吗。所以,职场上记得协作。
协作最大的功力,其实在于沟通。相信我,无论在哪个团队,猪队友一定存在,当然他们也会认为你是一猪队友,这不是能力的问题,是每个人的站位和眼界的差异。如果你想更省力,就要学会和这些人一起完成几件事,而关键就是要……沟通……沟通……再沟通。
即使你心里认为你的队友都是一群傻B,你也要花时间……不……腾出至少20%的时间,和他们一群傻B沟通,不这么做,你也是一个傻B。
如果你想要做个沟通的高手,下面几招会帮到你。
1、提前预设20%的工作时间进行沟通,记得这是你工作的一部分。
2、先听后说:听懂对方对目标的理解和期待,一上来就想说服对方的不叫沟通,叫思想强奸。
3、耐心解释合作中每一步的意义和行动,让对方理解和认同你们目标和行动。
4、定期的确认、辅助和反馈,确保目标不偏离。
职场高手,犹如球队的顶级射手,不会四处乱窜,静静的潜伏在对手半区,期待后场和中场的队友倒脚和突然传中,并在关键的一刹那,用你苦练万千次的脚法,让皮球划出一道漂亮的弧线,球进了。
那些职业高手,就是这么完成的。
PS.你看了如果觉得这些道理我都懂,参考第一个建议:精进。
任何一个什么都懂却又无法做到的都是无耻的“知道分子”。
你们注定成为不了高手,只能做一个称职的评论家。
如果想做个高手,赶紧放下手机,找机会练习去吧。
zc530.cOm编辑推荐
职场新人如何修炼成“精”
职业规划怎么写,相信很多朋友们对这个问题很感兴趣,下面给大家介绍一下。第一部分,前言即总论;第二部分,自我分析,包括业余爱好、性格、价值观、专业技能等;
7月毕业生进入职场的高峰期。刚走出象牙塔的毕业生们充满了希望和对一切的渴望,同时也对新的环境感到困惑和不安。当你第一次进入职场时,你将面临一系列的问题和困惑。如何以正确的态度面对你的工作?如何展示自己的能力被赏识?下面,小编提供四位专家的指导,帮助职场新人调整心态,厚积薄发。
职场新人如何修炼成“精”
问题1:知识不足,缺乏经验
小李刚刚在一家企业工作了一年。他发现企业提供的职位与他的专业有很大不同。此外,由于缺乏经验和经常犯错,他对目前的工作没有信心。专家认为,一些刚毕业的学生总是认为自己富有、才华横溢、自信满满,这就不可避免地缺乏工作热情,难以踏实工作。
支招: 主动学习是适应新环境的关键
专家说:作为刚刚进入社会的应届毕业生,有必要具备准确的自我认知能力。自我认知的广度关系到你能否顺利完成工作,其深度直接决定了你的适应能力。新的人面对新的工作和环境会有一个不合适的阶段,造成恐惧。职场新人要调整心态,挖掘工作优势,积极向有经验的同事请教和学习,善于总结工作经验,尽快适应新环境,为企业和个人的同步发展打开钥匙。
问题2:没有付出,先讲待遇
有些毕业生在第一次进入公司时正在寻求治疗,他们需要提高工资和其他要求。他们不知道他们会先偿还的真相。他们不知道公司和社会不会支付他的学历或专业费用,只能为他支付费用。创建买单的工资和基本事实。还有一些毕业生缺乏技能和专业知识,无法在8小时内完成工作任务,并使用加班工作来面对技能培训和完成工作任务,所以他们抱怨。
提示:自己创造的价值
资深HR Cheney认为工作场所的新人应该知道如何付出。要明白工作的目的不仅是为了报酬,斤斤计较的人是不会有大的发展的。一个没有长远眼光的人只想终日解决温饱问题,那么他就永远能够做到衣食住行。也就是说,先让你的付出超过的你的报酬,然后报酬才会超过你的付出。事实上,我们的工资和福利是由我们自己支付和创造的,而不是企业或老板,更不是法律或法规了。
问题3:被宠坏了,害怕遇到困难
由于家庭环境的影响,一些毕业生从小就被宠坏了,在工作中竞争力太弱,进入社会后很难在企业中立足。没有人知道为什么一个企业不是一个慈善组织,而是一个人。
支招:承担发展的责任
在一家建筑公司从事人力资源管理的小朱认为,有时应主动承担重任,克服困难,把工作做好,是能够受到领导们的赞赏。他说,在工作了半年之后,他自愿做了一个没有人愿意做的外地项目计划。他仔细研究,做了一份详细的报告,受到经理的好评。从那以后,经理放心地把一些重要的项目交给了他。小朱认为,职场新人应该能够承担起责任和装腔作势,一个人的信用与他的责任感成正比,能够承担重大任务的人可以得到更多人的帮助,并有广阔的发展空间。
职业生涯规划之职场成功修炼必备
此文提供职业生涯规划之职场成功修炼必备一书,仅供参考。
去年最大红大紫的食品恐怕不是顶级大厨精心烹制的佳肴,而是硬邦邦的过期奶酪。在高高低低的写字楼里,无数白领在小心翼翼保护着自己那块小奶酪,一边觊觎着别人手里更大的份额,以至有公司倒闭时,留给员工最后的纪念品就是《谁动了我的奶酪》的小书,借以安慰员工沮丧的心和空虚的胃。
假如你有兴趣花点时间翻一下这本书,你就会明白,这本得到广泛认同的册子并不是在嚣抱怨,而是用过度包装的相识讲述一个朴素的道理:不要害怕改变,机遇需要自己去创造。做好个人职业生涯规划设计对你的职业发展是有益的。
一、不要拒绝改变
如果你不想成为被慢慢煮死的青蛙,就不要害怕变革。是的,变革意味着你将放弃拥有的东西,面对未知的风险,而变革同样让你拥有重新开始的可能,让你获得推翻从前的机会。想想,当J.K罗琳在廉价咖啡馆里写作的时候,她还只是个贫穷、离异、相貌平平且带着孩子的女人,而现在,她已经是英国的第二大富婆,拥有的财富比英国女王还要多。当然,她同时还拥有了名望、地位和新的爱情。
如果说罗琳的成功充满了命运的眷顾,那么桑得斯的故事则饱含奋斗的艰辛。作为一个退役军人,桑得斯上校当过消防员,卖过保险,翻修过轮胎,开过加油站,到66岁那年,他仍然只是一个领取每月105美元生活保障的退休老人。也就是这一年,桑得斯上校开了一家小小的快餐店,这无疑是一项成功的投资,那是世界上第一家肯德基。现在,你可以在全世界看到这家快餐连锁店,和店门口桑得斯上校的身影。在
华尔街,没有破产过三次以上的人不是好的投资家,因为唯有经历过失败,仍然不畏变革的人,才能成为最后的赢家。
二、让‘青蛙’老板注意你
不要误会,这不是说你的老板大腹便便,刮噪刺耳,而是告诉你一个小小的科学常识:青蛙只能看到运动中的物体。所以,无论如何,保持自己忙碌是第一要务。尽管你已经连续熬夜把策划书写得尽善尽美,尽管你刚刚加班加点完成两个月的工作量,你也绝对不可以作体力透支状,倒在桌子上补充睡眠。要知道,任何一个老板都愿意看到员工时刻处于无比繁忙的工作状态中。所以,不要对已经结束的工作沾沾自喜
,在台子上放一两份没有完成的文件,把涂涂画画的日程表夹在电脑上,甚至把袖子卷起来,也能让你看上去更实干一些。
当然,如果你是躲在高高的隔断板后面忙碌,那和你偷偷泡bbs其实没有区别。科层制逐级负责的管理体制,使得老板对你的工作缺少了解,他对你的所有印象,可能都只来源于人力部门的汇报。所以,和老板保持沟通至关重要,让他知道你在做什么,你的想法和方案,并且提出建议。在工作中,也可以适当询问老板的意见,让他不知不觉参与到你的工作中来。
三、品牌你自己
为什么你要喝百事可乐而不是非常可乐?为什么你要穿耐克而不是匹克?为什么你老板提拔了跟你一起到公司的 Lucy,对经常加班到半夜的你却视而不见?因为,被选择的不仅仅是一件饮料、服饰或者某个抽象的ID,还包括一点一滴建立起来的品牌内涵。对于你来说,选择百事可乐和耐克代表你认同青春的、积极的生活方式;对于老板来说,选择Lucy代表投资获得稳定回报的可能。
新经济时代最负盛名也最具争议性的作家汤姆?彼特斯5年前就提出了“Brand You”的全新理论。他谆谆教诲说,我们每个人都是CEO,任职的公司叫做“Me”,职业生涯中最大的任务,是把公司唯一的品牌“You”,打造成职场的领先品牌。你需要的是对自己的充分认识和一份清晰的品牌推广方案。盖乐普对员工说,每个人都有一件事情,做得比一万个人都好。你知道自己的优势所在吗?作为一个要着力推广的品牌,你和别人的诉求点有什么不同呢?明白自己的优势,不断强化自己的优势,才能让你成为职场里一个响当当的“名牌”。
四、注意每个工作细节
你可以举出很多例子来反驳说,成功人士不拘小节,比如爱因斯坦。但不得不承认的是,更多时候细节具有决定性的力量。电梯里和老板简短的几句聊天,可能让他坚定提拔你的念头;在谈判中一个错误的用语,也许让你最后痛失快要到手的合同。完美的细节代表着永不懈怠的处事风格,正是个人品牌价值的最佳体现。
接电话时,先主动向对方问好;打电话时,先询问对方是否方便;给老板的报告里,总是精心预备一份简短的概要供快速浏览……这样的细节还有很多很多,重要的原则是,你必须成为一个积极、实干、优质的象征,你的任何言行都要与此相适应。
五、培养杰出的公关技巧
良好的公关意识向来是树立形象的优质润滑剂,更是成为职场成功者的必要条件。公关的第一原则是:善待任何人。要知道,在白领的工作圈里,没有永远的朋友,也没有永远的敌人,没有永远的上司,也没有永远的下属。生活变幻莫测,不会永远符合你的预期。被你狠狠得罪的客户,可能是你下一个老板;你颐指气使的下属,可能摇身一变成了你的上司。在你的个人品牌形象上,“温和”、“彬彬有礼”之类的标签,贴得越多越妙。
办公室以外的非正式场合,是沟通交流的最好场所。在非正式场合里,人们通常比较放松,不太具有戒备心理,更容易互相妥协,这就是为什么外交通常先在非正式场合展开的原因吧。和老板的沟通更是如此。升职加薪的微妙关头,搭电梯遇到老板,说上20秒钟话,却有可能彻底击败竞争对手!这可不是跟老板套套近乎就能搞定的,你看人家Job的沟通技巧:“我昨天去看过公司产品的专卖店了,顾客对产品反映不错,但是销售有一定困难。Marketing部门印的单页,不是很有针对性,不像上次那么好。”短短几句话,让老板知道你在工作,拿到了第一手信息,发现了问题,还提出了建议。非正式场合几十秒的交谈,可能比一个小时辛苦汇报工作,收益还要大得多!
六、三分钟推销你自己
在塑造个人品牌的过程中,如何提升品牌认知度至关重要。要让别人在第一时间记住你,你就必须提供引人注目的细节。总是用Mont Blanc、明快的衣着搭配、得体的幽默甚至漂亮的签名,都能让你脱颖而出。当然,每家公司里都有一个著名的糊涂虫,如果你不幸被贴上了这样的品牌,那么迅速跳槽、重新开始也许是个不错的选择。
过于谦虚会让人觉得信心不足,轮到你做介绍的时候,大可不必太古板老套。只要说的都是事实,就大胆推销你自己!告诉别人你的成绩和努力,利用一切出现在媒体上的机会,让现在的老板注意你,让潜在的老板被你吸引。作为一个成功个人品牌的维护者,你必须时刻在营销自己。
通用CEO杰克。韦尔奇的办公室里挂着一副画:非洲的大草原上,旭日初升。在每个黎明,羚羊都要从梦中惊醒,拼命奔跑,时刻警惕,来摆脱狮子的猎食;而狮子只有比羚羊跑得更快,才能让自己不被饿死。
在职场中,情况同样如此。无论你是羚羊还是狮子,停顿下来就意味着职业生命的死亡。现在,开始奔跑吧。
职场上这五种思维很重要,一定要养成!
身在职场,有的人努力了很久,却还是得不到自己想要的结果。这是为什么呢?因为思维上出了问题。同一件事情,换一种思维方式来做会有天差地别的结果。那如何培养良好的思维习惯呢,良好的思维习惯都有哪些呢?小编觉得在职场上必须拥有下面这五种思维,大家对照一下,自己已经具备了几种?
【1】创造思维——你付出的时间与努力与收获并不成正比,没有创造,哪里会有价值。
很多人总是唠唠叨叨、没完没了,觉得自己付出了很多,自己每天加班,但是自己获得的回报太少,自己并没有得到领导的认可,所以大家一定要有一个创造性的思维,你创造了多少价值才是真真实实的,你花的时间再多,你的工作做得是一塌糊涂,你加班加到再晚,你没有创造价值,照样得不到领导的认可,所以第一个思维一定是创造思维,当你创造价值的时候,成为不可替代的人时,一定会得到大家的认可。
【2】等值思维——你得到的薪水与你创造的价值匹配。
很多人总是觉得自己的薪资太低,如果你也是这样觉得的,一定要学会等值的思维,也就是你在这个单位里面,在这个行业里面到底值多少钱?自己心里面一定要有谱,当你不等值的时候,你就要选择这个平台的公平性,只要你付出了努力,给公司做出的贡献,小编相信你一定会获得公平性的对待。
【3】边界思维——边界越窄,越专注,越不可替代。
大家务必要对自己做一个边界界定,不要觉得自己什么事都能干,自己是万能的,那肯定是一个误区,你给自己定的边界越窄,越会专注于某一些细分的领域,最后你才越成功,其实在单位里面,你只要攻克某一个岗位上的某一件事情,技术上的某一个难题,管理上的某一个漏洞,你就已经很了不起了,所以,这个边界思维一定要在自己脑子里面根深蒂固,管得太宽,只能让你管不过来,做的太多只能让你做不过来,结果什么事也没有做成。
【4】挖掘思维——不要让自己在同一个问题上栽跟头多次。
很多人,总是在同一个问题上犯错误,在一个事情上栽了很多次跟头,最核心的问题就是没有挖掘思维,一定要让不同的问题,不同的人,不同的事情联系起来,去挖掘背后的逻辑和根源所在,只有具备挖掘思维时,你做事情的时候才会考虑的更周全,分析问题的时候,才能够从现象看到本质,绝对不要让解决了这个问题产生更多的问题的事情发生在自己的头上。
【5】扩展思维——绕开问题去解决问题,才是高手。
扩展思维也是在职场上必须要养成的一个基本思维方式,有时候问题长期没有得到解决,是因为你没有绕开这个问题,只是站在自己的角度上去思考这个问题,一定要扩展开来,把相关的因素都考虑在内,把向过往的情况也摸透,把与此有染的人也拉进来。这才是从根本上解决问题的方法和思路。
小编相信,让自己变得更好,是解决一切问题的关键。希望小编可以陪伴大家一起学习,一起成长,一起遇见那个更好的自己。
职场之路的自我“定位”修炼术
职业规划是对职业生涯乃至人生计划的过程,职业生涯规划的好坏可能将影响整个生命历程。感谢您阅读《职场之路的自我“定位”修炼术》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。
一是定向,此为一定。方向定错了,则南辕而北辙,距离目标会越来越远,还要重新走回头路,付出较大的代价。因此,职业生涯决策,决不能犯方向性错误。
通常情况下,职业方向由本人所学的专业确定。但现实的情况是,很多人毕业后,并不能完全按照自己所学的专业来选择工作,有的甚至与原专业风马牛不相及。学非所用、用非所学、专业不对口的情况比比皆是,已不足为怪。这种情况下,就需要认真考虑,选择适合自己的职业岗位。有时为了就业,甚至要强制自己去适合并不喜欢的岗位,只要这种职业是社会紧缺的、急需的或有发展前景的。有些学子在学校里读了双学位,拿了几种职业等级证书,就业时就比别人多了几个机会,显得高人一筹。
二是定点。所谓定点就是定职业发展的地点。比如有些人毕业后选择去南方,有些选择到上海、沪宁线一带发展,有的则选择去边疆、大西北,选择到祖国最需要的地方去,都无可非议。俗话说人各有志嘛。但应该综合多方面因素考虑,不可一时冲动,心血来潮,感情用事。比如有的毕业去了南方,认为那里是改革开放的前沿,经济发达,薪资水平较高。但忽略了竞争强烈、观念差异、心理承受能力,甚至于气候、水土等因素,结果时间不长又跳槽离开。当然这也无所谓。但如果一开始就选准方向,就可以在一个地方,围绕一个职业长期稳定发展,对自己的资历和经验都会有助益和长进。时间加努力,有望成为某一领域的资深人士,岂不更为有利。频繁更换地点,今天在这,明天到那,对职业生涯成长肯定弊多利少。
三是定位。择业前要对自己水平、能力、薪资期望、心理承受度等进行全面分析,做出较准确的定位。不可悲观,把自己定位过低。更不要高估自己,导致期望值过高。一但不能如愿,失望也就越大。刚毕业就被知名大公司选中,而且薪资福利不菲,当然是你的运气。如果没有碰上这种好机遇,也无需气馁。不要过分在意公司的名气,薪资的高低。只要这家公司、这项专业岗位适合我,是我所向往和追求的,就应该去试一试,争取被录用。确立从基层做起、从基础做起,逐步积累经验,循序渐进,谋求发展的思想理念。可能对你的一生都会有好处。
除了这三定,其实还有很重要的一定,就是定心。心神不定,朝三暮四,何能准确地定向、定点、定位!不过无论做什么,都需要定心。不然,老百姓怎么会说心不定,钱没命呢?
修炼一名程序员的职业水准[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!他们中绝大多数人永远都只能停留在这个层次上,心浮气躁,一生都再也当不成真正的程序员了。
修炼一名程序员的职业水准[2]
总结一下,其实你在这时需要的是对自己掌握新开发环境的能力的自信,而不是一遍遍地重复来证明自己。第二个大挑战就是你明白了只掌握VC是不够的,你发现自己有点浅薄,有很多东东你会用但你不太懂,很多方面支持VC编程的知识你都没掌握,比如操作系统的源码、网络协议知识、Windows 的注册表、进程和线程的基础知识、硬件驱动方面的知识、ActiveX、Windows 庞大的 API,又是一个等等等等,这些基础知识的学习和掌握可是要花费大量时间的,你再一次深切地感到时间太不够用了,因为这时的你大概有许多俗务缠身了,所以有点沮丧,还不用提IT业每天不知有多少新东西在发布,KAO,永远都跟不上,越拉越远了。哎!别气馁,振作一点,你还是忘记了自己是个职业人,既然好多东东在工作中你永远都没机会用,那么干嘛要学呢?用什么才学什么,最多预测到马上要用什么,先一步学什么好了,要知道没有人是真正的、无所不精的全科大夫,除非你是神,但如果你还在耐着性子看这篇文章,你肯定是个人嘛。 OK,一般工作后三五年,你经历了上述过程,经受了诱惑和考验,终于明白了一个道理:你要的是强劲的学习知识的能力,是对某种软件知识/技能的有深度的精通,一种摸到它的根的深度,而不是已掌握的技能的种类和数量。这时无论谁用他掌握了多少种你不会的技能来吓唬你都没用,你对他的层次只有蔑视。通过几年的学习和工作,要记住最重要的一点,永远最重要:对自己学习IT知识能力的自信,一个程序员一生都要不停地进行高强度的学习,用心问问自己,有没有这个自信?别用虚荣心来骗自己哦,如果没有的话,那就不必花费你宝贵的时间向下看了,作者在此感谢你有耐心看到这里,现在建议你关闭这篇文章,趁着年轻,当机立断转行吧!
三、注重逻辑:成为一名职业程序员 好,再前进一点点,你就要成为一名职业程序员了,让我们继续来完成这个任务吧!我们在前一节提到过,你发现一些个别的demo是极品,它所展现的程序逻辑结构是你设计不出来的,你现在有点更关心它的程序设计构架,甚于对你原始目的(某种相关的技术/技巧)的关注,其实你是在关注这个demo程序作者的思维逻辑,所有程序的本质就是逻辑。技术你已经较好地掌握了,但只有完成逻辑能力的提高,你才能成为一名职业程序员。打一个比方吧,你会十八般武艺,刀枪棍棒都很精通,但就是力气不够,所以永远都上不了战场,这个力气对程序员而言就是逻辑能力(其本质是一个人的数学修养,注意,不是数学知识).逻辑能力也是逐步提高的,开始时你一定是用直观的逻辑能力来编程的,怎么想就怎么编,不对就再改,在改进中提高自己的逻辑能力,从直观逻辑能力提高到抽象逻辑能力,这是很正常的。提前说一句吧,到达逻辑能力的至高境界,其表现是用数学语言来描述问题和问题的解决办法,高度抽象!好,说回来吧,你要提高逻辑能力,最快的办法就是读别人写的结构优秀的程序。优秀的代码是百读不厌的(这句话是我抄来的),暂时放放对其中某种技术和技巧的关注吧,你要推导和学习的是这些好程序的逻辑结构,它们是被精心设计出来的。你可以先捂住这个demo程序,自己设计一个功能相同的程序结构,然后比较一下demo的程序结构,如果差距较大,那你就不应简单地改进一下,而是要把demo作者设计的过程在心里复原一遍,做到这一点也许有点困难,但这种事干的多了,你就会越干越快,越来越得心应手,你的逻辑能力飞速提升,你能看得上的逻辑结构优秀的程序开始不多了,下一步就是练习。从工作中开始吧,如果你有空闲,你需要做至少两类练习,一类是算法练习,所有的经典算法都是经典的逻辑,题目有的是,像个好学生一样吧,每年的国内国际编程竞赛都有逻辑要求非常高的题,你可以只选一两道难题来做做。当你可以把复杂的单递归程序(只有A调A)变成非递归程序时,已经不错了,如果你能看得懂双递归程序(A调A、A调B、B调A、B调B都有),我为你鼓掌!你不必往下看了,我有点不好意思啦――班门弄斧,你快滚蛋吧!另一类是把以前和当前你工作中你不满意的程序推倒重新设计一遍,这非常重要,省时省力,因为你熟悉需求,技术上也没问题,目的就是改进程序的逻辑结构,很划算哦,唯一要克服的就是:你对推翻以前工作中那点小小成就的心理障碍,如果你真想优秀,说句粗话:这点心理障碍算个屁,一遍遍反复地推倒已有的成果只能使自己快速进步,放手干吧,没什么好可惜的,马恩早就在《共。产。党宣言》里说过了:在这个过程中,你失去的只有锁链(禁锢你思想的锁链). 让我们来总结一下,经过自我否定后,再生的你尽管对过去的业绩还有一些眷恋,但已是一个初步具备职业水准的程序员了,掌握了相应的技术和技巧,具备了较高的抽象逻辑思维能力,最主要的特征是:能自觉地自我否定,不断地追求更高水平的逻辑能力。 在这个过程中,如果你能注意以下一些小的方面,你前进的步伐也许会快一些。 从编译原理的角度来理解你工作中使用的高级语言,如果你做到这一点,至少有两个好处,第一个好处是避免一大堆低水平重复出现的编译错误。一名优秀的Coder平均在一个工作日中应该完成200行以上的源码,其编译错误应该控制在5个以下,要知道这200行源码不是一次完成的,所以大多数情况下你都要追求一次编译通过,而一名职业水准的程序员,应该进一步做到即使用purify这类的工具来检查源码,也不会存在严重的内存泄露。第二个好处是可以提高源码的可读性和效率。规范地编写你的代码使你自己的逻辑清晰,因为你明白多加几个括号和空行、多换行对齐、多注释,编译器是会自动识别的,不影响程序执行的效率,反过来,控制好递归调用和循环内的if语句才是提高程序效率的关键,要全力避免递归,但要深刻理解递归,能通过自己建立堆栈来把递归程序转换成非递归程序,要求还是较高的哦! 避免思维陷阱,只要你是人就一定有自己的思维惯性,这一定又会表现在你的程序逻辑中,有时你就是从这个惯性中跳不出来(谁都有这个时候),但要心里有数才行,所以你需要帮助,如果你有几个水平相若或更高的职业伙伴,太好了,当遇到花30分钟还打不下的bug时,就别浪费时间了,找他们吧,最要紧的是能思路清晰明确地表述你的问题,通常你自己在这个过程中或者伙伴中就有人把问题解决了,又快又好。另外,有几个可以良性竞争的职业伙伴是人生的一件幸事,1+12,大家各有所长,你最好做到及时公开你的成果,技不压身嘛,IT发展的这么快,你再优秀,那点东东也没有什么值得隐藏的,所以你可以技术或水平不够高,但千万不可以让真正具有职业水准的选手鄙视你的职业品质和行为。
职业生涯之修炼“七”法
为什么同样进一家公司,同样的环境,同样的培训,同样的上级,一些人在过了几年后发展的很好,而有些人就一直不得意。深而究之,都在于对工作的认知和职业基本意识的不同。以下职业人的职业素养的七项修炼,有这7法,一定能助你在职场上平步青云。
第一步问题意识
养成问为什么的习惯是优秀职业人的杀手锏,他代表了精益求精,代表了追求完美,代表了一种敬业、负责的工作态度。那如何培养问题意识能力呢?第一、对待工作要敬业,在不明白的时候,当前的工作就是最好的,全身心的投入;第二、不断的学习本行业的基础和前沿知识,成为本行业的专家;第三、对工作的问题和公司的问题和行为,要用心思考,不能视而不见,充耳不闻,要注意观察;第四、碰到任何问题养成问五个为什么的习惯,俗话就是打破沙锅问到底,找出解决方案。
第二步时间意识
时间对于我们每个职业人都是公平的,我们怎样才能更好的利用时间让我们的成长速度更快?一是在上班时间之外计划一个集中的时间(比如晚8:00-10:00,或早5:00-7:00)抓紧学习本行业、本职业有用的知识和技能,比如做营销的系统学习一下营销的理论,随时关注《销售与市场》杂志,上中国营销传播网下载有用的文章进行学习等等;二是在公司中(或者社会企业中)树立你自己努力的一个标杆,向他学习,以他为榜样,学习他的思考模式、行为方式等;三是在我们的客户中要培养几个你的铁杆客户,真正的朋友,经常的倾听他们的声音,这会对你的帮助很大;四就是建议大家经常去图书馆。读书可以改变命运,我们这些从农村读书出来的新城里人应该要明白这个道理。
第三步目的意识(成果意识
花开的再漂亮,也没有果实丰满。你的岗位是做什么的?岗位的真正价值是什么?我做这项工作的意义和含义?做了这件事对公司会产生什么后果呢?基本上企业经营到最后都是以结果说话的,IT行业尤其重视结果导向,如果公司招不到人,那一定是人力资源的责任。我们一定要养成结果导向的思维,这可以使我们少走很多弯路。
我们要避免象电影《诱惑》的女主角一样,在疯狂的进行着婚外恋的时候,没有考虑后果(目的),最后导致了情人、自己、丈夫三败具伤的悲剧的收场。请看下回的责任意识。
第四步责任意识
逃避是人的的天性,为什么?那是因为我们害怕,害怕死亡、害怕失去、害怕被上级骂!这是我们人性的弱点!我们要对我们的行为负责。我从报纸上看到很多杭州一个26岁的撞死人的肇事富家子弟逃逸,后来被抓。有记者问为什么要逃,他的回答让我喷饭:我想叫我妈妈来处理!每一位父母都要引以为戒,思考我们的教育问题。
我们要时刻树立:我是责任人,这事我负责!凡事到我为止的意识。我开句玩笑说:检验一个男朋友是否可以成为丈夫,不在于他对你态度如何,如何哄你开心,是否处处照顾你,而是他的责任意识强吗?负责任吗?可惜我往往看到报纸上登出来的很多傻女人都是婚前十分浪漫,婚后狂风暴雨,最后只落得一声叹息:子是中山狼,得志便猖狂无可奈何花落去,何时才得良人归!
第五步客户(服务)意识
脸笑、嘴甜、腰软,这是服务意识的具体体现,我们的工作就是服务于他人,是工作价值的体现,你基本上为越多人服务,你的个人价值就越高,而服务的质量体现了服务的价值所在。如果在公司中,没有人对你提需求了;如果外部的客户再也没有电话给你了,那你就应该好好考虑一下你的工作是否有存在的必要性。谦卑、礼貌不代表我们的低下,而是内心强大的一种表现。
服务意识是职业人最基本的职业素养的体现。
第六步团队意识
鼓励、相互的鼓励可以产生莫大的力量,魔戒中的哈比特人佛罗多和山姆之间真诚的鼓励、肯定、相互的协助是最终他们完成毁灭魔戒的最重要力量,记忆中最深刻的一句话是佛罗多在第二集中快结束时说的一句话:山姆,你真是一个勇敢的人,没有你,我早已支撑不下去!因此,团队精神的具体表现就是:融入,合作、鼓励、建设性的意见、相互协作。
第七步成本意识
自己当过经营者的人都应该有成本意识。自己当老板是很多职业人的梦想,成本意识就是分析自己盈利模式,你在岗位上一天的盈亏平衡点在哪里,今天我给公司赚钱了吗?亏的话亏了多少?应该时刻记在心中。我们讲要做好一件事,除了目标、思路、方法以外,还需要成本意识,检验一个方案是否是一个好方案,除了结果、思路、方法如何以外,很重要的一环就是成本,投入产出如何?得到同样的结果可以采用更节约的方式吗?去一个地方进行销售活动,我能多拜访和联系一家客户吗?
如何成为一个真正的程序高手
职业规划就是对职业生涯乃至人生进行持续的系统的计划的过程。一个完整的职业规划由职业定位、目标设定和通道设计三个要素构成。
经常有人问我:面对众多的开发工具/语言,我该选择哪一个?怎样才能学好一门语言?怎样才能算是一个真正的程序高手?
首先,我不算是一个什么程序高手,我也就半吊子水晃晃荡荡。我不太喜欢程序高手这个词,最多,只能算是一名熟练的开发者而已,很多时候亦是半懂不懂。我编程是靠自学的,没有人教,也没有人问。因此走了不少弯路。当然现在看来,那些走过的弯路也算是一种积累。从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)查询函数和资料,利用网络资源;
◆掌握好的跟踪调试技巧,多看一些高手的程序,从本质上理解;
说白了,要想成为一名熟练的开发者,就是最大限度的利用现有的资源,然后加上你的汗水。没有什么稀奇的。
IT业已成为高危职业
IT业一向在人们的心目中是一个清洁安全的白领世界,但有关部门发布的资料却显示,IT业已被列入北京市六大职业病危害的重点行业。市安全生产监督管理局日前启动了全市工业系统职业病危害情况的调研,以掌握职业病的分布情况从而完善职工的工作安全环境。
近日,市安全生产监督管理局向本市工业系统企业下发了《工业系统企业职业卫生情况调查表》和《总公司职业卫生情况汇总表》。记者看到,本市工业系统企业分为机械、冶金、电子、建材、轻工、纺织、制药、汽车、仪表等,企业是否建立职业卫生档案、企业污染源及接触人数、职业病发病总人数等均需要填写。在公司上报材料的基础上,北京市安全生产监督管理局还将进行实地调研。
据最新信息显示,随着北京地区产业结构的调整,以经济技术开发区为先导的高新技术产业和知识密集型服务业,逐步替代了污染严重的传统工业,本市职业病危害因素也一改过去以粉尘、重金属为主,出现了噪声、微波、高频、电磁场、高分子化合物污染等多元化的趋向。在2002年至2003年,本市发生职业中毒事故13起;新发尘肺1061例,死亡449例;慢性职业病71例,急性职业病83例,死亡6例。截至今年3月,本市通过网上申报职业危害因素的企业达到1489家。皮革制造业、采矿业、装饰装修业、IT产业、微电子产业、生物医药等被列为职业病危害的重点行业。
修炼一名程序员的职业水准[4]
四、天生神力:成为系统分析员 本来就论述如何成为一名职业程序员而言,本文已基本完成任务了,但《菜根谭》有言:竭世机枢,似一滴投于巨壑,穷诸玄辩,若一毫置于太虚。既已乘兴到此,何妨多置一毫于太虚呢,作者不才,干脆尽兴写算了。 你要是运气好,直接进入了一个严格规范生产的软件企业就业,刚开始就应该是按别人做好的软件设计来实现编程,你可以有机会直接学习软件设计,当你积累的足够多了,能够对其中的一些设计提出好的改进建议,而且干得又快又好,就会渐渐地展露头角,我相信你终有一天成为一名软件设计人员(注意,不是软件产品设计人员),步入系统分析员的行列,但这还需其它的一些条件和自我修炼。如果你在一个不规范的软件企业工作,那也不错,你很可能直接就有机会进行软件设计,然后开发、测试,甚至还不得不自己定义需求,把软件开发过程的各个环节走一个遍,当然这样对你的要求更高,而且你也不容易得到及时有益的指点,在正态分布的情况下,你应该是成长的很慢。但不管就业的单位如何,如果你决心要成为顶尖软件职业选手,通常什么客观困难都阻挡不了你,然而你个人的因素可能会阻止你的前进。下面提出的观点纯属一己之见,伤人自尊之处作者在此提前道歉,并建议你除非对本文有强烈的兴趣,否则就请直接看第五节或放下别看了。丑话已说在前头了,在各种软件开发组织的发展过程中的事实也证明,只有少数程序员能成为系统分析员,我想这一点不是我杜撰的吧,因此你要是在看接下来的部分时感到气愤难当,那也实在没着,纯属活该,因为作者只是在说明自己的观点而已,你最多可以呲之以鼻,表示一下你的轻蔑好了,但没有任何理由可以骂人! 作者自己没有到微软面试过,但身处软件行业,关于微软的许多东东当然还是有耳闻的,据说微软招聘一名程序员要过五个已经成为微软程序员的面试关,而且是一票否决制,又据说大多数面试题并非编程,而是一些有关逻辑和智力的题,作者私下也做过许多流传的微软面试题,并对此做法深以为然。程序的本质就是逻辑,所以几十年前就有人提出编程是一门艺术,而艺术是要靠天份的,这一点少有人反对。一个人的逻辑能力可以不断提高,但其能到达的终极逻辑能力的层次必定为其天生智力所限制,这一点就让人不易接受了。好笑啊!人们可以公开承认自己没有某种或全部的艺术天份,但要说自己逻辑天份不够,换句话说承认自己笨、IQ不够高,往往是要怒发冲冠的,其实这又有什么区别呢?话都说到这儿了,再次建议你如果不够自信,就跳过这一节吧,直接看第五节,好吗? 好了,把话题说回来,你已经成为一门合格的职业程序员了,如果要想成为从事软件系统设计的职业系统分析员,第一件事就是悄悄找一个标准智商测试的网站或其它渠道,严格认真的测一测自己的智商,如果IQ低于130 (正常智商是110),就请别费劲了,打消掉成为系统分析员的念头吧!好!好!先请你冷静一下,好好想想,其实微软面试时就是在测你的智商和逻辑数学素质呢,这就是本节的标题为天生神力的原因,因为设计就是从无到有地进行创造,无论是软件还是其它行业都一样,可以有借鉴的,没有现成的,设计就是创造!如果你IQ在130以上,又决心要当一名职业软件系统分析员,其实你不过是要准备好吃更大的苦而已,有什么好虚荣的呢? 修炼还是从基本功开始的,过程和成为一名职业程序员差不多。必须使用设计工具这一点是不用多说的。在工作中,你基本上遇到的是两类方式的设计,一个是结构化设计,另一个是面向对象设计,就个人经验而言,面向对象的设计更好。如果你工作中不得不采用结构化的设计,你必须熟练地掌握数据流图和控制流图的分析和设计,一般来讲,如果你把一个软件中用到的数据模型设计好了,针对功能化的流程,不难设计出数据流图,但下一步设计控制流图才是挑战,如果你按照需求走不通设计好的控制流图,那么你或别人在按照这个设计编程实现时,必定也走不通,没有奇迹会发生,还是在设计阶段严格要求吧,又有一点需要牢记:返工是最慢的。当你在进行控制流图的设计时,也不要妄想得到需求人员提供给你明确的指点,通常他们要是能够把需求的功能和操作次序写完整的话,你应该就感恩戴德了,从需求中整理出功能、操作的拓扑次序和条件是你作为系统分析员的职责。看看,要是没有一点图论的基础和拓扑学的入门知识,你是当不好一个职业系统分析员的,即使你天赋不错,必要的数学和逻辑素质仍然不可或缺。也不用气馁,永远没有最好的设计,只有更好的设计,反复地进行设计迭代,勇于推翻旧的设计,你将快速进步。如果你在工作中是采用面向对象进行设计的,那就更有利了,有关面向对象设计的书太多了,不用作者在此多费口舌,建议精读一本经典的书,比如北大邵维忠等编译的《面向对象的分析》,有些方法和技巧可能过时,但其逻辑的基本原理是非常正确的,其本质是,你在逻辑上是如何认识这个世界的,你就是如何设计软件体系结构的,然后读读其它书,触类旁通,自己创造机会多实践,成功自然会到来的,总之,不管是结构化设计还是面向对象设计,评价一下自己的软件系统设计方案吧,有好多指标呢,比如是否均匀和平衡?局部独立性强不强?有没有歧异的结构?有没有层次太多或太少?有没有某个层次太大、太广?是不是逻辑结构先复杂了再化简的?还是只会设计简单的,复杂不起来(这一点是笨哦,如果出现多次,请你不要意气用事,转行吧)?最重要的一点,是否容易理解、实现和改进?你自己会得出评价的。如果有机会看到别人的设计,一定不要错过学习的机会,自己推导一遍,认真比较比较,获益会较多。 走到这一步,你就应该关注设计模式了,首先还是学习,这方面的好书有的是,但一般在工作中用到的设计模式较为单一,应该多尝试一下其它的设计模式。其次必须要明白设计模式不是设计思路,也不能代替设计思路,比方你要从A到B修一条路,设计模式只是让你选择,是修水泥的还是柏油的?是高架路还是普通的,但线路必须你自己定,而线路就是设计思路,模式对思路是有影响,但不能代替,所以如果你的智商高达250,我相信你直接用汇编语言也能写出面向对象的程序来。第三在此有一个陷阱,很多系统分析员生搬硬套设计模式,全然不懂如何融会贯通,在你的一项具体工作中,往往是以一种设计模式为主,其它模式为辅的,思维不拘泥于形式才是关键,而且也为你到达更高的软件设计的境界做好准备。 唉!都不知该怎么向下写好了,因为已达到作者水平的极限了,我胡乱说一点,你凑合看吧。软件设计最终的层次是:以无法为有法、以无限为有限,这句话是李小龙说的,不是我说的。再拾人牙慧一把,类比一个故事吧,金大侠在《倚天屠龙记》里讲到张无忌初学太极,学会的标志是把刚学的招数全忘了,记住的是太极的道理和精神,和李小龙有些相似喔,软件设计也一样,忘记所有的设计模式,随心所欲进行设计才是至高境界,所以你能到达多高的软件设计的境界最终将取决于你的哲学素质,这一点实在是不好写啊,你自己领悟吧!作者只有祝福了!
五、职业人的终极目标:全面修炼,成为Leader 这一节更不好写,涉及到太多其它非技术方面的因素,特别是个人人生观和世界观的修炼,如果本帖的点击率超过作者私下期望的一个数值,那我就争取尽力厚着脸皮再补上吧。我只说一句,虽然大家都知道软件开发是一个团队性的工作,但追求参与一个大型软件系统的成功开发,是一名软件人员的本能,就像拿破仑说的不想当元帅的士兵不是好士兵,所以不追求实现大系统的软件人员,也不是一个好的职业软件人员,但你只有成为Leader,领导一个优秀的软件开发团队,才有机会实现这个终极职业目标,对不对? 好吧,不管你现在的感受如何,我都谢谢你能读到这里!我不习惯假歉虚,就不说什么作者水平有限,本文抛砖引玉,欢迎大家批评斧正之类的客套话了,虽然作者水平确实有限。所以我认为你尽管有权砸砖,但实在没必要搞回帖、或回骂、或顶之类的玩意儿,我只是尽兴写一点多年从事软件开发工作的体验,因此接下来我就高挂免战牌,不回复任何回帖了。再次谢谢你能有耐心读到这里!希望本文对你有所裨益,祝你成功!再见!
修炼一名程序员的职业水准[3]
有自己debug的特点,下面的说法作者不敢太肯定,只是经验之谈。即使在VC这种高度完善的开放环境下,你仍然应该要求自己仅凭打印语句就能debug.这也有两点好处,第一个好处是,遇到bug你会认真想问题所在,而不是用debug工具一步步简单地追踪卡在哪儿了,你定位bug范围的方式是从大到小、从粗到精,这是一种自顶向下的思维方式,而用工具追踪,容易形成自底向上的思维方式,这不算好,你应该先看到森林,再看到树木。我反复提及:程序就是逻辑过程,大多数程序从main函数开始,是由数据结构和功能子程序组成的一个树形结构的逻辑过程(要认清即使是面向对象的程序语言也是一样的),它的执行过程是深度优先的,但你定位bug应该是广度优先的,好好想想这一点,嗯?第二个好处是强迫你思考并记住而不是用工具看到调用过程,你大脑的抽象逻辑思维能力和胳膊上肌肉的力量一样,都是练出来的,如果你的bug是程序结构上的逻辑错误引起的,这一点就非常重要了,顺便说一句,最难打的bug就是程序逻辑结构错误导致的bug.你要是真正明明白白地认识到这儿了,那我就没什么东西可以告诉你了。总之,程序员的职业水准:生产效率和程序质量,主要是取决于源码中bug的数量和debug的速度,而不是取决于编写源码的速度。给你一个我自己定义的考查一个职业程序员的指标:一个合格水准的职业程序员,编程的时间如果算一份的话,其累计debug的时间不能超过一份,真正职业高手累计debug的时间应该控制在0.5份以下,如何?你关上门悄悄问问自己,你花费在编程和debug上的时间比例是多少?如果你把程序员作为自己一生的职业,那么就永远都要牢记一点:追求做一个0 bug的优秀程序员!这是任何一个想成为职业程序员的人的理想,请相信:坚忍不拔地追求实现这个理想将让你出类拔萃! 做好程序的单元测试,这是另一项考查你是否是一名具有合格职业水准的程序员的一个必要指标。其实在你拿到需求的时候就要准备单元测试用例了,并且这些用例将直接影响你的详细设计(有关软件设计本来是该放在第四节讲的).我们还是打比方吧,当你拿到一个需求时,除了分析它静态的功能外,还应明确它动态的操作/执行过程,把这个动态过程明确地用流程图画出来,比如分为A~Z的26步,其中A又可以进一步分解为A1~A5的5步,直到不能再分解为止。又比如说A3步不可分解了,那么你应该把A3步的正常操作和所有五花八门的异常操作都列出来,确保正常的操作肯定正确,异常的操作起码程序不退出才行。这样你就要写好多好多的测试用例,说句老实话,我也从来不写!但我一般会列一个提纲,比如A3步有正常的操作a、b、c、d、e共5项,异常的操作有f、g、h、i、j、k、l、m、n共9项,你在进行单元测试时都应该跑一遍,这样的程序都还不敢说质量如何好,但起码可以说较稳定吧!如果要想在进行单元测试时干得快、效率高,那么在进行详细设计时,你就应该把A3步中对所有正常操作和异常操作的判断都设计好,在编程实现A3步时,使得程序的结构合理高效,对不对?所以,如果你在工作中是割裂地看待软件工程中从需求、分析、设计、编程、测试等各个环节,恐怕水平很有限喔!但如果你在分析需求时就能看到测试的问题,并改进设计和实现,为此做好相应的准备工作,嘿嘿,整个软件开发过程你的效率会高很多,通常你在一个开发团队中就会高度自信的,你已越过当一名偏颇、露骨的高手的境界,成为一个平静的高手,这可是The best in the best!,用周星星的话说:是高手之高高手,因为别人看不出你高在哪儿,没见你有什么高招或特拚命干,但反正你就是干得又快又好、又省力。关于进行单元测试还有很多复杂的方法,在此本文只提到了最基本的一点,目的是让你在工作上考虑周全、安排有序,其它的自己琢磨吧,没有人能替你吃饱饭! 如果你是用C++编程,我再简单谈谈有关内层释放的一个小技巧,就是对所有你编写的类,在构造和析构函数中加打印语句,统计每个类在运行程序时构造和析构的地方,如果是配对的,那么起码没有对象类一级的内层在程序运行结束时没有释放,然后你就可以把打印语句删掉了,招数虽土,但管用! 还有其它一些好习惯,在这里我随笔写一些,你要是有不同看法也请一笑过之吧。编程时应该对齐缩进,一个缩进用一个tab键,一般是4个空格,严格遵守开发团队的编程规范也是非常重要的。一个子程序不应超过30行(不算空行),其内多重循环不应超过3层,否则都应该分裂成两个子程序,个别算法程序可以长一些,但也不宜超过200行。通常一个类的所有成员函数总和不宜超过1500行,多了就应该考虑分解成两个类(这个工作最好在设计时就完成).每完成一小段程序,比如15~30行,就立即编译运行,不要假装高手,先敲它一大堆程序,再编译运行,妄想一次成功,体验一种假爽的、虚荣的快感,或炫耀给别人看,这么做只能证明自己是一个不折不扣的傻瓜,装酷而已。因为只要有一次不成功,你就会花费大量的时间来调程序,别人的进度在这时就远远地超过你了,平常心是道,还是修炼真功夫吧!孙子兵法里关于这一点有明确的阐述,我就不引用了,但建议你真的不要这么干,除非你确实就是这样总是一次就成功的天才,那你还看这篇文章干什么呢?我又不是写给你们这些天才们看的。再就是有学会买好书、读好书,关于计算机和软件方面的书太多了,时间有限,比如有一个叫侯捷的家伙,几乎写的每本书都不错,张国峰的C++编程也不错,这只是我的个人意见啊,好书多着呢,列出来比这篇文章长好多倍,我就不多说了。还有一招,要是你运气好,能搞到一些著名软件系统的源码,好好读读吧,在此我只能告诉你,Linux操作系统的一些源码不错,是开放的,你可以合法地搞到,其它的不要说是我建议你侵犯知识版权啊!