首页 > 精品范文库 > 5号文库
一个程序员的成功转型
编辑:九曲桥畔 识别码:14-1018058 5号文库 发布时间: 2024-06-01 10:57:43 来源:网络

第一篇:一个程序员的成功转型

张慧勃:程序员的成功转型

从软件公司程序员到企业CIO,张慧勃完成了自己职业生涯中的成功转型。

到雅戈尔毛纺织染整有限公司担任信息部部长之前,张慧勃是北京一家软件公司的项目经理,编程的工作即使在他做了项目经理之后也没有放下,这给张慧勃做企业CIO也带来了很大便利。

作为领导,内行领导外行总是较为得心应手,而张慧勃在做好管理、信息化规划等份内的工作之外,他还是喜欢研究一些底层的信息化技术,很多企业内部信息系统中的小补丁都是由他牵头开发的。

从昔日的程序员到企业CIO,张慧勃的转型让许多同行很是羡慕,因为中国IT业界很多年轻的程序员都在考虑自己的出路,与继续在软件企业工作相比,去企业做信息化一直都是一个不错的选择,张慧勃是这么想的,也是这么做的。

程序员生涯

张慧勃大学毕业后,就在吉林长春做起了软件开发的工作,那时,他还只是一个普通的程序员,与很多刚参加工作的人一样,他一开始也是老老实实做着自己的工作,而在经历了一个又一个加班写程序的夜晚之后,他同样对这种日复一日的生活产生了疑惑。

程序员,这个曾经让人羡慕而又让人趋之若鹜的职业,笼罩在它头上的光环早在几年前就开始暗淡了。曾经的办公室白领变成了IT民工,晚上加班写程序成了家常便饭,而这个行业独具的年轻化特点使之在某种程度上成了吃青春饭的行当。

于是,每个从事这个职业的人都在想着哪一天能够转型,在他们看来,程序员是做不了几年的。

张慧勃显然也不例外,他也在为自己的未来谋划,相对于长春而言,北京软件产业的发展更让张慧勃心动。于是,他放弃了在长春的稳定工作,来到北京打拼。

在北京的一家软件公司,张慧勃从程序员做起,一直做到了项目经理。可是这种提升并不能让他满意,职位提升了,他所担负的责任也更重了。

最让张慧勃难以接受的是,他经常出差到外地进行项目的实施,一出差就是一两个月,有时候会更长。“那时候,我都不敢买什么东西,因为出差时间很长,买了东西用不上。”虽然时间已经过去了三年多,张慧勃回忆起那段经历时,依然感觉有些疲惫,这种工作方式也对他的家庭生活产生了的影响。

不仅只有张慧勃如此,即使那些在著名跨国IT企业工作的项目实施顾问,他们也有类似的担忧,“虽然现在工资很高,可是工作强度大、节奏快,现在年轻还好,可是这总不是一个长久之计”。

ERP项目带来转机

正当张慧勃再次为自己的职业发展发愁时,他接触到了宁波雅戈尔毛纺织染整有限公司,这家公司正打算上马一套ERP项目,需要一个项目的负责人。于是,张慧勃辞去了在北京的工作,做了宁波雅戈尔毛纺织染整公司的信息部部长。

这是一家生产各类精纺呢绒系列产品的全能型毛纺织染整企业,由于宁波雅戈尔毛纺织染整公司是由雅戈尔集团与外商合资成立。作为公司总经理,荆朝晖因此有了接触国际先进技术的机会,通过到合资伙伴的工厂参观,荆朝晖发现,在国外先进的工厂里,不仅有先进的自动化设备,更重要的是,他们引入了信息化的管理,这双无形的大手所起到的作用更为有效。

雅戈尔毛纺织染整公司的产品有80%出口、20%内销,国际市场的竞争压力也促使荆朝晖有了加强管理、梳理流程,以提高企业综合竞争力的想法。

另外,由于公司隶属雅戈尔集团,因此,在企业管理信息化上,公司也要融入集团“数字化工程”之中,不论是外因还是内因,实施ERP项目加强企业信息化管理都变得十分必要。

202_年12月,雅戈尔毛纺织染整公司的ERP项目立项,202_年3月,ERP项目开始实施,张慧勃正是这个时候来到这里的。

由于毛纺产品多品种、小批量的生产组织模式决定了毛纺企业的生产经营管理方式,而IT厂商针对细分行业的解决方案基本都不成熟,在张慧勃的参与下,雅戈尔毛纺织染整公司和北京中纺达软件开发有限公司合作开发了ERP生产管理系统。

迂回战略成就CIO

对于一个项目经理而言,不管是帮助客户实施信息化系统,还是作为企业信息化部门人员实施本企业信息化系统,并没有本质的区别。张慧勃一开始也是这么认为的,他就像做一个往常所接触的信息化项目一样在雅戈尔毛纺织染整公司实施起ERP项目。

不过,一切并不像他想象的那样简单。张慧勃首先碰到的最大问题便是人的意识问题,在雅戈尔毛纺织染整公司,有很多有着丰富实践经验的老职工,这些人已经适应了原来的工作节奏,对于信息化的手段并不熟悉,这让张慧勃很是头疼。因此,在项目实施的早期,他做的都是信息化的普及教育工作。

另外,如何将那些老职工积累的丰富实践经验转化应用为信息化的手段,也是一个问题。为了使得ERP项目能够推进下去,一开始,张慧勃采取了迂回战略。他首先要求系统适应人的需求,这样一来,对于那些旧的流程只不过转化为信息化控制下的流程,流程本身并没有发生改变。

这样一来,公司的员工对信息化的接受度逐步得到提高,随后,张慧勃开始尝试让员工慢慢适应信息系统的变化,经过一年多的时间,张慧勃让公司的员工在潜移默化中适应了改变之后的规范流程。

“其实,这个过程还是很轻松的。”张慧勃说,因为过去他在IT企业做项目经理时,经常和不同的客户打交道,那时候他的身份是产品和服务提供商,对于他来说,客户都是上帝,因此,与过去相比,进入企业信息化部门负责信息化项目的实施反倒让张慧勃轻松不少。

做信息化上瘾

当公司的员工已经习惯利用信息化手段后,现在已经回不到原来的手工状态了,一旦系统出现问题,生产就会立刻停滞。“因此,做信息化就像吸毒,想停都停不了,开弓没有回头箭。”张慧勃调侃说。

比如,在公司的产品质量控制上,ERP项目可以做到实时的监控,每天张慧勃一上班,坐在他对面的生产主管的工作就是打开电脑,首先把ERP系统打开,然后监控整个生产的状况,如果哪个环节出现了问题,生产主管很快就能够发现,并要求工人去解决,如果是流程出了问题,他也能马上进行指导。不像原来,信息传递速度慢,对生产的管控也比较困难。

另外,过去做生产报表,一个月的报表要花好几个小时才能完成,打印出的报表也有一尺多厚,现在5分钟就可以把一个月的报表做完。

