热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高效程序员的七个习惯

软件工程师花费大量时间通过练习leetcode问题和完善简历来获得更好的面试通过可能。一旦他们最终被谷歌、亚马逊或其他公司录用,他们可能会发现:过去用来得到这份工作的技能与他们日常工作中需要的技能并不匹配。我们的团队受到TechLead创建的高效程序员七项技能的启发。我们想提供我们自己对这个话题的看法。以下是我们总结的高

软件工程师花费大量时间通过练习leet code问题和完善简历来获得更好的面试通过可能。一旦他们最终被谷歌、亚马逊或其他公司录用,他们可能会发现:过去用来得到这份工作的技能与他们日常工作中需要的技能并不匹配。

我们的团队受到 TechLead 创建的高效 程序员 七项技能的启发。我们想提供我们自己对这个话题的看法。以下是我们总结的高效程序员的七项技能。

1. 学习如何阅读别人的代码

高效程序员的七个习惯

除了你,每个人写的代码都是垃圾?实际上,能够在别人的代码之上继续工作是一项有多重好处的伟大技能。

不管以前工程师的代码是多么混乱或者考虑不周,您仍然需要能够扩展它。毕竟,这是你的工作。同时,这个“以前的工程师”也可能是一年前的你。

这项技能在两个方面对你有益。第一,能够阅读他人的代码是一个了解什么是糟糕设计的好机会。当你浏览别人的代码时,你会知道什么是有效的,什么是无效的。更重要的是,您可以了解什么类型的代码对于其他工程师来说是容易扩展的,以及什么类型的代码难以扩展。

你需要确保在阅读他人代码时尽可能多地找出问题所在。这样,其他的工程师就会知道你是一个多么优秀的工程师。确保您提出了关于可维护代码和良好注释的重要性观点。这进一步显示了你在编程领域的优势。

您的代码应该设计得非常好,不需要任何文档。事实上,如果你是一个好的程序员,你不需要任何文档来说明你的任何代码。这只是浪费时间,更需要你花时间的是编码和开会。

能够阅读别人乱七八糟的代码的话,也使得在需要更新的时候变得容易。这有时意味着更新您缺乏经验的代码。例如,我们曾经将一个脚本从 Powershell 更新到 Python 再到 Perl。我们在 Perl 方面的经验有限,但我们仍然有足够的背景知识来弄清楚这段脚本到底做了什么,并做出必要的改变。

这一切都来自于对所有代码的良好理解以及能够阅读以往的代码。阅读别人的代码会让你变得有价值,因为这项技能甚至可以让你接手那些让别人难堪的过度工程化的系统。

2. 对坏项目的感觉

有许多技能需要花时间去学习。我们认为值得了解的技能之一是理解什么项目不值得做,什么项目显然是行尸走肉。

大公司总是有非常非常多的项目在进行(老板自己都不知道有多少),其中有些项目可能永远都不会完成,即时完成了,可能对公司也没有什么有利的影响。有些可能本身就没有任何商业意义(至少对你来说不是) ,还有一些项目可能存在管理不善的问题。这并不是说当你不认可一个项目时,你应该立即拒绝这个项目。最嗨还是看看项目干系人是如何看待这个项目的,如果他们自己都不能正确地解释他们对这个项目的最终成果会怎么样的,那么可能这个项目就不值得做。

此外,有些项目可能过于专注于技术而不是解决方案,以至于从一开始就很清楚不会有太多的影响。这个技能需要你在知道一个糟糕的项目到底是什么之前做很多糟糕的项目。所以,不要过早地花费太多时间试图辨别每个项目。

在你职业生涯的某个时刻,你会拥有良好的直觉与意识。

3. 避免不必要的会议

高效程序员的七个习惯

无论您是软件工程师还是数据科学家,会议都是必不可少的,因为您需要能够与项目经理、最终用户和客户达成共识。然而,也有一种倾向,会议会突然接管你的整个时间表。这就是为什么学会如何避免不必要的会议是很重要的。

也许一个更好的词是管理,而不是避免。这里的目标是确保你把时间花在能够推动决策和帮助你的团队前进的会议上。

最常见的方法就是每天抽出两个小时的时间,这是一个持续不断的会议。通常,大多数人会在他们认为有益的时候定期召开会议。他们会利用这段时间来赶上他们的开发工作。

另一个避免开会以便完成工作的方法是在别人之前出现。就我个人而言,我们喜欢早到,因为一般来说,办公室比较安静。大多数早到的人和你一样,只是想把工作做完,这样就不会有人打扰你了。

