原文连接:https://dev.to/sobolevn/i-am-a-mediocre-developer--30hn
复制代码
我我的认为有一些程序员就是天才,他们能够垂手可得地创造一些了不得的软件产品。由于这群天才的存在,咱们对这个行业充满了期待。可是有一个悲伤的事实是:不是每个人都是大师级的程序员。javascript
实际上这就是我,一个平庸的程序员。这篇文章将指导你,做为一个非天才程序员,如何在这个行业中生存。java
我记不住不少东西。好比,标准库里的函数和方法,参数的位置,依赖的包名,样板代码等等。python
因此,我须要用google搜索,天天如此。我也从旧的项目里复用代码,有时也从StackOverflow或者GitHub上复制别人的代码。是的,我是一个面向StackOverflow编程的程序员。程序员
但我不是一我的在战斗,不少不少程序员都像我同样。Ruby on Rails的做者曾经发过一个很火的twitter。算法
这样子写代码有什么很差呢?有以下几点坏处:docker
可是,我并不认为这是一个大问题。它甚至能够做为你的秘密武器。我有几点建议减轻这些负面影响。编程
咱们说什么,机器作什么。有时候,机器作了错误的事情,仅仅是由于咱们下了错误的指令。所以软件开发中的主要问题,不是机器,而是开发人员的思惟能力。这种能力是有限的。因此,咱们做为一个平庸的程序员,不要浪费脑子去建立复杂的抽象设计、编写晦涩的算法或不可读的长代码块。保持简单性。安全
然而,咱们怎么区分这段代码是简单的仍是复杂的?咱们须要使用WTFs/分钟的方法去衡量代码质量。(译者注:WTF = What the Fu**)bash
这条规则很是简单易懂。你发现代码中有一些你看不懂的东西,那它就是复杂的。你应该怎么作?服务器
一些开发者已经证实他们能提交高质量的代码。像下面这位女神:Margaret Hamilton,阿波罗计划的首席软件工程师。这张图里,她旁边的等身高的纸,就是为登月任务编写的代码。
不过,但于我而言,不管我编写任何代码,我不相信我本身。即便是作项目里最简单的部分,我也能把事件搞得很是糟糕,可能包括:
世界上并无一本关于“如何编写无bug代码”的魔法师,因此这些错误都是正常的。全部的软件都有bug,处理掉它就是了。
实际上,任何人都不容许编写带有明显错误的代码。因此至少咱们应该尝试作到这一点。我应该怎样保护我本身的项目呢?下面有几条建议。
差很少十年前,当个人团队开发完第一个大型软件项目时,咱们将其做为java源文件发布。在咱们呈现给客户前的几个小时,它在目标服务器上编译失败了。这算是个大事故。虽然最终咱们修复好了并运行起来,但这是个终身难忘的经历。
这是由于在构建管道里,有着大量的配置和大量的复杂性。咱们没有能力去正确管理该系统的复杂性。从那天开始,为了减小这一步的复杂性,我尝试将程序打包在独立的环境中,并在实际部署以前在此环境中进行测试。
这几年,随着docker(以及通常的容器)的兴起,这件事情开始变得简单起来。docker容许你在彻底相同的独立环境下进行开发、测试和生产上线。采用这种方式,你不会遗留任何重要的事情。
很差吗?说说我本身,在搭建服务、初始化配置或者连接一些东西的时候,我总会遗漏掉一部分。由于有许多东西须要记住。幸运的是,咱们仍然能够实现自动化。有许多很棒的工具能够进行自动化部署。如:terraform, ansible, and packer。查看他们的文档,找到适合你的工具。
我也尝试设置CI/CD进行持续集成和持续部署。当在测试和部署的自动化构建失败时,我会收到报告通知。
最后,个人应用已经在生产环境上线了,它已经在运行了。我能够打个小盹儿了,什么事儿都不会发生。等一下,不,一切都将崩溃。是的,一切。
实际上,有一些工具能够很容易的发现和修复如今问题。
简单来讲,咱们须要在生产环境上进行监控。有的时候你须要上述全部工具,有的时候你只须要一部分。要根据本身的状况进行判断。
哇,有好多须要学的东西。但这就是个人生存方式。若是咱们想写好代码,咱们就须要持续学习。成功路上没有捷径,你须要作的就是学习如何一天比一天好。
总结来讲,咱们须要理解两个基本原则:
这与你的思惟能力或心态无关。