“做ERP,更多的是要坚持下去,不能没做几天,有了困难,就放弃了,这样只能是失败。”张慧勃说,从202_年系统上线开始,雅戈尔毛纺织染整有限公司实施ERP坚持了两年:磨合了一年,应用了一年。“现在流程已经很顺畅了。”

当然,做信息化也是有风险的,比如,在网络安全上,张慧勃就十分在意,他认为,一般的系统出错都是比较容易解决的,但是如果系统安全出了问题,就比较麻烦了。

另外,信息化还是要用得好才能发挥作用,为了规范系统操作流程,张慧勃正打算把系统中一些用得少的功能写出来,写成标准文档,乃至把整个ERP的操作流程也写出来,这样一来,就形成了企业自身的标准和文档,以便信息化更好地为企业所用。

抹不去的程序员精神

从程序员做起的张慧勃即使在当了企业CIO之后,依然没有丢下老本行,目前企业运行的ERP就是信息部和中纺达公司合作开发的。

在系统上线后,系统维护并不需要很多人,因此,张慧勃所在的信息部仅有三个人,一个做软件开发和维护,另外一个做硬件维护,作为领导,张慧勃是一个多面手。

这源于张慧勃的工作经历,最初,他的工作单位是一家小的软件公司,从项目开发到谈项目,再到交付项目、实施项目,以及后期的支持服务,这一整套软件工程的流程他在工作中都接触过。做程序员的经历还给张慧勃带来了另外一层影响。对于程序员这样的技术人员,他们身上都有一种特质,领导交待下来的任务,他们都会很踏实的干完,即使在规定时间内完不成,他们也会主动加班,因为他们已经沉浸在技术中。另外,做技术出身的人做事情比较负责、比较严谨。

从软件公司到企业,现在的张慧勃也有了自己的时间,不必再为了一个客户出差好几个月,在企业工作,加班的时候也不是很多。每天张慧勃八点半上班,下午四点半就下班了,他也因此可以去做许多自己喜欢的事情,比如打打乒乓球,锻炼一下身体,或者打打电脑游戏。“宁波市是沿海城市,生活环境也舒服多了。”张慧勃现在对自己的生活很是满意。

第二篇:一个程序员的逻辑思维

一个程序员的思维逻辑

程序员最基础的素质是什么? 答:实事求是,对就对,错就错; 程序员一个最需要的的是什么? 答:耐心 程序员作品追求 答,零缺陷(no bugs)

1、不要说在我好的,看生产环境的结果 如何获得成功感 为每次正确的感到自豪。写程序,以最简单的入手。

是因为程序不是对就错。错了一个逗号也错。程序是具有严谨性。

1、单元测试(Junit,main)

2、代码分析与异常的定位(有什么方案)(10)出了问题:

如果出了异常,不会将异常信息打印到控制,负分。

1、第一步,想看到看控制台,1

2、第二步,想到看看什么异常,分析为什么报这个异常,2

3、第三步,在异常堆栈信息找自己写的类分析(入口),3

4、第四步,通过在异常信息里找到相关的类,设置断点,知道断点需要什么数据。通过数据分析出异常原因,4

5、第五步,能够设置不同类的断点,设置分析逻辑,5

6、第六步,如果发现异常信息没有自己可以调试的类,可以看懂异常信息,6(耐心)

7、第七步,如果发生异常信息,找不到自已调试类,异常没有很具体说明。如果通过分析异常信息,找到类库需要调试的(入口)7

8、第八步,如果发现一个很奇怪的问题。无法定位。以排除法排除对的东西定位。8分

9、第九步,新技术,不懂概念。问题也找不到定位,还可以找解决的方法。我的方法,做DEMO。

10、只有程序都不是问题!!10 总结:定位问题,分析解决

断点调试(只是一个工具)

BUG出现是必然,出现BUG不是问题,问题是能不能找到解决方案。

如何创建一个属于自己的产品

1、有没有获得需求的能力。(对社会有没有想法)

2、没有设计的能力,(系统设计,数据库设计)

(1)技术基础(JAVA,解决方案(StringMVC+mybatis+ajax+json....))(2)三层架构(设计理念,面向对象)

(3)数据设计,将需求变成数据库表(DDL,DML,设计理念)(4)页面的设计(HTML,CSS,JS)

3、组织以及管理能力

(1)如何协同开发(管理目录,SVN)(2)如何找到适合人员(能力,角色)

思考

1、一个程序需要哪些技能?

2、对于一个希望做某个职业的人来说,能不能能圈。

3、进圈以后,再思考位置。、

第三篇:一个程序员的总结

202_总结

人生易老、时光易去。不知不觉,又到了年终。

回首这一年,细细思量,有欢乐,有忧愁;有收获的喜悦,亦有遇到挫折的沮丧。更多的还是每天一点一滴的积累起来的成长。

在这一年,认识了很多良师益友,获得了很多经验教训,也要感谢公司给我成长的空间。

接近年终,有必要对将要结束的一年做一下总结。

一、工作内容

今年四月份左右,加入了‘***’项目组,第一次了解了进销存系统的逻辑,第一次使用联通封装的框架进行开发。主要实现了销售、采购、合同、库存等功能。在实际开发过程中,对我个人的成长起了很重要的作用;一方面对技术有了更深入的了解,增强了个人自信。在项目开发过程中,我们遇到了一些问题,但也克服了许多的问题。并完成一期的开发任务。

七月份左右,加入‘**’项目组。主要实现厨房质检、接待部、申购、管理者、信息反馈等表单web端及wap端的功能,并实现表单的动态配置功能。在项目组所有项目成员齐心协力的努力下,我们基本在客户要求的时间内完成了项目的开发、测试并最终上线。在这段时间,吸取了原来开发中的一些问题,养成了较好的开发习惯,并积累了wap端开发的经验。

十一月底,加入‘**’项目组,这个项目刚刚开始,有一些以前未曾遇到的问题,但每一个挑战都是一个新的成长,每个挑战都代表着自身能力的增加。

二、在这一年的工作过程中,总结了一下个人不足。

1、在开发中,经常会遇到调好一个BUG出现一个新的BUG,或者遇到一个问题,调试半天才发现是一个很小的问题。而出现这种问题的原因完全都是因为不够细心。

2、在项目开发完之后的一段时间,会出现懒惰的心态,没能保持长期的工作积极性。

三、一年的结束意味着新的一年的开始,在此,计划明年要实现以下事情

1、加强对新技术的学习,尤其是要一些前台功能所涉及到的知识。

2、加强自身逻辑思维能力,以及业务分析能力。

四、对公司的建议

1、希望公司组织人力开发一套自己的框架,这样可避免每做一个项目都要

先熟悉开发架构,降低学习成本。

2、希望定期举行聚会,这样可为员工提供技术交流的平台,并促进同事之间感情,增强公司凝聚力。

五、结言

善始者未必善终,善做者未必善成,成功的过程是一个学习并坚持的过程。每一天成长一点点,长期坚持,必然从一个菜鸟成长为一名经验丰富的人才,如此才能胜任更多更重要的工作。

未来一年,我将继续拼搏,认真对待工作,完善自我,为公司发展尽自己最大的努力。

第四篇:一个老程序员的心得

