平凡开发者的生计攻略

本文由vwin德赢网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参加咱们的付费投稿方案

放下标题不谈,我个人知道一些十分有才调的开发人员,他们能够一往无前地创立极好的软件。正是这些天分人士,使得外行人对咱们这个作业充满了很高的希望。但我要说的一个可悲的事实是:并非每个人都是忍者/大师/明星开发者。

我就不是这些闪烁的新星,我仅仅一名平凡的开发者。假如你也不是天才玩家,那么本文将辅导你怎样在这个作业中生计下去。

最简略的作业——只需google一下

我记不了许多东西。像规范库中的函数和方法、参数方位、软件包称号,样板代码等等,都在我脑容量之外。

所以,我有必要运用google查找。我每天都这样做。我也一直在重复运用旧项目的代码。有时我乃至从StackOverflow或Github复制粘贴答案。是的,我的开发其实可称之为:StackOverflow驱动开发。

但我并不孑立。许多其他开发人员也这样做。有一个受众面很广的twitter谈论便是由Ruby on Rails的创立者所发动的。

那么,为什么一开始会认为这种行径是欠好的呢?由于它有若干缺陷:

  • 会导致你复制到糟糕的规划决议计划或易受其他人进犯的代码
  • 会构成一种依靠心态:要是咱们不能google到内容,那么只能向人求助了
  • 没有网就不能作业

可是,我不认为这些是大问题。它乃至能够作为是你的秘密武器。我有一些主张可用于削减其负面影响。

生计攻略:

  • 运用IDE来取得主动完结和主张,所以你不用googleVWIN首页言语的根底内容;
  • 记住你曾处理过这个问题的当地(而不是怎样处理的)。这样你便能够随时在那里找到处理方案;
  • 全部粘贴到项目中的代码你稍后都应该进行剖析、重构和检查。这样咱们在快速供给处理方案的一起也不会损坏项目。

全部坚持简略明了

咱们说什么,机器就做什么。即便是错的,它们也毫不迟疑。所以,软件开发中的首要问题不是机器,在于开发人员的心智才能。而这玩意提高的空间是十分有限的。所以,咱们——作为平凡的开发人员——不能将有限的脑力糟蹋在创立杂乱的笼统、含糊算法或不可读的长代码块上。你需求坚持全部简略明了。

可是,咱们怎样断定代码是简略仍是杂乱?咱们运用WTFs / Minute方法来衡量代码质量。

这个准则很简略了解。每逢你在代码中发现一些你不明白的东西时——哦,这太杂乱了。怎样做呢?

  • 重写,使规划更洁净
  • 供给文档
  • 给最扎手的部分添加注释。但请记住,注释应该描绘的是代码自身

怎样从头开始坚持简略明了:

  • 对变量、函数和类运用正确的称号
  • 保证程序的每个部分只做一件事
  • 纯函数优于正则函数
  • 正则函数优于类
  • 仅在激烈需求的状况下运用类

不自傲的我

一些开发人员会证明自己能够供给高质量的代码。请看图中的这位女士:阿波罗登月方案的首席软件工程师Margaret Hamilton。那简直有她人那么高的是什么呢?好吧,那正是她为登月使命编写的代码:

可是,每逢我编写任何代码时——我都不自傲。即使是项目最简略的部分,我也能够把作业搞得乌烟瘴气。搞糟的原因包含:

  • 言语过错
  • 逻辑过错
  • 规划过错
  • 款式过错
  • 安全过错
  • WTF过错(我历来最为喜爱的!)

关于“学习怎样编写没有bug的代码”的魔法书是不存在的。由于全部软件都有bug——除了这个结构之外。遇到bug咱们就应该处理掉。

要害关键是:每个人编写的代码都不应该带有显着的过错。对的,至少,咱们应该朝着这个方针去做。可是我是怎样维护我的项目免受我的糟蹋呢?方法许多。

