首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

高效程序员的七个习惯

2020-01-14

软件工程师花费许多时刻经过操练leet code问题和完善简向来取得更好的面试经过或许。一旦他们终究被谷歌、亚马逊或其他公司选用,他们或许会发现:曩昔用来得到这份作业的技术与他们日常作业中需求的技术并不匹配。

咱们的团队遭到 TechLead 创立的高效程序员七项技术的启示。咱们想供给咱们自己对这个论题的观念。以下是咱们总结的高效程序员的七项技术。

除了你,每个人写的代码都是废物?实际上,可以在他人的代码之上继续作业是一项有多重优点的巨大技术。

不论从前工程师的代码是多么紊乱或许考虑不周,您依然需求可以扩展它。究竟,这是你的作业。一同,这个“从前的工程师”也或许是一年前的你。

这项技术在两个方面对你有利。榜首,可以阅览他人的代码是一个了解什么是糟糕规划的好机会。当你阅览他人的代码时,你会知道什么是有用的,什么是无效的。更重要的是,您可以了解什么类型的代码关于其他工程师来说是简略扩展的,以及什么类型的代码难以扩展。

你需求保证在阅览他人代码时尽或许多地找出问题所在。这样,其他的工程师就会知道你是一个多么优异的工程师。保证您提出了关于可保护代码和杰出注释的重要性观念。这进一步显现了你在编程范畴的优势。

您的代码应该规划得十分好,不需求任何文档。事实上,假如你是一个好的程序员,你不需求任何文档来阐明你的任何代码。这仅仅浪费时刻,更需求你花时刻的是编码和开会。

可以阅览他人杂乱无章的代码的话,也使得在需求更新的时分变得简略。这有时意味着更新您缺少经历的代码。例如,咱们从前将一个脚本从 Powershell 更新到 Python 再到 Perl。咱们在Perl方面的经历有限,但咱们依然有满意的布景常识来弄清楚这段脚本究竟做了什么,并做出必要的改动。

这一切都来自于对一切代码的杰出了解以及可以阅览以往的代码。阅览他人的代码会让你变得有价值,因为这项技术乃至可以让你接手那些让他人尴尬的过度工程化的体系。

有许多技术需求花时刻去学习。咱们以为值得了解的技术之一是了解什么项目不值得做,什么项目显然是酒囊饭袋。

大公司总是有十分十分多的项目在进行,其间有些项目或许永久都不会完结,即时完结了,或许对公司也没有什么有利的影响。有些或许自身就没有任何商业含义 ,还有一些项目或许存在办理不善的问题。这并不是说当你不认可一个项目时,你应该当即回绝这个项目。最嗨仍是看看项目关连人是怎么看待这个项目的,假如他们自己都不能正确地解说他们对这个项目的终究效果会怎么样的,那么或许这个项目就不值得做。

此外,有些项目或许过于专心于技术而不是处理方案,以至于从一开端就很清楚不会有太多的影响。这个技术需求你在知道一个糟糕的项目究竟是什么之前做许多糟糕的项目。所以,不要过早地花费太多时刻企图区别每个项目。

在你职业生涯的某个时刻,你会具有杰出的直觉与认识。

不论您是软件工程师仍是数据科学家,会议都是必不可少的,因为您需求可以与项目经理、终究用户和客户达到一致。可是,也有一种倾向,会议会忽然接收你的整个时刻表。这便是为什么学会怎么防止不必要的会议是很重要的。

或许一个更好的词是办理,而不是防止。这儿的方针是保证你把时刻花在可以推进决议方案和协助你的团队行进的会议上。

最常见的办法便是每天抽出两个小时的时刻,这是一个继续不断的会议。一般,大多数人会在他们以为有利的时分定时召开会议。他们会运用这段时刻来赶上他们的开发作业。

另一个防止开会以便完结作业的办法是在他人之前呈现。就我个人而言,咱们喜爱早到,因为一般来说,办公室比较安静。大多数早到的人和你相同,仅仅想把作业做完,这样就不会有人打扰你了。