1个老程序员的心得

[size=4]不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。

1.扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。

2.丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。

3.最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。

4.不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。

5.对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。

6.多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。

7.良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。

8.韧性和毅力。这也许是“高手”和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。

这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助 做了快三年的程序员了,有一点小体会和大家分享一下.1.好钢是由铁炼成的.一名好的程序员必须经过千锤百炼才行, 挫折是程序员最大的宝,要能承受挫折,战胜挫折,只有不断经受挫折,从挫折中吸取经验,教训,这样你才能成为真正的程序员.2.手是好汉,眼是懒汉.看会不是目的,要会写,勤动手,熟练书写各种常用代码,在学习之初 可以不借助IDE来书写代码,反复练习,熟能成巧,毋庸置疑.3.稳中求胜,小心使得万年船.程序员最忌讳毛躁.代码多,项目大的时候,错误是在所难免的,但低级错误一定不能犯,尽量把错误压到最低,这就要求我们程序员养成稳重,多思维的方式,切忌浮躁,养成良好的书写习惯和正确的思维方式.4.做就做程序员,不要做高级打字员.每个程序员都是从基础学起的,在学的时候一定要把握好方向不要被众多的语言,概念所迷惑,学的是语言,学的是编程思想不要在IDE上下功夫,研究哪个好,哪个坏,要敢于创新,程序是死的人是活的,在活人手里,也要让程序活起来.多学多看数据结构等书多看别人的成型代码,学习别人的思想,使自己成为真正的程序员.5.敢想敢做,持之以恒,一切皆有可能!

一点薄思庸见送给赛迪网java版的初学者们,仅代表本人个人意见,如有任何各位大虾有好的方法或意见可以跟帖提出.java开发八荣八耻

以动手实践为荣,以只看不练为耻。以打印日志为荣,以出错不报为耻。以局部变量为荣,以全局变量为耻。以单元测试为荣,以手工测试为耻。以代码重用为荣,以复制粘贴为耻。以多态应用为荣,以分支判断为耻。以定义常量为荣,以魔法数字为耻。以总结思考为荣,以不求甚解为耻。

从大学开始到现在,学习编程已经四年了,在过去的四年里学了不少的东西,总感觉自已还行吧。怎么着也能找个好的工作。加上在学校表现良好,大专一毕业就顺利应聘上一个政府机构的工作。虽然工资不算多,但也稳定。但总觉得自己有点屈才.一天,见到本市的一家知名软件企业的招聘信息,就把自己从大学三年到现在写过的一些东西简单地写了一份求职信过去(不是想跳槽,只是想测试一下我现在这份工作丢了,在社会上我能够达到什么程度)。

没想到,第二天,那家公司就叫我过去应聘了。感觉很突然,总觉得一些软件公司在人才网站上打一些招聘信息总是借此做大做广告,并不是想招聘人,就是要招聘人,可能因为这种因素的机率都很小吧。(这是我一直以来对人才网站上某些软件公司的招聘信息的看法),不过却增加了几分信心,于是我便兴冲冲的去了。

到了公司,首先就让我填写一张表格,填写完一张表格以后安排一个技术主管过来与我谈,谈的倒不是一些深入的技术问题,我基本上的都能应上来。接着就是上机测试。测试的题目是写一个人员信息的插入、修改、显示。主考官说只需要写一个功能就是,只是希望看看我的编程风格。于是我把数据操作写了一个类,然后在按钮的事件里得到输入框值,组合一个SQL,传到数据操作类里面去执行,然后返回插入结果就可以了。完了,很快搞定。马上叫主考官过来看吧。呵呵,小意思。

主考官过来了,首先就在姓名的地方输入好长的一串字符串,接着一阵乱输,完了,出问题。名字太长了,邮件没有限制,身份证没有限制,生日没有限制,完了,完了,我想,这么点东西,就出问题了,我心里好一阵紧张。还好就是主考官的态度还不错,说:“虽然你做了足够的注释,缩近也注意了,但是却没有对输入的值进行判断,我们这为合理的判断也是好的编程风格,再者,你虽然把数据操作写成了类,但也有很多的改进,一是。。二是。。”说完以后还鼓励我接着写刚才的代码。当时真是很是感动,但感动归感动,说老实话,这些判断平时还真的没有写过多少,都是写一个以后,COPY过去COPY过来的用,现在一时还觉得有些短路,不知道如何是好,然后,就是按钮的事件中写对数值的判断。终于完成了,再看看表,时间距刚开始测试已经快一个小时了。

主考官过来看了,觉得功能都实现了,就叫了公司的一个副经理(后来才知道的)来继续面试我。这个副总就到我到另外的一个会议室去,问了我一些技术概念的问题,结果我基本上都答不过来(我以前觉得我能够用就够了啥,没有太大的必有对这写概念的条款记得这么清楚啥),结果,那位副经理训斥了我一下,说:“你对这些概念都不清楚,怎么了解其间的性能呢,不了解性能如何开发高效率的程序呢?”(整个谈话这句最让我满意,其他的都是“我们是专业的软件公司,很注重软件的性能,编程风格等等如事云云”),最后问了我的薪水要求和能不能适应公司的开发等就叫我回家去等消息。

当然,由于后面没有过关当然也没有应聘得上。更当然,我吸取了这次应聘的经验,总结以下几条来做为以后学习的信条,写出来与大家共勉:

一,学习应该从基础抓起,注意学习的每个细节,争取学精,避免为了开发而开发。

二,在以一门语言为主功语言的同时,要学习一下与之相关的其它技术。

三,长常保持对新技术的关注,了解未来发展的方向,做到有的放矢。

四,多参与项目开发,在项目中发现问题,解决问题,才能更好的了解学习中的细节问题。

五,加强交流,多写文章,多发源码,多收取意见,在交流学习并提高,才能更快了解自已的不足。

六, 永远相信下一个作品是最好的....业余程序员最喜欢做的一件事就是对不同的语言进行比较。Java是否比C++好?C#是否会成为终极语言?凡此种种。从专业程序员的角度看来,这是最低级无趣的游戏。

其一,在项目诸元确定之后,通常并没有选择语言的余地;其二,语言的生存本身就是一个达尔文主义的问题:设若两种语言有明确的可比较性,其中较劣的那一种必定早已被淘汰出局,又何来比较的必要?所以,有“C++之父”美称的Bjarne Stroustrup博士常常声明自己不会拿C++与其他语言比较——偏偏每次接受采访时,必定有外行的记者或听众提出这一类最令他反感的问题,这是题外话,按下不表。

丢开实用主义的观点,从美学(或者说,计算机科学)的角度来看,语言的比较似乎并不像它通常所表现的那么低级。毕竟,既然维特根斯坦反复强调“语言制订游戏的规则”、“凡不可言说者必保持沉默”,可见语言并非仅仅是可通约的思想的映射,语言本身就决定思想的方式。使这个问题显得那么低级而业余的,往往是业余程序员讨论它的方式:仅仅凭着自己对几种语言一知半解的认识、仅仅凭着使用一种语言的习惯、甚至仅仅凭着一种宗教狂热来展开讨论,这样的讨论自然是不值一哂的。

