Medium 2w+赞,高效程序员拥有的 7 个习惯!

受 TechLead 高效程序员的七项技能启发,咱们团队想就这个话题发表本身的见解。
vue

下面是咱们总结的高效程序员的七项技能。程序员

1. 学会如何阅读他人的代码

除了你,全部人写的代码都很糟糕。
web

这就是为何可以追踪他人的代码是一项具备多重好处的伟大技能。面试

无论以前工程师的代码有多么混乱或欠考虑,你仍然须要仔细阅读它。毕竟,这是你的工做。甚至一年前的那个工程师也是你。shell

这项技能对你有两个好处。第一,能阅读别人的代码让你有一个很好的机会去了解什么是糟糕的设计。当你在浏览别人的代码时,你会了解到什么有用什么没用。更重要的是,你还会了解到,对其余工程师来讲,哪一种类型的代码比较容易理解哪一种代码比较难理解。数据库

在阅读其余人的代码时,你能够尽情地地抱怨。这样,其余工程师就会明白你有多么优秀。编程

务必要提一下可维护代码和良好注释的重要性。这能够进一步显示出你在编程领域的优点。设计模式

你的代码应该设计得很是好,以致于不须要任何文档。事实上,若是你是一名优秀的程序员,就不该该编写任何代码的文档。这只是浪费时间,你须要把时间花在编程和会议上。微信

能阅读他人编写的混乱代码也使得在须要时更新变得更容易。这有时意味着更新你不了解的代码。例如,咱们曾经追踪一个脚本,从 Powershell 到 Python 再到 Perl 。虽然咱们在 Perl 方面的经验有限,但咱们仍然有足够的上下文来了解发生了什么,并作出所需的更改。数据结构

这源于咱们很好地理解了全部代码而且可以阅读 Perl 脚本。

阅读别人的代码会提高你的价值,由于你能够追踪那些由于过于复杂而让他人感到困惑的系统。

2. 可以感知糟糕的项目

有不少技能须要花时间去学习。咱们相信有一项技能是有必要了解的,那就是知道哪些项目不值得作,哪些项目必然失败。

大公司老是有不少正在进行中的项目,而有些项目可能永远没法完成或产生影响。有一些项目可能没有任何商业意义(至少对你来讲没有),还有一些项目管理不善。这并非说,当你不同意某个项目的时候,你就应该打断别人的想法。不过,若是涉众不能适当地解释他们将利用最终结果作什么,那么这个项目可能不值得作。

此外,有些项目可能过于关注技术而不是解决方案,所以从一开始就很清楚它不会带来太大的影响。对于这项技能,你须要在作过不少糟糕的项目以后,才能懂得什么样的项目是糟糕项目。因此,不要过早地花太多时间去辨别每一个项目。

在你职业生涯的某个时候,你就会有一个很好的直觉了。

3. 少开会

不管你是软件工程师仍是数据科学家,会议都是必要的,由于你须要可以与项目经理、最终用户和客户保持一致。然而,会议有时会忽然占满你的日程表。这就是为何懂得如何避免没必要要的会议很重要。也许用“管理”这个词比“避免”更好。这里的目标是确保你花在会议上的时间是为了推进决策并帮助你的团队前进。

最多见的方法就是在常常开会的日子里留出两个小时的时间。一般,大多数人会在他们认为有益的时候安排按期会议。他们将利用这段时间来遇上他们的开发工做。

另外一种少开会的方法是比其余人早到,这样你就能完成工做。就我我的而言,我喜欢早到,由于总的来讲,办公室比较安静。大多数早到的人都和你同样,只是想把工做作完,这样就不会有人打扰你了。

这对我的贡献者来讲很重要,由于咱们的工做须要咱们有时间能够保持专一,不和其余人交谈。是的,有时候你可能想和别人一块儿解决问题。可是一旦你解决了阻碍你前进的问题,你就只须要编码了。就是说,你须要进入一种状态,你的头脑中不断地保持着许多关于你正在作的工做的复杂想法。若是你不断地停下来,你就很难从中止的地方继续。

4. Github