这对个人贡献者来说很重要,因为咱们的作业需求咱们会集注意力的时刻,并且咱们不会和其他人攀谈。 是的,有时分你或许需求处理问题,你或许想和其他人一同作业。可是一旦你处理了堵塞问题,你只需求编码。它是关于进入那个区域,在那里你不断地在你的脑筋中有许多关于你正在做的作业的杂乱的主意。 假如你总是停下来,很难从中止的当地重新开端。

一些计算机专业的学生在他们出道的那天就开端运用 Git 了。他们不需求专业人士辅导就可以了解每一个指令和参数。其他人在他们的榜首份作业中榜首次体验到 GitHub。 对他们来说,Github 是一个地狱般的当地,充满着紊乱的指令和进程。他们永久都不是100%的确认自己在做什么。

不论您的公司运用什么库房体系,假如您正确运用它,该体系都是有用的,假如运用不当,则是一个妨碍。一个简略的commit或push就可以让你花上几个小时来理清一些由多个分支兼并组成的大杂烩。此外,假如您常常忘掉运用库房的最新版别,那么您还将处理不那么好玩的兼并抵触。

假如您需求一个 Git 指令备忘单,那么就做吧。只需能让你的日子更简略。

年青的工程师或许会有一种倾向,那便是企图将他们所知道的一切都完成到一个处理方案中。有一种期望,那便是把你对面向目标程序规划、数据结构、规划形式和新技术的了解用到你编写的每一个代码中。然后,你就很有或许创立了一个不必要的杂乱性,因为它很简略过度依附于您曩昔运用过的处理方案或规划形式。

在杂乱的规划概念和简略的代码之间取得平衡。规划形式和面向目标规划应该尽或许的去简化微观方案中的代码。进程越是被笼统、封装和黑盒化,就越难以调试和保护。

这一条适用于团队中的任何人物,不论你是财政剖析师仍是软件工程师。但关于技术人物好像每个人都更需求学会这一条。假如您是一名数据工程师,您或许会被要求做更多相似开发方向的作业。一些团队需求数据提取,其他团队需求仪表盘,其他团队又需求新的数据剖析对接。

区别作业的优先次序和说不,是两种不同的技术,但它们严密地交错在一同。优先级区别意味着你只花时刻在对公司有很大影响的作业上。可是,说不有时仅仅意味着逃避应该由其他团队来处理的作业。关于一切人物而言,它们常常一同呈现。

这或许是一个很难取得的技术,因为你总是期望用自己的办法去满意每一个恳求。尤其是你刚从大学毕业。你想防止让任何人绝望,并且你总是能得到许多的作业。可是,在大公司里总是有无穷无尽的作业量,所以一定要捉住要害:只承当能做的作业。

有许多技术在面试中是没有办法测验和验证的,乃至在大学里都没有教过。一般情况下,这更多的是环境的约束,而不是缺少让学生暴露在实在环境中开展生长的期望。

有一种技术在面试中很难测验,在大学学习时也很难仿制,那便是考虑终究用户或许会怎么过错地运用你的软件。咱们一般将其称为场景化操作思维。

因为大部分编程都是保护性的,因而它一般意味着更改与其他代码高度耦合的代码。即便是简略的更改也需求盯梢目标、办法和 API的每一个或许存在引证的当地。不然,很简略意外地打破你没有认识到的模块衔接。即便您仅仅更改数据库中的数据类型。

它还包含在进入开发之前经过边际事例和全体化的高档规划进行考虑。

关于开发新模块或许微服务的场景就愈加杂乱,花时刻去考虑所构建的操作场景十分重要。想想未来的用户或许需求怎么运用您的新模块,他们或许会怎么不正确地运用它,或许需求什么参数,以及未来的程序员是否会以不同的办法需求您的代码。

简略的编码和编程仅仅问题的一部分。创立一个在你的电脑上运转杰出的软件是很简略的。可是布置代码或许犯错的办法就会有许多。一旦进入出产环境,就很难说代码将怎么运用,以及哪些其他代码将附加到原始代码中。五年后,未来的程序员或许会对你的代码局限性感到懊丧。

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

热门文章

随机推荐

推荐文章