0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

失败是成功之母,一名开发工程师的工作经历

工程师人生 来源:网络整理 作者:工程师吴畏 2018-07-02 17:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

上周我和同事们简单地聊了聊我们工作中搞砸的那些事儿。如今早已不再犯那些错了,所以想起过去就觉得很好笑。但是笑归笑,其实当时犯的这些错让我们受益颇深。

分享自己犯错的经历至关重要,能让别人从中吸取经验教训,而且可能让他们工作起来更上手。我在这儿记录了几条自己最近犯的错。

为什么有那么多生产数据库被误删?

几个月之前,Reddit 上发了一篇文章,写的是一个入门级开发人员在上班第一天就误删了生产数据库。我们看到类似这种有人犯了特大的、不可磨灭的错误的文章,都不免心生畏惧。我们意识到自己并不是没可能犯那种错——大多数时候都是悬崖勒马。

我在干第一份工作的时候,有一个高级数据库管理员在上班第一天就误删了生产数据库,这种例子简直比比皆是。工作团队用一周前旧的数据库备份帮他弥补了过失,让他保住了工作。如今十年过去了,都仍用这件事拿他开涮。

今年年初有天早上,我被叫去调查一个客户生产中出现的问题。他们本来要针对一小部分用户进行产品的 β 测试,但是他们的网站首页突然什么都显示不出来了。我猜想可能是系统有 bug 或者有漏洞所致。

我登录进生产机器,调出数据库,发现 articles 表是空的。OK,这证实了网页显示空白的情况。

用户表里面还是有用户的,这就奇怪了,所以我们丢了所有的 articles,但起码他们的测试用户仍有他们的账号,我们可以解释说是这是个测试版,而且这种事情时有发生。

接下来一会儿我就犯迷糊了。我记不清楚自己干了什么,我认为自己不会蠢到在控制台窗口输入了删除表中用户的指令,可情况就是这样——现在既没有 articles 表,也没有用户表。我呆坐着,感觉有点震惊。

然后我的大脑高速运转,开始想办法修复问题。我真的删掉用户表了吗?是的。我们运行备份数据库了吗?没有。该怎么向客户解释呢?我不知道。

我记得自己去找了项目经理,坐在她旁边解释事情发生的经过,articles 表中没有数据了,所以网站看上去是空的。哦对了,我还误删了用户表。现在他们需要重新邀请所有的用户——如果他们还能想清楚用户都有谁的话。哎呀。

我回到自己的座位上,感觉深受挫败。

但是我觉得事情有些蹊跷,我们怎么可能一开始就丢了所有的 articles 表呢?于是我继续深究下去,一方面是因为难以接受这个结果,一方面是想挽回颜面。之后过了一小会儿,我注意到了关键问题。

服务器上还有另外 5 个数据库,其中一个的名字和我正在看的那个数据库的名字非常相似。

我一检查,发现 articles 都在里面,用户表也完好无损。事实证明是因为配置发生变化,无意间让它变成了生产数据库,导致网站指向了全新的数据库。我在里面看到的那些用户呢?种子数据罢了。

真是如释重负!一早上神经紧绷、胃酸翻涌,搞得我浑身不适,但好在我们“修复”了所有的数据,并且找到了问题真正的症结所在,没有提前宣布误删数据库的坏消息。

这个小插曲让我们受益良多,最简单的一个就是:现在我们总是在给数据库做备份……这可能是我们开发人员最有效的胃药。

总赶进度,却从来赶不上进度

我最近所犯的另一个突出 错误没那么戏剧化,实际上是由一个个小错误最终累积造成了大麻烦。

我们项目开发的一大挑战就是时间紧张(但也不全是?)

第一次开会时,我们一致觉得项目需要的时间比我们能够拿出来的时间多了一倍。从项目一开始,截止日期就步步紧逼,所以我们三下五除二就通过了认证环节,以便进入客户真正关心的功能环节。

我只是之前在一个单页 app 中落实了一次认证,但仍然没有彻底理解 app 各部分是如何协调的。

尽己所能用最快的速度把 app 赶出来,就是大错特错,我漏掉了一些非常重要的东西:

用户在登陆后,是通过 cookie 来加载的,但是我的 app 页面没有给加载提供等待时间,而是根据事件顺序来决定先后的,所以服务器会回复说你没有权限。这种错误很少见,而且很难再出现,因为大多数情况下事件都是按照正确的顺序来完成的。

而且认证环节也从不检查用户令牌是否失效,如果你不经常访问网站,当发现了没法登上网站后,就需要注销登录再重新登进去。

令牌应该在每次发起请求时都进行更新,但我从来都没有时间去理解这些规则。所以这里又产生了时间问题。如果我们一次同时发出几种请求,收到的回复取决于他们到来的顺序,那将来发送请求用到的令牌就是错的。

我们卯足劲赶进度,但最终所用的时间还是要比给定的时间多一倍。区别就是我们开发出的 app 里面漏洞更多了,然后甚而要花更多的时间对漏洞进行追踪和修复。

工作中的失误让我尴尬不已,在大家面前感到十分羞愧,因为我把一切都搞砸了。

我要说一点:从那之后,我开始花时间学习认证机制,现在已经理解了 OAuth,、JWT、刷新令牌和失效。我仔细阅读了许多库里别人写的认证代码,而且建立了基于几种不同语言版本和框架的认证流程。

