当前位置: 首页 > 科技观察

软件开发人员如何提高个人和团队的生产力

时间:2023-03-19 19:28:44 科技观察

程序员如何提高生产力以成为一名出色的程序员。关于这个主题可以写一整本书(并且已经写完)。01可选开发工具的合理选择作为软件开发人员,大部分时间都在使用软件开发工具,工具的好坏对生产力影响巨大。不幸的是,选择开发工具的主要标准似乎是对该工具的熟悉程度,而不是该工具对当前项目的适用性。请记住,当您在项目开始时选择工具时,您可能需要在整个项目期间(甚至更长)使用这些工具。例如,一旦开始使用缺陷跟踪系统,由于数据库文件格式不兼容,可能很难切换到另一个系统,源代码控制系统也是如此。幸运的是,现在软件开发工具(尤其是IDE)已经比较成熟,而且很多都是可以互操作的,所以你不太可能做出错误的选择。尽管如此,在项目开始时仔细考虑工具选择可以在以后为您省去很多麻烦。软件开发项目最重要的工具是选择使用哪种编程语言,以及使用哪种编译器/解释器/翻译器。选择最好的语言是一个很难解决的问题。你可以很容易地为一些编程语言辩护,因为你熟悉它们,不需要重新学习;但是,未来在维护代码的同时学习编程语言的新工程师的工作效率可能会大大降低。此外,选择某些语言可以简化开发过程并提高生产力,足以弥补学习语言的时间损失。如前所述,选择一种糟糕的语言会浪费大量开发时间,直到您意识到它不适合该项目并且必须重新开始。编译器性能(一个典型的源文件每秒可以处理多少行代码)会对您的工作效率产生巨大影响。如果编译器平均需要2秒而不是2分钟来编译一个源文件,那么使用更快的编译器可能会更有效率(尽管更快的编译器可能缺少一些以其他方式降低效率的特性)。工具处理代码的时间越少,用于设计、测试、调试和优化代码的时间就越多。使用一系列可以很好协同工作的工具也很重要。今天,我们理所当然地使用集成开发环境(IDE),它将编辑器、编译器、调试器、源代码浏览器和其他工具集成到一个程序中。这使我们能够在编辑器中快速进行更改、重新编译源代码模块并在调试器中运行结果,所有这些都在屏幕上的同一窗口中进行,从而大大提高了工作效率。但是,您经常需要在IDE之外处理项目的某些方面。例如,某些IDE不支持源代码控制或错误跟踪(尽管许多IDE支持)。大多数IDE不提供用于编写??文档的文字处理器,也不提供用于维护需求列表、设计文档或用户文档的简单数据库或电子表格功能。很可能,您将不得不使用IDE以外的程序,例如文字处理器、电子表格、绘图/图形工具、网页设计工具和数据库程序,来完成项目所需的所有工作。在IDE之外运行程序不是问题,只需确保您选择的应用程序与您的开发过程和IDE生成的文件兼容(反之亦然)。如果您必须不断运行转换程序以在IDE和外部应用程序之间移动文件,您的工作效率就会降低。我可以为您推荐一些工具吗?不能。因为项目的需求不同,我不能在这里给出那个建议。我的建议是在项目初期就注意这些问题。但我可以给出的一个建议是在选择开发工具时避免“我们为什么不尝试这项新技术”。在使用开发工具(并基于它编写源代码)6个月后,如果您发现它没有发挥作用,后果可能是灾难性的。除了考虑产品开发,你还得仔细评估这些工具,只有在确定新工具真的有用后,才会选择使用新工具。Apple的Swift编程语言就是一个典型的例子。在Swiftv5.0发布之前(Swift首次发布后大约4年),使用Swift语言一直令人沮丧。Apple每年都会发布一个与旧版本代码不兼容的新版本,迫使您修改旧程序。此外,该语言的早期版本缺少许多功能,有些功能开发得不好。Swift语言直到5.0版(在撰写本书时发布)才变得相对稳定。然而,那些早早赶上潮流的可怜人为语言的不成熟发展付出了代价。遗憾的是,在许多项目中,您无法自己选择开发工具。这个决定来自于上级的命令,或者你继续使用产品以前的工具。抱怨它不仅浪费时间和精力,还会降低你的工作效率。相反,您应该充分利用您拥有的工具集并成为使用它的专家。02ManagingOverhead对于任何项目,我们都可以将工作分为两类:与项目直接相关的工作(例如,为项目编写代码或文档)和与项目间接相关的工作。间接活动包括开会、阅读和回复电子邮件、填写考勤卡和更新日程安排。这些是间接活动,会增加项目的时间和成本,但不会直接有助于完成工作。通过遵循WattsS.Humphrey在个人软件工程(《个人软件工程》)中描述的方法,您可以跟踪项目期间花费的时间,并轻松查看直接花在项目上的时间,以及花在间接间接费用活动上的时间。如果您将超过10%的时间花在头顶活动上,那么您应该重新考虑您的日常活动。您应该尝试减少或整合这些活动,以减少它们对您的工作效率的影响。如果您不跟踪在项目之外花费的时间,您就会错失通过减少管理开销来提高生产力的机会。03设定明确的目标和里程碑当最后期限迫在眉睫时放慢速度是人类的天性,然后在最后期限临近时进入“超级模式”。没有目的,人们就很难高效地完成工作。如果没有最后期限,人们将很难有动力及时实现这些目标。所以,为了提高你的生产力,一定要有明确的目标和子目标,并将它们附加到里程碑上。从项目管理的角度来看,里程碑是项目中代表工作进度的标记点。一个好的经理总是会在项目进度表中设定目标和里程碑。然而,很少有时间表为个别程序员提供有用的目标。这就是个人软件工程需要发挥作用的地方。要成为超级高效的程序员,您需要对项目中的目标和里程碑进行微观管理。简单的目标,比如“我要在午饭前完成这个功能”或“我要在今天回家之前找到这个错误的根源”可以让你保持专注。而其他更大的目标,比如“下周二我将完成这个模块的测试”或者“今天我将至少运行20个测试程序”,可以帮助你衡量生产力并确定你是否实现了你的目标。04练习自我激励能否提高你的工作效率取决于你的态度。虽然其他人可以帮助你更好地管理你的时间,或者在你遇到困难时帮助你,但最重要的是你必须主动提高自己。你需要时刻注意自己的节奏,不断努力提高自己的表现。通过跟踪您的目标、努力和进度,您会知道何时需要“振作起来”并通过更加努力地工作来提高工作效率。缺乏动力可能是生产力的最大障碍之一。如果你的态度是,“啊,我今天要做这个,”与你的态度是,“哇!那是最好的部分!它会很有趣!”相比,你完成这项任务可能会花费更长的时间。更多的。当然,并非您所做的每项任务都很有趣。这是个人软件工程需要介入的领域。如果你想保持高于平均水平的生产力,当一个项目让你感到“没有动力”时,你需要有足够的自我激励。尝试创造一些理由使工作更具吸引力。例如,为自己创造小挑战,并在完成时奖励自己。一个高效的软件工程师通常会练习自我激励:你在项目上保持动力的时间越长,你的工作效率就越高。05专注并消除干扰专注于一项任务并消除干扰是另一种显着提高生产力的方法。您应该能够“进入最佳状态”。以这种方式工作的软件工程师比那些同时处理多项任务的人更有效率。为了提高工作效率,您应该尽可能长时间地专注于一项任务。在没有任何视觉刺激(显示屏除外)的安静环境中,专注于一项任务最容易。有时工作环境不利于你集中注意力。在这种情况下,戴上耳机并播放背景音乐可能有助于消除干扰。如果音乐太分散注意力,请尝试听白噪声,网上有一些白噪声应用程序。每当您的工作被打扰时,您都需要时间来恢复。事实上,您可能需要半个小时才能完全专注于您的工作。当你需要专注于一项任务时,张贴一个标志,表明只有紧急事情才会打扰你,或者在你可以被打扰的时候在你的工作台附近张贴“办公时间”,例如允许其他人打扰您5分钟。回答同事自己能想通的问题,可以节省他们10分钟的时间,但可能会浪费你的半小时。您必须作为团队的一员并成为一名优秀的队友,但是,确保过多的团队互动不会降低您(和其他人)的工作效率也很重要。在一个典型的工作日中,有许多预定的工作中断,例如用餐时间、休息时间、会议、处理电子邮件和时间统计等管理任务等等。如果可能,您可以尝试围绕这些事件安排其他活动。例如,关闭任何电子邮件提醒,因为很少需要在几秒钟内回复电子邮件,而且如果有紧急情况,您会被亲自找到或接到电话。如果人们确实希望您快速回复,请设置闹钟提醒自己在设定的时间查看电子邮件(同样适用于短信和其他干扰)。当您接到很多非紧急电话时,您可以考虑将手机调成静音,并在休息时间每隔一小时左右检查一次短信。你如何做到这一点取决于你的个人和职业生活,但你分心的事情越少,你的工作效率就会越高。06如果你感到无聊,做点别的事情有时,无论你多么有动力,你都会对工作感到厌倦,难以集中注意力,而且你的工作效率会直线下降。如果你不能进入最佳状态并专注于任务,那就休息一下,做点别的事情。不要以无聊为借口,在没有完成太多工作的情况下从一个任务跳到另一个任务。但是当你确实遇到了障碍并且无法前进时,请尝试切换到你可以更有效地做的事情。07尽可能自力更生您应该尽最大努力处理分配给您的所有任务。虽然这不会提高您的工作效率,但如果您不断向其他工程师寻求帮助,可能会降低他们的工作效率(请记住,他们还需要保持专注并避免分心)。如果您正在从事一项需要更多知识的任务并且您不想经常打扰其他工程师,您有几个选择:花时间自学,这样您就可以完成任务。虽然这可能会影响您的短期生产力,但您获得的知识将帮助您在未来完成类似的任务。去见你的经理并解释你遇到的问题。讨论将任务重新分配给更有经验的人,然后再分配给你一个你可以更好地处理的任务的可能性。安排与您的经理会面,在不影响其他工程师工作效率的时间寻求帮助(例如,在工作日的早上)。08认清何时需要帮助有时您的自力更生可能有点过头了。您可能在一个您的队友只需几分钟就能解决的问题上花费了太多时间。成为一名优秀的程序员的一部分是认识到你被困住了,需要帮助才能继续前进。遇到困难时,最好的办法是设置一个定时闹钟——在你被问题困住几分钟、几小时甚至几天之后,打电话寻求帮助。如果你知道向谁求助,那就直接去找吧。如果您不确定,请咨询您的经理。最有可能的是,您的经理会指导您找到合适的人,这样您就不会打扰那些无论如何也帮不了您的人。团队会议(每日或每周)是向团队成员寻求帮助的好地方。如果你手头有几项任务,而你在某项任务上卡住了,把它搁置一旁,处理其他任务(如果可能的话),并把你的问题留到团队会议上问。如果您在会议前完成工作,请让您的经理分配一些其他工作,这样您就不必打扰其他人。此外,在处理其他任务时,您也可能会找到解决方案。09克服士气低落没有什么比团队成员士气低落更快地扼杀一个项目了。以下是一些帮助您克服士气低落的建议:了解项目的商业价值。通过了解或提醒自己项目的实际目的,您会对项目更有热情和兴趣。对项目负责(你的部分)。当您对项目负责时,您的自豪感和荣誉就会与之相关。无论发生什么,确保您始终可以谈论您对项目的贡献。避免在您无法控制的项目问题上投入精力。例如,如果管理层做出了一些影响项目进度或设计的糟糕决定,那么请在这些限制范围内尽最大努力工作。当你可以努力时,不要只是坐在那里抱怨管理决策。如果您的个性对您的士气造成影响,请与您的经理和其他受影响的人讨论。沟通是关键。任由问题继续下去只会导致更大的士气问题。时刻警惕可能降低士气的情况和态度。一旦项目团队的士气开始下降,通常就很难恢复。你越早处理士气问题,就越容易解决它们。有时,财务、资源或个人问题会降低项目参与者的士气。作为一名优秀的程序员,你的工作就是介入、克服挑战、继续编写出色的代码,并鼓励项目中的其他人也这样做。做到这一点并不总是那么容易,但从来没有人说过成为一名优秀的程序员很容易。本文节选自《编程卓越之道(卷3):软件工程化》一书!