我是不是已经提到了“宗教狂热”这个词?如果说对语言的喜爱(或者憎恶)可以成为一种宗教狂热,就有那么一些人可以凭着宗教般的狂热成为开发高手,Ian Joyner无疑属于这种人。1992年,在Unisys用C++开发UNIXX.500时,Joyner感到C++让他“不自在”,于是就写了一篇题为《C++批判》的报告,张贴在Unisys的内部新闻组上。到此为止,一切都没有什么不同。但Joyner与其他宗教狂热者的区别在于:他有着远为深厚的理论基础,以及锲而不舍的毅力。于是,《C++批判》有了第二版和在Internet上广为流传的第三版。到1998年,这篇典型的论坛文章终于变成了一本书,“批判”也彻底变成了语言之间的比较(参与比较的另外两种语言是Java和Eiffel),这就是我手上的《对象揭秘:Java、Eiffel和C++》(Object Unencapsulated:Java,Eiffeland C++,人民邮电出版社202_年7月)。

尽管宣称自己反对“宗教战争”,但显然Ian Joyner是深谙宗教战争之道的。从批评的方式来说,他与其他人并无不同:首先立论(“Eiffel是最好的语言”),然后不断变换角度批评对手——时而是数学理论的完备性、时而是使用的便利和可靠、时而是命名的清晰„„论据的选取完全只是为论点服务。也正因为此,这本《对象揭秘》足以让绝大多数的语言比较者感到羞赧,因为在同样的批评套路上,Joyner探索的深度和广度令他们望尘莫及。譬如说,任何一个负责的语言比较者都必然会提到“继承和类型系统”这一话题,但Joyner却把这个话题写成了长达63页的一章(第5章,“类型扩展:继承与虚拟”),并在后面的章节(第9章,“类型转换”)中继续讨论相关的问题。抛开篇幅不谈,单是Joyner习以为常的文法解读、Lamda演算法和签名变化理论,就足以使不够水准的批评者自惭形秽了。

因此,在我看来,这本《对象揭秘》完全有理由成为所有语言比较者的必读书目——也许说“入门书目”会更准确一些?因为你能想到的任何一条批评,Ian Joyner很可能早已做了鞭辟入里的阐述。如果在细读《对象揭秘》之前妄自作评,结果很可能是贻笑大方。另一方面,在批评的方法上,Joyner为后来者作出了表率:简单的反对与谩骂毫无意义,用钱钟书的话来说,“反其道以行也是一种模仿”;只有拿出充足的论据,再拿出合理的解决方案,才称得上一个高明的批评者。当然,这样的“入门书目”也许让门槛显得太高了一点。但对于“Java和C++谁更好”这样一个通常只会令人感到莫名烦躁的话题,门槛总是不厌其高的。

像我一样的Java人常常会抱怨“Java的经典书籍太少了”。C++的经典好书总是层出不穷,实在令人艳羡——当然真正拥有这些书的人也同时拥有不少的烦恼,我就有最深切的体会。在这本《对象揭秘》中,IanJoyner顺便也半开玩笑地揭开了这个秘密。也许,这句半开玩笑的话会成为Java人喜爱这本书的另一个理由:

“„„学习C++要花那么长时间„„,要比Eiffel和Java都长得多。花那么长时间还未必掌握编程或者面向对象设计技术。这也是为什么关于C++的书籍那么多而Eiffel和Java不需要那么多书的原因。”

我是初中时接触编程的。那时父亲厂里买了一台微电脑,而我父亲,当时正好可以接触到这台微机,于是,颇具战略眼光的父亲便开始帮我寻找各种书籍资料,让我学起了计算机。

第一眼看到它,我就被吸引住了。那是在当时也很差的一种名叫“R1”的微机,可是颜色实在漂亮,典雅的奶黄色,配着深绿的按键,按下不同的键还有不同音调的悦耳的声音。跟当时风行的大多数八位微电脑一样,整个机身实际就是一个键盘,比现在PC机通常的键盘还要小,显示器就用电视机。当我第一次把从书上抄下来的寥寥几句的一个Basic程序从嘀嘀作响的键盘上敲入,最后再打进了“RUN”,而屏幕上忠实地显示出了结果后,我就不可救药地迷上了编程。父亲的厂离家有五公里,每个星期天我都要自己一个人步行五公里,把一个星期里自己写下的一大堆Basic程序拿来调试,当然一大半都被它冷酷的拒绝了,所以每次有一个程序通过了,我都会兴奋的叫起来。那时我的体力不好,五公里走下来,相当累,还经常小腿抽筋,可是一坐到电脑前,听见打开时“嘀”的提示音,一切的痛和累都消失了。

渐渐地我的程序通过率越来越高了,程序的规模也在增长。但是,那台外表可爱的电脑却开始不堪重负了,运行速度本来就慢,又加上效率低下的解释性Basic语言,让我实在不可忍受。于是,父亲又到新华书店为我订下了一本《Z80汇编语言》的书。书一到,我就捧起这部大块头的书,开始用我初中的程度一点点地啃。边啃边实验,终于掌握了Z80汇编语言,又在电脑不具备输入汇编语言能力的情况下,手工翻译成机器语言,再通过Basic语言中的Poke语句把二进制代码输入内存,然后用Basic程序调用。在不懈的努力下,终于成功地做出了一个汇编语言的动画程序!在这次成功之后,我就开始相信,只要肯钻研,没有学不会的技术,没有克服不了的难题。

初中毕业后,我以全县第一的成绩进入了一所附近城市的省重点中学,从此我的眼界开始逐渐拓宽了,以后,我用到的电脑越来越高级,从高档八位机苹果电脑,到今天主频以G计,内存以M计的奔四电脑,当年那台主频内存都只能以K计的八位机已是进了历史博物馆。但是这台引领我进入编程领域,并且更驱使我深入钻研汇编语言的电脑,将是我记忆中最珍贵的收藏之一。

在重点中学,学业的压力是很重的,又是住校独立生活,对于体力已较大程度下降、行动已呈现出不少不便的我,平添了几许额外的困难。高中的第一年没有计算机课,我只能在假期回家后才能有机会继续学习编程,也以此来忘记一学期的压力和苦累。高二时,终于盼到了计算机课,也见到了当时相对高档的苹果电脑。而我此时已有的基础令老师吃惊,同学惊服。我加入了计算机兴趣小组,开始在性能远远好于原来那台电脑的苹果机上快乐的编程了。在高二的暑假我和计算机老师一起给学校做个工资管理软件。在学校里的一周时间内,由于宿舍已经锁掉不能住,我就睡在了办公室里。位于郊区的校园,蚊子格外多,咬的我一直睡不着。到了后半夜,我索性爬起来,打开了电脑干活。就这样,我帮着老师写程序、录入数据,并且在即将交货时找出了一个大BUG,又正确地判断出问题根源在内存不足,算是立下了一个小功劳。

