程序员的基本素质:团队精神协作与文档习惯不可缺

2025-04-02
来源:网络整理

1:团队合作与协作

将其视为基本品质并不重要。相反,这是程序员拥有的最基本,最重要的基础。那些将高级程序员称为孤独男人的人在讲话,任何个人的力量受到限制。即使是这样的天才也需要通过组建一个强大的团队来创造奇迹。那些在世界范围内写下核心的大师没有合作精神的大师是难以想象的。小牛可以通过赚钱来赚钱,但是一旦他们进入一些大型系统的研发团队并进入了商业和生产的开发任务,缺乏这种质量的人将完全不合格。

2:文档习惯

那些说高级程序员从不写文件的人绝对是不干的年幼孩子。良好的文档是正式研发过程中非常重要的一部分。作为代码程序员,撰写技术文档的30%是正常的工作时间,而作为高级程序员和系统分析师,这一比例要高得多。缺乏文档,软件系统缺乏活力,并且将在未来的错误检查,升级和重复使用模块中遇到很大的麻烦。

3:标准化和标准化的代码写作习惯

通常,一些众所周知的外国软件公司,代码的可变命名,代码中的注释格式,即使是巢中的凹痕长度以及功能之间的空白行数。良好的写作习惯不仅有助于编码移植和错误校正,还有助于不同技术人员之间的协作。

一些粉丝大声疾呼由高级程序员编写的代码,而另一些则从未理解。这种喧嚣只能证明他们根本不值得自称为程序员。该代码可读性良好,是程序员的基本质量要求。

让我们看看整个结构。没有标准化和标准化的代码习惯,全球研发协作绝对是无法想象的。

4:需要了解

程序员需要了解模块的需求。许多孩子通常只专注于编写程序时的功能要求。他们将所有性能指标归因于硬件,操作系统和开发环境,并忽略其代码的性能考虑。有些人曾经说编写广告交换计划很简单。这样的人永远不知道如何按照数百万甚至数千万访问的顺序实施绩效指标。对于这样的程序员,如果您给他们深蓝色的系统,他们将无法获得访问太极拳链的能力。在绩效需求指标中,稳定性,支持能力和安全性很重要。作为程序员,您需要评估模块位于系统操作中的环境,受到的负载压力以及各种潜在危险和恶意攻击的可能性。在这方面,成熟的程序员至少需要2到3年的项目研发和跟踪经验才能拥有经验。

5:可重复性,模块化思维能力

您通常可以听到一些程序员对此抱怨。在编写了几年的计划之后,他们成为熟练的工人。他们每天都没有任何新颖性重复一些代码。这实际上是中国软件人才的最大浪费。一些重复的任务已成为熟练的程序员的主要工作,实际上可以完全避免这些任务。

可重复使用的设计和模块化思维要求程序员在完成任何功能模块或功能时要进行更多思考,而不是将自己限制为完成当前任务的简单想法。考虑一下如果没有此系统,该模块是否可以存在,以及是否可以通过简单地修改参数在其他系统和应用程序环境中直接引用该模块。这将在很大程度上避免重复发展工作。如果软件研发单元和工作组可以在每个研发过程中考虑这些问题,那么程序员不会浪费太多的重复工作时间,并且将有更多的时间和精力投入到创新的代码工作中。

一些良好的程序模块代码,甚至是1970年代编写的,适用于某些系统作为功能模块。我现在看到的是,许多小型公司一旦升级或改进,通常都会重写所有代码,而大多数重复的工作对于浪费时间和精力都是没有用的。

6:测试习惯

作为某些商业和常规发展,全日制测试工程师是必不可少的,但这并不意味着对于全日制测试工程师,程序员无法进行自我测试。作为工程学,一个非常重要的功能是,发现问题越早,解决问题的成本就越低。程序员在每片代码和每个子模块完成后进行仔细的测试,他们可以尽早发现和解决一些潜在的问题,以最大程度地提高整体系统构建的效率和可靠性。

