导航:首页 > 程序命令 > 程序员实现不了一些效果

程序员实现不了一些效果

发布时间:2024-10-05 01:05:23

A. 为什么越来越多的人不想做程序员

作为一个在帝都混日子的程序员,经常能看到不少同事转行。

最开始是一位年纪比较大了(快40岁,在这个行业算老了)的,回家开个小店去了。后面聊了聊,非常庆幸自己做出了辞职的决定,现在日子过得是滋润得很。

再之后,有回老家小县城干别的去了的。要准备好回县城,恐怕就很难找到IT行业的工作,除非是自己干。但小县城能干起来的活不多,加上那里这方面的人才也难找,也就基本认为是已经换行了。

最近,甚至身边有刚在17年毕业后加入来的成员,都不想干了,想要考公务员。现在究竟是一些什么原因,导致这样了了?

7.要创业了

不能光是说一些不好的,不想干了的人中,肯定有不少是想要自己出来单干的。创业也基本分为两种,一种是自己出来接单,成立公司开始为别的企业做项目。另一种是自己做产品。这两种其实都比较好起步,特别是第一种,有活就会盈利。而且成本基本只有人力和应酬,机器大部分也都是用户负责的。第二种则是比较赌的,要么很成功,要么很快烧钱结束。不管怎样,这都是不少程序员不再愿意为别人码代码的原因。

B. 程序设计者应该具备的品质是什么

程序员基本素质:
作一个真正合格的程序员,或者说就是可以真正合格完成一些
代码工作的程序员,应该具有的素质。
1:团队精神和协作能力
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,
也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力
量都是有限的,即便如linus这样的天才,也需要通过
组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是
不可想象的。独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研
发团队,进入商业化和产品化的开发任务,缺乏
这种素质的人就完全不合格了。
2:文档习惯
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发
流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而
作为高级程序员和系统分析员,这个比例还要高很多。缺
乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇
到极大的麻烦。
3:规范化,标准化的代码编写习惯
作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套
中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码
的移植和纠错,也有助于不同技术人员之间的协作。fan
s叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称
程序员。代码具有良好的可读性,是程序员基本的素质需求。再看看整个linux的搭建,
没有规范化和标准化的代码习惯,全球的研发
协作是绝对不可想象的。
4:需求理解能力
程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他
们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑
,有人曾经放言说写一个广 告交换程序很简单,这种人从
来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程
序员,你给他深蓝那套系统,他也做不出太极链的并访能力。性能需求指标中,稳定性
,并访支撑能力以及安全性都很重要,作为程序员需要
评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意
攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才
有可能有心得。
5:复用性,模块化思维能力
经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是
重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性
工作变成了熟练程序员的主要工作,而这些,其实是完全可
以避免的。
复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要
多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系
统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样
就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过
程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更
多时间和精力投入到创新的代码工作中去。
一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功
能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部
代码重写,大部分重复性工作无谓的浪费了时间和精力。
6:测试习惯
作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说
有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很
重要的特点就是问题发现的越早,解决的代价就越低,程序
员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早
的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能
在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测
试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定
性测试,用户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状
况的测试,频发的异常请求阻塞资源时的模块稳定测试等等。当然并不是程序员要对自
己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整
体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当
然这需要上面提到需求理解能力。
7:学习和总结的能力
程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年
内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。
善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就
更加高了。但是学习也要找对目标,一些小coding有些codingTO就是这样的coding上只
是一些Cfans们,他们也津津乐道于他们的学习能力,一会学会了asp,一会儿学会了ph
p,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目的追逐一些肤浅的,表面的东
西和名词,做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理,这样的技术
人员,不管掌握了多少所谓的新语言,永远不会有质的提高。
善于总结,也是学习能力的一种体现,每次完 成一个研发任务,完成一段代码,都
应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐
步提高,一个程序员才可能成长起来。
一个不具备成长性的程序员,即便眼前看是个高手,建议也不要选用,因为他落伍
的时候马上就到了。具备以上全部素质的人,应当说是够格的程序员了,请注意以上的
各种素质都不是由IQ决定的,也不是大学某些课本里可以学习到的,需要的仅仅是程序
员对自己工作的认识, 是一种意识上的问题。
那么作为高级程序员,以至于系统分析员,也就是对于一个程序项目的设计者而言
,除了应该具备上述全部素质之外,还需要具备以下素质:
第一,需求分析能力
对于程序员而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管
理者,他们不但要理解客户需求,更多时候还要自行制定一些需求,为什么这么说呢?