由于高考发挥出色(尤其是物理的满分),我进入了北京大学物理系。在大学里,计算机上机条件就更好了。当时苹果的Macintosh刚刚推出,给我们系捐了好多台组建了计算机室。这个计算机室从此就成了我大学四年最常去的地方。一年级的时候有两门计算机课,一门是Fortran语言,一门是Pascal语言。而Pascal语言基本是我们自己学,每到晚上计算机室向我们开放。那是我第一次见识“窗口”形式的操作界面。第二年,计算机室的机器换成了386和Dos系统了,但是上机机时却被限制住了。不能满足的我到处找不喜欢计算机的同学借机时卡,好让我有足够的时间调试自己写的程序。到了第三年,北大招生更多,系计算机室天天爆满,所以上午只要没课,我就会起个大早到机房门口等待开门。在一个寒冷的冬晨,还因此着凉发烧而晕倒在机房门口。就这样,我熟练地掌握了Turbo Pascal和Turbo C++,也学习了好多相关的理论知识。

毕业后,我终于如愿以尝当上了程序员。我被分配的任务,起先是用Delphi做一些文字处理的工具,供编辑部和数据部使用。后来Internet开始兴起,又委派我写为网络版期刊使用的一些CGI程序。工作一直都很顺利,我的眼界与编程水平也在稳步成长。两年后,为了有更好的发展,我离开了我工作的第一家公司。这时,我把求职的阵地移到了网上。不久,就在某网站上看到了一家合资软件企业的招聘启事。尽管启事上说明不接受来访,我仍然勇敢地拿着简历于第二天赶到公司所在的翠宫饭店去求职了。幸运仍然在笼罩着我,这次我直接见到了经理,向他表达了自己对于编程的热爱。我说,我梦想着成为IT业的传奇英雄。也许是这句话感动了他,我成功的通过了面试。在这家公司,我第一次作为一个庞大项目组的一员,感受到了现代化的软件项目管理,接受了团队精神的洗礼。

在北京做了五年的程序员,这时候,我听到了来自深圳的召唤。早在99年,我就在网络上找到了一个位于深圳的名为“中华残疾人服务网”的残疾人网站。一天,我在这个网站的留言本上看到了站长的一席因残疾人网络事业缺少技术支持而发的感慨,不由心有所感,便留言说,愿投入残疾人网络事业,而不计待遇。从此,我的人生翻开了辉煌的一页。那是202_年的10月6日。

起初以为,这个网站会类似于仅仅出于兴趣的个人网站,走进去才真正发现,这是个志存高远的团队。而我真正感觉到了团结一致共创大业的团队精神。在同样因病致残的站长有力领导下,这里基本解决了残疾人在生活会有的种种不便,克服了许多社会上普遍存在的障碍,从而可以让我充分发挥聪明才智,全身心地去攀登IT技术的高峰。

加入网站之后,我完成的第一个任务是改进网站新闻系统,增加图片上传和自动图文排版功能。以前没有做过ASP程序的我在原有的ASP程序的基础上,通过学习和分析源代码,完成了这个任务,同时也掌握了基本的ASP编程技术。然后,我又独立完成了一套社区论坛程序,这套程序受到了全国以至海外残疾朋友的欢迎,成为了许多足不出户的残疾朋友与网友热烈交流的园地。也让我从中看到了自己的价值。后来,因为网站的网管不辞而别,我又接过了网管的重任,从此一面开发程序,一面又管理着我们自己的两台服务器。尽管压力和工作量成倍地增加了,却使我同时掌握了两个领域的技术,而这两方面的技术又互相促进,使我的知识结构更为全面。

由于我们没有外来资金的支持,要维持中华残疾人服务网这个福利公益网站的运转,必须走以网养网的道路,即为企业、政府提供信息化建设服务,以获得经济收入。所以,在给网站开发和升级程序之余,我又开始进行商业网站后台程序的开发。仅网站新闻系统,就在两年内从1.0版升级到了6.0版;还有大量为企业量身定做的功能程序。这些程序在网站原本就强大的前台设计的包装下,受到了市场的欢迎。网站也由此发展壮大。今天中华残疾人服务网在全球排名中稳步上扬,进入了三万以内的行列。

在承接网站建设工程的同时,一些客户也开始找我们开发应用软件。第一个应用软件项目是一家与广东移动通信有业务关系的公司,因为自身没有软件开发能力,便请我们合作为广东移动通信做一个《“测试卡”管理系统》。根据要求,我设计了使用条形码的输入方案,又使用SQL数据库作为局域网联网的后台数据库解决方案。由于是第一次全程的开发与服务,在进行以前没有接触过的安装过程中出现了大量问题,又没有充分做好应对的准备,造成了一些被动局面。但是最终我仍然想出了临时的解决方法,顺利地完成了测试版的交付。遗憾的是由于中介的公司人事调动,这个项目最终没有进行下去。

很快又一个重大考验落在了以我为首的网站开发队伍身上。这是一直从各方面扶持我们的深圳市信息化办公室交给我们的任务。要求是我们收集深圳市所有的网站,以PDF电子书的形式印刷在光盘上。同时要有一个完善的分类搜索系统。时间紧、数据量大,而且不允许出现任何差错。为了证明残疾人团队的开发能力,我和大伙都拼上了。而在送交初稿的前一天晚上,更是全民动员,站长第二天一大早要亲自带上光盘送去,但他也一起在熬夜。那个不眠之夜是我编程生涯中效率最高的一夜。不久后,这个项目终于完成,看着出自我们的头脑和双手的几千张光盘,我知道自己的努力没有白费,而自己的能力也提升到了一个新的境界。这个项目,在那些大公司看来也许是不值一提,可是对于一个核心成员仅五六人、而且全部是残疾人组成的一个项目组,是非常了不起的成就!

202_年12月,世界残疾人职业技能奥林匹克在印度新德里举行,我有幸代表中国的残疾人参加了其中编程项目的比赛。在中国,残疾人的就业问题是一个大问题,因此,这种残疾人的职业技能竞赛尤其有意义。202_年12月,我以广东省冠军的身份取得了202_年在上海参加全国比赛的资格。202_年8月,我在上海凭着多年的编程经验和创新精神,又取得了参加中国残疾人代表团出征印度的资格。遗憾的是,在赛场上,为了追求更好的界面效果,我耽误了一些时间,以至在最后因时间过于紧张,出现了一个致命的失误,将本来有希望得到的奖牌拱手相让。唯一的安慰,就是我的程序界面受到了印度裁判的称赞。

从国外回来,我又打开了.NET的大门,准备带领网站的几个做程序的残疾朋友进入.NET的开发。对未来,我充满了信心,而新的梦想,又开始浮现在我眼前!

现在我的身份,一半是软件工程师,一半是高级程序员。随着网站这个实体的发展,我也许会逐渐成长转型为软件架构师,但是我仍然会梦想着掌握最高的编程技术,仍然愿意承担基础性的编码工作。我相信,保持开放的心态,保持年轻的心态,再老也能做程序。当今的数字化时代给残疾人士尤其是肢残人士带来了新的机会和挑战。现在,纯粹脑力劳动的门槛,因为程序员门槛的大幅度降低而降低,给更多由于社会原因而教育程度相对偏低肢残人士提供了经过培训进入初级程序员行列的机会。但是,这些机会要想转化为现实,还需要更多更广泛的“无障碍”环境的支持。我的第二个梦想,就是梦想中国能够出现更多的“软件工厂”,而这些“工厂”又是向残疾人敞开大门的。

