高性能程序员的7个习惯

新手程序员花大量时间来获取完成面试所需的知识。 他们解决问题并改善简历。 但是,最有趣的部分是在程序员获得期望的职位之后开始的-在某些初创公司,Google,亚马逊或其他地方。 经常会发现,帮助一个人找到工作的知识和技能与您需要了解并能够执行其日常任务的知识和技能不符。



这篇文章的作者(我们今天将其翻译发表)说,他工作的团队受到TechLead关于高效程序员7种习惯的故事的启发。 团队成员决定表达自己的想法。 在这里,以技巧的形式,分析了有效程序员的7种技能。

1.学习阅读别人的代码



除您之外的每个人都编写糟糕的代码。 这就是为什么程序员具有使用其他人的代码的能力是一项宝贵的技能的原因。 这一技能使拥有它的人受益匪浅。

程序员需要能够理解别人的代码。 毕竟,这是他的工作。 这样的代码有多令人困惑或编写得有多糟糕都没关系。 顺便说一句,“别人的代码”可能是一年前程序员自己写的。

该技能通过两种方式对程序员产生积极影响。 首先,阅读他人代码的能力使人们能够理解劣质代码的工作方式。 通过他人的工作,您可以发现哪些技术是工人,哪些不是。 其次,更重要的是,它有助于揭示其他人对别人的代码的理解的特殊性,从而找出哪些代码容易被理解,哪些难以理解。

如果您阅读了别人的代码并在代码中找到了自己不喜欢的东西,请不要对它保持沉默。 这将提高您在同事眼中的信誉。

注意与您一起工作的人员,编写易于维护的代码有多重要,良好的注释有多重要。 这将进一步加强您在团队中的地位。

您自己的代码应设计得如此高品质,使其清晰且无需文档。 实际上,优秀的程序员无需编写代码。 这是浪费时间,最好将时间花费在编程和会议上。

理解低质量代码的能力尤其有助于对此类代码进行更改。 有时,这意味着编辑某人不太擅长的代码。 例如,有一天,我们遇到了一个脚本,该脚本涉及PowerShell,Python和Perl等技术。 在Perl中,我们不太了解。 但是,我们设法非常深入地了解了该项目,设法了解了所发生事情的本质,并对代码进行了必要的更改。 由于我们了解需要更改的代码(包括Perl脚本的代码),因此这成为可能。

理解他人代码的能力提高了程序员的价值,因为他可以理解甚至复杂的系统是如何安排的,这样,当您查看它们时,其他人就会简单地放弃。

2.培养不成功的项目


有许多技能需要时间来掌握。 我们确信其中之一,是值得掌握的,是使您了解不应该处理的项目,以及哪些项目很有可能导致“生存竞赛”。

在大型公司中,总是有许多程序员正在从事的项目。 但是并非所有这些项目都会完成。 并非所有这些都将是有益的。 其中可能是那些没有商业意义的(至少对于程序员而言)。 一些项目,通常是有希望的项目,可能会遭受管理缺陷。 这并不意味着您在意识到自己不同意提供这些想法之后就应该立即放弃一些想法。 但是,如果该想法的作者不能清楚地说明公司在项目完成后可以给项目带来什么好处,那么也许就不值得开始这样的项目。

此外,某些项目可能过于注重技术而不是解决特定问题。 有时候,即使在工作的开始,这也使我们了解到,完成这样的项目不会带来太大的好处。

为了一目了然地学习以识别没有希望的项目,您需要参与许多此类项目。 因此,如果您正处于程序员职业的初级阶段,请不要花费太多时间来评估所有适合您的项目的前景。 随着时间的流逝,您将发展出内在的本能,在此本能的引导下,您可以快速识别注定要失败的项目。

3.避免开会



无论您做什么工作,都不能没有会议。 这绝对适用于所有人。 事实是,您需要找到与项目经理,用户,客户共同的语言。 但是,会议具有一个令人不愉快的功能:有时它们突然占据了几乎整个工作日。 这就是为什么学会避免不必要的聚会非常重要。 也许最好不要“避免开会”,而要努力“控制在会议上花费的时间”。 这样做的目的是仅将时间花在那些确实必要的会议上,而只用于那些对项目开发有贡献的会议上。

会议中最常用的时间管理方法是每天分配两个小时的时间,这将成为连续的会议。 许多人在他们认为最合适的时间设置了定期会议。 这些会议用于讨论工作问题。

管理时间的另一种方法是比其他人更早开始工作,以管理您的业务。 例如,我们更喜欢这样做。 顺便说一句,如果您提早到办公室,在那里工作比平常要安静得多。 早起的大多数人都是一样的。 他们这样做是为了有时间应付他们的工作。 因此,它们不会干扰他人的工作。

就我们而言,这对于单个团队成员而言很重要。 事实是,我们的工作需要时间才能完全专注于特定任务。 目前,我们不与任何人交流。 当然,在某些情况下,要解决问题,您需要与他人讨论并共同努力。 但是,在所有问题解决之后,开发人员只需要编写代码。 总的来说,我们谈论的是进入某个舒适区,程序员可以在其中始终牢记与他要解决的任务相关的所有内容。 如果他经常被打扰,他可能很难迅速回到他分心的地方。