一般而言,进行研发任务,也许是客户提出需求,也许是市场和营销部门提出的需
求,这时候对于研发部门,他们看到的不是一个完整的需求,通常而言,该需求仅仅是
一些功能上的要求,或者更正规些,可能获得一个完整的用户视图;但是这都不够,因
为客户由于非技术因素多一些,他们可能很难提出完整和清晰,或者说专业性的性能需
求,但是对于项目组织者和规划者,他必须能够清醒认识到这些需求的存在并在完成 需
求分析报告的时候适当的提出,同时要完整和清晰的体现在设计说明书里面,以便于程
序员编码时不会失去这些准则。
程序设计者必须正确理解用户需求所处的环境,并针对性做出需求的分析,举例而
言,同样一个软件通过ASP租用方式发布和通过License方式发布,性能需求可能就是有
区别的,前者强调的是更好的支撑能力和稳定性,而后者则可能更强调在各种平台下的
普适性和安装使用的简捷性。
第二,项目设计方法和流程处理能力
程序设计者必须能够掌握不少于两到三种的项目设计方法(比如自顶至下的设计方
法,比如快速原型法等等),并能够根据项目需求和资源搭配来选择合适的设计方法进
行项 目的整体设计。设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影
响研发效果。
一个程序设计者还需要把很多功夫用在流程图的设计和处理上,他需要做数据流图
以确立数据词典;他需要加工逻辑流图以形成整体的系统处理流程。一个流程有问题的
系统,就算代码多漂亮,每个模块多精致,也不会成为一个好的系统。当然,做好流程
分析并选择好项目设计方法,都需要在需求分析能力上具有足够的把握。
第三,复用设计和模块化分解能力
这个似乎又是老调重谈,前面基本素质上不是已经说明了这个问题吗?作为一个从
事模块任务的程序员,他需要对他所面对的特定功能模块的 复用性进行考虑,而作为一
个系统分析人员,他要面对的问题复杂的多,需要对整体系统按照一种模块化的分析能
力分解为很多可复用的功能模块和函数,并针对每一模块形成一个独立的设计需求。举
个例子,好比是汽车生产,最早每辆汽车都是独立安装的,每个部件都是量身定做的,
但是后来不一样了,机器化大生产了,一个汽车厂开始通过流水线来生产汽车,独立部
件开始具有一定的复用性,在后来标准化成为大趋势,不同型号,品牌甚至不同厂商的
汽车部件也可以进行方便的换装和升级,这时候,汽车生产的效率达到最大化。
软件工程也是同样的道理,一个成熟的软件行业,在一些相关项目和系统中,不同
的部件是可以随意换装的,比如微软的许多桌面软件,在很多操作模块(如打开文件,
保存文件等等)都是复用的同一套功能模块,而这些接口又
通过一些类库提供给了桌面应用程序开发者方便挂接,这就是复用化的模块设计明显的
一个佐证。
将一个大型的,错综复杂的应用系统分解成一些相对独立的,具有高度复用性的,
并能仅仅依靠几个参数完成数据联系的模块组合,是作为高级程序员和系统分析员一项
最重要的工作,合适的项目设计方法,清晰的流程图,是实现这一目标的重要保证。
第四,整体项目评估能力
作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的
资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期
完成。评估项 目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的
困难,都需要大量的经验积累,换言之,这是一种不断总结的累计才能达到的境界。在
西方一些软件系统设计的带头人都是很年长的,比如4,50岁,甚至更老,他们在编码方
面已经远远不如年轻人那样活络,但是就项目评估而言,他们几十年的经验积累就是最
重要和宝贵的财富。中国缺这么一代程序员,主要还不是缺那种年纪的程序员,而是那
种年纪的程序员基本上都是研究单位作出来的,都不是从专业的产品化软件研发作出来
的,他们没有能积累那种产品化研发的经验,这也是没有办法的事情。
第五,团队组织管理能力
完成一个项目工程,需要团队的齐心协力,作为项目设计者或研发的主管人,就应
当有能力最大化发挥团队的整体力量,技术管理由于其专业性质,不大同于一般的人事
管理,因为这里面设计了一些技术性的指标和因素。
首先是工作的量化,没有量化就很难做到合适的绩效考核,而程序量化又不是简单
的代码行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工
作量。
其次是对团队协作模式的调整,一般而言,程序开发的协作通常分为小组进行,小
组有主程序员方式的,也有民主方式的,根据程序员之间的能力水平差距,以及根据项
目研发的需求,选择合适的组队方式,并能将责权和成员的
工作任务紧密结合,这样才能最大发挥组队的效率。
一个代码水平高的人,未必能成为一个合格的项目研发主管,这方面的能力欠缺往
往是容易被忽视的。
综上可以看到,作为一个主管研发的负责人,一个项目设计者,所需要具备的素质
和能力并不是程序代码编写的能力,当然一般情况下,一个程序员通过不断的总结提高
达到了这种素质的时候,他所具有的代码编写能力也已经相当不简单了,但是请注意这
里面的因果关系,一个高水平的项目设计者通常已经是代码编写相当优秀的人了,但是
并不是一个代码相当优秀的程序员就可以胜任项目设计的工作,这里面存在的也不是智
商和课本的问题,还是在于一个程序员在积累经验,逐步提升的时候没有意识到应当思
考哪方面的东西,没有有意识的就项目的组织和复用设计进行揣摩,没有经常性的文档
习惯和总结习惯, 不改变这些,我们的合格的项目设计者还是非常欠缺。
另外,为防止有无聊的人和我较真,补充一点,本文针对目标是作商业化的软件项
目和工程,那些科研机构的编程高手,比如算法高手,比如图象处理高手,他们的工作
是研究课题而非直接完成商业软件(当然最终间接成为商业
产品,比如微软研究院在作的研究课题),因此他们强调的素质可能是另外的东西,这
些人(专家),并不能说是程序员,不能用程序员的标准去衡量。
最后补充一点东西,一个软件项目研发的设计流程是怎样的呢?以通常标准的设计
方法为例,(不过笔者喜欢快速原型法)。
第一个步骤是市场调研,技术和市场要结合才能体现最大价值。
第二个步骤是需求分析,这个阶段需要出三样东西,用户视图,数据词典和用户操
作手册。用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这
里面包含了很多操作方面的流程和条件。数据词典是指明数据逻辑关系并加以整理的东
东,完成了数据词典,数据库的设计就完成了一半多。用户操作手册是指明了操作流程
的说明书。请注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之
前完成,完成这些,就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的
,因果颠倒,顺序不分,开发工作和实际需求往往因此 产生隔阂脱节的现象。
需求分析,除了以上工作,笔者以为作为项目设计者应当完整的做出项目的性能需
求说明书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方
(客户或公司市场部门)能够有真正的沟通和了解。
第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源
要求。作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方
法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说
明书,但是并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根
据评测结果和经验教训的总结,还要重新进行详细设计的步骤。
第四个步骤是详细设计,这是考验技术专家设计思维的重 要关卡,详细设计说明书
应当把具体的模块以最‘干净’的方式(黑箱结构)提供给编码者,使得系统整体模块化
达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格
的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求
分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之
,一个大型软件系统在完成了一半的时候,其实还没有开始一行代码工作。那些把作软
件的程序员简单理解为写代码的,就从根子上犯了错误了。
第五个步骤是编码,在规范化的研发流程中,编码工作在整个项目流程里最多不会
超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会
极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的
问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研
发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员
而言,bug永远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不
发补丁的时候吗?从来没有!
第六个步骤是测试。
测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,
可以分为模块测试和整体联调;按照测试条 件,可以分为正常操作情况测试和异常情况
测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再
解释。
总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1
年的外部测试都是正常的,因为永远都会又不可预料的问题存在。
完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然
日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软
件的运营状况并持续修补升级,知道这个软件被彻底淘汰为
止。
写这些步骤算不上卖弄什么,因为实话讲我手边是一本《软件工程》,在大学里这
是计算机专业的必修课程,但是我知道很多程序员似乎从来都只是热衷于什么《30天精
通VC》之类的,他们有些和我一样游击队出身,没有正规学过这个专业,还有一些则早
就在混够学分后就把这些真正有用的东西还给了老师。
fans乱嚷嚷,混淆视听,实际上真正的技术专家很少在网上乱发帖子的,如笔者这
样不知天高地厚的,其实实在是算不上什么高手,只不过看不惯这种对技术,对程序员
的误解和胡说,只好挺身而出,做拨乱反正之言,也希望那些还fans们能认真想想,走
到正途上,毕竟那些聪明的头脑还远远没有发挥应有的价值。
从程序员到工程师
从程序员升级到工程师大多数象我这样对软件有浓厚兴趣的人,毕业后义无反顾地
走进了企业,开始了程序员的生涯。那时,我们迷恋“大全”、“秘籍”一类的书籍,
心中只有代码。当我看到一行行枯燥的代码变成了能够打电话的设备,变成了屏幕上漂
亮的表格,变成了动听的音乐,成就感油然而生。我觉得自己也是一个出色的程序员了
。在用户的机房中苦熬三昼夜解决软件的bug,也成了一种可以夸耀的资历。五年前的某
一天,我把曾经让我兴奋自豪的大量代码和少得可怜的文档移交之后,来到了华为。这
里有更多的年轻人,我如鱼得水,可以充分发挥自己的想象力。依然是代码,依然是匆
匆地在纸上记下稍纵即逝的灵感(我们把它称作文档),依然是无休止地和bug作斗争。
当有一天,一个新来的同事拿着署着我的大名的文档,小心翼翼地来问我时,我发现自
己好象有点不认识它了。我心里有点沮丧,再看看代码,发现文档上记录的一些灵感已
面目全非。我当时不知道那位新来的同事感受如何,但我从那时起,好象意识到什么。
现在来看,那时的很多事情都是事倍功半。
我也见到了我的项目经理,一个个子较高,瘦瘦的年轻人,据说刚从美国回来,已
工作了五、六年。我听了心里很高兴,这回要一招一式地学两手。需求分析的时间是一
个月,项目经理和我们(实际上代表客户 )讨论了proposal中的内容,确定每一项都是
需要的。然后他把模块大致划分了一下,开始进入计划中的学习阶段。每个人在学习阶
段要写出功能描述的胶片,给其他人讲解,不知不觉中,项目组的所有人对项目有了整
体的了解。
他还安排了一些培训,如他们公司的软件开发模型、项目组中各角色的定义,以后
及时的培训不断,只要项目组中有需求,他总是把qa或相关的人请来,培训很专业。需
求分析完成后提交了一份四十多页的文档,当我看到这份英文文档中我写的部分整整齐
齐地列在其中时,我的感觉很复杂,有些喜悦,但更多的是苦涩,我以前怎么就从来没
有这样做过需求分析呢。
在我写文档的过程中,qa给我们培训过srs的写作模板,后来我还是不放心,让他们
一个有经验的工程师写了一段,我们再琢磨着照着写。这份srs虽然是多个人合写,但风
格一致,内容详实。更为可贵的是,一直到最后,这份需求分析的内容都没有改过,以
至于我们没有机会走一下他们的需求更改流程。
需求分析是项目的第一阶段,第二阶段的开发时间要根据需求分析的结果来确定。
当对方的首席技术官(相当于我们业务部的总体组长)来和我们讨论计划时,他们已列
出了对每个 模块的代码行数的预测,可能存在的风险。根据他们公司的生产率--300
行/人月,他得出了项目第二阶段需要多少周。
我们当时就提出了异议:1)公司对该项目需求很急;2)每月300行是否太少;3)
我们还有下载的源代码参考。他解释说,300行/人月是使得项目能达到他们质量标准的
经验数据,考虑到有源代码参考,生产率最多不能超过350行/人月。
当他问我们公司的生产率时,我脑袋里转了三个圈,没敢多说,大概六、七百行吧
。他沉默了一会儿,然后坚定地说,我们这个计划是建立在确保质量的基础上的,我想
你们到印度来开发软件,首先看中的应该是我们印度公司的
质量保证。我知道你们不缺乏软件开发人员,你们为什么不选择下载的软件呢。几句话
说到了我的痛处,现在国内的弟兄们还在为使用下载软件移植的产品四处奔波呢!
随后的开发活动有条不紊,我们老老实实地跟着做。系统测试计划、用例,概要设
计,集成测试计划、用例,详细设计,单元测试计划、用例,编码,单元测试,集成测
试,系统测试。一个完整的v模型开发过程,其中每个过程都有review。当我们对一些设
计的方法不太明白时,项目经理给我们发来了相关的资料,我不知道他当时是怎么想的
,一些基本的分析、设计方法是十年,甚至二十年前的软件工程书中就讲到的,印度每
个计算机专业的人员都是必修这些内容的。而我们除了对一些具体协议的代码很熟之外
,对这些常用的方法似乎一无所知。我感到一些羞愧,进城直奔书店,把他给我开列的
书找了出来,晚上躺在床上,仔细研读,我仿佛突然又遇到了能给我指点迷津的良师益
友。现在印度所已形成了强烈的学习风气。我回来后也推销了700多本书,这些书教我们
如何用工程化的方法开发软件,是成为一个软件工程师必读的资料。
我们的项目经理的计划控制能力很强,当有什么影响到项目计划的事情发生时,如
人员辞职、实验室搬家、某一模块预测不准(该模块是我们预测的),他总是采取必要
的措施,减少延期,调整计划。刚开始,我们对他们每天上午11点,下午4点下楼喝咖啡
还有点意见,后来也跟着喝去了,原来,喝咖啡时的交流非常丰富,从项目管理到设计
方法,从技术发展到风土人情,无所不包,对我们互相之间的理解,对团队的气氛很有
帮助。我们项目的QA也在适当的时候出现在我们的面前,我们对她的工作只有一些感性
认识。她每次参加会议时,手里时常拿着一个check list,项目经理准备相应的资料,
回答一些问题,她打着勾,或写着项目经理的解释。她给我们做培训时也很耐心,体现
出很好的职业素养,我至今还在怀念她给我们的帮助。
我从事软件开发已有九个年头了,可我现在仍然不能说自己是个合格的软件工程师
,更不用谈什么合格的管理者。我看到一份报道说,瑞士洛桑一权威机构把中国的科技
综合竞争力从原来的第十三位调到二十多位,原因是他们调整了一些评估标准,其中有
一条是中国合格工程师的可获得性非常低。想着弟兄们熬红的双眼,四处奔波升级的疲
惫身影,我有一个强烈的愿望:快把我们自己升级成合格的工程师吧!

C. 为什么有的程序员的代码结构混乱

程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的一切推倒重来。是的,他们决不会满足于简单的增量劳动。

或许这种微妙的心理定位可以解释:为什么程序员进入新项目组后宁愿丢掉旧代码重新写,也不愿意修修补补。他们认为旧代码简直一团糟。

但是,事实上真是这样吗?你之所以认为旧代码一团糟,其实是由编程的一个基本定律决定的,那就是:写代码容易,读代码难。

为什么你觉得旧代码异常混乱?因为读代码更难。

这大概就是代码Reuse难以实现的原因。 这就是你组里的每个人都喜欢用不同的功能将分割的字符串转换成一个数组。比起猜测旧的功能是怎样实现的,重新写一个自己的功能要简单和有趣多了。

作为这个公理的推论,你可以问问身边的程序员他们正在奋战的代码怎么样?“简直是一塌糊涂!”他们肯定会这样说。“我简直想推倒重来!”

为什么认为代码这么糟糕呢?“额,看看这个功能,竟然有两页长!完全不知道这些东西为什么在这里!完全不知道这些API是干什么的。”他们会这样回答你。

漫画:读别人代码是一种怎样的体验?

曾经,Borland的创始人 Philippe Kahn当初就是向记者们吹嘘:Quattro Pro会比Microsoft Excel要好用得多,因为它是从头开始编写的,全部都是新的源代码!

但是,认为新代码比旧代码好简直就是荒谬。旧代码是已经运行过的,测试过的。无数的bug在被发现前都上线运行过,发现之后程序员们可能在花了好些日子才修复了这些bug。这种修复可能是一行代码,也可能是几个字符,无数的时间和精力都花在了这些bug修复上。

当你决定抛弃这些旧代码从零开始的时候,你也丢掉全部前任努力的结果。

新代码一定比旧代买好?NO,重写可能会带来更大的风险。

对技术领导者来说,重写项目的代码也是一个异常艰难的决定。因为从公司层面说,重现代码甚至会威胁产品的市场竞争力。一旦决定重写代码,那么与竞品相比,你可能落后了2~3年——在软件行业,这时间可够长的。

你理想中的新代码会带来产品功能的提升▼

但事实上,即便重写的新代码可以实现旧代码的所有功能和需求,但是为产品带来的市场竞争力只有边际提升。因为重写用的新技术、新语言、新框架并没有给产品带来质的飞跃。

更不用说在重写的漫长过程中可能会遇到一些意外情况,比如:

1、缺钱:资金链的断裂▼

2、缺人:核心程序员离职

最终导致效果不佳:达不到原产品应有的所有功能和需求,白白浪费了时间和金钱,也丢掉了市场竞争力。▼

所以重写代码意味着,你在把自己置身于非常危险的境地,可能几年后你也写不出比以前更好的代码。你只是花了一大笔钱把已经存在的代码又写了一遍。

当你觉得眼前的旧代码很烂时,该怎么办?

你觉得旧代码写的很烂,那又怎样呢?它们已经上线,已经在实际运行中经受住了考验。所以当你发现前任留下的代码乱七八糟的时候,不妨冷静下来,从以下三个方面入手理解代码、改善代码:

1、代码的结构有问题

如果一段网络代码突然弹出了自己的对话框,应该是UI代码需要被处理。这些问题可以被解决掉,你要一次次小心地移动代码,重构,改变接口。还需要一位细心的工程师立马仔细地检查这些改变是否有问题,从而不打扰到其他人。事实上,甚至比较大的结构变化也可以不扔掉代码来完成。

大牛程序员Joel Spolsky回忆说,曾经在某个项目中,他和他的团队花了好几个月重新架构在一点上:把代码动来动去、清理、创建有意义的基类,并创建了模块之间的完美接口。但是他们始终非常小心翼翼,并没有产生新的bug、也没有丢掉任何旧代码。