十年编程生涯,历经了风雨坎坷,而程序代码给我插上的翅膀在风雨中更加硬朗。今天,我喜欢在程序代码的世界中自由飞翔。让病魔去禁锢我的身躯吧,我的灵魂仍然在广阔的世界里翱翔„„

“我不是程序员”,杨过在电话那头淡淡的说。杨过是大学同学叫他的外号,因为他的气质和金庸造的杨过最像,连一些感情遭遇都像。

拒绝做程序员,虽然很火

杨过毕业那年软件公司很火,据说在中关村随便一个刚毕业的写C程序的毕业生月薪一不小心会上万。于是乎杨过不少的同学们毕业后纷纷改行编起了程序,跳进了大家现在也没说清楚的IT行业。说改行是因为杨过学的不是计算机专业,只是沾上边。

杨过那时根本不屑于做编程,虽然那时班里就他最喜欢打软件游戏。他觉得去编程不是什么“正经事”,所以毕业后他去了大连一家生产粮油的集团企业,杨过说是“一颗红心投入四化建设”。

由于不想拍马逢迎,杨过彻底打消了“磨豆油”的念头。不过他没有直接留在大连找工作,而是跑到偏远的老家和他青梅竹马的高中同学结婚去了。杨过的感情故事太有传奇色彩,跟金庸那个杨过有一拼。因为新婚的妻子在大连不好找工作,当时他留在家里,找了一个小公司用电脑给人设计零件图。

本来大多数人的工作就是混口饭吃,杨过也不嫌公司小,老老实实过日子吧。可让他接受不了是,公司的老板经常借口让他熟悉工作为名把他当民工使,一气之下杨过回了大连,几个月也是白干,工资没拿到一分钱,因为工资是三个月一发。杨过借口看病从老板那里借了几百块钱,老板也明白怎么回事,就给他了。直到现在,杨过还算是借着这个公司的几百块钱。

还得做程序员

杨过先自己回到大连,到人才市场一看,铺天盖地都是要程序员。“唉,不服气不行,社会发展趋势啊”。电话那头的杨过一直在叹气。

毕竟杨过是重点大学毕业的和计算机相关专业,那时还很吃香。他很快找到一家做寻呼台业务的软件公司。由于以前“没睡决时还看看计算机书”,他上手还挺快。干了一年,他跳到现在的这家公司,工资涨了一大截,在大连还算可以,老婆也接过来了。

杨过老婆刚开始在影楼做过一段,后来生病就没再做。杨过说现在工资也够两个人花的,也不逼她找了,也不好找。

我不是程序员,也不考虑明天

杨过现在的这家公司虽然也不算小,主要是做政府机构的一些单子,但为了生存业务还是比较杂。杨过感觉自己“天天这编一点、那写一点,从来没有好好从头做过一个正式的项目”。“我不是程序员,”他说,“可大家都这个样子。”

公司里只有杨过一个人结婚了,其它都是小伙子。“以前没睡觉还看看书,现在没心思了”,杨过调侃。

由于换了几个工作,杨过的国家基本保险也搞的乱七八糟。“我仔细研究过国家的一些文件,自己掏钱交那些基本保险没有什么用”,杨过现在和老婆都没有基本保险,自己存钱保险。

杨过无奈的笑笑,“也存了一些钱,前一段老婆病了都交给医院了。”

最近,看到论坛一贴子,主题是:我从校园出来的这几年。里面可热闹了,回复次数竟然达1425次,我读了几个钟都没看完,最后只能大概浏览一下了,不过里面大多数都说自己是程序员,并且出来工作都不容易,可谓是一部“千人辛酸史”了,从中多少反映出了中国不少程序员的生活状况,不知道打算做程序员或者现在正入门的程序员朋友看了作何感想?

说实在的,目前在中国的程序员大都过得不容易,而且普遍表现为“青春饭”状态,工作量大,导致对新知识的吸收能力随着年龄增大而降低,到了一定年龄(30后)后因为跟不上时代发展面临淘汰的厄运。虽然如此,但让我觉得欣慰的是的不少程序员或打算做程序员的朋友都表示坚持在程序员的路上走下去,因为我也是一名程序员,而且我对未来充满阳光,充满希望。

我记住了这样一个简单的道理:过去并不代表未来!相信没有人会不知道这个道理吧!大多程序员过去的辛酸大都可以归结于中国软件产业的发展的不成熟,而现在,中国政府制定政策大力扶持软件产业的发展,而且不少国际软件企业也看好中国的软件产业,纷纷把投资向中国倾斜,而且国内也开始有了不少比较成熟的软件企业,当然与国外的一些软件企业相比,还有一大段距离。但它表明中国的软件产业开始向规模化,规范化的方向发展了。

印度在软件方面,在我们看来是成功,印度政府在1991年就制定相关扶持政策,到现在也有10多年了,才取得成功,另一个在软件方面比较成功的亚洲国家——韩国,它也在1998年就制定了相关扶持政策,到现在也取得了一定的成功,用时不过4-5年,那么中国的软件产业呢?要多久才能成熟起来呢?引金山总裁雷军的话,3年左右有所成就,到全面成熟那就要比较长的时候了,但中国软件产业的成熟和前述国家成熟概念不一致:印度是定位于软件外包而取得成功,韩国定位于网络游戏取得一定成就,而中国呢?定位于什么呢?中国的定位是组合式的,不是某一方面,而是全面的。

可以相信:在未来,中国的软件产业无论在产业结构上,还是人才结构上都会具有优势。关于后者,你只要看看中国建立的50多所软件学院就可见一斑了,而且还有很多像印度的NIIT,北大青鸟(中外合资)等著名的国外软件开发教育机构进入中国,把先进成熟的教育模式带入了中国。

但是,以上的教育机构培养目标都不是精英程序员,而是最近大家抄的很热的“高级软件蓝领”,成熟模式中的软件开发团队中需要“金领”,“白领”,再到“蓝领”,而中国软件企业大多是小企业,最需要的是能独挡一面的“金领”,“白领”程序员,并不需要那么多只会Coding的“蓝领”程序员,我想很多混的不那么好的程序员,大概你是属于“蓝领”程序员吧!

任何时代,任何时候,机遇总是垂青于有能耐的人的。但是,即使你现在不是“金领”,或者“白领”程序员,你还不是精英,而仅仅是“蓝领”程序员或者还不是而想成为程序员的你听到这句话,千万不要泄气,要相信你自己是将来的精英,虽然现在的生存环境不是那么好,但是,恰恰有更多机会让培养自己独挡一面的能力,随着中国软件产业的发展,将会需要大量有数年工作经验,有整体系统架构能力的人才,而这些恰恰是任何学校都无法培养的人才,而现在的程序员,只要你们不放弃梦想,不放弃追求,继续努力,你们将成为软件产业的中坚力量!软件人才的佼佼者。