测试工作实际上需要考虑两个方面。一方面,这是正常呼叫的测试,即该程序是否可以在普通呼叫下完成基本功能。这是最基本的测试责任。不幸的是,许多公司已经成为唯一的测试任务,并且实际上远远落后。另一方面,它是异常的呼叫测试,例如在高压负载下的稳定性测试,在潜在的异常输入情况下测试,测试用户的测试,在整体系统故障情况下模块的影响状况,当常见的例外请求时,模块稳定性测试当然,当当然要对其代码进行整体范围,而是对各种范围进行整体范围,而是要进行整体范围,而是要进行整体范围,而是要进行整体范围,而这些范围的整体范围又不是在整体上进行的,而是该计划的整体范围,而是要进行整体测试。项目,进行针对性的相关测试,并尽快发现和解决问题。当然,这需要上面提到的要求和理解能力。

7:学习和总结的能力

程序员是容易被消除且容易过时的职业,因为技术可能仅在三到两年内就领先。如果程序员想安定下来,他们必须不断跟进新技术并学习新技能。

擅长学习是任何职业前进的必要动机,对于程序员来说,这一要求更高。但是学习也需要找到正确的目标。一些年轻的粉丝还谈论他们的学习能力。他们学习ASP,PHP和JSP。他们将其用作资本来炫耀,盲目地追逐一些表面,表面的事物和名词,在不了解通信传输协议的情况下进行网络程序,并在不了解中断矢量处理的情况下进行应用程序。这些技术人员,无论他们掌握了多少所熟悉的新语言,都将永远没有定性的改进。

擅长总结也是学习能力的反映。每次完成研发任务或代码时,您都应有意跟踪程序和用户反馈的应用状态,随时汇总并找到自己的缺点。只有这样,程序员才能通过逐渐改进。

一个没有增长潜力的程序员,即使他看起来像主人,也不建议选择他,因为他会在过时的时候很快到达。

具有上述素质的人应该说是合格的程序员。请注意,上述素质不是由智商确定的,也不是在某些大学教科书中学到的。需要的是程序员对自己的工作的理解,这是一个有意识的问题。

作为一名高级程序员,甚至是系统分析师,对于程序员来说,除了具有以上所有素质之外,您还需要具有以下素质:

首先,需求分析能力

对于程序员来说,理解要求可以完成合格的代码,但是对于研发项目组织和经理,他们不仅需要了解客户需求,而且还需要自己制定一些需求。他们为什么这么说?

一般而言,在执行研发任务时,可能是客户提出的要求或营销和营销部门提出的要求。目前,他们为研发部门看到的不是完全要求。一般而言,要求只是某些功能要求或更正式的要求,并且可能会获得完整的用户视图;但这还不够,因为由于更多的非技术因素,客户可能很难提出完整,清晰或专业的绩效要求。但是,对于项目组织者和计划者来说,他们必须能够清楚地认识到这些要求的存在,并在完成要求分析报告时适当提出它们。同时,它们必须在设计手册中充分而清楚地反映,以便程序员在编码时不会丢失这些标准。

程序员必须正确理解用户需求所在的环境,并对需求进行针对性的分析。例如,如果通过ASP租赁发布并发布了相同的软件,则性能要求可能会有所不同。前者强调更好的支持能力和稳定性,而后者可能会在各种平台下强调更多的普遍性以及安装和使用的简单性。

其次,项目设计方法和过程处理功能

程序员必须能够掌握不少于两到三种项目设计方法(例如,从上到下的设计方法,例如快速原型制作方法等),并能够根据项目需求和资源匹配选择适当的设计方法,以用于项目的整体设计。如果未正确选择设计方法,它将延迟研发周期,浪费研发资源,甚至会影响研发效应。

程序员还需要大量精力来设计和处理流程图。他需要制作数据流程图以建立数据字典;他需要处理逻辑流程图以形成整体系统处理过程。即使代码很漂亮,并且每个模块都很精致,涉及该过程问题的系统也不会成为一个好的系统。当然,在过程分析和选择良好的项目设计方法方面做得很好,需要对需求分析功能充分信心。

第三,可重复使用的设计和模块化分解功能

这似乎是旧曲调的评论。难道不是用基本素质来解释这个问题吗?