一些计算机专业的学生从出生那天起就开始使用 GitHub。他们可以理解每个命令和参数,而且远远超过了专业人士。

有些人则是在第一份工做中首次接触到 GitHub 。对他们来讲,Github 使人困惑的命令和流程犹如梦魇。他们历来都没法 100% 肯定本身在作什么(这就是速查表受欢迎的缘由)。

不管你的公司使用哪一种存储库系统,若是使用得当,那么该系统就有帮助;若是使用不当,那么它就会成为障碍。一个不费多少时间的简单推送或提交就可让你花费几个小时去理清多个分支和复刻(fork)。此外,若是你常常忘记拉取存储库的最新版本,那么你还将处理并很差玩的合并冲突。

若是你须要保存一份 Github 命令速查表,那么这样作就好。只要能让你的生活变得更简单。

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

年轻工程师可能会倾向于将他们知道的全部东西都在一个解决方案中实现。这种愿望让你把本身对面向对象编程、数据结构、设计模式和新技术的理解所有都用在了每一段代码的编写中。这增长了没必要要的复杂性,由于很容易过分依赖于你过去使用过的解决方案或设计模式。

复杂的设计概念和简单的代码之间存在一种平衡。设计模式和面向对象的设计应该从总体上简化代码。不过,一个过程若是抽象、封装和黑盒化程度越高,调试就越困难。

6. 学会说“不”,分清轻重缓急

这适用于任何角色,不管是金融分析师仍是软件工程师。但尤为值得一提的是,彷佛每一个人都须要技术角色提供一些东西。若是你是一名数据工程师,那么你须要作的可能不只仅是开发管道。一些团队须要数据提取,一些团队则须要仪表板,还有一些团队须要你为他们的数据科学家提供新的管道。

分清轻重缓急和说“不”可能真的是两种不一样的技能,但它们紧密地交织在一块儿。分清轻重缓急意味着你只把时间花在对公司有重大影响的事情上。而说“不”有时候只是意味着避开应该由另外一个团队来处理的工做。无论对于什么角色,它们都经常是同时发生的。

这是一项很难掌握的技能,由于你很容易接受别人提出的每个要求,尤为是若是你刚大学毕业。你想要避免让任何人失望,你老是会得到大量的工做。

在大公司里,老是有无穷无尽的工做要作。关键在于只承担能完成的工做。

有不少技巧没有通过面试检验,甚至在大学里也没有教授过。一般,这更多的是环境限制,而不是不想让学生接触真实开发环境中存在的问题。

7. 面向操做的设计思惟

有一项技能在面试中很难检验,在大学里上课时也很难学到,那就是思考最终用户在使用你的软件时可能会犯什么错。咱们一般把这个叫作经过操做场景进行思考。

不过,这只是一种礼貌的说法,意思是“你正在设法实现蠢人也不会搞砸的代码”。

例如,因为大多数编程都是维护,因此这一般意味着修改与其余代码混在一块儿的代码。即便是简单的修改也须要跟踪对象、方法和 / 或 API 的全部可能引用。不然,很容易意外破坏相关的模块。即便只是修改数据库中的数据类型。

这还包括在开发以前考虑边缘状况和整个高层设计。

对于开发新模块或微服务这种更复杂的状况,花时间考虑正在构建的软件的操做场景很重要。考虑将来的用户可能须要如何使用你的新模块,他们在使用它时可能会犯什么错,可能须要哪些参数,以及将来的程序员可能要以不一样的方式使用你的代码。

简单的编码和编程只是问题的一部分。建立能够在你的电脑上正常运行的软件很容易。但部署代码出错的方式不少。一旦投入生产,就很难说代码将被如何使用,以及其余哪些代码将附加到原来的代码中。五年后,将来的程序员可能会对代码的限制感到沮丧。

英文原文:7 Skills of Highly Effective Programmers


近期
Vue超好玩的新特性:在CSS中使用JS变量
完全理解 Cookie、Session、Token、JWT
老铁投币了吗❤️

本文分享自微信公众号 - Vue中文社区(vue_fe)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索