最好,告诉大家一项调查,硅谷的程序员的平均年龄是35岁左右,而且微软公司的核心开心者大都在35岁以上,可以遇见,程序员不在是“青春饭”,也会有“老来悄”的“老资格”了!

冬天来了,春天还会远吗?——谨饬送给所有的中国程序员。

如同一首民歌《三十里铺》所言,路行三十要有个歇脚的地方,人行三十也要喘口气。在IT,特别是程序员这个特殊的职业,流传一种说法:30岁是职场上的一道槛,事业上此时会发生了许多变化。30岁和程序员真有某种特殊的联系吗?程序员到底能不能做到30岁以上呢?

J曾是一名计算机老师,因为厌倦了学校平淡的生活,应聘到一家开发嵌入式系统的公司做底层程序员。刚开始的一两年,凭着一股热情和钻劲儿,投入到如火如荼的开发中,甚至购置了睡袋以备晚上加班。两年中,他掌握了极其专门的硬件参数、规格、开发细节等知识,成为部门的骨干。

逼近30岁的那几个月,他开始感到有些困惑。自己在公司虽然还算受重视,但是技术上翻来覆去就是那几样烂熟于心的东西,公司只需要自己惯性运作,实际不愿支付经验转换的成本;而公司的原始积累还远远未完成,自己仍然要和刚毕业的大学生一起加班,通宵达旦的干。因为缺乏人际交往,家里一直催着的婚姻大事,至今还八字没一撇。很多同时期来的人都打算往管理转了,可是自己对管理缺乏兴趣,还是乐于从事技术工作。下一步怎么办?J想到了辞职,但还没有什么方向。

相比J,M要幸运得多。作为清华计算机本科、中科院研究生毕业的高材生,M在做项目经理时就能够月收入2万,先后换过3家公司,对所谓30岁的说法不以为然。M以前的项目都是用CMM做,项目管理很好,而核心的也就几个人。手下带过的人,当然是刚毕业的最差,因为要获得30岁时的经验,显然需要一个过程。M最开始做程序是用Debug单步跟踪、分析、定位;后来开发图形界面的上层程序,哪怕半年写1万行,也觉得不叫程序;只有到后来转到做底层开发以后,虽然半年只写到202_行,但是却感到了写程序的快乐。M认为30岁以后程序员的体力不是问题,好的程序员不经常熬夜,有也是临时的。M接触过国外、比如印度的一些公司,技术人员们没有固定办公室,用互联网联系;很多人年龄都在35岁以上,技术很熟练,思想敏捷,让人敬佩。

M的职业观也很灵活。刚刚辞职在家,接点活干,非常忙。M有几个同学在外企做程序,日子过得更舒服,但是几年下来,个人、技术均无进展。究其原因,除了像微软研究院、Intel等一些少数外企还做些研发外,其它外企都是挑国外剩下的做,反而是国外一些小公司倒是把最核心技术放在中国来开发。其它像金山这样的一些本土企业应该也不错。做为程序员,机遇、环境、职业(项目)都很重要,它不但直接决定现在的收入水平,更决定未来不同的命运。而程序员这个行业又有极强的主导性,如何做好职业生涯的规划,恰恰是决定乾坤的关键棋子。

程序员圈子里流传过一套书叫做《编程之禅》和《编程之道》。创造力、逻辑、判断、体力、智力、手段都是所谓道的一部分,书中有个比喻,程序员编程时,只有硬盘在响。创造本身是一项神圣的工作,但是创造者的果实却是世俗的。换句话说,年龄的问题本是见仁见智的,但是“30岁的槛”却是世俗的。国内大部分公司还没有好到为程序员做好一生的职业规划的地步,因此路还得自己来走。不要让过度的重复劳动损害了创造力,也不要太迷信技术的力量,而忽略了世俗世界的张力。“三十里铺是一个小村庄,小村庄是我们经过的地方。经过的地方向着遥远的别处,遥远的别处还是三十里铺。”

做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。

我要说的将分成三部分,1.是我面试的具体经过 2.是由面试想到的 3.现今我应该做的。

当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以 在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我 没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net

1.面试经过

大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法我差不多也 达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的!

21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后 ,他给我出了一道编程题目,题目是这样的:

(由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成„„(乱码)

1)写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n 哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!于是很快我给出我的解法:

long fn(long n){ long temp=0;int i,flag=1;if(n<=0){ printf(“error: n must > 0);exit(1);} for(i=1;i<=n;i++){ temp=temp+flag*i;flag=(-1)*flag;} return temp;}

搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程序 优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序 进行了严格的分析,给出了改进了的方案!

long fn(long n){ long temp=0;int j=1,i=1,flag=1;if(n<=0){ printf(”error: n must > 0);exit(1);} while(j<=n){ temp=temp+i;i=-i;i>0?i++:i--;j++;} return temp;}

虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语 句改为执行加法指令,既达到要题目的要求而且运算时间上缩短了很多!而代价仅仅是增加了 一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑 着跟我说:“不错,这个程序确实在效率上有了很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的方案!天啊!还有优化!我当时真的有点崩 溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序!

long fn(long n){ if(n<=0){ printf(“error: n must > 0);exit(1);} if(0==n%2)return(n/2)*(-1);else return(n/2)*(-1)+n;}

搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为 什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简 直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就 把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们程序员服务的!”多么精辟的语言,我已经不想再说 什么了!接着是第二个问题:

他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:

fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9!

现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思再想了,我在 纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有 说什么,给出了他的思路:

定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后给出一个循环:

for(i=0;i<6;i++){ temp=temp+n/t[flag][i];}

最后得到计算值!呵呵,典型的空间换时间的算法!这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活 的问题,那时的我已经很放松了,因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过!

2.由面试想到的

真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从5:30一直走到7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋 醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我 肯定相信你,因为我从未怀疑过中国程序员的能力,我认为中国有世界上最好的程序员,我也 从未认为自己是高手,所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差,所 以我就从我的角度,我的所见所想来谈一些感想:

不错全世界都有优秀的程序员,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外 的优秀的程序员的比例到底是多少?台湾我不知道,中国100个程序员里有几个是优秀的呢?我 根本算不上,从上面的表现就足以说明一切了!是1个?5个?10个?50个?这个数字我不敢乱 猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算机呢?拿我们学校来说,计算机97级 4个班,98级5个班,99级10个班,202_级17个班,人多了,老师怎么办?我们学校的做法是让 研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学

生素质低!真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序员吗?学生 们能真正学到计算机知识吗?好了,我敢讲,在我们学校学习编程学生和优秀程序员(注意我 指的是优秀,只会编几个糟烂程序的人算不上)的比例应该是100:0.1 在这种比例下虽然我们中国学习编程的人铺天盖地,但是想想有多少个人能真正为中国软件 业发展作出贡献,有多少人能真正写出优秀的程序名扬海外!