2、代码的效率不高

曾经,Netscape的渲染代码被传非常缓慢。但事实上,这只会影响该项目的一小部分,这部分是你可以优化甚至重写的。你完全不必重写全部代码。优化速度的1%工作量,会让你获得99%的爆炸性提高。

3、代码写得很丑

有些代码真的写的很丑,比如Joel曾参与一个项目,开始用下划线做开始的成员变量约定,但后来改用更标准的“M_”。所以一半的功能用“_”开始,一半用“M”开始,这看起来真的很丑陋。但这个问题5分钟就能解决,而不用从头开始写全部的代码。

最后,你要记住,从头开始再写一遍并不意味着你会写出比以前更好的代码。因为你没有参与到上一个版本的创建,所以你其实根本就不算有经验。一旦你准备推倒重写,你可能会再犯一遍版本一犯过的错,甚至会产生更多的新问题。

一个总结:

面对糟糕的旧代码,Keep Calm & Carry On !

在大型商业项目中,推倒重来是非常危险的行为。当然,如果你是在做实验,想到新算法可以随时重写。

D. 涓轰粈涔堥粦椹绋嫔簭锻桦煿璁濡傛や箣榛戯纻

杩戝勾𨱒ワ纴闅忕潃IT琛屼笟镄勬寔缁𨱔鐑锛岀紪绋嫔煿璁甯傚満涔熸剤鍙戠箒钻c傞粦椹绋嫔簭锻桦煿璁浣滀负鍏朵腑镄勪竴锻桡纴铏界劧链夌潃涓瀹氱殑鐭ュ悕搴﹀拰甯傚満浠介濓纴浣嗏滃潙浜衡濈殑璐ㄧ枒澹颁篃涓岖粷浜庤炽备笅闱㈡垜灏嗙粨钖堢ぞ浼氩疄璺佃皟镆ュ皾璇曚粠澶氢釜瑙掑害鍒嗘瀽杩欑嶈存硶镄勪骇鐢熷师锲犮
浠庡煿璁璐ㄩ噺瑙掑害𨱒ョ湅锛岀紪绋嫔煿璁镄勬牳蹇冨湪浜庢暀瀛﹁川閲忓拰璇剧▼鍐呭广傜劧钥岋纴鎹涓浜涘﹀憳鍙嶆椠锛岄粦椹绋嫔簭锻桦煿璁鍦ㄦ暀瀛︿笂瀛桦湪涓浜涢梾棰樸傛瘆濡傦纴璇剧▼鍐呭规洿鏂颁笉鍙婃椂锛屼笌甯傚満闇姹傝㔉鑺傦纴瀛︾敓镞犳硶璺熼殢鎶链镟存柊镄勯熷害锛涙暀瀛︽柟寮忓崟涓锛岀己涔忓疄璺电幆鑺傦纴瀵艰嚧瀛﹀憳闅句互鐪熸f帉鎻℃妧鑳姐傝繖浜涢梾棰树娇寰楀﹀憳鍦ㄥ煿璁缁撴潫钖庨毦浠ユ垒鍒版弧镒忕殑宸ヤ綔锛屼粠钥屼骇鐢颎滆鍧戋濈殑镒熻夈
浠庢嫑鐢熷d紶瑙掑害𨱒ョ湅锛屼竴浜涘﹀憳琛ㄧず锛岄粦椹绋嫔簭锻桦煿璁鍦ㄦ嫑鐢熷d紶涓婅繃浜庡じ澶у叾璇嶃傛瘆濡傦纴镓胯洪珮钖灏变笟銆佸寘鍒嗛厤绛夛纴浣嗗疄闄呬笂寰堥毦鍏戠幇銆傝繖绉嶈櫄锅囧d紶涓崭粎璇瀵间简瀛﹀憳锛屼篃鎹熷充简锘硅链烘瀯镄勪俊瑾夈傚綋瀛﹀憳鍙戠幇瀹为檯𨱍呭喌涓庡d紶涓岖︽椂锛岃嚜铹朵细镒熷埌琚钬滃潙钬濄
浠庡﹁垂鍜岄璐规敛绛栬掑害𨱒ョ湅锛岄粦椹绋嫔簭锻桦煿璁镄勫﹁垂鐩稿规潵璇磋缮鏄姣旇缉楂樼殑锛屽逛簬涓浜涚粡娴庢浔浠舵湁闄愮殑瀛﹀憳𨱒ヨ达纴鏄涓绗斾笉灏忕殑鎶曞叆銆傜劧钥岋纴濡傛灉瀛﹀憳锲犱负鏁椤﹁川閲忔垨鍏朵粬铡熷洜瑕佹眰阃璐癸纴寰寰浼氶亣鍒板悇绉嶅汹闅惧拰阒荤嶃傝繖绉崭笉鍏骞崇殑阃璐规敛绛栬繘涓姝ュ姞鍓т简瀛﹀憳镄勨滆鍧戋濇劅銆
姝ゅ栵纴鎴戣缮娉ㄦ剰鍒颁竴涓鐜拌薄锛岄偅灏辨槸寰埚氩﹀憳鍦ㄩ夋嫨锘硅链烘瀯镞讹纴缂轰箯瓒冲熺殑浜呜В鍜屾瘆杈冦备粬浠鍙鑳藉彧鏄钖淇′简涓浜涚墖闱㈢殑瀹d紶鎴栨帹钻愶纴灏辩洸鐩鍦伴夋嫨浜嗛粦椹绋嫔簭锻桦煿璁銆傚綋鍙戠幇锘硅鏁堟灉涓嶅傞勬湡镞讹纴镊铹朵细镒熷埌澶辨湜鍜岃钬滃潙钬濄
涓轰简镟存繁鍏ュ湴浜呜В杩欎釜闂棰桡纴鎴戣缮杩涜屼简涓浜涚ぞ浼氩疄璺佃皟镆ャ傞氲繃涓庝竴浜涢粦椹绋嫔簭锻桦煿璁镄勫﹀憳浜ゆ祦锛屾垜鍙戠幇浠栦滑鍦ㄩ夋嫨锘硅链烘瀯镞讹纴鏅阆嶅瓨鍦ㄧ潃淇℃伅涓嶅圭О鍜屽喅绛栫洸鐩镐х殑闂棰樸傚悓镞讹纴鎴戜篃浜呜В鍒颁竴浜涘叾浠栧煿璁链烘瀯鍦ㄦ暀瀛﹀唴瀹广佹暀瀛︽柟寮忓拰灏变笟链嶅姟绛夋柟闱㈠仛寰楃浉瀵硅缉濂斤纴瀛﹀憳婊℃剰搴﹁缉楂樸
镐昏岃█涔嬶纴寰埚氢汉璇撮粦椹绋嫔簭锻桦煿璁鍧戜汉镄勫师锲犱富瑕佸寘𨰾锘硅璐ㄩ噺涓嶉珮銆佹嫑鐢熷d紶澶稿ぇ銆佸﹁垂鏄傝吹涓旈璐瑰汹闅句互鍙婂﹀憳镊韬阃夋嫨鍜屽喅绛栫殑灞闄愭с备负浜嗛伩鍏嶈钬滃潙钬濓纴鎴戝缓璁骞垮ぇ瀛﹀憳鍦ㄩ夋嫨锘硅链烘瀯镞讹纴涓瀹氲佸氩仛姣旇缉鍜屼简瑙o纴娉ㄩ吨鏁椤﹁川閲忓拰璇剧▼鍐呭癸纴钖屾椂涔熻佸叧娉ㄥ﹁垂鍜岄璐规敛绛栫瓑鏂归溃镄勪俊鎭銆傚彧链夎繖镙凤纴镓嶈兘镓惧埌鐪熸i傚悎镊宸辩殑锘硅链烘瀯锛屽疄鐜拌嚜宸辩殑镵屼笟姊︽兂銆

E. 绋嫔簭锻樼湡镄勫ソ涔堬纻(绋嫔簭锻樻湁浠涔堜笉濂)


