八个重要的程序员习惯

“一个人只有通过教育才能成为一个人。他就是教育造就了他。”
I. Kant
我认为,这句话非常适合程序员。实际上,程序员不仅是精通技术问题的专家。程序员首先是一个工匠,他每天使用自己的知识来创建代码。没有纪律使用某些技能,就不可能创建好的代码。这是经常使用的习惯。

碰巧的是,不良习惯会阻止我们的生活和工作,而好的习惯会提高生产力,总的来说,一个人会从生活中获得更多乐趣。如果您努力工作并开始养成和养成良好的习惯,您很快就会开始注意到自己如何成为更高层次的专家。但这还不是全部,您的同事也会很快注意到情况的好转,这将迫使他们学习和采用有用的技术。在团队中使用代码时,您可以阅读此人在每次提交中的工作态度。

因此,让我们了解一下程序员的八种有用习惯,这些习惯将使您成为最佳专业人员。

1.不要重复(干燥-不要重复自己)


您可能会遇到这样一个事实,在查看代码的下一部分时,您会认为:“嗯,这里我已经做了类似的事情,但是参数不同,并且通常会有不同的数据数组。”

这应该是一个电话,要求您在将来再次重复此代码,条件和数据也会稍有更改。但是,如果您不注意此信号或不急,那么将来将来需要类似的解决方案时,很可能会从头开始重新编写算法。这样的算法将逐渐积累,代码将不断增长,最终您将完全失去对此类面条进行编辑和改进的动力。

因此,养成遵循DRY原则的良好习惯(请勿重复)。每当您发现自己编写了类似的算法时,就花点时间考虑一下不同实体的几种可能选择。如果算法复杂,则组织一个小的通用函数甚至一个类。与为特定任务编写快速解决方案相比,这需要花费一点时间,但是将来它将节省大量调试和测试时间。

逐渐地,一个完整的空白库将堆积在您的手中,您可以在任何项目中轻松使用它们。

整个编程包括在过程中执行的少量工作。让自己挤出比当前所需更多的东西。然后,您将开始成长。

有很多类似的原则非常有用,可以遵循。但是,在我看来,DRY对于程序员工作中的其他一切至关重要。

2.一旦确定一切都已完成,请重构


大多数程序员,特别是初学者,都相信他们的工作在代码开始按预期执行任务后就完成了。直到现在,“制成”一词的含义比普通的代码编写更为广泛。

代码是否正常工作?是!那怎么办?

恩,那就对了。在继续执行下一个任务之前,请回顾一下您编写的内容。从开始到结束。您很可能会注意到,某些变量在不方便的地方声明,并且不清楚为什么需要它们。屏幕上可能还会出现一条太长的线条,不适合屏幕显示,这意味着您需要在此处考虑如何使其更加美观。或者该功能过于庞大,可以分为几个部分。
考虑一下将来会阅读您的代码的人。无论他们喜欢此代码还是不喝啤酒,都无法解决。

做一个漂亮的决定,而不仅仅是一个可行的决定。就像优秀的作者在草稿后一样:他们阅读了数次,扔掉了不必要的部分,使读者喜欢它,并掌握了要点,而不必太详细。

我强烈建议您阅读Robert Martin的相关主题一本启发性的书,应该放在每个程序员的库中。

3.专注于业务任务


许多程序员倾向于专注于研究工作的技术方面,并认为业务与他们无关。最主要的是给出良好的技术规格,然后我将以最好的方式进行所有操作。只有真正成为您的手艺大师,您才必须了解为什么您从事的业务已经接下了生意。

如果想象一个纯粹的TK程序员而不理解其本质是很不礼貌的,那么可以举一个例子。公交车司机坐在旁边,乘客告诉他:“左转,右转,现在右转。”因此,乘客“驾驶”了公共汽车。但是,如果驾驶员主动问:“我需要去哪里?”,那么乘客可以简单地说:“我们要去城市N”,一切都会变得很容易。驾驶员知道最终目的地,并可以根据自己的经验独立地建立路线并告诉自己转弯的位置和方式。