失败是成功之母

这是每次失败的经历给予我的启发。只要你愿意学习,几乎每次这样的经历都会让你从中受益。

如果人能够从错误中吸取教训,那么就会有所进步。如果一个队员是第一次犯错,我尽量不会对他表现出不满态度,他们往往已经知道自己把事情搞糟了。

但我也努力不去苛责那些总是犯错、屡教不改的人,他们也需要被同情。

对待犯错,如果你能够做到这四点,那么就会不断进步:

对曾经犯过的错误可以自嘲一番

从中吸取经验教训

在之后努力为自己正名

和他人分享,让他人也能从中获益。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工程师
    +关注

    关注

    59

    文章

    1600

    浏览量

    70660
  • 数据库
    +关注

    关注

    7

    文章

    3993

    浏览量

    67742
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    “没什么可测”时,测试工程师可以做什么?

    作为一名软件测试工程师,应该都有过这样的经历开发人员还在编码中,看板上没有待测试的任务,没有即将发布的版本,也没有回归测试的要求...特别是在实行瀑布模型团队的研发早期,或者敏捷模式
    的头像 发表于 09-12 10:03 442次阅读
    “没什么可测”时,测试<b class='flag-5'>工程师</b>可以做什么?

    作为一名PCB质检工程师,我为什么在用手持式面铜测试仪?

    在PCB行业,铜厚直是决定阻抗、散热与可靠性的关键指标。过去,工程师把板子搬到实验室、等待台式铜厚仪出结果;作为一名PCB质检工程师,如今,我更愿意把“实验室”揣进口袋——手持式面铜
    发表于 08-11 11:59

    如何成为一名合格的KaihongOS南向驱动开发工程师

    如何成为一名合格的南向驱动开发工程师 1. 我需要具备哪些方面的知识? KaihongOS南向适配的方向分为:驱动开发、内核开发。根据适
    发表于 04-23 08:02

    如何成为一名合格的KaihongOS北向应用开发工程师

    :参加相关的培训、研讨会或会议,不断提升自己的技能。 10. 获得认证 专业认证:如果可能,获取相关的专业认证,这可以增加你的可信度和市场竞争力。 成为一名合格的北向应用开发工程师需要时间和努力,通过不断学习和实践,你将能够
    发表于 04-23 06:46

    工程师经验分享:社区之星 赵云 沉着稳定才能做好技术

    控制算法理论和实践有过推导和大量的研发调试经验。   工作经历: 华为技术有限公司---芯片验证工程师 上海问问网络科技有限公司---电机驱动软件工程师       社区访谈: 社区小助手:可以分享
    的头像 发表于 04-15 15:58 999次阅读
    <b class='flag-5'>工程师</b>经验分享:社区之星  赵云 沉着稳定才能做好技术

    如何成为一名嵌入式软件工程师

    如何成为一名嵌入式软件工程师? 01明确岗位的角色与定位 嵌入式软件工程师主要负责开发运行在特定硬件平台上的软件,这些软件通常与硬件紧密集成,以实现特定的功能。 不仅需要精通编程语言
    发表于 04-15 14:37

    招拿捏电子工程师#被AI拿捏了 #电子工程师 #电子电工

    电子工程师
    安泰小课堂
    发布于 :2025年03月25日 17:30:51

    跟着华为学硬件电路设计,华为全套硬件电路设计学习资料都在这里了!

    硬件设计,三分经验,七分勤奋,要想要搞硬件设计,不能闭门造车,需要站在巨人的肩膀上才行,要想做好一名硬件工程师,就需学习大牛工程师的电路设计经验,因为这些经验都是从无数的失败
    发表于 03-25 13:59

    如何成为嵌入式开发工程师

    ,参加相关的研讨会和培训课程,阅读专业书籍和论文。 9. 认证和网络:- 考虑获取相关认证,这可以增加你的市场竞争力。- 加入专业组织和在线社区,扩展你的人际网络。 通过上述步骤的学习和实践,你可以逐步成长为一名合格的嵌入式开发工程师
    发表于 02-19 10:39

    电子工程师的电源设计经验分享

    作为一名电子工程师,电源设计直是我在工作中重点关注的领域。电源设计不仅需要扎实的理论基础,还需要丰富的实践经验。以下是我多年工作中总结的
    的头像 发表于 01-21 15:53 892次阅读

    如何成为一名合格的南向驱动开发工程师

    内核开发 - c,cmake,dts, linux常用命令 以上,如能对某模块的南向适配研究透彻,自行调通,积极解决问题。那么对一名kaihongOS的南向驱动开发
    发表于 01-10 10:06

    如何成为一名合格的北向应用开发工程师

    自己的技能。 10. 获得认证 专业认证 :如果可能,获取相关的专业认证,这可以增加你的可信度和市场竞争力。 成为一名合格的北向应用开发工程师需要时间和努力,通过不断学习和实践,你将能够掌握所需的技能,并在这
    发表于 01-10 10:00

    为什么嵌入式驱动开发工程师可以拿高薪?

    技术领域具有不可替代的地位。 成为一名优秀的嵌入式驱动工程师只需要深耕以下几点: 1)坚实的技术基础: 首先,需要有坚实的基础,包括计算机组成原理、微处理器与微控制器架构以及电路设计与硬件接口知识
    发表于 01-07 16:56