鍒鏁村ぉ鐪嫔崕涓轰袱锏句竾𨰾涜仒鑻辨墠浠涔堢殑锛屽疄闄呬笂鍏朵粬琛屼笟镄勯《灏栦汉镓崭篃宸涓嶅氲繖涓鏁般傚叾浠栧ぇ澶氭暟绋嫔簭锻桦伐璧勭‘瀹为珮涓镣癸纴阆靛惊镄勮勫垯涔熻茬┒涓涓鐗╀緷绋涓鸿吹锛屾瘆濡傜▼搴忓憳鍙浠ュ仛娴佹按绾垮伐浜猴纴鍙鏄涓嶆効镒忓幓锅氥傛祦姘寸嚎宸ヤ汉鑳戒笉鑳藉仛绋嫔簭锻桡纴灏变笉濂借翠简銆备絾鏄锛屼篃浠呮よ屽凡浜嗭纴绋嫔簭锻樻湰璐ㄤ笂杩樻槸镞犱骇阒剁骇锷冲姩钥咃纴涓绉嶆瘆娴佹按绾垮伐浜虹█灏戜簺镄勫姵锷ㄨ呰屽凡銆
鐪嬩竴涓宀椾綅濂戒笉濂斤纴鐪嬬湅宀椾綅涓婄殑浜烘効涓嶆効镒忚╀粬浠镄勫╁瓙骞插氨鐭ラ亾浜嗐傛瘆濡傛垙瀛愪滑锛屽╁瓙杩樻病鍑犲瞾锻锛屽氨𨱍崇潃鍑洪亾浜嗭纴璇存槑闂ㄦ涘湪镆愮嶆儏鍐典笅鍙浠ュ緢浣庯纴钥屼笖鍒╃泭鏋佸ぇ銆傜儫钻夊唽灏樼数锷涢兘甯屾湜瀛愭圹鐖朵笟锛屽叕锷″憳涔熷笇链涜嚜宸卞╁瓙钥冨叕銆傚啀鐪嬬湅锛屽弽闱㈠吀鍨嬶纴宸ヤ汉鍐沧皯锛屾湁甯屾湜瀛愭圹鐖朵笟镄勫悧锛熶互杩欎釜镙囧嗳鐪嫔ぇ澶氭暟閮芥櫘阃氱▼搴忓憳锛岄梾闂浠栦滑镒挎剰镊宸卞╁瓙闀垮ぇ锅氢粈涔堣亴涓氩氨鐭ラ亾浜嗐
浣滀负涓涓鍗佸勾绋嫔簭锻樿佸叺锛屾垜𨱒ュ洖绛旇繖涓闂棰樸
棣栧厛锛屽緢澶氢笢瑗夸笉鑳界敤绠鍗旷殑濂戒笌涓嶅ソ𨱒ュ尯鍒嗐傚彧瑕佷綘阃昏緫镐濈淮鑳藉姏寮虹偣锛屽氨阃傚悎瀛︾紪绋嬶纴鑳藉叆闂ㄣ备絾鏄鍏ラ棬钖庡彂灞曞备綍锛岀湅链洪亣锛岀湅锷锷涚▼搴︺傚叾涓瀛﹀巻锛屾槸钖︽槸璁$畻链轰笓涓氾纴鎴栬呮槸钖︾啛鎭夎$畻链虹悊璁猴纴瓒婂埌钖庨溃瓒婇吨瑕侊纴褰卞搷链洪亣鍜屾彁楂樼殑涓婇檺銆
鍏舵★纴绋嫔簭锻桦伐璧勭浉瀵规潵璇存瘆杈冮珮銆傚傛灉浣犲湪35宀佷箣鎹炰竴鎶婂氨杞琛岋纴闾f病闂棰樸
链钖庯纴瑕侀吨镣硅寸殑鏄锛35宀侊纴瀵规疮涓琛屼笟镄勪汉閮芥槸涓阆揿潕銆傝繃浜呜繖涓骞撮缎锛屽傛灉浣犺缮鍦ㄥ熀灞傚矖浣崭笂锛岄兘涓崭细杩囧缑澶濂姐傚逛簬绋嫔簭锻桡纴濡傛灉鍦35宀佹椂鑳界嫭绔嬫圹𨰾呴”鐩锛屽甫锲㈤槦锛岄偅灏变笉鐢ㄦ媴蹇冦备絾鏄濡傛灉娌″﹀巻锛屽彲鑳芥満浼氲缮鏄浼氩皯涓浜涖
鎴戞槸灏忕尶鍝ワ纴鍗佸勾绋嫔簭锻樿佸叺锛屽叧娉ㄦ垜锛屾垜浠涓璧锋帰璁ㄧ▼搴忓憳镄勫汹𨱍戯纴涓璧锋墦镐鍗囩骇锛
镒熻阿澶存浔镄勯个璇凤纴镒熻夋垜璺熺▼搴忓憳𨱒犱笂浜嗭纴涓鐩村湪缁欐垜鍒嗕韩绋嫔簭锻樼浉鍏崇殑闂棰樸傞偅涔堜粖宸璁╁ぉ鎴戝氨鍐欎竴鍐欐垜镄勭湅娉曘傚厛璇寸粨璁猴纴绋嫔簭锻桦ソ涓嶅ソ锛岀瓟妗堟槸绠楁尯濂界殑銆
棣栧厛浠嬬粛涓嬫垜涓浜烘儏鍐碉细链浜2011骞存湰绉戞瘯涓氾纴姝︽眽镆愭櫘阃氩ぇ瀛︼纴涓扑笟鏄鐢靛瓙淇℃伅宸ョ▼銆2014骞寸爷绌剁敓姣曚笟锛屽湪閲嶅简闾鐢靛ぇ瀛︼纴涓扑笟鏄鐢靛瓙涓庨氢俊宸ョ▼锛岀洰鍓嶅湪鍗庝负瀛愬叕鍙稿伐浣溿傚矖浣嶆槸娴峰栬В鍐虫柟妗堥攒鍞锛屾垨钥呭彨锅氢骇鍝佺粡鐞嗐傜爷绌剁敓链熼棿鍦ㄥ煎笀镄勫叕鍙稿疄琛屼简16涓链堬纴鍏朵腑鍒氩幓镄4涓链埚仛镄勬槸镰斿彂锛岀敤镄勬槸C#锛屽仛浜嗕竴娈垫椂鍊椤彂鐜拌嚜宸辩湡镄勫叴瓒d笉澶э纴鑳藉姏涔熶笉澶琛岋纴钖庢潵杞铡诲仛浜呜繍缁淬傛瘯涓氭椂鍊欐病链夌暀鍦ㄨ繖涓鍏鍙革纴铡荤殑鏄鍗庝负瀛愬叕鍙革纴宀椾綅鏄瑙e喅鏂规堥攒鍞銆备笉杩囨梺杈圭殑钖屼簨杩樻槸浠ョ爷鍙戝拰娴嬭瘯涓轰富锛屼篃灏辨槸澶у舵櫘阆嶈寸殑绋嫔簭锻桡纴镐讳綋涓婃垜瑙夊缑绋嫔簭锻樻尯濂界殑锛屽緟阆囨媺榻愭墍链夋瘯涓氢笓涓氭潵鐪嬶纴绠楁槸姣旇缉楂樼殑锛岄珮镄勫师锲犱篃寰堢亩鍗曪纴闇姹傚氾纴浜у嚭濂姐傚叿浣揿师锲犲备笅锛
1
寰呴亣鏂归溃锛屼负浠涔堣侀珮涓浜涳纴鏄闇姹傞噺澶с傚ぇ姒傚彲浠ュ够𨱍充竴涓嬶纴20骞村墠链𨱔镄勬垨钥呬粠浜嬫渶澶氱殑鏄浠涔堣屼笟锛熸槸宸ュ巶镄勫伐浜猴纴鍏锋湁涓瀹氱殑鎶链鑳藉姏锛屽湪宸ュ巶鐢熶骇绾夸笂鐢熶骇浜у搧銆傜幇鍦ㄦ渶𨱔镄勬槸浠涔堬纴鏄浜掕仈缃戯纴鏄搴旂敤锛屾槸鏅鸿兘镓嬫満銆备换浣曟柟闱㈤兘绂讳笉寮杞浠跺簲鐢锛岄偅涔堣蒋浠跺簲鐢ㄥ氨闇瑕佹湁浜烘潵寮鍙戯纴涓岖℃槸浼犵粺镄勯摱琛岋纴宸ュ巶锛屽埗阃犱紒涓氾纴杩樻槸鏂板瀷镄勪簰镵旂绣锛岄氢俊绛夌瓑锛岄偅涓琛屼笟涓嶉渶瑕佸簲鐢锛屼笉闇瑕佸紑鍙戣蒋浠躲傜幇鍦ㄤ綘铡婚摱琛屽姙涓氩姟锛屾槸涓嶆槸涓涓狝PP灏卞熀链涓婃闷瀹氥傜幇鍦ㄤ綘铡绘敛搴滃姙镓嬬画锛屾槸涓嶆槸涓涓狝PP灏辫兘鎼炲畾銆傞渶姹傞噺鏄鐪熷ぇ鍟娿
2
寰呴亣鏂归溃锛屼负浠涔堣侀珮涓浜涳纴鏄浜у嚭鏀剁泭楂樸傛瘆濡傜幇鍦ㄦ坠链烘父鎴忥纴鐜嬭呰崳钥锛岀粷鍦版眰鐢燂纴铡熷0锛屾瘆濡傞樋閲屽反宸达纴浜涓滆繖镙风殑璐鐗╃绣绔欙纴杩欎簺鍏鍙哥殑鏀剁泭姣旀槸闱炲父楂樼殑锛屼綘涓瀹氩惉璇磋繃鑵捐浜哄潎80涓囧伐璧勭殑璇存硶銆备骇鍑洪珮锛岄偅涔埚緟阆囧繀铹堕珮銆傛瘆濡傛垜鐜板湪鍦ㄧ殑鍗庝负瀛愬叕鍙革纴锅氭暣浣揿氨涓氱幆澧冧腑寰呴亣镶瀹氭槸灞炰簬澶撮儴镄勮繖镓规°
3
绋嫔簭锻树负浠涔堣繖涔堢炵桡纴鍏跺疄璺20骞村墠宸ュ巶閲岃竟镄勬妧链宸ヤ汉娌″尯鍒銆20骞村墠鏄姣忎汉鍓嶈竟涓涓锷犲伐杞﹀簥锛岀幇鍦ㄦ槸姣忎釜绋嫔簭锻橀溃鍓崭竴鍙扮数鑴戯纴閮芥槸闾d箞1-2骞崇背镄勭┖闂达纴閮芥槸镓嬭压娲诲悆楗锛屽彧鏄镞朵唬鍙树简锛屽叾瀹炴ц川娌℃湁闾d箞澶у尯鍒銆傜幇鍦ㄥ緢澶氲存硶鏄缂栫▼閮借佷粠灏忓﹀紑濮嬩简锛屼粬镄勫繀瑕佹у拰浠栫殑链夋晥镐ф槸阃愬勾鎻愬崌镄勶纴鏅阃氭皯浼椾细瓒婃潵瓒婃櫘鍙娄互鍙婇傚簲瀵硅櫄濮垮眬绋嫔簭锻樼殑鐞呜В銆
镞朵唬鍦ㄥ彉锛岃佹寔缁瀛︿範锛屼笉鑳借惤浼嶃傚氨浠庡圭▼搴忓憳镄勫嵃璞′竴镙凤纴涓嶉渶瑕佷互濂藉囨垨钥呯壒娈婄殑鐪煎厜𨱒ュ瑰緟锛屾湭𨱒ワ纴姣忎釜瀹跺涵锛屽彧链夋湁涓涓浜叉垰鎴栬呮湅鍙嬫槸锅氱潃绋嫔簭锻樼殑锘烘湰宸ヤ綔锛屼笉闇瑕佸ぇ𨱍婂皬镐銆
绋嫔簭锻樻湁涓链夋剰镐濈殑鐗圭偣锛屽氨鏄浠庝簨镄勪簨𨱍呮湁闱炲父楂樼殑瑙勬ā鏁堢泭钬斺旇勬ā瓒婂ぇ锛屾垚链瓒娄绠銆
涓句釜渚嫔瓙锛氩井杞寮鍙慜ffice锛岄渶瑕1000涓囩编鍏冩垚链锛屽崠涓浠绊ffice鏄100缇庡厓锛屽垯鍗10涓囦唤镞讹纴鏀舵敮骞宠銆备絾鏄涓嬮溃鏄鍏抽敭锛氩悗闱㈡疮涓鍗栦竴浠斤纴鍙浠ヨや负鏄鍑璧100缇庡厓锛屽洜涓烘垚链涓嶉殢镌瑙勬ā钥屼笂鍗囥傚綋铹惰繖鏄鐞嗘兂𨱍呭喌銆
绫讳技锛屼綘寮涓涓缃戠珯锛1000涓浜鸿块梾锛屾垚链涓1000锛屽垯涓涓囦釜浜鸿块梾镞讹纴鎴愭湰澶ф傚湪1250锛岃屼笉鏄10鍊嶃
鍙嶈繃𨱒ワ纴锅囱句綘寮瀹炰綋镄勪功搴楋纴闆囦剑20涓浜猴纴鎴愭湰涓1000锛屽垯浣犲啀寮涓瀹朵功搴楋纴闾d箞鎴愭湰蹇呯劧涓2000锛屽氨鏄杩戜箮鎴愬嶅为暱镄勚傚叾镓╁紶镄勮竟闄呮晥搴斾笉鏄寰堥珮銆
杩欐槸锲犱负锛岀粷澶у氭暟瀹炰綋琛屼笟锛岀‖浠堕兘鏄鏀鍑虹殑澶уご锛屾棤娉曢伩鍏嶏绂鍞镫杞浠惰屼笟锛岀‖浠剁浉瀵逛究瀹滐纴钥屼汉锷涢潪甯歌吹锛屾墍浠ユ墿寮犲规槗銆
镓浠ワ纴寮鍏鍙哥殑璧勬湰瀹舵洿鍏冲绩镓╁紶锛氩备綍浠1000涓囩敤鎴峰炲姞鍒1涓囩敤鎴凤纴锲犱负鐢ㄦ埛瓒婂氾纴鎴愭湰瓒娄绠锛岃繖涔熸槸startup钬灭儳阍扁濈殑铡熺悊銆傛崲鍙ヨ瘽璇达纴鐢ㄦ埛鏁拌窡鍒╂鼎鎴愮嚎镐х殑姝f瘆锛屼絾鐢ㄦ埛鏁拌窡鏀鍑哄彧鎴愮被浼煎规暟镄勫叧绯汇备竴涓狲tartup鐜板湪链100涓囩敤鎴凤纴鏀跺叆100涓囷纴浣嗗紑鍙戝拰缁存姢闇瑕300涓囷纴姣忓勾浜200涓団斺斾絾涓嶈佺揣锛屽傛灉鐢ㄦ埛鑳芥墿澶у埌500涓囷纴鏀跺叆灏辨槸500涓囷纴寮鍙戝拰缁存姢鍙鑳戒篃鍙闇瑕400涓囷纴姣忓勾灏卞噣璧氢简锛岀敤鎴锋墿澶у埌5000涓団斺旀伃锽滀綘锛屽叕鍙镐笂甯备简锛岄噷闱㈠緢澶氢汉璐㈠姟镊鐢变简銆傝繖绉嶆ⅵ𨱍抽┍锷ㄤ笅锛岃祫链瀹舵湁蹇呰佺渷闾300涓囩殑浜哄姏阍变箞锛
鐢ㄦ埛鏁拌嚜铹剁敱浜у搧璐ㄩ噺鍐冲畾锛屼骇鍝佽川閲忓垯鐢辩▼搴忓憳浠ュ强鍏朵粬镵屼綅鍐冲畾銆傝繖灏卞喅瀹氢简璧勬湰瀹舵洿娉ㄩ吨鐢ㄦ埛鍜屼骇鍝佽川閲忥纴钥屼笉鏄绋嫔簭锻樻嬁澶氩皯阍憋纴浠栦滑镒挎剰澶氩紑镣归挶锛屼互鎹㈠彇绋嫔簭锻樼殑蹇犺瘹鍜屽崠锷涖
绋嫔簭锻樿繖涓镵屼笟镄勭‘鏄鏅阃氭妧宸ワ纴鏄宸ヤ汉阒剁骇銆备絾鎴戜釜浜烘渶澶х殑镒熷弹鏄锛氲繖鍙鑳芥槸浜虹被鏂囨槑涓绗涓涓鍑虹幇镄勬妧宸ヤ腑闇瑕佺儹𨱍呭拰澹姘旂殑宸ョ嶃傛崲鍙ヨ瘽璇达纴浠庡墠镄勫伐浜猴纴澹姘旈珮浣庛佹妧鑳界啛缁冧笌钖︺佸垱鏂扮簿绁炲备綍锛屽规暣涓宸ヤ笟灞傞溃褰卞搷涓嶅ぇ锛屽洜涓烘疮涓浜虹殑宸ヤ綔姣旇缉锲哄畾钥屼笖绠鍗曪纴姣斿傞摱琛屾敹阈跺憳锛屾壂澶ц楃殑锛涗絾鏄绋嫔簭锻树笉涓镙凤纴涓娴佺殑绋嫔簭锻桦傛灉澹姘旈珮鑳藉姏寮猴纴链夌簿锷涳纴涓涓椤5涓10涓浜屾祦绋嫔簭锻桦お姝e父銆傝呖浜庣涔濇祦镄勭▼搴忓憳锛屾洿鏄鍙链夊嵄瀹筹纴娌℃湁璐$尞锛屾槸灞炰簬镰村潖钥咃纴瀹屽叏钖﹀畾浜嗕汉娴锋垬链銆
镓浠ヨ繖灏遍犺嗕简浼犵粺镄勨沧崲璋侀兘鑳藉共锛屼笉骞蹭綘婊氲泲钬濈殑瀵瑰伐浜虹殑钄戣嗐傚氨缇庡浗钥岃█锛岃祫娣辩殑绋嫔簭锻樻垒宸ヤ綔瀹规槗绋嫔害杩滆儨浜庡簳灞傜殑缁忓巻锛屾敹鍏ュ线寰涔熻儨杩囥
褰撶劧镶瀹氭湁浜鸿存闷绉戠爷镄勚佹敛搴滃畼锻树笉鏄杩欐牱鍟婏纴闂棰树汉涔熶笉鏄宸ヤ汉瀵瑰惂锛熸垜璇寸殑鏄鏅阃氢骇涓氩伐浜恒
杩欐槸鍏朵竴銆
鍏朵粬铡熷洜澶у氭暟锲炵瓟涔熼兘鎻愬埌浜嗭细姣斿傝村为暱澶蹇锛屽煿璁璺熶笉涓娿傛湁浜鸿翠笉瀵瑰晩锛屽煿璁鐝鍒板勯兘鏄銆傞梾棰樻槸锘硅链韬镄勮川閲忔湁澶氶珮锛屾槸鍊煎缑镐鐤戠殑锛屼竴涓涓婂崌镄勮屼笟锛屾哕镄勪汉鍙浠ヨ交𨱒炬垒鍒板ソ宸ヤ綔锛屼綍蹇呭幓褰撹佸笀锛熸墍浠ュ叾瀹炲煿璁鐝鍑烘潵镄勪篃鐩稿归兘鍒濈骇銆
姣斿傝村伐浣灭疮銆佺箒蹇欎篃灏辩舰浜嗭纴瀵规櫤锷涙妧鑳藉拰鐭ヨ瘑缁撴瀯瑕佹眰涔熸瘆杈冮珮銆备綘浠ヤ负缇庡笣𨰾涗竴鍫呜磋嫳璇鍗楄厰鍖楄皟镄勭Щ姘戠▼搴忓憳鏄澶氭や竴涓撅纻瀹炲湪鏄链鍦颁汉涓崭簤姘斿晩銆傝呖浜庤寸疮姝荤殑闂棰桡纴𨰾垮懡鎹㈤挶镄勯梾棰桡纴涓锲芥垨璁稿瓨鍦锛岀编甯濆緢灏戙傝屼笖鎴戠悽纾ㄧ潃锛岃繖绉嶅伐浣滃叾瀹炲唴鍦ㄥ己搴﹂潪甯搁珮锛屼絾涓锻冲湴澧炲姞镞堕棿鍏跺疄涓嶅垝绠楋纴姣斿傛垜涓澶╁共8涓灏忔椂锛屼骇鍑100%锛10涓灏忔椂锛屼骇鍑115%锛14灏忔椂鍙鑳藉彧链125%銆傝屼笖锛岃秴杩10涓灏忔椂锛岃繃鍑犱釜灏忔椂灏辫窇璺浜嗭纴鍏鍙告崯澶辨洿澶с傛墍浠ユ垜鐩磋夋槸996鍏跺疄鏁堟灉链蹇呯湡澶氩ソ銆
杩樻湁涓涓閲嶈佸师锲狅细璐㈠瘜鍜屾祦阃氲浆绉汇侷T鍜岀▼搴忓憳镄勫埄娑﹂櫎浜嗗垱鏂拌缮𨱒ヨ嚜鍝閲岋纻杩樻潵镊瀵逛紶缁熻屼笟镄勬寻铡嬨傛瘆濡备互鍓嶅紑涓涔﹀簵锛岃侀泧浣20涓浜猴纴绉熷満鍦帮纴鐜板湪浣犲垱涓氩紑浜嗕筜椹阃婏纴鍗栦功鍙鑳藉彧闇瑕2涓镰佸伐2涓缁忕悊灏卞彲浠ワ纴闾d箞镰佸伐鍜岀粡鐞嗙殑鏀跺叆镊铹跺彲浠ラ珮涓浜涳纴锲犱负涔﹀簵镄勬敹鍏ュ拰鍒╂鼎琚杞绉诲埌浜嗕筜椹阃娄笂銆
杩欎釜鍦ㄧ编锲芥劅瑙夌壒鍒鏄庢樉锛屼竴澶у爢浼犵粺闆跺敭鍜屼功搴楃悍绾峰挜棴锛岃浜氶┈阃婃墦寰楁弧鍦版垒鐗欙纴镓浠ヤ筜椹阃婂竞鍊肩垎琛ㄣ傝繖浜涗环鍊硷纴镄勭‘鏄镰佸伐鎶㈠ず𨱒ョ殑锛屾墍浠ヤ汉澶氩悆鍑犲彛涓嶈佽翠粈涔堚沧嬁锻芥崲阍扁濓纴澶ч儴鍒呜亴涓氶兘鏄鍦ㄦ嬁锻芥崲阍憋纴璀﹀疗銆佹秷阒插憳銆侀┗澶栧+鍏点佸洓澶э纴璋佸规槗鍟娿
镓浠ョ爜宸ラ櫎浜嗗垱阃犱竴浜涗骇鍝佷互澶栵纴杩桦湪浼桦寲浼犵粺浜т笟銆傞偅浜涘彧浼氩潗镆滃彴銆佷粈涔堟妧鑳介兘娌℃湁镄勯吨澶嶆у伐浣滃矖浣嶏纴灏嗗湪链𨱒ヤ笉鏂琚链哄櫒浜哄拰绋嫔簭浠f浛銆傚ぇ閲忎腑闂存笭阆扑骇鐢熺殑镵屼綅鍜屾祦绋嬶纴涔熼愭笎浼氭秷澶憋纴绀句细瓒嬩簬镟翠紭鍖栧拰楂樻晥銆
杩欎釜杩囩▼灏嗘槸寰堟画閰风殑锛屽緢琛鑵ョ殑锛屼絾涔熸槸寰堟縺锷变汉蹇幂殑锛屾洿鏄鍏骞崇殑銆傛病链夋妧鑳界殑浜猴纴鍙浠ラ氲繃瀛︿範鏀瑰彉锻借繍锛屾垚涓烘満鍣ㄥ拰绋嫔簭镄勬搷绾佃咃绂𨰾掔粷杩欎釜杩囩▼銆佷笉瀵绘眰鏀瑰彉镄勪汉锛屽皢浼氲娈嬮叿镄勭幇瀹炴墦璐ャ
璁$畻链烘槸闱炲父鍏骞崇殑涓扑笟锛屽傛灉涓嶆槸链鍏骞崇殑璇濄傚瘨闂ㄥIT锛屾f槸锲犱负瀹冨彧璁虹粨鏋滐纴涓岖湅鍑鸿韩銆
鍏虫敞鎴戯纴鎴戞槸钬滃寳婕傜▼搴忓獩钬濓纴鐜板氨镵屼簬镆愬ぇ铡傚悗绔寮鍙戝伐绋嫔笀锛屽彲鍐呮帹澶у巶锛岃茬偣链夎叮镄勭▼搴忓憳鏁呬簨鍜屽唴瀹癸纴瀵圭▼搴忓憳濂藉囩殑链嫔弸锛屾垨钥呭悓琛岋纴娆㈣繋鍏虫敞鐣栾█[锻茬堕]
涔熷氨鏄涓绉嶈亴涓氾纴闾d釜琛屼笟閮芥湁浼桦娍鍜屽姡锷匡纴镒熻夋病鍟ョ壒娈婄殑銆
鐑熻崏鍏鍙稿ソ锛屼絾娌℃湁寰堥珮镄勫﹀巻鍜屽緢寮虹殑瀹跺涵鑳屾櫙锛屾槸杩涗笉铡荤殑銆傚叕锷″憳銆佷簨涓氩崟浣嶅ソ锛屼絾鑳借冧笂镄勬瘯绔熸槸灏戞暟銆
瀵逛簬鏅阃氩跺涵銆佹病链夎儗鏅銆佸﹀巻涓鑸镄勪汉𨱒ヨ达纴褰撶▼搴忓憳鏄𨱒¤缮涓嶉敊镄勮矾銆
绗涓锛屾敹鍏ラ珮銆傛垜璁よ瘑寰埚氢簩链銆佷笁链鐢氲呖涓揿崌链镄勭▼搴忓憳锛屼粬浠锲犱负瀛﹀巻镄勫师锲狅纴鍦ㄥぇ铡傞噷锅氩栧寘锛屼竴涓链堣柂姘翠篃链変釜涓涓や竾銆傝呖浜庨《绾уぇ铡傞噷闱㈢殑鐗涗汉锛屽勾鍏ョ栌涓囦互涓婄殑涔熸槸寰埚氱殑銆傜▼搴忓憳镄勬敹鍏ヤ笌鍏朵粬琛屼笟鐩告瘆纭瀹炴瘆杈冮珮銆
绗浜岋纴宸ヤ綔链轰细澶氥备笉绠″︽牎濂藉潖锛岀▼搴忓憳閮藉彲浠ラ潬镊宸辫兘锷涙垒鍒颁竴浠藉伐浣滐纴涓嶅儚链変簺宸ヤ綔锛岄渶瑕佸幓镓树汉镓惧叧绯汇傝呖灏戠洰鍓岖▼搴忓憳杩樻病链夊儚甯堣寖鐢熼偅镙蜂汉镓嶈繃鍓┿
褰撶▼搴忓憳镄勬渶澶х己镣规槸锛屽伐浣滆緵鑻︺佸姞鐝澶氥傚彲鏄瀵逛簬鎴戜滑杩欑嶆櫘阃氩跺涵鍑鸿韩銆佹病链夎儗鏅镄勪汉𨱒ヨ达纴骞插暐涓嶈緵鑻﹀憿锛熸垜浠鍙堣兘链変粈涔堟洿濂界殑阃夋嫨锻锛
鍗充娇楂桡纴涔熶粎浠呮槸钖冮潚鏄ラキ镄勯偅浜涘勾銆傚勾鍗庝笉鍐嶆椂锛岄潪浣嗛キ纰椾缭涓崭綇锛岃屼笖宸ヨ祫涓钀藉崈涓堛
绋嫔簭锻树粠涓氭湡闂达纴澶栦汉鐪嬫潵锛屽湪鏁存磥銆侀珮澶т笂镄勫姙鍏闂村唴锷炲叕锛屽傚悓锏介嗕竴鑸銆傚疄鍒欑墷绗间竴鑸锛岀柉镫傚姞鐝銆佹濇兂灏侀棴銆佹矡阃氩叏镞犮佷笌绀句细闅旂粷锛屽崟绾銆佹湪璁枫佸姙浜嬭兘锷涘樊銆佽繃浜庣悊镐ц缉鐪熷奖鍝嶆棩钖庣敓娲汇
绋嫔簭锻桦姞鐝鏄甯告侊纴濡傛灉灏嗕粬浠锷ㄨ缎涓娄竾镄勬湀钖鎹㈢畻鎴愭椂钖锛屽彧姣斿煄甯备綋锷涘簳灞备綋锷涘矖浣嶅伐璧勫20%宸﹀彸锛屼絾鏄鍒蹇树简锛屼粬浠閮芥槸澹骞淬
绋嫔簭锻樻槸鍑犱箮娌℃湁浠涔堜綋锷涘姵锷ㄧ殑锛岃屾槸杩囧害鍦板帇姒ㄨ剳锷涳纴甯曢噾妫銆佽佸勾䦅村憜銆佺対姝讳笉鏄鍗辫█钥稿惉銆
绋嫔簭锻樿佷笉鏂瀛︿範锛屾妧链镟存柊镄勬瘆瀛︿範蹇涓岖煡澶氩皯鍊嶏纴锘哄眰宀椾綅瀛︿竴娆″悗缁瀛︿範鎴愭湰鏋佷绠銆
灏界″傛わ纴绋嫔簭锻树緷镞ф槸鍙浠ヤ粠涓氱殑镵屼笟锛屼絾涓嶈兘鍙鐪嫔伐璧勯珮銆傚簲璇ヨ村湪阃傚害婊¤冻镄勫墠鎻愪笅锅氱▼搴忓憳灏卞ソ锛屾瘆濡傚竞鍦轰环8000镞跺仛6000宸ヤ綔閲忕殑绋嫔簭锻桡纴缁欑敓娲汇佺ぞ浜ゃ佷汉𨱍呬笘鏁呯暀涓浜涚┖闂淬
濡傛灉浠庡氨涓氱殑瑙掑害𨱒ョ湅锛屼竴鑸𨱍呭喌涓嬮噾铻嶃佹埧鍦颁骇銆佺戞妧琛屼笟镄勪粠涓氢汉锻桦伐璧勯兘姣旂ぞ浼氩钩鍧囧伐璧勮侀珮锛屼篃姣旂ぞ浼氩伐璧勪腑浣嶆暟瑕侀珮銆备絾鏄鍜岀儫钻夈佸尰鐤椼佹暀镶层佺数缃戙佸叕锷″憳鍜屼簨涓氩崟浣岖浉姣旓纴绋嫔簭锻樼殑缁煎悎鏀跺叆涔熻稿苟娌℃湁澶澶х殑浼桦娍銆傚湪寰埚氢汉镄勭溂閲岋纴绋嫔簭锻樼殑宸ヨ祫楂桡纴闾f槸锲犱负钬滃緢澶氢汉钬濋兘鏄鎸f墡鍦ㄧぞ浼氩伐璧勪腑浣嶆暟涓娄笅锛屾垨钥呮洿浣庛
绋嫔簭锻樼殑宸ヨ祫纭瀹炰笉绠椾绠锛屽挨鍏舵槸鍦ㄤ竴绾垮ぇ锘庡竞锛屾櫘阆嶉兘鏄鍦ㄤ腑浣嶆暟浠ヤ笂锛屽嚭镩茬殑绋嫔簭锻桦伐璧勬敹鍏ュ緢涓嶉敊锛屽熀链涓婇兘鏄涓や笁涓囱捣姝ワ纴鍐嶅姞涓婂栭噾鍒嗙孩绛夊叾浠栨敹鍏ワ纴骞磋柂浜斿崄涓囧强浠ヤ笂锛岀‘瀹炴湁寰埚氢汉銆傚勾钖锏句竾鎴栬呭崈涓囩殑锛屾垜璁や负闾i儴鍒嗗凡缁忎笉鍗旷函鏄绋嫔簭锻树简锛屽ぇ澶氭暟閮藉吋链夋妧链棰嗗啗浜虹墿澶磋旓纴链宸涔熸槸涓涓閮ㄩ棬镄勬妧链棰嗗笺
绋嫔簭锻樼殑宸ヨ祫涓轰粈涔堣繖涔堥珮锛熶富瑕佹槸杩囧幓浜屽崄澶氩勾浠ユ潵锛屾垜锲界戞妧椋为熷彂灞曪纴闇瑕佸ぇ閲忕殑绉戞妧浜烘墠銆傝屼笟鍐呯殑绔炰簤锛屽叏涓栫晫锣冨洿镄勭珵浜夛纴鎴戜滑闇瑕佸揩钥屽嗳銆傚洜姝わ纴灏遍渶瑕佸ぇ閲忕殑绋嫔簭锻桡纴涓岖℃槸鏅阃氱殑镰佸啘锛岃缮鏄鎶链绮炬箾镄勫伐绋嫔笀锛岀己鍙i兘闱炲父澶э纴浣嗘槸阃氲繃钖勭嶆暀镶插煿鍏诲嚭𨱒ョ殑绉戞妧浜烘墠闱炲父绋缂猴纴杩椤氨瀵艰嚧浜嗏沧按娑ㄨ埞楂樷濈殑琛屾儏銆傚彟澶栦竴涓寰堥吨瑕佺殑鏂归溃鏄锛屾垜浠涔熷湪镞堕棿镄勮禌阆扑笂杩借刀锛屽洜姝わ纴绋嫔簭锻樼殑宸ヤ綔镞堕棿澶ч儴鍒嗕汉宸茬粡杩滆繙瓒呭嚭鍏灏忔椂宸ヤ綔鍒讹纴996涓搴︽垚涓哄父镐併傚綋铹讹纴鎴戜滑鐜板湪骞朵笉鎻愬″苟涓嶉紦锷996锛岄櫎闱炲伐链熺揣寮狅纴钖﹀垯杩樻槸搴旇ュ潥鎸佸叓灏忔椂宸ヤ綔鍒朵负濂斤纴宸ヤ綔鏄涓轰简镟村ソ鍦扮敓娲伙纴涓嶈兘浠ョ压鐗茬敓娲绘潵宸ヤ綔銆
绋嫔簭锻樼殑宸ヨ祫楂樻湁涓涓寰堥吨瑕佺殑铡熷洜鏄锛岀▼搴忓憳涓崭粎浠呮槸鑴戝姏锷冲姩锛岃屼笖杩樻槸闇瑕佺▼搴忓憳𨰾ユ湁镓庡疄镄勭悊璁哄熀纭鍜屼赴瀵岀殑缁忛獙銆傝繖灏辨槸闇瑕佺▼搴忓憳𨰾ユ湁澶у︿互涓婄殑鏁栾偛鑳屾櫙锛岃屼笖闇瑕佸湪宸ヤ綔涓涓嶆柇鍦颁赴瀵岃嚜宸辩殑鐭ヨ瘑鍜岀粡楠屻傝繖鍜屼竴鑸镄勪綋锷涘姵锷ㄦ垨钥呭皯閲忚剳锷涘姵锷ㄧ殑宀椾綅鐩告瘆锛岀▼搴忓憳闇瑕佷粯鍑哄缑镟村氥
瀵逛簬澶у氭暟浜烘潵璁诧纴绋嫔簭锻桦氨鏄钖冮潚鏄ラキ镄勚傝繖閲屾湁涓や釜镒忔濓纴涓鏄骞寸邯澶т简瀹规槗阆阆囱佸憳鍗辨満锛屼簩鏄娣锋棩瀛愭懜楸间笂鐝銆傛垜瑙佽繃寰埚氱▼搴忓憳鍒颁简35宀侊纴灏辫侀溃涓磋亴涓氩嵄链恒傚緢澶氢汉琚杩瑁佸憳鎴栬浆琛岋纴涔熸湁寰埚氢汉鑳界户缁鍦ㄧ▼搴忓憳镄勫矖浣崭笂宸ヤ綔锛屼絾鏄鎶链锘烘湰宸茬粡锲哄寲钥屼笖宸茬粡瑙﹀强澶╄姳𨱒匡纴杩欓儴鍒嗗啀镐庝箞宸ヤ綔锛屼篃闅句互链夋柊镄勬垚缁╋纴澶у氭暟鍙鏄閲嶅嶆х殑骞插畬娲昏屽凡銆
涔熻稿緢澶氢汉浼氲达纴锲藉栦篃链夊勾绾澶х殑绋嫔簭锻桦晩锛屾湁浜涘ぇ鐗涘洓浜斿崄宀侊纴浜斿叚鍗佸瞾閮藉湪缂栫爜锛岀敋镊宠缮鑳藉仛鍑轰笉凿茬殑鎴愮哗銆傛槸镄勶纴浣嗛偅鏄锲藉栥傚浗澶栫殑绋嫔簭锻樻槸涓涓姣旇缉鏅阃氱殑镵屼笟韬浠斤纴鏅阆嶆敹鍏ヤ篃骞舵病链夊悜鎴戜滑闾d箞绐佸嚭銆傛渶鍏抽敭镄勬槸锛屽浗澶栫殑镰佸啘鏂扮敓锷涢噺姣旇缉灏戯纴浜哄彛锘烘暟灏戞槸涓涓瀹㈣傚瓨鍦ㄣ
鎴戣や负鎴戜滑镄勭戞妧浠嶅勪簬楂橀熷彂灞旷殑阒舵碉纴灏ゅ叾鏄浠ュ崐瀵间綋鑺鐗囦负镙稿绩镄勪骇涓氱戞妧锛屼緷铹跺瓨鍦ㄩ潪甯稿ぇ镄勫彂灞旷┖闂达纴镓浠ョ▼搴忓憳鍦ㄦ湭𨱒ュ緢闀跨殑涓娈垫椂闂村唴锛屼緷铹舵槸寰埚悆棣欑殑镵屼笟銆
绋嫔簭锻桦氨鏄涓鏅阃氲亴涓氾纴娌℃湁濂戒笉濂戒箣鍒嗭纴涓昏佺湅浣犲枩涓嶅枩娆锛屽枩娆㈢殑宸ヤ綔锅氲捣𨱒ヤ笉瀹规槗铡岀储锛屽﹁捣𨱒ヤ篃姣旇缉镄勫揩銆傚緢绱鍙堣禋涓崭简寰埚氶挶锛氲繖阃傜敤浜庡ぇ閮ㄥ垎镄勮亴涓氩拰浜虹兢锛屼笉鍙鏄绋嫔簭锻桡纴闄や简闾d簺链夋嵎寰勭殑浜猴纴鍏朵粬閮借佽繘杩囦竴涓绉绱镄勮繃绋嬶纴镓嶈兘𨰾垮埌寰堜笉阌欑殑宸ヨ祫锛涚疮涓岖疮锛屽缑鐪嬩綘镓鍦ㄧ殑琛屼笟浠ュ强宀椾綅锛屽氨璇存垜锛屽尰闄㈢殑绋嫔簭锻桡纴宸ヤ綔鏄寰堥棽锛屽伐璧勪箞灏变腑涓婃按骞筹纴瑕佹兂寰呴亣寰堥珮锛屾垜瑙夊缑鎴戠殑鎶链闇瑕佹彁楂桦埌鍏ㄥ竞链夌煡钖嶅害闾d箞铡夊筹纴浣嗘槸鎴戣夊缑镐曟槸涓嶅お鍙鑳斤纴锲犱负姣旀垜铡夊崇殑浜哄お澶氩お澶氢简銆傛垒涓嶅埌濡圭焊锛氱▼搴忓憳澶ч儴鍒嗗毕锛屾崲鍙ヨ瘽璇村氨鏄澶ч儴鍒嗗氩氩皯灏戞湁镣瑰唴钖戯纴涓嶆哕浜烘儏涓栨晠锛屾渶涓崭细𨱒ヤ簨锛岃繖镙风殑浜猴纴鍒板摢閲岄兘镓句笉鍒板瑰瓙銆傛渶鍏抽敭镄勪竴镣癸纴浣犱笓涓氩︿粈涔堥兘鍏崇郴涓嶅ぇ锛屽仛链涓扑笟宸ヤ綔镄勪汉灏戜箣鍙埚皯镄勶纴杩树笉濡傚氩氱殑铡诲拰浜烘帴瑙︼纴鍙傚姞钖勭岖ぞ锲锛屾闷濂藉悇绉嶅叧绯伙纴缁冨缑鍙浠ヨ佷汉璇翠汉璇濓纴瑙侀艰撮艰瘽姣旀妧链鍜屼笓涓氭湁鐢ㄧ殑澶氥傜幇鍦ㄦ垜浠锲藉剁殑𨱍呭喌灏辨槸锛屼细璇磋瘽链夌偣鎶链镄勫湪棰嗗煎眰锛屼细璇磋瘽娌℃妧链镄勫湪涓闂村眰锛屽共鎶链镄勫湪搴曞眰锛岀函闱犳妧链鍙埚湪棰嗗煎眰镄勶纴闾f槸鏋佸皯鏁帮纴浣犲彲浠ョ湅鐪嬬幇鍦ㄩ偅浜涚煡钖岖殑鎴愬姛浜哄+锛屽摢涓涓嶆槸鍢村帀瀹筹纴𨱍呭晢楂樼殑锛屽氨绠楅偅浜涘瘜浜屼唬鍟婄′簩浠f牱寮忓傛わ纴浠栦滑镄勪汉鑴夋瘆鎶链濂界敤寰楀氥