奇怪的是,但是许多程序员并不理会项目的目的。并且,一方面,您可以理解这种观点,因为编程是一项非常困难的脑力劳动。有时,您对乐器的了解在脑海中占据了很大一部分,以至于其他所有东西都没有足够的资源。因此,事实证明,程序员就像没有观察窗的油箱中的驾驶员一样,只能在机组指挥官踩到旋钮时才转动旋钮。

同样,了解业务问题也不会让您在给定的时间投入完全不必要的开发。例如,如果任务是创建一个有助于在通过测试时编译统计信息的函数,那么,知道这不是一项对性能至关重要的任务,您就不再需要花费大量时间进行过度的优化并加快算法的速度。一样,这不会影响最终结果。测试仅由开发人员运行,并且每周仅运行一次。

再举一个例子,如果该程序具有一个所有用户每天都要运行几次的功能,那么花更多的精力来制定该功能的理想版本及其在界面中的理想可访问性是有意义的。在这里,您已经可以不花时间了。

但是,从不熟悉业务任务的程序员的角度来看,这两个任务似乎是等效的。

为了更好地理解,我建议您阅读Simon Sinek的书《从为什么开始》

4.小提交


我认为程序员需要使用版本跟踪系统这一事实是显而易见的。我想谈谈另一个非常有用的习惯-这是尽可能多地,尽可能少地进行提交。同时,向每个提交添加有意义和有用的注释。

通常,刚开始的程序员甚至经验丰富的程序员到一天结束时都会一键推销所有修改过的文件以及诸如“ fix issue29”之类的无用注释。或“已修复请求中的错误”。这样的描述中没有人会理解具体进行了什么。并且当需要将如此大的提交合并到一个公共分支中时,存储库的所有者首先会在精神上遮住懒惰的开发人员。其次,如果在合并过程中发生冲突,所有者可能会简单地回滚此提交而不接受。谁想从他误解了一个错误的事实中发现,在手动解决冲突时,该条件被证明是多余的。

另一方面,如果您定期每小时进行一次更改,并为每个提交提供更详细的描述,以便将来无需查看代码即可轻松了解所做的更改以及对这些更改的考虑更改之后,您将达到对编写代码的一般哲学的新认识。现在,您不仅会“维修工作组”,而且您将成为创意团队的一员,并通过您的提交与同事进行交流,就像在聊天中一样。这将是一次有意义的对话。

作为文学作品,我强烈建议至少阅读Scott Chacon和Straub Ben撰写的“ Git for Professional Programmer”一书中的第一章。当您发现Git有哪些美妙的功能以及它具有的功能后,它仅会更频繁地提交,其余的可以通过必要的工具来解决。

5.数时间


任何工作都有开始和结束。程序员的效率以解决某些问题所需的小时数来衡量。解决任务的速度越快越好。这是很明显的,不需要任何解释。

但是,这一证据还有另一面,这常常使程序员难以理解-您需要准确计算在解决方案上花费的时间。当您坐在9点到5点的工作中,穿插着各种印章和会议时,您会感觉不到。现在是你的工作。
从一开始,我就养成了计时的习惯,只需写下有关我白天的工作的报告并弄清楚大概的时间。即使这样,我仍然粗略计算出我只有8个小时中的4个小时才能有效工作。

然后,他安装了特殊程序,可以自动计算时间。最初,我使用www.rescuetime.com。由于有了这个程序,我发现社交网络虽然对我来说似乎是一个小小的浪费,但实际上确实破坏了我的表现。最后,我决定在工作时间内完全禁止访问某些网站。为此,浏览器中还有一些特殊的插件。

当我决定使用程序代码修复确切的工作时间时,需要进行时间跟踪的下一步。为此,我首先尝试了hubstaff.com。事实证明,如果您在团队合作中使用它,这是一个相当昂贵的解决方案。

然后尝试了wakatime.com原来那是银弹。该服务具有集成到所有流行IDE中以及与github集成的能力。因此,您最多可以在一分钟内准确确定编程花费了多少分钟。此外,还有对提交的绑定。当您不仅可以看到提交本身,而且还可以了解花费在此提交上的时间,这真是太好了。Maxim Dorofeev
撰写的“ Jedi Techniques”一书中包含了一组用于正确安排时间和进行项目工作的惊人食谱

