❶ 程序员节的节日起源
1、节日起源
创立“程序员节”最早是来自俄文《计算机世界》(《Компьютерра》)出版社的主编德米特里·门德列留科(Дмитрий Мендрелюк)在1996年7月15日的想法,当时计划将节日命名为“计算机用户节”,定在每年9月份的第一个星期五,称之为“纯净的星期五”(Чистая Пятница,按照当事人之一的说法,这样命名是为了刺激那些计算机病毒制造者)。
说到程序员节的来历,这要归功于一名在并行技术网页设计公司工作的职工——伦丁·巴尔特。2002年,他收集签名向俄罗斯联邦政府请愿,请求将这一天定为程序员节。2009年7月24日,俄罗斯联邦通信与大众传媒部提出了新的节日安排方案,设立程序员节。9月11日,俄罗斯总统梅德韦杰夫签署了这个法案,也就成为了俄罗斯的一个官方节日。这一行动在5天内得到了9800个投票支持。
程序员节也叫“溢出节”,即“选择第256天是取其一字节(8位)溢出的意思(从0开始,最大到255)”。(俄语:День программиста)是一个俄罗斯官方节日,日期是每年的第256天,也就是平年的9月13日和闰年的9月12日。
2、节日文化
选择256(=2^8)这个数字因为它能表示程序员所熟知的,一个字节是由8位二进制数构成的意义。256也是2的幂中最接近但不超过365的数。
十六进制中第256个数为0xFF,因此,在这个节日中,程序员穿24位RGB颜色代码为0xFFFFFF的白色服装进行庆祝。
3、节日活动
每年第256天(平年9月13日或闰年9月12日),是国际程序员节。每逢这一天,人们都要穿白色服装来庆祝。有网友称,毕业5年后,程序员从风度翩翩的美男子,变成了完全秃顶的“类人猿”。5年秃顶的程序猿们,命运悲催。以程序员为代表的IT男们的职业特征,再一次引发热议。
白色被选为程序员节的主题色。在红绿蓝24位深(RGB)颜色空间
程序员里,每种原色可以有256种级别(从0到255一共256个数值)的深浅变化,当三种原色都达到最大深浅值,即为十六进制的0xFFFFFF时,表示白色。所以全世界的程序员们会穿着白色来庆祝这一天。
每年第256天(平年9月13日或闰年9月12日),是国际程序员节。之所以选取256,是因为256是程序员熟知的8位元基本数字。程序员节是俄罗斯的官方节日,每逢这一天,人们都要穿白色服装来庆祝。有网友称,5年秃顶的程序猿,命运悲催。
就在程序员这一天,有网友称,程序员5年后就成为程序猿。据图片显示,一男子毕业时,青春焕发,充满生机,2年后,有些许沧桑。但5年后,程序员变成了完全秃顶,已经基本回归到原始类人猿,故而有程序猿之称。
❷ 如何成为优秀的程序员
首先是 来自自身内部的创造性的一面
虽然你可以从别人那里学到很多东西,也可以已有的东西中得到灵感。但真正的创意灵感来自于你自己。例如乔布斯,他不是一名工程师,也不是程序员,但他很有创意,他推动苹果公司创造了iOS,Siri。
或许你想问编程需要什么创意?任何人都可以在线或离线学习一些课程,阅读一些书籍就可以开始写代码了。但这些东西都是别人灌输给你的,你需要有自己的一些想法和创意,想出自己的框架。例如Dennis Ritchie,他就创造性地编写了C编程语言,而且目前这是使用最广泛的语言。
它像任何口语一样,每个人都知道一些语言,但不是每个人都是一个诗人或一个作家。你需要创造性的技能才能被称为伟大的诗人或作家。
其次是技术方面
你需要从一些编程语言开始。过去很多人开始是以C语言开始编写程序。然后很多人开始使用BASIC。现在人们从Python或PHP开始。其实从什么语言开始不重要。重要的是一旦你掌握了这些概念,你就可以编写算法并绘制流程图。
总的说来,如果你花太多时间做下面的事情,它可能会提高你的技能一点点,但你永远不会是一个好的程序员:
只知道看书的程序员用永远不会成为一个好程序员。俗话说All read and no practice makes Jack a ll boy,古人的话绝对是有道理的,不是说让你不要阅读,只是不要只有阅读,你应该通过应用你学到的东西来构建简单的应用程序。
通过记忆代码和算法。编程是思考而不是记忆。你可以拥有最好的记忆力,但是如果你没有自己思考,你永远不会是一个好的程序员。我们有计算机和互联网为我们记住事情,你不需要记住任何东西 , 你只需要了解在哪里以及如何找到你需要的信息。
通过编写你看的书中的单个函数和算法,即编写愚蠢的冒泡排序函数和类似的无用算法。
通过测试其他人的代码。例如是否使用测试软件或编写单元测试等
通过阅读和调试其他人的代码。这可能会在短期内有所帮助,但是只是在对方的代码写得很好的情况下,你可以从中学到别人的一些良好的习惯;但阅读不好的代码作为例子会教你养成不良的习惯,而且你或许一直会记得这个错误的习惯。从长远来看,花费太多时间阅读和调试其他人的代码将不利于你的成长。
让别人来管理你。编程就是为自己思考,你需要自己管理自己,也就是上面所说的,要有自己创造性的思考。
成为优秀的程序员最好的打开方式就是:
你必须自己完整的完成一个项目。不要过多地把重点放在阅读书籍,语法,算法和功能上,也就是说,在开始时不要太关注细节。你可以简单地坐下来思考一个你想为自己开发的应用程序/系统......如果实在需要的话,可以问你身边的同事/老师的想法,但是你必须有自己的思考并且自己独立去完成它。
一旦你想明白了,就把这个想法留在脑海,并且富有激情的去完成它,所有的一切都会慢慢地开始。你会想到你要实现的功能,你将开始研究如何实现这个或那个。
只有在这个时候,你才应该拿起一本书或在互联网上搜索关于如何实现这个你认为可以做的很酷的功能的答案。随着你的应用程序/系统的发展,你将会慢慢地开始考虑编写更简洁的代码,以便在将来也可以派上用场,让自己的工作更轻松。
只有通过把自己的想法带入生活,你才能学会如何成为一名优秀的程序员。你应该把自己看成是一个艺术家,而不是像编写代码的人那样去编译和运行。如果你只是在别人的代码上工作,或者只是阅读书籍等,你将很快失去动力,你永远不会发现或利用你的才华。
❸ java程序员如何加薪
1.决定走时,要高工资。
说实话,程序员和老板谈工资一般不会做很多的铺垫。几句话单刀直入,嫌弃工资太低。一般的老板都深知程序员是不愁工作的,谈话一开始都会象征性的加一点,或者找理由跳过去,变相去关心程序员的境况,或者继续画饼。如果你决定离职,就往一个老板给不了的高工资报。老板既然心有余而力不足,只好同意。
2.想换一个环境了。
这一条还是慎用。没有几个老板会相信的。他们会想,是不是他的公司环境不好?你是不是还有什么别的原因?你之前不上干的好好的,怎么突然就辞职了?当你提出辞职的时候,他都想好了各种招数拆招呢?
3.不明原因,正常辞职
如果找不到合适的理由时,强烈推荐用这一招。
如果你直接提出辞职,按照《劳动法》,公司最多也只能留你一个月的时间。既然决定了辞职,只要你坚定要走,理由就是要辞职。时间一到,老板有能拿你怎样。收拾好行李走人。
4.请长假。
这一招很管用,但是不推荐使用。
当你决定辞职的时候,告诉老板要请长假,比如回家2个月,或者失恋了出去散心1个月。程序员的岗位一般是承受不了这么长的周期的。情理上,老板只好让你辞职。但是,老板会想尽办法问你,请假的原因,请假做什么,我的公司需要你,你能不能把假期在缩短一点……总之,要学会随机应变。
就想出去看看
决定离职时,总不会想太长,但是每一次辞职,在那些等待的日子里,内心都是空荡荡的。特别是最后收拾桌上东西时,什么花啊,字帖,书籍,咖啡等东西都会留给同事。
❹ 如何提升程序员的代码编写能力
一、先列三个常见的开发场景:
1、拿到一个模块详细设计文档,大部分程序员的通常做法就是开始搭建界面代码,然后从第一个按钮点击事件或页面Load事件开始写第一行业务代码。写的差不多了,就运行一下,发现哪里不是自己想的那样,就改改,直到改到是自己预想的那样。
2、做完了一个功能模块或几块相关联的功能模块,输入111asd,发现新建正常、保存正常,就提交给测试人员。测试员用测试用数据、测试场景用例来测试,发现有问题,就登记bug。对于严重的影响下一步测试的BUG,测试员就用内部IM通知这个开发人员。对于不影响继续往下测试的BUG,测试员就登记下来,等程序员有空时处理。
3、程序员一般工作不希望大家打扰,所以开发起来就是开发。等手头开发告一段落,就看看BUG库。发现有与自己有关的BUG,就从第一个BUG开始看起。就开始通过IM和测试员掰扯起来(这不是个BUG啊、业务逻辑不是你想的那样啊、我这里不能重现啊、你给的信息描述不清晰啊),于是IM几来几往,甚至跑过去当面交流一番,甚至会拉扯上产品经理一起讨论,更甚者需要项目经理或产品经理发起一个会议来集体讨论一下
这是不是很熟悉呢?这就是大部分程序员开发的三个步骤:写代码、自测、修复BUG。
二、说好的代码设计、代码测试呢?
代码设计?那不是都有开发平台么,已经固化了啊。那不是维护旧功能做完善修改呢么,又不是写新代码,只能在现有代码基础上修改啊,你又不能大幅重构。
代码测试?你丫需求讨论期、产品设计期、设计评审期那么长,都把研发项目时间占光了,就留下2个星期让我们写代码,我们哪里有时间搞那么深的测试。还想让我们搞结对编程?还想让我们搞测试驱动开发?
而且你看测试,什么功能测试、集成测试、性能测试、安全测试、安装部署测试、升级测试、迁移测试、UAT测试,一大堆测试,测试也需要很多时间。
一个项目,需求讨论、产品范围规划与评审、产品设计与设计评审占了一个半月,开发+自测就一个月,测试占了一个半月,这就4个月了啊。
三、为啥程序员写代码总是写写测测?
刚才大家也都看到了,大部分程序员都是从界面代码开始写起,而且写一写,就运行一下看看。为什么会是这种开发方式?
那是因为大部分程序员缺乏在脑子中的整体建模能力。只能做出来一点,真实的感觉一下,然后再往下。
有些是产品经理的上游就有问题,没给出业务流程图(因为产品经理也没做过业务),也没画清楚产品功能操作流程图。
为啥没给出业务流程图?因为产品经理不熟悉业务,另外,产品经理也没有流程建模能力啊。为啥没画清楚产品功能操作流程图啊?因为不会清晰表达流程啊。
很多产品经理、程序员,都缺乏分类、分层、相关、先后能力,更别说总结、洞察能力。
这是基本训练,是一个做事头脑清醒的人必备的技能,这不是一个程序员或产品经理或测试员的特定技能要求。
我经常看书就梳理书的脉络,每看一本就写一篇总结。我过去闲扯淡还梳理过水浒传、红楼梦的人物关系图呢,其实就在事事上训练自己的关联性、层次性、洞察性。
我经常面试一个人时,我会问这样的问题:“你把我刚才说的话复述一遍,另外你再回答一下我为什么会这样?”,其实,我就在看一个人的细心记忆、完整梳理、重现能力,我也在看一个人的梳理、总结、洞察能力。
我个人写代码就喜欢先理解业务流,然后理解数据表关系,然后理解产品功能操作流,大致对功能为何这样设计、功能这样操作会取什么表、插入或更新哪些表,哪些表的状态字段是关键。
然后我写代码的时候,就根据我所理解的业务流、功能操作流、数据输入输出流,定义函数,定义函数的输入与输出。
然后,我会给函数的输入值,赋上一些固定值,跑下来看看能否跑通这几个关联函数,看看还需要怎样的新增函数,或者看看函数的输入输出参数是否满足跑通。
剩下的事,就是我填肉写详细逻辑代码了。
当然,大部分人没我这样的逻辑建模能力。怎么阅读理解也想象不出来,也没法定义函数。毕竟有逻辑建模能力的程序员都很少,100个人里有10个,已经是求爷爷告奶奶好幸运了。
那怎么办呢?
我建议是分离分工配合,这就是现实中没办法的办法。让有逻辑建模能力的人来设计函数框架、来设计工具来设计代码模板,然后让没有逻辑建模能力的人来填肉写详细逻辑代码。
我们可以先从最紧要的模块开始这么做。不紧要的模块,还让它放任自流,让熟练手程序员继续涂抹。
我曾经还让有头脑的程序员做榜样,给大家分享他是怎么规划函数的,怎么做维护性代码的代码结构改善的。但是发现效果并不佳,其他人并没有因此能做代码设计。可能逻辑建模能力是个人的基本素质,是从小到大训练成型的,不是你一个大学已经几年的人能够短时间内可以训练的。
所以啊,还是让能走的人先走,让从最紧要的模块开始这么做。
不必担心这样做后,因为过去一件事被分工(一个做代码框架一个填肉)成两个人做了会降低工作效率。我们很多的工作效率低就是因为半瓶子醋搞出来的,来回反复修改。
真是应了刘德华在电影里说的那句话:说你又不听,听又听不懂,听懂了又不做,做又做不好,做不好还不服气。
四、为什么大部分程序员不做代码测试或白盒测试或单元测试呢?
还是因为没有代码设计。因为没有函数啊。所以,一个按钮功能有多复杂,代码就有多长。我见过2000行的函数,我也见过1000多行的存储过程和视图SQL。怎么做白盒测试啊,这些代码都粘在一起呢,要测,就得从头到尾都得测。
所以啊,先学会设计函数,先写好函数,这就求爷爷告奶奶了。很多开发了5年的熟练手程序员,可能都未必会写函数。
函数的输入输出值就很有讲究。很多人都写死了,随着版本迭代,发现过去定义的函数参数不够用了,于是就新增了一个参数。然后,相关性异常就爆发了,其他关联的地方忘改了,到底哪些有关联,怎么查啊,本系统没有,没准其他系统就调用你了,你根本不知道哪个神经人曾经COPY过你的代码修吧修吧就改成了他的功能呢,而且里面的很多代码他看不懂也不敢删,只要他实现的功能正常了他也不管了。于是,你改了你这个函数,他的系统就莫名出错了。
所以,我一般会定义几个对象来做参数。另外,我也很注重函数的日志、函数的异常保护、异常抛出、异常返回。另外,我也很注重参数输入值的合法性校验。
所以啊,应该开发Leader们先制定函数编写规范最佳实践,输入输出参数怎么定义比较好,函数的返回值如何定义比较好,函数的日志记录应该怎么写比较好,函数的异常保护、异常抛出、异常返回如何写比较好。先教会一般程序员,先从会写函数开始啊。
当然,你光有一份规范,程序员们还是不理解、不实际应用啊。所以,还得Leader们做好典型的代码模板,里面是符合函数规范的代码框架,只有这样,一般程序员们才会照猫画虎适应了函数设计的编程习惯。
所以啊,我专门重新定义了leader的明确职责,其中第一个重要职责就是:负责工具/框架/模板/规范的制定,并且负责推广且普及应用落地。
你不明确定义Leader的这个重要职责,你不对这个职责做明确的KPI考核,谁尿你啊。你以为好的工具/框架/模板/规范是靠人们的热情、自发产生的么?我们还没有那么自觉高尚啊。
五、为什么大部分程序员不写注释啊?
我经常说一句话,千万别多写注释。为啥?
因为我们经常遇到的问题不是没有注释,而是更糟的是,注释和事实代码逻辑是不相符的。这就出现常见问题了:残存下来的设计文档是一个逻辑、注释是一个逻辑说明、真实代码逻辑又是一个,钟表多了,你也不知道正确时间了。
所以啊,产品文档、注释、真实代码,三者总是很难一致同步。我为了几百人研发团队能做到这个同步花了大量心血和办法,但我最终也没解决了这个问题,还把Leader们、总监们、我都搞的精疲力尽。
索性回归到一切一切的本源,代码,就是程序员的唯一产出,是最有效的产出。那么,让代码写的不用注释也能看懂,咱得奔着这个目的走啊。
为啥看不懂,不就是意大利面条式代码么,又长又互相交杂。
OK,我就规定了,每个函数不能超过50行。用这一个简单规定和静态代码检查插件,来逼迫大家尝试着写函数。有的函数属于流程函数,是串起其他函数的,有的函数就是详细实现函数,实现一个且唯一一个明确作用的。
有了流程函数和功能函数,而且每个函数不超过50行,这就比过去容易看懂了。
六、为什么大部分程序员不抽象公共函数啊?
我经常说一句话:千万别抽象公共函数啊。为啥?
因为大部分程序员缺乏抽象洞察能力。特别是有些积极热情有余、爱学习爱看书、半瓶子醋晃悠的二杆子,看了几本UML、重构、设计模式、整洁代码之道,就跃跃欲试了,还真敢给你抽象公共函数了。
一开始,他觉得80%相似,20%不相似,于是在公共函数里面简单写几个if..else做个区隔就可以。没想到,越随着版本迭代,这些功能渐渐越变越不一样了,但是这个代码已经几经人手了,而且这是一个公共函数,谁也不知道牵扯多少,所以谁也不敢大改,发现问题了就加一个if..else判断。
没想到啊没想到,这个本来当初公共的函数,现在变成了系统最大的毒瘤,最复杂的地方,谁也不敢动,除非实在万不得已,手起刀落。
所以,我平时告诫程序员,纯技术的、纯通用的,你们可以尝试搞搞抽象公共函数,对于业务的,你们还是简单粗暴的根据Leader们做的代码模板代码框架,乖乖的复制、修改、填肉吧。
你们啊,先从做模板做代码片段开始吧,咱们放到咱们内部代码片段开源库里,看谁的代码片段被别人复制的多,说明你的代码抽象设计能力越好了。那时候,我就大胆放心让你撒丫子跑了。在没有学会跑之前,给老子乖乖的复制、修改、填肉吧。
❺ 作为一个程序员,应该有哪些必须知道的事
1. 懂得分享。尽可能使用开源,并且当你有能力的时候,要对其有所贡献。聚全社会之智慧,胜过某些“大”公司之短视。
2. 公平竞争。尝试其他技术、框架、方法和观点。不要总以为只有你的选择才是可行的。别的选择也有可能比你的要强得多。要以开放的心态,来检验其他人的选择。
3. 不要攻击他人。像第2条所说的,不要仅仅因为别人恰巧使用.Net、Java或PHP就去攻击他们(我在这方面有一次教训)。有时,它们或许要比你所认为的更有效。只要别人不是一无是处,你就可以从他们那里学到很多东西。
4. 自我完善。尽量发布可以运行的代码。不要指望QA能给你找出所有的程序错误。要经常并且全面深入地测试你的代码。
5. 伤害他人要道歉。代码审查是一个不错但很少用的想法。指导经验比你少的程序员,有助于整个团队。不要公开批评他人。指导并不是贬低别人。别人有时候会接受,有时候不接受。其实,有时候你可能会从自认为水平不如你的人身上学到很多东西。
6. 未雨绸缪。动手写代码之前要尽量理解要解决的问题。要做原型、从网上查找实例、跟其他也做这个的人讨论或者只是练练手而已。构建你从未做过或用过的东西是个坏习惯。如果开始就有思路,结果可能会更好。
7. 拿得起放得下。不要害怕替换、重写、重构或者放弃垃圾代码。有时候,如果碰到可留可不留的代码,直接扔掉才是上策。永远不要爱上你的代码。
8. 平衡生活——学习、思考、绘画、唱歌、跳舞、工作、玩耍,每样都会一点。我喜欢Google的方式,在那里,你有20%的时间用来思考任何你认为值得做的事情。老板应该提供休息室、娱乐室或者一些能让人放松清醒的环境。
9.编程是一项艰苦的脑力劳动活;有时你的大脑确实需要休息一下。拒绝例行公事地每周工作80小时,否则你的工作质量将大打折扣,花费大量时间取得的成果将前功尽弃。另外,如何释放工作生活压力,可以参考伯乐在线的这篇文章:《3步释放工作和生活压力》。
10. 每天下午小憩一会。每天工作24小时不会让你更有效率。休息、回家,然后打个盹。通常,很多难题是在我回家的时候解决掉的,解决方法通常在我开车时或第二天早上突然想到。
11. 不要闭门造车。读读博客、学习新语言和框架、参与讨论以及看看同行在干什么。两耳不闻业界事,你就无法成为一名更优秀的程序员。
12. 保持好奇心。想想塑料杯中的种子:根向下长,枝叶向上长,没有人知道这是为什么,但是我们都是这样的。一般来说,在编程和技术世界,每天都有新奇东西出现。看!很神奇吧!每天学习,让你思维更广,技能更新,选择也就更广。如果你认为编程枯燥乏味,那么你要该换行了。
❻ 一个好的程序员至少应该具备哪些条件
楼上的几位显然误会我的意思了,我并不是说不应当写文档加注释注重团队精神,看看下面的一篇文章,那位三天就写出UNIX的他需要写文档注释和团队精神吗,他用不着。哪个高手没有一点傲气和自信,他之所以敢对用户说:拿到你想要的,然后滚蛋,你已经很幸运了!是因为他有这个资本。天才本就不循规蹈矩,那样他就不叫天才了。
MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder,
and why?”。我觉得挺有意思的,也来凑个热闹。排名不分先后。
Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还
是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据
说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前
身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在
Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN
TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封
喉,很快就写出了高性能的伯克利版TCP/IP。当时 BBN和DARPA签了巨额合同开发TCP/IP
Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿
个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你
怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯
伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把
Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同
事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯
发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI
的主要作者之一。
John Carmack,ID Software的founder和Lead Programmer。上个月和一个搞图形的师兄
聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许搞研究的和搞实
战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥。90年代初只要能在PC
上搞个小动画都能让人惊叹一番的时候,J哥哥就推出了石破天惊的Castle Wolfstein,
然后再接再励,doom, doomII, Quake...每次都把3-D技术推到极限。J哥哥的简历上说
自己的专长是"Exhaust 3-D technology",真是牛人之言不我欺的说。做J哥哥这样的人
是很幸福的,因为各大图形卡厂家一有了新产品就要向他“进贡"
,不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MS的Direct3D也得听
取他的意见,修改了不少API。当然,J哥哥在结婚前十数年如一日地每天编程14小时以
上,也是偶们凡人望尘莫及的。对了,J哥哥高中肆业(?),可以说是自学成才。不过
呢,谁要用这个例子来为自己学习不好辩护,就大错特错了。那 Leonardo Da Vinci还
是自学成才呢(人是私生子,不能上学)。普通人和天才还是有区别的。对了,其实偶们
叫“达分奇”是相当不对的,因为Vinci是地名,而Da Vinci就是从Vinci来的人的意
思。换句话说,Leonardo Da Vinci就是“从Vinci来的Leonardo”的意思。叫别
人“Da Vinci”就不知所谓乐。嗯,扯远了,打住。
David Cutler,VMS和Windows NT的首席设计师,去微软前号称硅谷最牛的kernel开发
员。当初他和他的手下在微软一周内把一个具备基本功能的bootable kernel写出来,然
后说:“who can't write an OS in a week?",也是牛气冲天的说。顺便说一句,D爷
爷到NT3.5时,管理1500名开发员,自己还兼做设计和编程,不改coder本色啊。
D爷爷天生脾气火爆,和人争论时喜欢双手猛击桌子以壮声势。 日常交谈fuck不离口。
他面试秘书时必问:"what do you think of the word 'fuck'?" ,让无数美女刹羽而
归。终于有一天,一个同样火爆的女面对这个问题脱口而出:"That's my favorite
word"。于是她被录取乐,为D爷爷工作到NT3.5发布。
Don Knuth。高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,
学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到 Anders Hejlsberg,
或者学Linux不知道Linus Torvalds一样,不可原谅啊。为了让文章完整,就再罗唆几句
吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别
人时收一两千美元,那些公司拿了code,加工一下卖出去就是上万上十万。不过也没见高
爷爷不爽过,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞
出了个 Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的编程比
赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code freeze,还附带2^n
美分奖励等等都是耳熟能详的,偶就不饶舌乐。
顺便说一下,高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可
谓字字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且没
有学究气,不失轻快跳脱。记得几年前读Concrete Mathemathics,时不时开怀大笑,让
老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知鱼之乐,更不知那
完全是高爷爷的功劳。说到写作高手,不能不提Stephen A. Cook。他的文章当年就被我
们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带
谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。
高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走,但他
捐献了好多作品,都可以在网上看到,比如着名的Mathematical Writing,MMIXWare,
The Tex Book等,更不用说足以让他流芳百世的Tex乐。
Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche
老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, 操作系统Plan 9的主
要作者(另一个是大牛人Rob Pike,
前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是
计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山
仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是
他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不
知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,
于是C在随后20年成就了不知多少豪杰的梦想和光荣。
Ken爷爷还有段佳话: 装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很
快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell
Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX
代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清
净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只
好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码
里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器
编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译
器。
(6)Rob Pike, AT&T Bell Lab前Member of Technical Staff ,现在google研究操作系
统 。罗伯伯是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M. Ritche开
发 Unix的猛人,UTF-8的设计人。他还在美国名嘴David
Letterman的晚间节目上露了一小脸,一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的
是,罗伯伯还是1980年奥运会射箭的银牌得主。他还是个颇为厉害的业余天文学家,设
计的珈玛射线望远镜差点被NASA用在航天飞机上。他还是两本经典,The Unix
Programming Environment 和 The Practice of Programming 的作者之一。如果初学者
想在编程方面精益求精,实在该好好读读这两本书。它们都有中文版的说。罗伯伯还写
出了Unix下第一个基于位图的窗口系统,并且是着名的blit终端的作者。当然了,罗伯
伯还是号称锐意革新的操作系统,Plan9,的主要作者。可惜的是,Plan9并没有引起多
少人的注意。罗伯伯一怒之下,写出了振聋发聩的雄文 Systems Software Research is
Irrelevant,痛斥当下系统开发的不思进取,固步自封的弊病。虽然这篇文章是罗伯伯
含忿出手,颇有偏激之词,但确实道出了系统开发的无奈:开发周期越来越长,代价越
来越大,用户被统一到少数几个系统上,结果越来越多的活动是测量和修补,而真正的
革新越来越少。
就在罗伯伯郁闷之极的时候,google登门求贤来乐。如果说现在还有一家大众公司在不
遗余力地把系统开发推向极致的话,也就是google乐。随便看看google的成果就知道
了。具有超强容错和负载平衡能力的分布式文件系统GFS
(现在能够用100,000台廉价PC搭起一个巨型分布系统,并且高效便宜地进行管理的系统
也不多哈),大规模机器学习系统(拼写检查,广告匹配,拼音搜寻。。。哪个都很牛的
说),更不用说处理海量并行计算的各式google服务了。Rob在System Software
Research is Irrelevant里萧瑟地说现在没有人再关心系统研究的前沿成果了。想不到
他错了,应为google关心。google网络了大批功成总是试图吸取系统研究的最新成果。
想必Rob Pike在google很幸福。愿他做出更棒的系统。
Dennis M. Ritchie, 既然Ken Thompson是我的偶像,新闻组上人称DMR的Dennis M.
Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当然,C的前
身是B,而B是Ken Thompson一手做出来的)。两人1983年分享图灵奖,是有史以来少数几
个因工程项目得奖的工程师(本来是唯一的一对儿,但Alan Kay才因为SmallTalk得奖,
所以就成了唯二的乐) 一个人一生能做出一个卓越的系统已经不易,DMR的C和UNIX长盛
不衰近30年,至今生机勃勃,DMR此生可以无憾的说。
D爷爷也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子,并在电路设计方面卓有
成就,还出了本颇有影响的书The Design of Switching Circuits,据说在交换理论和
逻辑设计方面有独到的论述。当然,D爷爷和他老爸是不同时代的人:他老爸的研究成
形于晶体管发明之前,而D爷爷的工作离了晶体管就玩儿不转乐。:-D
不要看D爷爷搞出了C,其实他最爱的编程语言是Alef,在Plan9上运行,支持并行编程。
Alef的语法和C相似,但数据类型和执行方式都和C大大不同。说到语言,D爷爷对后来
人有非常中肯的建议:抱着学习的目的来开发你自己的语言,不要冀望于它被众人接
受。这个建议不光对语言开发有用,也适用于其它大型系统的开发。别的不说,DMR后来
领导自己的团队在1995年和1996分别推出了Plan9和Inferno操作系统,又用多少人知道
呢?其实,D爷爷当初也没想过C会风行世界。他开发C的初衷和Eric S. Raymond
在Cathedral and Bazaar里阐述的一样,就是要消除自己对现有工具的不爽之处。谁
知D爷爷无心插柳,C竟然受到众多程序员的狂热拥戴,连D爷爷自己都大惑不解。在一次
采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。当
然C一度是Unix上的通用语言也是原因。但不管怎么说,D爷爷对编程语言出色的审美意
识奠定了C广为流传的基础。
最后八卦一下。D爷爷的业余爱好和NBA大牛Karl Malone一样:开卡车。不过D爷爷更喜
欢开NASCAR,而KM独爱巨无霸。J D爷爷自称心中不供偶像,如果一定要说一个,那就
是Ken Thompson了。现在Ken爷爷退休当飞机教练去了,而D爷爷当了贝尔实验室系统开
发部的头,整日忙于开支票。他俩合作20年,屡屡创造历史。这段令人神往的佳话,也
就长留你我心中乐。
P.S., 很多人都以为Brian W. Kernighan是C的作者。其实BWK只是写了那本经典K&R C。
据D爷爷说,他,Ken, 和Kernighan三人中,Kernighan最能写文章,他次之,而Ken写
得最少;但说到编程,Ken爷爷才是当之无愧的老大。
Edsger Wybe Dijkstra, 对,就是E.W. Dijkstra. 一提到EWD,很多人就会想起找最短
路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一样。
其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法,
无非是戴爷爷在1956年为了展示新计算机
ARMAC的计算能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最
短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒
太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛人们忙
着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于离散算法的专
业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才把这个算法发表
在Numerische Mathematik的创刊号上,权为捧场。:-)
EWD在多个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较
深刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。
戴爷爷大概因为最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工
作,并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要
知到,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情
愿,但经不住项目负责人Bram和Carel的轮番 “吹捧”:我们知道实时中断让您工作变
得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮弹彻底击穿,
接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围绕这个写出了自己的博
士论文,顺利戴上博士帽。
让戴爷爷真正成名立万的还是在X1上开发的Algo60,最早的高级语言之一。戴爷爷没日
没夜地工作了8个月,就搞出了Algo60,也因此获得了 1972年的图灵奖。因为Algo60,
戴爷爷发表了一篇石破天惊的文章:Recursive
Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,
所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。
而且Algo60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员
都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科
学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。
说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是
专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴
爷爷这样的牛人创造历史。他一边教数值分析(:-D) ,一边开始开发一个新的操作系
统,并培养计算机科学家。几年后,THE Multiprogramming
System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统
没有死锁变得容易的操作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小
组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就
喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作
来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷
从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好乐。
EWD太牛,结果他的故事也太多。先到这里吧。1973起,他的故事就在美国发生了。
Anders Hejlsberg,微软.NET的首席架构师,编程语言设计和实现的顶尖高手。他一手
做出了 Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和.NET的主要作者。这些作
品的名字足以为他立传。作为一个程序员,我在这样的大师面前实在无语。生子当
如Anders的说。李维的<>里已详细讲述了Anders的传奇故事,我就不用费舌了:
http: //java.mblogger.cn/iexploiter/posts/1505.aspx
Artima上有Anders谈C#的系列访谈。MSDN上有一段Anders导游的录像 。有兴趣可以去看
看牛人的丰采。
❼ 做一个“独立”程序员需要那几种知识
信息技术的更新速度是惊人的,程序员的职业生涯则是一个要求不断学习的过程,永远不能固步自封。本人在工作期间曾看见过很多程序员只要有闲暇时间就浏览一些没有太大作用的网页,在网上聊天,打游戏,浪费了大量的时间,十分不可取。而另外一种情况是,IT技术的日新月异使很多程序员眼花缭乱,什么都想学,却又不知从何学起,今天看看这个,明天学学那个,贪多不熟。
虽然IT技术发展迅速,但很多技术都是有规律可循,一些基本的概念、原理和方法还很通用,可以举一反三。本人根据自己的体会和经验,向那些刚刚踏入IT行业的新程序员们或正在迷茫的程序员们推荐程序员必须掌握的七种武器,有了这七种武器,虽不敢说笑傲江湖,但将自己立于不败之地还是可以的。
第一种武器:开发工具
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是我重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVA One会成为未来的主流开发工具之一。其次,如果能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C++ Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
第二种武器:数据库
为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
第三种武器:操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
第四种武器:网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器:DCOM/CORBA/XML/WEB Services
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
第七种武器:强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
❽ 我想学画漫画中的花,有教程可以教的吗
学漫画,选行业龙头培训——王氏教育。
王氏教育是一所有着20年历史的行业知名漫画教育品牌,至今在全国13个一二线城市都拥有直营校区。想知道王氏教育实体培训有多强,去校区现场考察下就知道了,如果暂时抽不出时间,也可以先进官网跟在线老师详细了解:
点击:【王氏教育全国实体校区课程-在线试听】 www.huixueba.com.cn/school/manhua?zdhhr-2y1r-143021782137329885
王氏教育较同类培训机构的优势:无论是创始人还是管理层都是漫画专业的专家,了解整个产业,需求,就业,无缝深入到市场,做到投资型教育机构所不能企及的细致入微。王氏教育的课程研发也一直是行业争相模仿的对象,每个专业都由一线公司的项目总监参与研发和用人对接,学员无缝输送对应企业。学员遍布全国各大漫画公司。
而在教学辅助研发上一直也是无出其右的存在,多年来拥有着巨大口碑的教学辅助产品包括:绘学霸APP:苹果商店应用市场均可搜索【绘学霸】下载,里面的漫画视频教程多达8000多套,涵盖了所有的漫画类型【点击进入】
www.huixueba.com.cn/Scripts/download.html
“绘学霸”电脑端免费漫画视频教程【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=304&zdhhr-2022n2y1r-143021782137329885
❾ 有哪些适合放在程序员办公桌上的高规格物件
1、牛斗熊;办公桌前的吉祥物、商战场上的招财宝!华尔街牛熊斗!
2、唐三彩:贴花点彩双龙咬瓶是许宝峰大师的作品,整个瓶子采用的是明清的古典风格,具有镇宅、招财的作用。
3、装饰器皿景泰蓝花瓶;铜龙凤瓶掐丝珐琅龙凤对尊,象证吉祥如意,生意一帆风顺。
4、中式南海观音佛像;作品为参照海天佛国普陀山南海观音圣像原样缩小虔造。金色的观世音菩萨,法相庄严,由国内一流的佛像雕刻师塑模雕刻,慈目低垂,面容圆满,庄严肃穆。
5、影青陶瓷海水纹佛手摆件;影青瓷,也叫青白瓷,是宋代景德镇窑工们在五代青瓷、白瓷的基础上烧制而成的一种特色瓷器,因其釉色介于青瓷和白瓷之间,白中泛青、青中泛白而得名。
办公桌摆件摆放风水介绍
根据五行相生相克,需要使用木制的办公桌才能给运势带来相生,切忌不能使用金属或者钢制办公桌,因水克火,故将在运势上有时财之险。
办公桌摆放风水中切忌不能让办公桌后方空门。何谓空门呢,即后方有门或者窗,在风水学上来讲为“失财失利”之位。可用窗帘来化解之。
老板办公桌,老板为“一家之主”故其运势也将决定着公司的兴旺与否。老板办公室中办公桌大小需要与整体的房间相协调,风水学上讲究“适合而安,不适为乱”,办公桌过大,显得房间很小,则会使得老板无力协调公司发展。员工办公桌切忌不能大于老板使用的办公桌,否则有反客为主之运势。
❿ 程序员等级划分:看顶级高手如何编程
有脑子,很听话,很认真,但基础不好,代码有局限性 这类型的程序员大多是工作一到两年的程序员,但和上面的不同,他们很有脑子思路很好,而且很听经理的话,做东西很认真,做不完了自己会加班写,学新的东西也很快,但是有一点不好的是,他们有很多理由说自己没时间学习基础,这些人一般是在学校没有学好,出来之后后悔了,学起来很认真,由于学了些新的知识,起点高,看不起基础的东西,从不想着没事去看看编程基础,看看算法,看看数据结构,总是以为我都能做出这样的项目了,还看那些小东西会很丢人的,于是在公司从不看回家更不想看,时间长了,技术会有很大的局限性,对某一块技术很不错,但是对其它技术不怎么好,于是在接到一个项目时,总喜欢使用自己现有的,会的技术去实现,转了一圈又一圈总算是把东西写出来了,而且还是加班完成了,但是代码的性能,稳定性,和效率上差的很远,扩展性也谈不上,时间一长,项目一多起来,就会出现多次反工,因为需求是会不断变化的,于是自己的代码也要变化,感觉很是理所当然,一个项目没事,接手的多了就麻烦了,新项目刚到手,老项目就出问题了,不是这里有点小毛病就是那个功能要升级,于是新项目放下,着手改老项目,手上能有三四个项目时,就会忙个不停,改的多了,没办法再改了就得重新设计,或是直接说这个功能实现不了。 其实在这个阶段的朋友很有潜力的,只要花点心思补习一下自己的技术缺陷,多看看高手的代码,写之前想一下,设计一下,自然事半功倍,千万不要有眼高手低的心态。 真正的高手Nb人物是怎么工作的------------程序员 1.不随便改变需求 他们不会主观的改变一些东西,不管是对还是错,如果要改的话他们会在开会时,或是私下跟你提出来,通过后再改,否则会按需求办事 2.不写没有思想的代码 在写功能时会加上一些人性化的功能,比果加个小图标,加一些验证,处理一些操作习惯,加加快捷键,处理好Tab顺序,等这些,不用你说,他们自己会处理好。 3.不写没有远见的代码 他们在写代码时会想,不会是单纯的实现功能,他要想,如果别人也要用这个方法怎么办,以后要改的时候怎么办,代码这样写是不是合理,是不是会影响性能,然后才会”吝啬“的出手。 4.不写不负责任的代码 我们写代码一是为客户用,二是方便其他人看,不单单是自己维护,要对自己的代码负责,从自己手上出去的代码代表的就是自己的脸,代码不好,人家会“打脸”的。他们不愿意挨打所以他们负责。 高手在编程效率方面可能并不比普通程序员快多少,因为他们会吝啬自己敲下的每一行代码。这种“吝啬”有两方面的含义,一是项目的架构性和整体性考量,二是从性能和优化的角度进行Coding。其实,这里所映射的是一个开发者的技术视野。 有多位技术专家强调项目执行时的全局观。面对一个项目,即使是团队中的普通一员,也要力求从项目整体架构的角度审视开发需求,对各个模块、接口和通信做最优化的预想和配置。这样可以从全局审视整个项目的技术布局,预判可能出现的问题。 在确定了整体之后,落实到具体的模块实现,每一行代码不但有上下文的考量与规划,还要具备模块间的整体布局。这是模块内的技术视野,比如接口的定义、注释的可读性、代码的执行效率等。当你写下一行代码前,要考虑它是否会对整个系统造成影响,是否方便其他接口进行调用,这些都是一个开发高手的“技术潜意识”。 据一些经常带领入门级开发者的技术经理介绍,多数人只考虑自己所负责的模块进行开发,缺乏一个全局性的技术视野和对代码性能苛刻的态度,这样虽然能按交付日期完成项目,却对项目质量和开发者的自我提高有很大阻碍。 开发高手是代码阅读者。大多数技术专家的代码阅读量是普通程序员的百倍,代码阅读的时间比写代码的时间要长得多。 多数程序员只把程序开发当成一份工作,他们在乎平台的前景、语言的优劣、报酬的高低;他们不愿为一个技术点反复钻研,不愿为一个bug精心测试,不愿为自身技术水平的提高多花时间。而开发高手往往具有单纯的技术梦想,愿意为技术付出自己全部的时间。