F. 程序员如何提高自己的工作效率

程序员如何提高自己的工作效率?程序员要在IT界混出个名堂,也要有高效的工作效率才行。下面我为大家整理了程序员提高工作效率的办法,欢迎大家阅读参考!

程序员如何提高工作效率

1)键盘功底要扎实

敲键盘时要使用标准指法。可能你认为这是程序员的基本功,可是我发现其实很多程序员都做不到这点。看着他们敲代码时那笨拙的指法我就心急。其实炼成标准指法不难,相当年我还是一指禅,打字极慢,痛定思定,在一周内我打字必用标准指法,再别扭也要坚持,一周后就适应了标准指法了。现在不说运指如飞也算是略有小成。练习指法和键盘速度可以给大家推荐一些网站:http://10fastfingers.com/typing-test/english,这个就是练习标准指法的,我可以轻松上60 WPM(每分钟60单词),有个外国同事可以达到130以上,那才叫恐怖。http://typing.io/lessons,专门供程序员练习敲代码的网站,融合了各种括号和标点,难度有点大。

2)要熟悉IDE的各种快捷键及特性

IDE基本上是码农们上班中使用时间最长的软件。首先要选择一个趁手的IDE,俗话说,工玉成其事,必先利其器嘛。如果是C#阵营的那肯定是最新版的Vistual Studio了,如果是java阵营的话当然是Intellij了(eclipse作为开源IDE,真心比不过Intellij)。我现在使用Intellij可以在95%的情况下不用鼠标,全键盘完成开发过程中的大部分操作。我觉得没有什么常用快捷键、不常用快捷键之分,只要你知道的快捷键就要拿来用。