6.稳定性是精通的标志。


正如您可能已经了解的那样,您可以无休止地发展自己的技能和能力。就您的新经验而言,您一年前所做的事情似乎很荒谬和朴实。当然,您将拥有改进的方法来编写复杂的表达式。
但是,在所有这些之中,您必须养成遵守某些规则的习惯。即使您似乎还没有完全解决,也要在所有地方使用这些工作方法。

使用代码示例:如果您决定使用特定的方案来命名变量或使用空格而不是制表符,则请始终遵循此原则。您不需要每周尝试一种新样式,也不必尝试应用新的高级做法。因此,您只是失去了注意力。

不稳定的问题是时间会破坏任何软件产品。几个人在程序上工作的时间越长,在此过程中进行的更改就越大,最终会造成混乱。如果每个团队成员均未遵守特定协议。

那么,要遵循不变性原则需要做什么呢?

您需要采用的第一件事是坚持代码中明确的样式。在JetBrains编辑器中,我非常喜欢用于指示代码质量的工具。我曾经害怕过如此多的警告,但是当您开始以有条理的方式遵循短绒棉布的建议时,代码就会变得清晰且美观。

还研究有关如何命名类,方法和变量的文献。我推荐史蒂夫·麦康奈尔(Steve McConnell)撰写的《完美代码》(Perfect Code)。

一次,当所有人都已经离开家的时候,我晚上读了半个小时的书。这本书在办公室图书馆里。仅仅几个月之后,我就看到了在那之前我编写的所有恐怖片。我不得不逐渐引入新技术并进行重构。

7.做一次


“我待会儿解决。” 当我们遇到代码中的错误或在循环中进行处理的正确条件不足时,我们每个人都对自己宣告了这一点。而且我们每个人都知道此“稍后修复”,然后以注释形式保留在代码中去做当您自己看到样式的代码注释时去做,这仅表示某人不遵循“此时此地”的原则。在撰写此评论的那一刻,程序员很可能非常了解问题所在以及如何解决该问题。因为它是在当前任务的上下文中。但是,如果您稍后返回到代码的这一部分,将很难理解为什么需要这样的保留。
因此,养成一个非常重要的习惯-从头开始制定解决方案,直到完成任务为止。最完整的-因为用100%覆盖所有选项是不现实的。但至少不要为这些留出空间去做-注释。毕竟,如果您提出并花时间评论,则意味着下一步-实施-所剩无几。

了解您确实已经完成了这段代码的一个好方法是创建一个测试以检查几个传入条件。

8.永不停止学习


看来,这是任何专家(不仅仅是程序员)都需要的一项显而易见的技能。但是,不幸的是,许多人忘记了他。有时,我会问参与编程的朋友最近读过哪些书。通常,许多人开始难以回忆起一两年前阅读的内容。同时,他们在大学或某些课程中掌握了一些技巧,并一直使用。

但是,如果在这样一个快速发展的领域中,您每个月至少停止了解一次新工具,新技术或有趣的概念,那么一段时间后,您可能会发现您实际上不了解当前的情况。

这一次发生在我身上。我开发了一个成功的产品,并出售了一段时间。当然,我听说过有关新框架的故事,但是我并没有对其给予太多关注。他非常沉迷于解决方案的开发和支持。

只有当客户流减少时,我才意识到我的产品需要进行现代化。然后我遇到了一个巨大的障碍。我以前只使用PHP,很少使用AJAX函数。为了理解现代的React,Angular,Vue JS框架,我需要紧急花费大约一年的时间来通过书本进行研究。最有趣的是,如果我之前花了足够的时间进行培训,那么我的产品就不会失去竞争力。只是,不支持旧功能,而是有必要学习新功能并逐步引入技术,而不是在这种紧急模式下。

结论


即使您对自己的技能有百分之一百的信心,也要记住,完美无极限。不要停止问自己挑衅性的问题。自己承认,在某些领域您没有足够的培训,或者您不了解熟悉的框架中的细微之处,但是您想了解它们。现在,花费几个小时并直接在本地服务器上从github运行测试版本非常容易。

在如此小的实验中,您将训练自己的技能并养成所有重要的习惯。

All Articles