4.掌握GitHub



当您看一些高级程序员时,您会感觉到他们在生命的第一天就开始使用GitHub。 他们了解每个命令和参数的含义,可以轻松应对自己的事务。

但是其他人在他们的第一份工作中首先遇到了GitHub。 对于他们来说,GitHub是一个真正的地狱,它由模糊的团队和神秘的流程构建而成。 他们永远不会完全确定自己在做什么。 这就是为什么GitHub上的各种“备忘单”非常受欢迎的原因。

以上适用于任何版本控制系统。 如果使用正确,它将非常有用。 如果使用不正确,将会严重干扰工作。 一个简单的PR或提交很容易变成一场噩梦,这需要程序员花费几个小时。 这段时间将用于解开分支和叉子的复杂性。 此外,如果您经常忘记将最新版本的存储库下载到计算机,则可以不断处理合并冲突。 这没有什么好处。

如果您在GitHub上需要“备忘单”,请执行此操作。

了解如何有效地使用GitHub。 在这种情况下,实现此目标的精确程度无关紧要。

5.编写易于维护的简单代码



一些新手程序员具有以下特征:他们尝试在一个项目中实现他们所知道的一切。 这里的要点是,他们努力在他们创建的每段代码中使用有关面向对象编程,数据结构,设计模式和新技术的知识。 由于使用这种方法,程序员的任务很容易受到例如他已经在实践中实现的那些设计模式的影响,因此这不必要地使代码复杂化。

在过于复杂的项目结构和简单的代码之间保持平衡。 设计模式和面向对象的编程旨在简化大型项目中的代码。 但是,我们越依赖抽象和封装,解决方案中存在的黑匣子越多,调试此类解决方案的代码就越困难。

6.学会说不,优先


实际上,该建议可以提供给任何人-至少是财务分析师,至少是程序员。 但是可以注意到,感觉到每个人都希望技术人员有一些特别的东西。 例如,如果您是一名数据分析工程师,那么可能会得到比您应做的任务要广泛得多的任务。 一些团队需要某种数据样本,另一些团队则需要汇总数据,而另一些则需要新的管道。

应该注意的是,优先排序的能力和拒绝的能力实际上可以是两个独立的技能。 但是,这些技能彼此之间有着非常紧密的联系。 如果需要其中之一,通常需要第二个。 优先级排序是指只花时间在对公司有严重影响的事情上。 拒绝的能力就是拒绝执行别人应该做的工作。

了解人们在谈论的内容可能很困难,因为人们经常努力解决所遇到的每个问题。 对于那些刚刚学到第一份工作的人来说尤其如此。 以前,在他们的研究中,他们得到了可以应付的任务。 现在,在工作中,他们期望如此,并努力不让任何人失望。

在这里,您需要了解,在大型公司中,任务数量是无限的。 最重要的是仅承担那些可以解决的任务。

面试中有许多未测试的技能。 他们在学校很少有。 通常,这种情况的出现仅是由于学习环境的特征,而不是因为有人不想向学生展示他们可能在现实中面临的实际任务。

7.学习思考如何使用您的开发。



有一项技能很难在面试中组织测试。 学习时很难重现需要它的情况。 它具有查看软件系统最终用户可能犯的错误的能力。 我们通常将其称为“对程序用例的思考”。

实际上,这种“方案思考”只是所谓的“免于傻瓜保护”的一个相当柔和的名字。

例如,由于程序员的大部分工作是支持代码,因此他经常不得不更改与其他内容密切相关的代码。 即使是简单的更改,也需要搜索所有使用它的地方。 例如,某个系统的对象,方法,API可以更改。 如果对系统进行了不合理的更改,则可能“破坏”程序中完全意外的部分的工作。 此外,我们正在谈论的是任何规模的变化-甚至是数据库中类型更改之类的东西。

此技能还包括查找和分析在使用系统时可能出现的临界情况的能力。 这还包括在设计阶段理解高级决策方案的能力。

这也适用于开发系统的较大部分,例如模块或微服务。 开始解决此类问题时,您需要考虑计划使用的实体将如何使用。 您需要考虑滥用它们的场景,使用它们的各种选项,以及您所创建的内容乍一看可能完全不明显。

编写代码的过程只是解决特定问题的一部分。 创建易于在您的计算机上运行的程序很容易。 但是其他人正在使用的代码的行为很容易与最初预期的完全不同。 您编写的代码将如何在生产中使用? 他将与哪些系统进行交互? 它可以成为什么过程的一部分? 他看起来不是太原始了,只限于几年后必须支持他的程序员吗? 这些是非常困难的问题。

总结


在本文中,我们向您概述了高性能程序员共有的7种技能。 我们希望您已经找到了自己想要发展的人。

亲爱的读者们! 对于在编程方面追求专业精神的人,您会建议掌握什么?

Source: https://habr.com/ru/post/zh-CN457382/


All Articles