尤其是各种重构快捷键必须要熟练掌握,当我看到码农修改变量名时不用重构快捷键,而是自己手动在引用的地方一个个改,然后编译查错时,真为他们捉急。还有各种inline,introce的快捷键真是好用到爆,掌握了这些快捷键可以说对代码进行任何重构都不费除灰之力,我们的注意力也从手动修改代码转移到如何发现坏味道了。Vistual Studio中推荐安装ReSharper,其开发公司与Intellij开发公司是同一家。除了重构快捷键,还要掌握一些IDE的特性,比如调试时可以插入指定条件来命中断点等,这些就要平时的积累和学习,另外还有好奇心。我敢说你现在挨个看IDE菜单,至少有30%功能你从没用过或不知道是干什么用的,其实里面有些功能是非常实用的,只是你没尝试而已。

3)至少熟练掌握一种shell终端

作为程序员老用图形化界面咋行,要用那种古老的命令行界面才能显示出你的高深嘛!鼠标点界面谁都会,而命令行界面不是谁都能驾驭。有些功能在命令行下要比图形界面下高效N倍。比如我使用git提交文件时都是在命令行下查看哪些文件被修改了,哪些是新添加的,修改的部分是哪些等。

使用图形化界面要用鼠标点来点去,效率实在太低。Linux系统下的终端太多了,就不推荐了。Mac系统下推荐使用iTerm2这个壳,其比MAC自带的terminal多了不少实用的特性,也能方便切换自己喜欢的配色。Windows下当然首推Windows Power Shell了。Windows Power Shell本身集成了常用的实用工具,并且与.net framework无缝结合,这点是那些在Windows上的类Linux模拟器(比如Cygwin)是远远比不了的。