这对个人贡献者来说很重要,因为我们的工作需要我们集中注意力的时间,而且我们不会和其他人交谈。 是的,有时候你可能需要解决问题,你可能想和其他人一起工作。但是一旦你解决了阻塞问题,你只需要编码。它是关于进入那个区域,在那里你不断地在你的头脑中有许多关于你正在做的工作的复杂的想法。 如果你总是停下来,很难从中断的地方重新开始。

4. 使用Git

高效程序员的七个习惯

一些计算机专业的学生在他们出道的那天就开始使用 Git 了。他们不需要专业人士指导就可以理解每一个命令和参数。其他人在他们的第一份工作中第一次体验到 GitHub。 对他们来说,Github 是一个地狱般的地方,充斥着混乱的命令和进程。他们永远都不是100%的确定自己在做什么(备忘录之所以流行是有原因的)。

无论您的公司使用什么仓库系统,如果您正确使用它,该系统都是有用的,如果使用不当,则是一个障碍。一个简单的commit或push就可以让你花上几个小时来理清一些由多个分支合并组成的大杂烩。此外,如果您经常忘记使用仓库的最新版本,那么您还将处理不那么好玩的合并冲突。

如果您需要一个 Git 命令备忘单,那么就做吧。只要能让你的生活更简单。

5. 编写简单可维护的代码

高效程序员的七个习惯

年轻的工程师可能会有一种倾向,那就是试图将他们所知道的一切都实现到一个解决方案中。有一种愿望,那就是把你对面向对象程序设计、数据结构、 设计模式 和新技术的理解用到你编写的每一个代码中。然后,你就很有可能创建了一个不必要的复杂性,因为它很容易过度依附于您过去使用过的解决方案或设计模式。

在复杂的设计概念和简单的代码之间取得平衡。设计模式和面向对象设计应该尽可能的去简化宏观计划中的代码。进程越是被抽象、封装和黑盒化,就越难以调试和维护。

6. 学会说不,分清主次

这一条适用于团队中的任何角色,不管你是财务分析师还是软件工程师。但对于技术角色似乎每个人都更需要学会这一条。如果您是一名数据工程师,您可能会被要求做更多类似开发方向的事情。一些团队需要数据提取,其他团队需要仪表盘,其他团队又需要新的数据分析对接。

区分事情的优先顺序和说不,是两种不同的技能,但它们紧密地交织在一起。优先级区分意味着你只花时间在对公司有很大影响的事情上。然而,说不有时只是意味着回避应该由其他团队来处理的工作。对于所有角色而言,它们经常同时出现。

这可能是一个很难获得的技能,因为你总是希望用自己的方式去满足每一个请求。尤其是你刚从大学毕业。你想避免让任何人失望,而且你总是能得到大量的工作。但是,在大公司里总是有无穷无尽的工作量,所以一定要抓住关键:只承担能做的事情。

有很多技能在面试中是没有办法测试和验证的,甚至在大学里都没有教过。通常情况下,这更多的是环境的限制,而不是缺乏让学生暴露在真实环境中发展成长的愿望。

7. 场景化思维

高效程序员的七个习惯

有一种技能在面试中很难测试,在大学学习时也很难复制,那就是思考最终用户可能会如何错误地使用你的软件。我们通常将其称为场景化操作思维。

由于大部分编程都是维护性的,因此它通常意味着更改与其他代码高度耦合的代码。即使是简单的更改也需要跟踪对象、方法和 API的每一个可能存在引用的地方。否则,很容易意外地打破你没有意识到的模块连接。即使您只是更改数据库中的数据类型。

它还包括在进入开发之前通过边缘案例和整体化的高级设计进行思考。

对于开发新模块或者微服务的场景就更加复杂,花时间去考虑所构建的操作场景非常重要。想想未来的用户可能需要如何使用您的新模块,他们可能会如何不正确地使用它,可能需要什么参数,以及未来的程序员是否会以不同的方式需要您的代码。

简单的编码和编程只是问题的一部分。创建一个在你的电脑上运行良好的软件是很容易的。但是部署代码可能出错的方式就会有很多。一旦进入生产环境,就很难说代码将如何使用,以及哪些其他代码将附加到原始代码中。五年后,未来的程序员可能会对你的代码局限性感到沮丧。

本文译自: https://dev.to/seattledataguy/7-habits-of-highly-effective-programmers-inspired-by-an-ex-google-techlead-humor-4b4k


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 我们


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
author-avatar
幸运幸福一家人1314_332_887
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有