生计攻略:

  • 编写测验。编写许多测验。从集成测验到单元测验。在每次pull恳求前在CI中运转测验。这能够防止一些逻辑过错;
  • 运用静态类型或可选的静态类型。例如,咱们在python中运用mypy,在javascript中运用flow。积极作用:更清洁的规划和“编译时”检查;
  • 运用主动款式检查。每种言语都有许多款式检查器;
  • 运用质量检查。有些东西在你的代码库上运转一些杂乱的启发式算法来检测不同的问题,比方这个代码行内有太多的逻辑,这个类是不需求的,这个函数太杂乱了;
  • 检查你的代码。在兼并为master之前对其进行检查。以及兼并后的某个时刻也是如此;
  • 付钱让其他人来审阅你的代码。此手法能够发作巨大的积极影响!由于假如是生疏的开发人员来检查你的代码,他们更简略发现纷歧致和糟糕的规划决议计划。

不只适用于我

大约十年前,在我的团队开宣布咱们的第一个大型软件项目时,咱们将其作为java源文件发布。但是,它无法在方针服务器上编译。这间隔需求提交给客户只要若干小时了。这是一个巨大的失利!最终咱们竭尽方法总算能够发动并运转了,但不可否认这真的是一次铭肌镂骨的体会。

发作这种状况是由于构建管道中存在许多装备和杂乱性。而咱们无法妥善办理这个体系的杂乱性。所以,从那一天起,为了削减这种杂乱性,我测验在阻隔的环境中打包我的程序。并且在实践布置发作之前在这个环境中测验它们。

在docker(一般还有容器)兴起的近几年,作业变得简略起来。docker答应你在相同的阻隔环境中运转开发、测验和出产。所以,你永久不会错失任何重要的作业。

那么你会怎样做?说说我自己,我在创立服务器、初始装备或衔接的时分总是会忘掉一些作业。由于有这么多需求记住的作业!走运的是,这些咱们都能够主动化。有许多不同的东西能够主动化布置进程,这些东西凶猛极了,如:terraform,ansible和packer。阅览东西信息,找出实践需求哪一个用于使命。

我也测验赶快树立CI / CD。这样,假如我的构建在测验或布置中失利,那么就会有报揭发我。

生计攻略:

  • 主动化用于布置的任何内容;
  • 运用docker进行运用程序开发、测验和布置;
  • 运用布置东西。

运用程序布置后,我依然不自傲

总算,我的运用程序现已进入了产品阶段。它能够作业了。我能够歇息歇息,应该不会出什么问题了。等等,不!全部都溃散了。是的,我没有说错:全部。

实践上,有一些东西能够使得查找和处理现有问题愈加简略。

  • Sentry。当你的任何用户发作过错时——你将收到告诉。简直绑定了全部VWIN首页言语;
  • 运用不同的服务和东西将多个进程和服务器的日志收集到一个当地;
  • 服务器监控。这是你能够为CPU,磁盘,网络和内存装备显示器的当地。你乃至能够在用户实践损坏你的服务之前发现需求添加的时刻

简而言之,咱们需求监控出产中的运用。咱们有时运用全部这些东西,有时只运用最需求的部分。

学无止境

需求学习的东西是无量的。假如咱们想编写出好的软件,那么咱们需求不断地学习怎样做。没有捷径也没有魔法。每天前进一点点,就会越来越好。

总归,咱们需求了解两件根本的作业:

  • 每个人都会遇到问题。要害是咱们得对这些问题做好预备;
  • 咱们能够将问题的源头操控到一些可接受的水平。

这些与你的心智才能或心态无关。

译文链接:http://www.jf68bumn.com/article/i-am-mediocre-developer.html
英文原文:I am a mediocre developer
翻译作者:vwin德赢网 – 小峰
转载有必要在正文中标示并保存原文链接、译文链接和译者等信息。]

宣布我的谈论

撤销谈论
表情 插代码

Hi,您需求填写昵称和邮箱!

  • 必填项
  • 必填项