4)具有一定编写shell脚本的功底

光会用现有的`脚本还不行,还要会根据情况编写脚本来实现自己特定的一些目标。比如我使用MAC机上的终端时,经常需要在不同目录间跳来跳去,每次都打一串的cd …..很麻烦,后来我就自己写了一个小工具,可以给指定的目录起别名,想要跳到这个目录只要敲别名即可(参见 http://www.huangbowen.net/blog/2013/02/16/gtshell/)。

还有我在Windows系统上工作时,也经常编写一些Power Shell脚本,比如一个命令就启动指定的FTP服务器,一些小命令用来实现快速在不同项目源码间切换并执行构建命令等。这些命令编写起来都很简单,在提高工作效率方面很好帮助,因为一些常用的费时的操作每天重复N次,让人很厌烦,如果能够使用脚本将其自动化起来,岂不是就把自己给解脱了?

5)多语言编程

在这个世界有太多太多的编程语言,但凡稍微流行的编程语言都有自己独特的优势,而我们要善于利用每种编程语言的特点,而不是整天吵闹那种语言更强大。我自己熟悉C#、java语言,也用JavaScript、Ruby、Python、Groovy做过一些东西,甚至为了理解函数式编程还专门学习了Haskell语言。这些语言都给我带来了实用的效果。比如我用Ruby写了一个插件,可以自动把我主站上的博客同步到博客园中的博客来。

我使用Groovy给我的Java代码写单元和集成测试,比使用Java语言编写要快很多。我用Python和WebDriver写了一个论坛灌水工具来刷积分。你掌握的语言越多,你的视野就越广,你对编程的理解就会越深入。当然我不赞成盲目的求多,至少你要有2到3门精通的语言,从语言语法、语言运行时、语言特性、语言API等方面都要有深入学习和见解,当你再学习其它语言时也不会浮于表面的了。

6)这是最重要的一点,时刻保持一颗好奇心,一颗坚定不移的提高工作效率的决心

很多人都抱着差不多态度,心想“我虽不是标准指法,敲键盘速度也差不多”,“我IDE快捷键用的不多,也没觉得那里影响到我开发”,“我只会C#一种语言,还不照样干到现在了吗?”之所以有这种想法,是是因为你没有见到真正高效的人。我曾看到某IT界牛人那出神入化的VIM操作,简直已经超越了指哪打哪的境界,已经达到了键随心动的境界。

我也看到某高级程序员使用IDE快捷键三下五除二就把一段丑陋的代码给收拾的服服帖帖。耳濡目染之下让我坚定了这个决心,不做差不多先生。所以平时我和同事一起工作时,就留心他们有哪些方法和工具来提高自己的工作效率。如果他们使用了一些好用的快捷键而我不知道,那我就会记下来下次自己用(快捷键熟练程度上我早已是我们项目组的number one)。

如果看到他们使用了一些好的工具我也会立马回去下载下来自己用。(比如前两天我看到同事使用SuperPutty来连接远程主机,其支持多tab方式,这正是我想要的功能。我回去立马下载下来,抛弃了以前的Putty)这样时间长了,集众人之所长,你自然也成为效率达人了。


G. 为什么程序员做出来的东西和设计稿不能一致

因为程序压根就没有按照UI给出的标注图上执行,比如UI给出的间距是10px,程序员非要靠肉眼凭感觉写距离

H. 程序员在职业生涯中易犯的7个错误

1.没有明确的职业目标


没有目标的人生,就像无根的浮萍,水流到哪里就飘到哪里,一生漂泊。


如果你想要在软件开发领域获得真正的成功,那么就必须知道该何去何从。或许面对遥远的未来,你已经有了一个粗略的目标了。但是除了这点还不够,你应当坚实自己的目标——清楚的定义在实现过程中的每个重要时间点所需要达到的效果。


我认识许多程序员和其它方面的专业人士,数十年来他们都在相同的职位上反复地做着同样的事情。是的,你没有看错,是数十年。接受职业现状,不做任何改变,是造成这种悲剧的根源。对于未来,如果你没有明确的职业规划,这样的悲剧就很可能会发生在你身上。


面对于此,你该怎么做呢?


从现在开始,花一些时间来认真规划一下职业并确定最近的目标。一旦你达到了这个目标,你就要选择一个新的目标了。在职业生涯中,这样的目标会一个接着一个。你可以把这些目标写下来,放在一个每天都可以看见的地方,这样就可以让你随时回想起当前需要做的工作。


2.不重视“软技能”或非技术的东西


我认识许多擅长写代码的程序员,他们可以用所写的算法把我耍得团团转,他们对复杂架构的理解力和思考能力令我自愧不如。


但是真实的状况却是:技术不如他们的我,软件开发领域的职业发展却全面超过了他们,除了职位,还包括薪水、生产力等诸多方面。


在这里我并不是为了吹嘘自己多了不起,而是为了向那些只埋头专研技术的程序员们说明“软技能”对于职业发展有多重要。


作为一个软件开发者,我相信你也清楚,编写代码并不是工作的全部。在通往成功的道路上,还需要学习很多其它技能。我们需要长期与他人打交道,所以必须学习为人处事;软件开发面临长期的赶工与不同的需求变化,所以需要学习对心态和注意力的调整;在不断变化的环境里有许多事情需要处理,所以应当学习对事情划分优先级以做到效率的最大化。另外,我们对待身体健康应当和对待自己收入一样敏感,这个才是革命的本钱。


我还可以继续列举出更多的东西,关于了解开发者应当掌握的“软技能”你可以去阅读我写的《SoftSkills:TheSoftwareDeveloper’sManua》一书。


总的来说,在生活中无论从事什么样的工作,那些软技能通常都比硬性的技术能力更为重要,所以请保持不断地学习这些技能。


3.不融入社区生活


在程序员生涯中有一样东西令我受益颇深,它就是社区的帮助。成为这个大群体的一部分,不仅让我拥有了归属感不再孤独,也帮助我改进了自身的技能,向着更高的平台发展。


如果你还没有参与社区生活的话,我强烈建议你融入这个圈子里来。它是一个比自我宽广得多的平台,有助于你的发展。


如果你感觉自己的软件开发工作停滞不前,费劲脑力也无法获得更大突破的时候,最好的方式就是加入社区,与一群有志同道合的人共同探讨所遇到的困难,获得有助于解决问题的建议。另外,融入社区生活还能够聚集人气,培养人脉,这对于提升自身的职业发展也有很大帮助。


但是,如何才能融入到社区生活中呢?


这很简单,世界各地都有很多开发者团体,你可以通过程序员网站找到并加入到他们当中去。你还可以参加开源夏令营,这是一个一年一度的免费地方性活动,众多开发人员会聚在一起分享他们的工作,任何人都可登记参加自己感兴趣的话题。


如果你不希望在现实生活中与过多的人接触,也可以选择加入虚拟社区。


那些大众的程序员社区会是你的第一选择。在社区中你会发现有一些非常厉害的程序员,他们会在自己的博客上写一些精辟的文章并解答大家的问题。除此之外,还有另外一些不错的在线社区,比如大牛们的博客网站、各种技术论坛、讨论群等。


当你开始学会分享,把自己的所知与所想都写出来的时候,你就真正的融入进了社区生活——而这个博客就是我为自己加入这个程序员社区所做的第一件事。:-)


4.没有专长


如果你过去常访问我的博客或者YouTube视频,你会发现我很多时候都在谈论这个话题。这个话题是如此重要,以至于我一有机会就会说到它。


俗话说,术业有专攻。你应当选择一项想要专精的技术并努力磨炼它。但这并不意味着你就可以放弃对其它技术的基本理解而一味地去专研某项技术——我对那些会数种语言的人是非常欣赏的。这一点非常重要,尤其是在你职业生涯的早期培养一技之长的时候。


专长可以满足更高级的需求,因此,在同等条件下,它会带来更丰厚的报酬并更快的积累声望——这些对于业界对你的认可是很有帮助的。


有专长的人好比是小池塘中的大鱼,受人瞩目。或许最终这条大鱼会跳入更宽广的池子,但是所累积的声望和名气同样有助于在软件开发行业的其它领域的发展。


凡事只要七分就好,对于专长技术的研究学习同样如此。过度的投入会对程序员的时间与精力造成浪费,这是得不偿失的。


5.无视个人品牌价值


生活中充满着各种变数:搬家、结婚、换工作、一夜暴富、突然发福等等。无论如何,有一样东西始终会伴随着你一生,而这个东西就是——名字。


你的名字会贯穿于你的全部生活,难道它还不值得你去重视么?


你的名字或者也可以称作是你的个人品牌是一件非常有投资价值的东西,可许多软件开发人员对此却一无所知。


对于获得工作、取得晋升、客户端的登陆以及工作的开展等,名字无疑都展现了其强大的作用。毫不夸张的说,假如你臭名昭着的话,会万事难行,而如果你有良好的名誉的话,大多事情只需通过简单的握手就能搞定。


我认识很多的软件开发人员,他们从不担心自己会失业,这是因为他们投资了时间和精力来打造坚实的个人品牌。他们知道,无论发生什么事情,在他们失业后的几个小时内就可以获得一份新的工作,这是因为他们在业界有良好的声誉。


对产品和服务进行的投资看起来很正常,但是你是否考虑过自我营销的价值?要在软件开发行业建立起自己的个人品牌,我的建议是从创建自己的博客开始,选择将自己的专长或者有很深了解的领域作为提高自己影响力的跳板,学会把自己的名字一步步做成行业的金字招牌。如何快速的提高自己的影响力呢?最好的方法之一就是创建对别人有帮助的文章。


就拿这个博客为例吧。这个博客建立了我在互联网上的个人品牌和声誉,如果你认为我的文章或者网站是有价值的,你会选择进行分享。甚至你有可能把它列入收藏或者进行订阅,以方便以后继续访问。而这只是其中一种打造个人品牌的方式。同样的,你还可以选择视频网站、播客等媒体,或者在书刊上发表文章,在会议上演讲等方式。如果你对如何在软件开发领域深度挖掘自身的品牌价值很感兴趣,这个网站会告诉你如何去做。


6.荒废业务时间


在工作之余,你应当做一些项目来练练手。


做业余工作有许多你不知道的好处。首先,它可以有效的改进你的专业技能,特别是那些在平时的工作中很少用到的技术。相比起平时朝九晚五的工作,业余工作类型多变,对于专业技能的提高更有好处。其次,它有助于你对新的开发技术和技巧的学习。这对于日后你想从事新的工作是很有帮助的。我碰到过许多程序员,他们向我抱怨在当前工作中没有机会去学习新技术,这让他们今后无法在工作市场上立足。而我向他们建议工作之余去做一些小项目,使用他们今后想要立足的新技术——这种方式对于提高相关技术是很有帮助的。


除此之外,我们不要忽视做业余工作所带来的经济利益。人们常认为业余时间做的那些小项目是挣不到什么钱的,而事实上它却是额外收入的重要来源。4年以前,我在业余时间里开发了一个在Android和iOS平台上使用的应用程序,而到现在,这个应用程序还能为我创造价值。


我还认识一些程序员,他们从业余工作做起,最后把这些工作发展为了全职工作。而事实上我就是这些程序员中的一位。这个博客本身以及SimpleProgrammer周围的其它部分现在成为了我的全职工作。我喜欢称自己为程序员的生活导师,但是也有很多人认为我是一个专职的博客写手。


业余工作可以让你充满乐趣,它能够把你从那些你不喜欢但又必须去做的工作中解脱出来。作为一种释放工作压力的好方法,它会每天带给你新的希望。


7.没有自我学习的计划


在我面试软件人员的时候,我首先会问到的一个问题就是关于他们的自我学习和持续完善的计划——如何进行自我完善。程序员如何在这个快速变化的领域保持技术与观念上的更新?我希望获得的回答是他们能告诉我对于自我学习与成长他们有着一个实际可行的计划。因为一个致力于不断学习进步的人不仅能够让自己迈向成功还能影响到周围的人,使他们一同迈向成功。


然而,有如此之多的程序员对于自我学习没有任何计划。假如你是这些人中的一员,你就应该立即行动起来做一个自我学习的计划。


这儿有一个可供参考的个人简单计划:


坚持每月读一本关于技术学习或者职业发展的书籍。


这意味着一年时间里你需要阅读12本书。对于我来说,我会在每天用至少45分钟时间来阅读。当我在跑步机上运动的时候我会同时阅读一些与我个人职业发展相关的文章。


积沙成塔,集腋成裘。每天只需花费30分钟时间来阅读书籍,一两年时间之后你的人生境遇就会发生很大的改变。

I. 为什么越来越多的人不想做程序员了

作为一个在帝都混日子的程序员,经常能看到不少同事转行。

最开始是一位年纪比较大了(快40岁,在这个行业算老了)的,回家开个小店去了。后面聊了聊,非常庆幸自己做出了辞职的决定,现在日子过得是滋润得很。

再之后,有回老家小县城干别的去了的。要准备好回县城,恐怕就很难找到IT行业的工作,除非是自己干。但小县城能干起来的活不多,加上那里这方面的人才也难找,也就基本认为是已经换行了。

最近,甚至身边有刚在17年毕业后加入来的成员,都不想干了,想要考公务员。现在究竟是一些什么原因,导致这样了了?

7.要创业了

不能光是说一些不好的,不想干了的人中,肯定有不少是想要自己出来单干的。创业也基本分为两种,一种是自己出来接单,成立公司开始为别的企业做项目。另一种是自己做产品。这两种其实都比较好起步,特别是第一种,有活就会盈利。而且成本基本只有人力和应酬,机器大部分也都是用户负责的。第二种则是比较赌的,要么很成功,要么很快烧钱结束。不管怎样,这都是不少程序员不再愿意为别人码代码的原因。

阅读全文

与程序员实现不了一些效果相关的资料

热点内容
阿里网盘pc自动更新文件夹 浏览:207
苹果7配置相当于安卓什么 浏览:538
怎么下载全军出击app 浏览:874
网吧服务器上装什么 浏览:178
手机里面的文件夹怎么解压 浏览:686
python公里转换 浏览:243
linux命令行全屏模式 浏览:515
解压编码器类型不支持 浏览:311
裸金属服务器和云服务器授权 浏览:433
python自动化运维代码 浏览:688
抖音发布作品前的编译 浏览:931
苹果电脑如何给外置磁盘加密 浏览:54
毒app怎么加卖家 浏览:841
北漂程序员互联网 浏览:244
程序员实现不了一些效果 浏览:794
php框架的编译 浏览:740
地基处理加密技巧 浏览:201
战地为什么总是断开服务器 浏览:258
ios解压缩rar 浏览:964
如何用java做一个web服务器 浏览:153