作为从事模块任务的程序员,他需要考虑他面对的特定功能模块的可重复使用性。作为系统分析师,他必须面对更复杂的问题。他需要根据模块化分析能力将整个系统分解为许多可重复使用的功能模块和功能,并为每个模块构成独立的设计要求。例如,它就像汽车生产一样。一开始,每辆车都是独立安装的,每个组件都是量身定制的。但是后来变成了不同。它是在机械化中大量生产的。一家汽车工厂开始通过装配线生产汽车。独立部分开始具有一定程度的可重复性。后来,标准化成为一个主要趋势。来自不同型号,品牌甚至不同制造商的汽车零件也很容易被更换和升级。目前,汽车生产的效率最大化。软件工程也是如此。在成熟的软件行业中,在某些相关的项目和系统中,可以随意更换不同的组件。例如,许多的桌面软件,许多操作模块(例如打开文件,保存文件等)都被重复使用相同的功能模块集,并且这些接口通过某些类库将其提供给桌面应用程序开发人员,以易于附件。这是重复使用模块设计的明显证据。

将大型,复杂的应用程序系统分解为一些相对独立的,高度可重复使用的模块组合,这些模块组合只能依靠几个参数来完成数据连接,这是作为高级程序员和系统分析师的最重要任务。适当的项目设计方法和清晰的流程图是实现此目标的重要保证。

第四,整体项目评估能力

作为系统设计师,您必须能够从整体情况开始,并清楚地了解该项目的整体,例如公司的资源分配是否合理,是否适当,以及项目计划是否可以最大化效率并且不能按计划完成。评估整个项目和每个模块的工作量,项目所需的资源以及评估项目中可能遇到的困难都需要大量的经验积累。换句话说,这是一个只能通过连续摘要和积累来实现的状态。在西方,一些软件系统设计领域的领导者非常古老,例如4、50岁,甚至更老。与年轻人相比,他们在编码方面的积极性要小得多,但是就项目评估而言,它们数十年的积累是最重要,最有价值的资产。中国缺乏这样一代的程序员,主要是因为不是那个年龄,但是年龄的程序员基本上是由研究机构制造的,不是由基于专业产品的软件研究和开发制成的。他们无法积累基于产品的研发经验,这也是不可能的。

第五,团队组织和管理能力

要完成一个项目,团队需要一致的努力。作为项目设计师或研发主管,您应该有能力最大程度地提高团队的整体优势。由于其专业性质,技术管理与普通人事管理并不相同,因为这里设计了一些技术指标和因素。

首先是工作量化。没有量化,很难进行适当的绩效评估。程序量化不是一个简单的代码行,因此技术经理必须能够真正评估模块的复杂性和工作量。

第二个是调整团队协作模型。一般而言,计划开发的协作通常分为组。这些小组具有主要的程序员方法和民主方法。根据程序员与项目研发需求之间的能力水平的差距,选择适当的团队形成方法,并可以将职责和权力与成员的工作任务紧密相结合,以最大程度地提高团队组成的效率。

具有高码级别的人可能无法成为合格的项目研发主管。在这一领域缺乏能力通常很容易被忽视。

总而言之,我们可以看到,作为负责研发的人,项目设计师需要拥有,程序员需要的质量和能力不是编写程序代码的能力。当然,总的来说,当程序员通过持续的摘要和改进来实现这种质量时,他的代码写作能力并不简单,但是请注意此处的因果关系。高级项目设计师通常是一个非常出色的代码编写的人,但没有非常出色的代码的程序员可以胜任项目设计。这里存在的不是智商和教科书的问题。程序员仍然没有意识到在积累经验并逐渐改进时应考虑哪些方面,并且没有自觉地思考项目组织和重用设计,并且没有定期的文档习惯和摘要习惯。如果我们不更改这些,那么我们合格的项目设计师仍然非常缺乏。

此外,为了防止无聊的人认真对待我,我想补充一点,本文旨在构建商业软件项目和项目。科学研究机构(例如算法专家和图像处理专家)的编程专家正在研究研究主题,而不是直接完成商业软件(当然,他们最终会间接成为商业产品,例如 所做的研究主题)。因此,他们强调的质量可能是其他的。这些人(专家)不能说是程序员,不能由程序员标准来衡量。

最后,让我们添加一些东西。软件项目开发的设计过程是什么?以通常的标准设计方法为例(但我喜欢快速原型方法)。

第一步是市场研究,必须合并技术和市场以反映最大价值。

