❶ 程序员进度考核标准
程序员工作是一种智力活动,应主要根据工作结果来进行考核,主要考核指标有网站模块质量合格率、时间节点任务完成率等,工作标准由你自己来定,一般这两个指标的标准都要达到80%以上。
具体操作步骤如下:
1、根据公司要求及程序员的工作量制订工作时间节点计划表,设定成为几个阶段,每个阶段有明确的时间规定和工作成果规定;同时设定考核指标、考核标准和奖惩措施。
2、到了节点的时间就对程序员的工作进行评估,如果没达成节点成果,就要求程序员制订改进措施,或加班或改进方法,措施也要有时间和效果控制标准,以便于确定改进措施的阶段性评估。
3、在工作完成后根据程序员的工作完成情况,进行奖惩兑现。
❷ 如何衡量程序员的工作效率
不过,最近Shahar Yair和Steve McConnell指出了该方法的一系列重要缺陷。首先,使用代码行数之和无法有效评估一个项目的实际进度,因为它更注重行为而不是结果。最终产品在多大程度上依赖于代码的性能和质量,这也是代码行数无法说明的。因此,聚焦于此实际上是非常有限的工作效率测量方式。
SLOC无法表明要解决的问题的复杂性,也不能以可维护性、灵活性、扩展性等等因素来说明最终产品的质量。说到质量,它反而可能起到负面作用。通过重构、使用设计模式会减少代码行数,同时提升代码质量。代码量大,可能意味着有更多不必要的代码、更高不必要的复杂性、更加僵化难懂。
他指出,有些问题可以通过测量度量功能点数解决掉。那么决定程序大小的因素就变成了输入、输出、查询和文件的数目。不过这种方式也有其缺陷。McConnell提出一些操作性上的问题,比如必须要有一个大家认可的功能点测量机制,而且要想把每个功能点映射到程序员身上也不容易。Daniel Yokomizo是一位经过认证的功能点专家,他在评论中明确指出了这种方式的其他问题:缺少测量功能点复杂度的工具;还需要考虑诸如代码共享、框架、程序库之类的事情。这些都会影响到完成一个功能的时间。
有很多人参与了对于测量方式的讨论,他们都同意这些做法有其局限,不过他们都觉得衡量开发人员的绩效还是有必要的。实际上,不少人认为SLOC可以作为基础,在其之上通过考虑多种不同因素来进行更复杂的分析。McConnell提出了四条分析开发人员工作效率的必备指导原则,他们也都同意。这四条原则如下:
1、不要指望单一维度的工作效率测量方式能告诉你每个人的真实情况。
2、不要指望任何测量方式可以在很小的粒度上区分出每个人的工作效率差异。这些方式可以为你提出问题,却不会告诉你答案。
3、牢记:趋势总是比单独一点的测量来得重要。
❸ 提高工时估计准确性
“如果一个程序员告诉你他已经完成了 90% 的工作量,那么他还需要同样的时间完成剩下的 10%。”
软件项目容易延期和跳票是屡见不鲜的事情,其中不乏知名项目。
刚毕业的时候,我在一家做系统集成的公司工作,我们定制了一套售票软件,为景区接入互联网售票方案。供应该软件的软件公司非常自信的说,这东西非常简单,最多 2 个月就能搞出来。这家公司小有名气,我老板对 2 个月交付深信不疑,于是张罗了接入的客户、市场的物料等。
不难猜到,最终还是没能逃过 90% 定律,2 个月交付的东西只能算作一个 Demo。于是花了另外一个月测试,修复问题和完善业务逻辑,又花了另外几个月时间响应对接客户的要求,才逐渐稳定下来。
行百里者半九十,软件开发也大体如此。开发者估不准工时常有,估准了才奇怪呢。
后来自己也做了软件工程师,参与 IT 项目开发,项目延期也是非常常见的事情。
IT 团队能准时交付是一项非常有价值的能力,哪怕交付时间长一点。计划两周交付,最后能准时完成,比承诺 一周时间,但是花了三周才交付重要得多。
越是大项目,越是重要。大项目的各个组件可能会发生相互依赖。如果不能准时交付,就会付出团队等待的成本,那可是真金白银。
做过项目管理的都知道甘特图,甘特图的每个泳道表达了项目各项资源的进展和计划。然而,软件项目不确定性非常多,存在各种突发事件。如果能提高准时按质量交付,各个单位的等待成本会小很多。
关键的是,衡量准时交付的关键是质量,其次才是交付。先给一个 demo,然后再慢慢改 bug。这种 “准时” 的交付,还不如有一个明确的延期时间,本质上还是 “猛糙快”。
谈项目工时估算,应该是在满足质量要求的前提下,否则估时没有意义。
那么能不能提高软件工程工时的估算的准确性呢?其实是可以的,刚到 ThoughtWorks 的时候,参与了一个交付项目。在一个项目开始前就计划了项目结束的时间,以及下一个项目的计划和安排。结果让我非常吃惊,那个项目的结束时间,和预期相差两周左右。并且这两周是逐步减少开发人员,最后只有 1-2 个人负责最后一周的交接期。
这就是专业软件团队和小作坊的差别,在专业项目经理带领下能把 3 个月的项目估算,精确到 20 - 30 个人天。能把项目工时估算到这种程度,体现了 PM 的内功。
在一个敏捷团队,需要把工时估准,不在于 “估” , 而在于团队执行项目的稳定性。 一般来说,准确估算工时需要考虑需求分析程度、任务拆分的合理性、技术方案的可靠性、团队成员的能力、外部依赖和环境,如果这个项目不是新项目,还需要考虑遗留系统改造的成本和数据迁移的成本。
只有把需求分析做的非常彻底,才能保证估算的输入条件。非专业的业务分析师,只能看到需求冰山水面上的部分 —— 软件的特性、功能的复杂性等。
专业的业务分析师,不仅需要考虑功能需求,并对功能需求的逻辑性考虑完备。比如用户需要一个 APP,他实际上还需要一个后台,对应这个后台会有不同的用户、角色等。
根据这些业务输出、拆分出任务,敏捷开发中我们叫做用户故事,一个用户故事代表一个合理拆分的业务逻辑。能被评估工作量,然后根据这个工作量来评估工时。
除了这些功能需求之外,还有非功能需求。客户不仅仅需要一个 APP,还可能需要的是一个安全的、高性能的、国际化的 APP,而这些往往被客户当做默认选项。
一些性能优化的指标需要分析,并考虑性能优化的任务工时;安全需求可能有 HTTPS 配置,防病毒扫描等,都需要考虑;国际化也是额外的工作量。
挖掘用户真实需求的目的是定义怎么才算完成(Definition of Done),如果没人说得清楚满足什么条件这个项目才算完,那么估算工时根本无从谈起。
彻底挖掘客户的真实需求是评估项目工时的首要条件。
技术方案、团队能力和项目时间估算有很大关系。很多项目的时间估算都是由技术经理或者 Tech lead 来完成,往往是他们按照自己的经验和能力进行计算的。光是这样,很难算的准。
团队有多少人?对这套技术方案的熟悉程度如何?方案是否会发生较大的调整。人一多,人员水平差距就为工时估计带来了不确定性。经验多的人来做方案,如果是他做过的相似方案,自然会估的稍准一点。但大多数情况下没有这么理想的场景。
要做好工时估算,需要结合技术方案和团队成员能力,而不是自己能干多少活儿,多快干完来算。
一方面,技术负责人需要安排相应的技术预研,走在实际编码的开发人员前面,探探路,验证方案的可行性、实施难度、风险。就像作战的侦查人员一样,我们把预研叫做 spike。 spike 需要输出一些结论、demo,支持项目的时间估算。
另外一方面,考察团队真实运作效率很好的方式是根据迭代做工时统计。按照两周为例,10 个人的团队是 100 个工时。如果按照之前的估算,2 周内需要完成的 100 个工时的任务,实际上只完成了 50 个工时。也就是进度只有 50%。
我这个算法比较粗糙,敏捷项目管理中还有更准确的速率计算方式。通过速率,就能对下一阶段的工时估算做出调整,并在工作量、人员上做出调整。
通过方案预研和速率计算是提高项目工时估算准确率的良好方法。
我常常花了一下午时间完成了某个特性升级的编码,但是花了一个月的时间才完成了线上平滑升级、数据迁移。
真正有经验的工程师都知道,方案设计的难点往往不在设计一个新东西,而在于演进一个老系统。遗留系统演进是不可避免的,这种历史包袱是造成工时估算不准的一个重要因素。
遗留系统演进带来的估算困难来源下面几个方面:
不负责的猜想,有一些客户就是遗留系统演进不下去了,然后招标做新功能,实际意图是想乙方顺便消化重构的成本。总之基于遗留系统的二次开发都是一件困难的事情,能不接就不接吧。
另外,社会分工意味着一个人干不完所有的事情,IT 项目往往一个项目也不是独立的。大多数情况下需要和外部条件进行集成,这部分时间超出我们的掌控。
集成这件事的成本需要视主动集成还是被动集成来说:
集成充满了不确定性,估算工时时需要预留足够的集成空间,才能让工时估算更准确。
项目工时估算是一个系统性工作,基本上很难有一个万能的方法。因此大多数情况下都是玄学,但是毕竟是 “估” ,也不能要求 100% 精确。
软件工程的估时更具有弹性,相对供应链管理的交付时间估算成本更低。做好估时,对减少项目运行成本和风险有巨大意义,工时估算的准确性也往往体现了一个 IT 团队工程能力。
❹ 如何对程序员绩效考核
对于程序员的绩效考核主要综合这么几个方面,由于各家公司情况不一,对于侧重哪个方面要看实际情况:
1 编码任务的完成效率:可以结合提交代码量、完成计划任务时间点等综合判定程序员是超额提前完成任务,准时完成任务还是出现拖延,相应给绩效
2 程序员编码的质量:可以结合所负责产品的BUG情况等来判定程序员编码的质量情况,根据质量较高,一般,较差相应给绩效
3 所负责额外工作情况,在产品开发中,可能涉及兼做一些其他的事情,比如配置管理,运维.工作.等等,另外比如作出技术研究,写的东西可以推广给其他人使用,提交他人的工作效率需要相应给出绩效奖励
❺ 怎样更好的评测一个程序员的工作质量
量化:
1、必须要对程序员负责模块所需工时有个精确估计(要根据代码量和难度进行区分,然后结果和实际进行对比)
2、测试时记录程序员负责模块的bug数(当然也是平均bug数与实际bug数对比,当然跟代码量有关)
❻ 如何对程序员绩效考核
关于程序员的绩效考核问题,相信是很多软件公司致力追求却一直无法做到量化的目标。很多考核标准都只是一个框架,但却无法具体细致下去,从而引发了很多劳资方面的纠纷,到最后都是无果而终,无法坚持下去。但还是有很多人,特别是不懂得技术之人,乐此不疲,希望以此种方法来作为程序员报酬的衡量标准。
最突出的就是“任务量”问题。软件编程行业的任务,懂点编程的人都知道,这个行业是一个创造性、思维性的行业。一个任务的工作量多与少是没有一个衡量标准的,原因就是软件功能的实现结果,根本就没有一个最好的标准。
有的人就以工作时数来进行衡量。真的可以吗?举个例子:相同的任务且相同实力的程序员,有的程序员花了一天就完成。也有的程序员花了两天完成,还有的花了三天,四天,五天完成的。花一天完成的程序员做了功能上的实现,它是完成的,针对绩效考核来说,是满分的。但是,比他花多得多时间的程序员呢?他们除了花在功能实现上,还花了很多时间在代码优化以及界面操作设计上。那么,从绩效考核来讲,也仅仅是满分。花一天与花几天的程序员的工作量真的可以相等吗?谁都知道不可能的。再打个比方,两个工作任务,有可能在任务量上它真的就一样。但是,在任务安排上,一个项目组由于技术力量及时间限制上较为宽裕,在一个月内宽松地完成了,而另一个项目组由于在人力资 源以及时间限制上,加班加点,用了十天就完成。以此相比,是哪个项目组的任务量更大一点呢?
所以,绩效考核的框架是死的,而程序员的任务是活的,用一个死的框架套住一个活的思想,程序员只为绩效的要求而实现,久而久之,一个软件项目根本就毫无创造性可言,就是一个生产线生产出来的一个标准化产品而已。
所以,我觉得,程序员的生产,就是个研发,而研发就是创造,不是生产工具,不能以简简单单的任务量来衡量,更不能成为技术层面之外的人简简单单的薪酬衡量标准。用简单思想框架来束缚程序员的思维创造性,这是拖累研究,极易打击程序员的研究主动性。
但真正没有办法为程序员计算劳动所得吗?我觉得, 既然,程序员的工作是研发创造性的,那么,程序员就应当有个感性的前提,那就是视自身的劳功项目体现出的市场价值作为其劳动所得的标准。所以,我觉得,在这方面上,项目奖比起冷冰冰的绩效考核温暖得多,它直接反映的是程序员的创造性结果。在项目组内部的评比,则需要靠他们的直接带领人来衡量贡献的突出性,一是针对项目的技术贡献以及任务完成的质量贡献。
❼ 如何量化衡量一个程序员的工作量和工作效率
1. 代码数量
可以统计代码行数,或者字符数量。
2. 代码质量
显然,代码长不等于工作量很大。不光要考虑代码的数量,还要考虑代码的质量。那么什么样的代码是高质量的呢?什么样的代码是“好”的呢?
“好代码”的评判标准可能非常主观。主流的价值观中大概有以下标准:可读性好(注释不多不少,版面整洁,符合公司规则,变量名有意义等)bug 少(正确处理各种异常和错误)。优雅(设计优雅,实现优雅)
(7)程序员任务交付质量怎么衡量扩展阅读:
程序员的日常工作
1.确认通过审查方案的目标,输入数据,分析师,监事,和客户的输出要求的项目要求。
2.安排项目要求在编程序列分析要求;准备工作流程图和使用计算机知识的能力,题材,编程语言和逻辑图。
3.编码工作流程的信息转换成计算机语言的项目要求。
4.通过输入编码信息的计算机程序。
5.确认程序操作进行测试,修改程序序列和/或代码。
6.准备写操作指令供用户参考。
7.保持历史记录,通过记录方案的制定和修订。
8.维护客户的信息和保护保密的业务。
技能/资格:一般的编程技巧,分析信息,解决问题,软件算法设计,软件性能优化,注重细节,软件设计,软件调试,软件开发基础,软件文档,软件测试。程序员其实分为很多种,大家开发的语言可能不尽相同,但是都是有他们的共同点。
参考资料来源:网络-程序员
❽ 如何辨别一个程序员水平的高低
1.自己介绍项目,看对项目的提炼总结能力(也是抽象能力);
2.自己印象最深的bug,可以知道大概技术深度;
3.设计模式提问,看有没有学习方法;
4.语法基础问题,多线,分布,安全等问题,看知识面广度;
5.智力问题,看反应能力,分析问题思路等
上述五步基本可知是否是一个好程序猿
计科专业从事软件开发十几年了,主要在浏览器内核领域研究的比较多,最近在研究服务器后台方向,辨别程序员水平高低主要看做出了什么产品,如同现在的程序员主要是项目经验,简历上写的一堆项目经验都是面试的时候主要提及的问题。经常在面试中会问两个关键点:一个是做过什么项目;一个是在项目组中承担什么职务,毕竟参与过和做的多少程度是不一样的,这些都是可以通过一些具体的细节检测出来,问题越具体越是容易看出水准,具体的东西不是能够编造出来的。
有很多技术公司直接不通过笔试,仅仅通过简单的面试就确定工资水准了,最简单的测试程序员水平的直接用笔试的方式,笔试可以把一些细节量化,尽量的细节化也是能测试出程序员基本功的,但这种基本用来测试初级程序员的,很多高级的程序员看到有笔试直接就抬腿走人了,因为有些程序员在一个方向做的时间太长了,很多基本功都忘得差不多了,所以笔试可能不过关,现实中很多程序员笔试不过关,面试还可以,也一样可以做项目说的就是这类人,起码这算是非常优秀的程序员。
有很多公司采用谷歌的方式,直接采用上机写代码的方式检验程序员水平,这种方式比较直接,但在现实中可能消耗的时间以及面试官的精力,目前只有极少数的公司用这种方式,国外的公司用这种方式比较多,这种看基本功非常有效。通过代码可以看到编码习惯以及算法的设计上,都能直接看的出来。
普通的程序员直接看项目的经验,高级的直接看做过的产品,特别是产品主要设计人员,这就是程序员内心的自豪感,毕竟作为一个程序员起码要有自己设计开发的产品,也算是不白做一个程序员,在程序员的职业经历中如果能经历过一个产品从开始设计的初稿到最后推向市场,如果是完整的经历,将是一种巨大的财富,只要经历过一次都会对产品设计有一个比较层次的认识,这种能力需要靠直接的面试语言表达来展示出来,谈下对产品的认识以及产品稳定性性能等方面的总结,能到这个层面起码是高级软件工程师的级别。
当然有些程序员内在的东西不是靠语言或者写代码看出来的,因为一个优秀的程序员不仅仅是代码能力以及框架能力,还有几个非常重要的能力
程序员的能力表面是可以直接展示出来,但很多内在需要是需要时间的磨合才能了解,人就才能见人心,而且很多优秀的程序员是培养出来的,能够长时间在一起的队友都是时间长了磨练出来的。
希望能够帮到你。
自认为不是一个好的面试官,因为我认为在这么短的时间内,准确地衡量出来程序员水平的高低是有比较大的难度的,并且我有多次看走眼的时候,面试的时候觉得能力还不错,但是入职工作了一段时间之后,编程能力不忍直视。
工作之后接触一段时间,我会从这么几个方面观察他们,以判断技术能力的高低和发展潜力。
能不能出活儿、能不能debug
能不能把开发任务按时按质量地完成,当然是最主要的衡量标准了:
解决问题的方法
在开发过程中,难免会遇到没有见过的问题,有些程序员遇到问题无从下手,而优秀的程序员,自有一套解决问题的方法。
分析问题、流程设计的思路
有人会认为,程序员的主要工作就是敲代码,上班大部分时候都是在敲代码,其实并不是这样:
总结问题和改进问题的能力
好的程序员,相同的问题不会犯第二次,差的程序员,总会在一个问题上栽跟头:
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
不请自来,一介码农路过,留下些看法。
程序员主要是有四种综合能力,也就是debug 能力、 performance分析、 保护性编程和 投入产出比。
仅仅独立完成日后必然成高手?在这里不能说一棒子打死,至少对于很多人来说,能独立完成是没什么问题的,有的是因为对业务熟悉,有的是真的基础扎实。但怎么说呢,程序员和浏览器打交道是最多的,现在这个互联网时代,遇到的大部分问题网络都是可以解决的,也就是普通程序员 + 网络 = 超级程序员。 但很多人也没明白具体的原理,甚至都是这个项目抄抄那个项目抄抄的,久而久之虽然解决了平时的业务,但进步的空间却很少,甚至止步不前,写出来的代码也可能存在很多坑,所以,仅仅能独立完成任务的话,离高手还有比较远的一段距离。
如何辨别高手程序员?也就是结合我们一开始列举的那四个能力进行判断。不同级别的程序员,在那综合能力面前,强弱也是不同的。例如在奔溃的或者其他性能调优问题上,即使是面对大量复杂的代码,在信息不全的时候也会一步步的分析,抽丝剥茧缩小范围,最终定位根本原因
,并且最终给出一个好的方案。
如何成为高手程序员?
当然还有看他摘了帽子是否秃顶这样的笑话,就再不赘述了。
第一阶段(黄金):会用编程语言实现需求,比如现在的业务系统,都会找一些会搬代码的人来拼工作量,也就是能自己独立基于搭好的框架实现crud常规操作。
第二阶段(铂金):除了crud,还会有一些自己踩过坑的经验,知道如何处理一些常见问题,或者可以基于搜索引擎快速解决一些异常情况。
第三阶段(钻石):能解决一些疑难杂症和会通过debug部分源码类库查看到这些疑难杂症是如何引发的,并通过编码解决这些问题,还能进行一些局部的性能优化,类似某个系统接口缓慢可以单独去优化。
第四阶段(星耀):会基于整个系统进行设计和规划,根据业务特性选择合适的框架,从源头控制开发遇到问题的频率,可以自主的搭建框架并完善机制,了解各个组件工作原理。
第五阶段(王者):小说里面总是说练武功的永远比不过创造武功的,同样的道理,用框架的也往往不如写框架的,所以写框架的这类人单独分层。
第六阶段(荣耀):其实这个阶段不应该列入进来,因为这类人往往不编码的,只是给出思想;像Hadoop这种框架就是基于人家发表的一些论文(bigdata)进行编码实现的,这类人注重的是思想和算法,区块链,大数据,云计算等等概念的创造和理论的支撑是这类人提出来的,这些人才是真正影响行业走向的人。
程序员的水平高低,不是靠语言或外在表现就能看出来的,不是看他会多少技术、参加过多少项目、写了多少博客,而是看他在实际业务场景中解决问题的能力,尤其是面对一些特别复杂的问题,或在高强度、高压工作状态下解决问题的能力与态度。
技术可以通过学习掌握,但是解决问题、定位问题的能力却不是一蹴而就。大家可能会说,“解决问题的能力”这个太宽泛了吧,可以更具象化吗,有具体的测量方法吗?简单整理了以下几点供参考。
会写出满足需求的代码,早就不是评判程序员水平的标准了。代码编写既要满足业务需求,同时还要考虑后续的软件维护,说得通俗些,既要自己爽,也要别人爽。一个优秀的程序员,会致力于写出更简单、更效率、可读性强、扩展性强的程序代码。
程序员在日常工作中,需要理解各式各样的业务需求,所以这就需要程序员具备一定的逻辑思维能力。可以说,逻辑思维是程序员的灵魂,因为每一行代码都是程序员逻辑的体现。
项目着急上线,发布时出现问题?
业务高峰时段,系统宕机了?
业务催、运营催、用户催、老板催!
各种形态的bug,各种着急的心情,背后无数支眼睛盯得内心慌慌......
这些都是一位合格程序员所需要面对的日常。不同的程序员,在解决问题的方法、效率、质量等方面,都各有千秋。一个经验丰富的程序员,能够扛住各方压力,在复杂条件下找到核心问题,通过抽丝剥茧的分析来找到产生问题的原因,并快速进行应对处理,事后及时复盘总结,减少同类问题出现的概率。
随之互联网的发展,越来越多的人涌入程序员这个赛道,竞争日益激烈,加之新技术层出不穷,更新迭代快,程序员所使用的语言、框架、模式都会发生天翻地覆的变化。如果不主动学习,你很快就会被落伍淘汰。
这种其实在面试过程中能体现出来,沟通主要是技术沟通,以及和客户之间的沟通,所有技术都不是闭门造车就能搞定的,沟通能让事情推进起来更加顺畅,包括和产品经理之间的流畅的沟通也显得非常重要。程序员的能力表面是可以直接展示出来,但很多内在需要是需要时间的磨合才能了解,人就才能见人心,而且很多优秀的程序员是培养出来的,能够长时间在一起的队友都是时间长了磨练出来的。
线上出bug了,第一时间响应、处理;
团队项目进度紧张、人手紧缺,主动补位;
又或者,在项目推进过程中如果只是关心自己模块内容,对于整个项目置之不理,只守着自己的一亩三分地。
随着时间轴的拉长,你会发现,有此f技术能力不是最好的,甚至不如你的小伙伴,最后做到了技术主管或经理、甚至更高职位,这里面除了技术实力,还有一个叫“责任心”的东西。
结束语
判断一个程序员的水平高低,核心是其解决问题的能力,而解决问题的能力养成,需要扎实的底层基础来支撑,要综合其代码质量、项目经验、框架能力、逻辑思维等等多方面,不能单看某一方面。
而对于1-6岁的程序员来说,想要成为一个高级程序员,变得越来越优秀,唯有持之以恒去学习、积累、实践、修炼。
----end----
一:50岁的时候,头发还是黑色的浓密的。
二:赚到的钱能保证家人快乐的生活。
三:当公司不要你的时候能成功转型。
其他的例如编程经验、写代码厉害啊什么的根本不值一提。
这就是程序员的面试嘛 :-)
(1)是否能熟练使用所用编程语言的主要功能;
(2)是否知道用合适的数据结构解决问题;
(3)是否知道基本的算法,并且用这些算法解决问题;
(4)只看少量代码的话,从变量命名和程序结构一般能够判断是否是新手;
(5)给出具体问题,能够用程序解决,能考虑到所有的边界条件;
(6)考虑程序的可扩展性,可维护性;
再往高一点走,就需要
(7)面对模糊的问题能够分析并且找到细节和具体的需求;
(8)知道利用已有的库,架构和工具等来解决新的问题,而不是什么都自己实现;
(9)能发现并改进已有程序中的瓶颈;
(10)对整个大项目的程序架构有很清晰的了解,知道相互之间的依赖,以及知道为什么采用这样就架构;
(11)给一个大的项目,能够对整个项目的程序架构和组件进行合理的设计,考虑并行性,低延迟,大数据量等各种需求和应对方式。
带领团队已多年,项目数十个,对判别程序员水平的高低,我有自己的看法,欢迎大家一起交流。
1.代码质量。
优质的代码,首先是经得起考验。静态分析工具过一遍,无错误,无警告。当然警告部分需要人工重审,因为静态分析工具不一定完全正确。过了这一关,重要的还须过测试关,少Bug或无Bug的代码,才是好代码。优质的代码带有技术气质和艺术气质。阅读起来,有一种赏心悦目的快感,即工整美观,干净利落,又蕴含着理论常识,运用技巧,精准到位。
2.表达能力。
3.文档能力。
文档形式包括但不限于PPT,文字,图表,音视频。文档内容包括但不限于API说明,工具手册,项目事项,技术论述,陷阱总结,方案展示,指导手册。文档要求必须是满足公司或部门的规范和格式,否则五花八门的,不利于交流和传承。
以上3点,是我量化判断程序员水平的标准,仅供参考。相比水平,其实我更看重程序员的态度,执行力,时间观念,自学力等等,也是很重要的团队作战能力,也可以说是程序员水平的考量吧。
谢谢大家。
❾ 程序员代码质量的好坏是如何区别的
现在的程序设计是一个系统的过程,程序员代码质量的高低往往也与他所处的团队有较大的关系,也就是说顶层的设计与代码质量有直接的关系。所以说优秀的团队往往都是优秀的代码,但是普通的团队往往很难写出优秀的代码。
代码的编写大致上经历几个步骤,第一个步骤是顶层设计(架构师)。
顶层设计包括软件架构设计、技术方案等内容,落实到代码上往往就是大量接口的定义。好的设计需要考虑三方面因素,分别是结构性(模块化)、完整性、扩展性,当然还需要考虑可移植性,通常结构性好的代码移植性也会比较不错。
第二步是核心代码的实现(研发级程序员)。
有的团队也把这部分称作为“容器”开发,简单的说就是功能性平台开发,目的是实现平台级API。这部分代码的开发是整个软件开发的核心部分,承担这部分开发任务的程序员往往就是我们所说的研发级程序员。研发级程序员代码质量的衡量标准主要在算法设计与实现上,性能指标是考核的重要因素,另外还要考虑稳定性和完整性等核心因素。
第三步是功能编写(应用级程序员)。
功能编写简单的说就是完成具体的业务逻辑实现,需要调用平台提供的API完成具体的功能。这部分程序员占据了程序员群体的大部分比例,也就是通常所说的应用级程序员。应用级程序员的代码质量主要从代码编写结构上来看,比如是否有标准的打包、命名、注释,以及代码整体结构是否清晰,逻辑结构是否清晰等方面。
往往程序员代码的质量会随着编程经验的提高而不断得到提高。
我做软件开发多年,目前的主要研究方向是大数据和人工智能,也在带大数据方向的研究生,我会陆续在头条上写一些关于大数据方面的文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。
如果有大数据方面的问题,也可以咨询我,
谢谢!
❿ 关于程序员,卓有成效的绩效考核方法
考核程序员第一条:编程能力,看代码行数和实现的功能项数
考核程序员第二条:纠正能力,考核其按时完成整改和待整改问题的比率
考核程序员第三条:程序风格,检查里面违反编程规定的次数作为关键的考核点