我从学习编程以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东 西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?我问心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后Debug,但是这就足够了吗?这些天我偶尔发现我曾经写过的一个游戏,那是一年做为 其中一员时候,感觉应该拿点东西出来,然后花了一个星期的时间写出来的!程序不算复杂,但是用到了不少数据结构的东西,也用到了一些精彩的算法,加上windows的界面和游戏的可 玩性,写完后受到了不少好评,我当时真的很佩服自己!但是现在看呢:没有一句注释,好多 丑陋的函数名比如:void chushihua(),好多没有必要的变量,可以用简单语句完成工作的我 使用华丽的算法,大量使用全局变量.....,说不好听的话,六百多行的程序除了能运行之外就 是一陀屎!如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自原代码在 网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什 么问题呢?很值得思考啊!

还有一个疑惑是:我们说的和做的真的一样吗?我在学校的时候曾经受学院指派承办过一个 计算机大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以 来唯一敬佩的老师了,从程序调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语 句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了 一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,错,两个程 序都运行的很好,这时,那个同学开口了:“我的程序写的十分简捷明了,仅仅数行就完成了 题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。”我当时很是气愤,如果不 是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少 程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!哈哈,但是我,只能说 说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它!

3.我打算做的!

其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大 概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把 自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就象我前面说过的,我相信中国有世界上最好的程序 员,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来!真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是 我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师!

(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文 章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随 意转载!)

作者:金蝶中间件公司CTO袁红岗

不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基 本原则是可以遵循的。

1.扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果 不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能 写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想 想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到 一些基本算法的时候可能也会束手无策。

2.丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的 方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。

3.最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理 在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc^2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要 求时再考虑复杂的方案。

4.不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音 乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负 责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。

5.对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道 答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精 力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。

6.多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵 感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。

7.良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保 持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重 要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必 再加注释了,如果注释和代码不一致,那就更加糟糕。

8.韧性和毅力。这也许是”高手"和一般程序员最大的区别。A good programming is 99 weat and 1ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给 我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数 表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这 一条。

这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。

第五篇:一个程序员老总的年终总结

首先很感谢我的合作伙伴,他们虽然不会太多参与公司的管理与运营,但他们的智慧与经验对我是难得的财富,我在他们的身上有学不完的东东,年底了,我已提交一份全面的、详细的公司运营报告给他们阅读,我在这里写的总结,纯属个人方面的,也许对各位同行有一点点的启发或帮助,那样的话,我就可以过一个快快乐乐的新年了。

商务方面

在过去的一年中,FasterSoft在商务运营方面还是取得了不错的成绩的,比如通过了国家双软认证,成为NEC的软件外包提供商,成为珠海移动的开发商,成为吉林大学珠海学院与中科大软件学院的科研实习基地,同时还获得了一些机构的相关资助,等等,这些成绩得益于每一个员工的努力工作以及公司管理层的良好决策,当然很重要的一点是得到了很多朋友与同行的大力帮助。

成立一个公司并不难,难的是让它成长并发展起来,这需要我们充分利用各种资源,作为程序员出身,我认为自已在企业商务运作方面还是有很多的不足之处,比如有时较拘谨与腼腆,好象不太适应大场面,还有口才欠佳,现在在努力提高中,知识面也不够丰富,当年我曾号称是国内看书最多的程序员,什么文学音乐美术天文地理三教九流都通通阅读,但还是感觉不够,我是很羡慕余秋雨同学的,他好象什么都懂,而且讲起来有如长江之水滔滔不绝,黄河泛滥一发不可收拾,我看到福布斯作家财富排行榜中,他老人家是排首位的,阿蒙是一个艰苦的创业者,将他人家拿到这里来开侃,真是委屈了。

我觉得人的精力是有限的,我渴望学习很多很多的东东,但有时感到力不众心,应该说程序员从事企业运营方面,虽然有诸多的不足,但也有好的地方,比如我们对人坦诚,思维慎密,逻辑严谨,擅长于分析,最主要是要有激情,脸皮要厚。随着公司的发展,我也期待自已不断地自我提高与完善。

研发方面

呵呵,这是我的老本行,应该说我对FasterSoft过去一年在研发方面的表现是满意的,很多人也许知道我是搞VC++出来的,FasterSoft成立之初也是以Microsoft的技术方向为主,但通过一年的发展,FasterSoft现在已形成了两个主要的技术方向:一个是以Microsoft的.NET、C#、VC++、SQL SERVER等为主的研发团队,另一个是以JAVA、ORACLE为主的研发团队,公司的研发能力已达到较高的水平,对目前主流的开发技术都能运用自如,可以应付更高要求软件项目或产品的研发,这要感谢各位同事的努力学习与工作。

在研发管理方面,我们也形成了自已的特色,我们没有照抄照搬什么规范标准之类的玩意,那些CMM啊,ISO啊,我们高攀不起,我们只是一家小公司,我们需要快速的反应,需要高效率的沟通与工作,我们每一个研发小组通常是3-5个人,根据项目或产品的规模来灵活分配人员,你可以说我们是小作坊式的,但那又有什么关系呢,关键是我们能在规定的周期内完成产品或项目的研发任务,这是最重要的,其它的让它们见鬼去吧,看看我们的研发TEAM,我想到一个名词:极限编程即Xp,可能这是这样吧,我也没有时间去核准。

市场方面

这是我的弱点,也是我以及FasterSoft未来一年要重点提高的关键所在,我承认自已在市场营销的理论与实践方面都很缺乏,我也看了很多相关的书,但似乎不是看书就可以搞定的,中国软件业最弱的两个地方,一个是管理,另一个就是市场,面对日益猖獗的盗版以及摸不清搞不透的市场黑幕,我们是退缩还是前进?我开始的时候是很怕这方面的,用有限的资金去研发一个产品,我觉得有把握,但如果用有限的资金去投放在一个产品的市场上,我认为风险太高了,除非你的产品是非常独特的,只有你有,别人都没有,而且技术门槛很高,但试问国内有这种产品?

因此我是保守的,我觉得最好是投入的时候就可以看到收益,比如做软件项目,做软件外包,我看得见收入,但新产品的市场投入,有时就好象把MONEY丢进去了大海里,或许我的分析更加说明了我在这方面的愚昧无知,但不管如何,作为一家企业,必须面对市场,面对竞争,你不能因为困难而停滞不前,软件项目与外包很大的程度是为了生存,以及积累经验,企业最终还是必须要有自已的核心产品,并去市场上实现价值。期待来年,阿蒙能在这方面有所突破。

行政与财务方面

这也是公司很重要的方面,很感谢我的下属能很好地工作,使得公司其它方面能正常稳定地运作。作为企业的管理者,必须对公司的财务状况一清二楚,并能很好地做预算,能准确地算出项目的收益值与风险,我们的头脑里想得更多的应是赚钱,而不是守钱。

小结

呵呵,看完了吧,其实我只是简单地总结一下,也许有点班门弄斧,不过没什么,我脸皮厚,不在乎攻击,晚上一样能呼呼入睡,第二天又精神抖擞地投入工作与学习,每一天都要有新想法,新激情,所以我也期待CSDN哪天能旧貌换新颜,能带给我们一些亮点一点surprise!

一个程序员的成功转型
TOP