第二步是需求分析。在此阶段,需要生产三件事,用户视图,数据字典和用户操作手册。用户视图是软件用户(包括最终用户和管理用户)可以看到的页面样式,并且包含许多操作过程和条件。数据字典是指示数据的逻辑关系并组织起来的。完成数据字典后,数据库设计已超过一半。用户的操作手册是指定操作过程的手册。请注意,用户操作过程和用户​​视图是由要求确定的,因此应在软件设计之前完成。完成这些将为计划研发提供限制和标准。不幸的是,太多的公司没有因果关系和不加区分的秩序而做到这一点,而发展工作和实际需求经常变得疏远。

要求分析除了上述工作外,作者还认为,作为项目设计师,我们应该制定完整的项目绩效要求手册,因为只有那些了解技术的人才能理解绩效要求,这需要技术专家和需求者之间的真正沟通和理解(客户或公司营销部门)。

第三步是概述设计,最初对系统功能模块进行划分,并提供合理的研发过程和资源要求。作为快速原型方法,您可以通过完成轮廓设计进入编码阶段。通常采用此方法,因为涉及的研发任务属于新领域。技术主管一开始就不能提供明确的详细设计指令,但这并不意味着详细的设计指令并不重要。实际上,在快速原型制定方法完成原型代码之后,必须根据评估结果以及经验和经验教训的摘要对详细的设计步骤进行重新编程。

第四步是详细的设计,这是测试技术专家设计思维的重要步骤。详细的设计手册应以最干净的方式(黑匣子结构)为编码器提供特定的模块,以便可以最大化系统的整体模块。良好的详细设计手册可以最大程度地减少编码的复杂性。实际上,严格来说,详细的设计手册应详细介绍每个函数的每个参数的定义。从需求分析到大纲设计,再到详细设计手册的完成,应该说软件项目已完成一半。换句话说,大型软件系统在一半的过程中尚未启动一系列代码工作。那些简单地理解基于软件的程序员作为编写代码的人会犯错误。

第五步是编码。在标准化的研发过程中,在整个项目过程中,通常在时间的1/3过程中,编码工作最多不会超过1/2。刀的所谓锐化不会延迟木材的砍伐。如果设计过程完成良好,则编码效率将大大提高。编码过程中不同模块之间的进度协调和协作是要小心的最必要的。也许小模块的问题可能会影响整体进度,从而导致许多程序员被迫停止工作和等待。这个问题已经在许多研发过程中发生。编码过程中的沟通和紧急解决方案非常重要。对于程序员而言,错误始终存在,您必须永远面对这个问题。著名的微软是否曾经连续三个月去过那里没有补丁?绝不!

第六步是测试

测试有多种类型:根据测试遗嘱执行人的说法,可以将其分为内部测试和外部测试;根据测试范围,可以将其分为模块测试和整体联合调试;根据测试条件,可以将其分为正常的操作测试和异常测试。根据测试输入范围,可以将其分为完整的覆盖测试和采样测试。以上所有内容都易于理解,并且不会被解释。

简而言之,测试也是项目研发中非常重要的一步。对于大型软件,从3个月到1年的外部测试是正常的,因为这些问题始终存在而无需预测。

完成测试后,完成接受并完成最终帮助文件,整个项目将结束。当然,将来将不可避免地会提供升级,维修和其他工作。只要您不想通过一次性交易作弊,就必须跟踪软件的操作状态并不断维修和升级,因为知道该软件已被完全消除。

编写这些步骤不是一个炫耀,因为老实说,我有一本名为“软件工程”的书,这是大学计算机科学的强制性课程,但我知道许多程序员似乎总是热衷于“ 30天熟练的VC”等等。其中一些来自像我这样的游击队,但没有定期研究这一专业。他们中的一些人早就归还了这些非常有用的东西,后者在他们完成了学分后将其归还给老师。

现在,互联网也很浮躁,一些粉丝大喊大叫并使公众感到困惑。实际上,真正的技术专家很少在互联网上发布。如果我对世界一无所知,我实际上不是大师。我无法忍受这种对技术和程序员的误解和胡说八道,所以我必须站起来做正确的事情。我也希望那些仍然沉迷于某些错误的人的粉丝可以认真考虑并走正确的道路。毕竟,那些聪明的头脑远非扮演应有的价值。

答案者: - 助理级别2 12-24 10:20

这是一个问题---!

基本C#VS中的所有控件和网络

哪些系统可以用作中间级别?网络将建立博客门户等。

高级意味着您可以执行OA ERP和其他大型软件网站

答案器

分享