我平庸,我骄傲

设备接入与APP(应用程序)接入华为云iotDA平台的详细操作步骤及获取方式 设备及APP(应用程序) 登录 IoTDA 平台所需的 入场与操作清单内容,提供逐项详细操作步骤和获取方式,并穿插贴士便于理解与实际操作落地。内容基于 华为云 IoTDA 控制台 和 IAM 控制台 的实际使用路径整理。 阅读详情

撇开题目不谈,我个人认识一些非常有才华的开发人员,他们可以一帆风顺地创建极好的软件。正是这些天赋人士,使得外行人对我们这个行业充满了很高的期望。但我要说的一个可悲的事实是:并非每个人都是忍者/大师/明星开发者。

我就不是这些闪耀的新星,我只是一名平庸的开发者。如果你也不是天才玩家,那么本文将指导你如何在这个行业中生存下去。

最简单的事情——只要google一下

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

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

但我并不孤单。许多其他开发人员也这样做。有一个受众面很广的twitter讨论就是由Ruby on Rails的创建者所启动的。

那么,为什么一开始会认为这种行径是不好的呢?因为它有若干缺点:

  • 会导致你复制到糟糕的设计决策或易受其他人攻击的代码

  • 会形成一种依赖心态:要是我们不能google到内容,那么只能向人求助了

  • 没有网就不能工作

但是,我不认为这些是大问题。它甚至可以作为是你的秘密武器。我有一些建议可用于减少其负面影响。

生存指南:

  • 使用IDE来获得自动完成和建议,所以你不必google编程语言的基础内容;

  • 记住你曾解决过这个问题的地方(而不是如何解决的)。这样你便可以随时在那里找到解决方案;

  • 所有粘贴到项目中的代码你稍后都应该进行分析、重构和审查。这样我们在快速提供解决方案的同时也不会损坏项目。

一切保持简单明了

我们说什么,机器就做什么。即便是错的,它们也毫不迟疑。所以,软件开发中的主要问题不是机器,在于开发人员的心智能力。而这玩意提升的空间是非常有限的。所以,我们——作为平庸的开发人员——不能将有限的脑力浪费在创建复杂的抽象、模糊算法或不可读的长代码块上。你需要保持一切简单明了。

但是,我们怎么判定代码是简单还是复杂?我们使用WTFs / Minute方法来衡量代码质量。

640?wx_fmt=png

这个原则很容易理解。每当你在代码中发现一些你不明白的东西时——哦,这太复杂了。怎么做呢?

  • 重写,使设计更干净

  • 提供文档

  • 给最棘手的部分添加注释。但请记住,注释应该描述的是代码本身

如何从头开始保持简单明了:

  • 对变量、函数和类使用正确的名称

  • 确保程序的每个部分只做一件事

  • 纯函数优于正则函数

  • 正则函数优于类

  • 仅在强烈需求的情况下使用类

不自信的我

一些开发人员会证明自己可以提供高质量的代码。请看图中的这位女士:阿波罗登月计划的首席软件工程师Margaret Hamilton。那几乎有她人那么高的是什么呢?好吧,那正是她为登月任务编写的代码:

640?wx_fmt=jpeg

但是,每当我编写任何代码时——我都不自信。即使是项目最简单的部分,我也可以把事情搞得一塌糊涂。搞糟的原因包括:

  • 语言错误

  • 逻辑错误

  • 设计错误

  • 样式错误

  • 安全错误

  • WTF错误(我向来最为喜欢的!)

关于“学习如何编写没有bug的代码”的魔法书是不存在的。因为所有软件都有bug——除了这个框架之外。遇到bug我们就应该处理掉。

关键要点是:每个人编写的代码都不应该带有明显的错误。对的,至少,我们应该朝着这个目标去做。但是我是如何保护我的项目免受我的摧残呢?方法很多。

生存指南:

  • 编写测试。编写很多测试。从集成测试到单元测试。在每次pull请求前在CI中运行测试。这可以避免一些逻辑错误;

  • 使用静态类型或可选的静态类型。例如,我们在python中使用mypy,在javascript中使用flow。积极作用:更清洁的设计和“编译时”检查;

  • 使用自动样式检查。每种语言都有很多样式检查器;

  • 使用质量检查。有些工具在你的代码库上运行一些复杂的启发式算法来检测不同的问题,比如这个代码行内有太多的逻辑,这个类是不需要的,这个函数太复杂了;

  • 审查你的代码。在合并为master之前对其进行审查。以及合并后的某个时间也是如此;

  • 付钱让其他人来审核你的代码。此手段可以产生巨大的积极影响!因为如果是陌生的开发人员来查看你的代码,他们更容易发现不一致和糟糕的设计决策。

不仅适用于我

640?wx_fmt=jpeg

大约十年前,在我的团队开发出我们的第一个大型软件项目时,我们将其作为java源文件发布。然而,它无法在目标服务器上编译。这距离需要提交给客户只有若干小时了。这是一个巨大的失败!最后我们用尽办法终于能够启动并运行了,但不可否认这真的是一次刻骨铭心的体验。

发生这种情况是因为构建管道中存在众多配置和复杂性。而我们无法妥善管理这个系统的复杂性。所以,从那一天起,为了减少这种复杂性,我尝试在隔离的环境中打包我的程序。并且在实际部署发生之前在这个环境中测试它们。

在docker(通常还有容器)崛起的近几年,事情变得简单起来。docker允许你在相同的隔离环境中运行开发、测试和生产。所以,你永远不会错过任何重要的事情。

那么你会怎么做?说说我自己,我在创建服务器、初始配置或连接的时候总是会忘记一些事情。因为有这么多需要记住的事情!幸运的是,这些我们都可以自动化。有很多不同的工具可以自动化部署过程,这些工具厉害极了,如:terraform,ansible和packer。阅读工具信息,找出实际需要哪一个用于任务。

我也尝试尽快建立CI / CD。这样,如果我的构建在测试或部署中失败,那么就会有报告发我。

生存指南:

  • 自动化用于部署的任何内容;

  • 使用docker进行应用程序开发、测试和部署;

  • 使用部署工具。

应用程序部署后,我仍然不自信

终于,我的应用程序已经进入了产品阶段。它可以工作了。我可以休息休息,应该不会出什么问题了。等等,不!一切都崩溃了。是的,我没有说错:一切。

实际上,有一些工具可以使得查找和解决现有问题更加容易。

  • Sentry。当你的任何用户发生错误时——你将收到通知。几乎绑定了所有编程语言;

  • 使用不同的服务和工具将多个进程和服务器的日志收集到一个地方;

  • 服务器监控。这是你可以为CPU,磁盘,网络和内存配置显示器的地方。你甚至可以在用户实际破坏你的服务之前发现需要增加的时间

简而言之,我们需要监控生产中的应用。我们有时使用所有这些工具,有时只使用最需要的部分。

学无止境

需要学习的东西是无穷的。如果我们想编写出好的软件,那么我们需要不断地学习怎么做。没有捷径也没有魔法。每天进步一点点,就会越来越好。

总之,我们需要理解两件基本的事情:

  • 每个人都会遇到问题。关键是我们得对这些问题做好准备;

  • 我们可以将问题的源头控制到一些可接受的水平。

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

640?wx_fmt=jpeg

译文链接:http://www.codeceo.com/i-am-mediocre-developer.html
英文原文:I am a mediocre developer
翻译作者:码农网 – 小峰

2025年软件测试职业院校技能大赛—ERP管理平台-基础信息管理商品管理测试用例 竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。 阅读详情

相关推荐

最简单的程序员记事本

程序员记事本,这个记事本非常简单,可以自己分类,自己写类别,按照时间把程序员的每天活动都记录下来,主要是可以生成单独的文件,部门主管应该提倡用。

如何成为一名优秀的程序员

引言   很久写博客了,今天决定写一篇简单的感悟和分享,是一篇关于如何让自己更好的成长为一名优秀的程序员的文章,虽然目前本人还是一名渣渣,但我相信只要努力,终究会有成长和收获。   相信每一个人都有自己的追求和向往,或许成为一名优秀的程序员正是追求之一,成为一名优秀的程序员也是我的追求之一,虽然追求的路途异常曲折但也要勇往直前。 何谓优秀的程序员?   在讨论如何成为一名优秀的程序员之前,我们应该弄清楚优秀的程序员是什么样的,只有知道优秀的程序员是什么样子的,才能朝着这个方向努力,去提升自己。   说到优秀

无痕之意的博客 2893

程序员必读 代码大全2 中文版 完整清晰版

程序员必读 代码大全2

如何做程序员?

我认为学习编程是一件好事,首先应该好好学习c程序的基础,(我还在探索中)。有了基础才能在以后更深入的学习中,在制作一个软件的时候,犯最低级的错误,。其次就是首先掌握一门语言,c语言作为近些年最为稳定的一种编译语言,是最适合我们学习的,之前在网上查过,各个编译语言之间是有共通的之处的,掌握了c语言,Java的学习也会简单很多。在我的了解中,程序员要与代码作伴,我想我现在最需要做的就是培养对c程的兴趣

tusiji27的博客 299

十个程序员编程时的简单方法与技巧

你要记住,你写的代码是给人看的作为一名程序员,希望在你某天离开公司后回想起的若干个开心时刻中,有一个会是因为你面对自己刚刚出炉了一份让自己心动的代码的那份感动,而不要成为上面提到的那个“离开后,公司才知道他有多么重要”的家伙。现在开始,刻意练习所以最好的学习方式就是亲身经历,然后写下来分享给大家,这样才能让你真正懂得那些你原来认为懂得了其实未必懂得的道理。

kangbin825的专栏 1277

怎么做一个简单的程序员

撇开题目不谈,我个人认识一些非常有才华的开发人员,他们可以一帆风顺地创建极好的软件。正是这些天赋人士,使得外行人对我们这个行业充满了很高的期望。但我要说的一个可悲的事实是:并非每个人都是忍者/大师/明星开发者。我就不是这些闪耀的新星,我只是一名平庸的开发者。如果你也不是天才玩家,那么本文将指导你如何在这个行业中生存下去。最简单的事情——只要google一下我记不了很多东西。像标准库中的函数和方法、...

hzp666的博客 1082

零基础却想做一个程序员,到底如何学习呢?

众所周知程序员是21世纪比较吃香的工作。程序员工资高还不需要和复杂的社会打交道。那么作为一个零基础,什么都不懂的人该怎么成为一名程序员?当程序员需要学什么?下面就来分析下。 零基础的我该如何学习? 如果想做一个程序员,在没有基础的情况下,买书自学是一个办法,但是大多数人会因为没有相关的基础知识...

weixin_34038652的博客 917

很喜欢的励志语

【陈欧广告词】从未年轻过的人,一定无法体会这个世界的偏见。我们被世俗拆散,也要为爱情勇往直前;我们被房价羞辱,也要让简陋的现实变的温暖;我们被权威漠视,也要为自己的天分保持骄傲;我们被平庸折磨,也要开始说走就走的冒险。所谓的光辉岁月,并不是后来闪耀的日子,而是无人问津时,你对梦想的偏执,你是否有勇气,对自己忠诚到底?

NOHACKCC的专栏 866

第八种格调的人生

作词 沃特艾文儿

qq_44614115的博客 808

从知乎上看到的一段话,记录下来

因为害怕自己并非明珠而不敢刻苦琢磨,又因为有几分相信自己是明珠,而不能与瓦砾碌碌为伍,遂逐渐远离世间,疏避人群,结果在内心不断地用愤懑和羞怒饲育着自己懦弱的自尊心。世上每个人都是驯兽师,而那匹野兽,就是每个人各自的性情。对我而言,猛兽就是这自大的羞耻心。老虎正是它。我折损自己,施苦妻儿,伤害朋友。末了,我就变成了这副与内心一致的模样。 中岛敦——《山月记》

代码在青春飞扬 1259

天下古今之庸人,皆以一惰字致败。天下古今之才人,皆以一傲字致败。

天下古今之庸人,皆以一惰字致败。天下古今之才人,皆以一傲字致败。

快慢机的地盘 5010

文笔

感谢为梦想奋斗的自己 我不会蔑视平凡,因为我是平凡中的一员。我的心上印着普通人的愿望,眼睛里印着普通人的悲欢,我所探求的也是人们都在探求着的答案。 是的,我平凡,但却无需以你的深沉俯视我,即便我仰视什么,要看的也不是你尊贵的容颜,而是山的雄奇和天的高远。 是的,我平凡,但却无需以你的深刻轻视我,即便我聆听什么,要听的也不是你空洞的大话,而是林涛的喧响海洋的呼啸。 是的,我平凡,但却无需以你的崇高揶...

嵌入式技术开发 220

承认自己平庸,可能是你这辈子做过最赚的生意

到了 35 岁,基本就是一面碎得稀烂的镜子。但要在 95 分的基础上再提高 1 分,你可能要献祭掉你的健康、你的家庭关系、你的睡眠,甚至你的人格。你省下了那些用来表演 “我很努力”、用来维持“虚假自尊”、用来焦虑“为什么我不成功” 的巨大能量。如果你是一个资质平平(智力、家境、运气均为均值)的人,却执着地要追求 “卓越”,你要付出什么?你依然可以努力,但你的努力不再是为了 “逆天改命”,而是为了 “让今天的自己比昨天舒服一点”。只要你卸下了 “必须不凡” 这个沉重的十字架,你会发现,呼吸都顺畅了许多。

ITinySnowI的博客 611

激活你自己:可以平凡不能平庸

平凡与平庸,是生活的两种状态. 作者:刘兴旺 序 不拒绝平凡 但永远鄙视平庸 平凡是工作岗位 平庸是工作态度 有效进行自我管理 不让平凡变成平庸 平凡者改进工作 平庸者逃避问题 用心做平凡的事 把平凡做成伟大 平凡的个人 优秀的团队 从平凡到优秀 从优秀到卓越 政府拒绝平庸 提高效能先“治庸” 失败的人——什么都不做;一般的人——只做这一点;成功的人——多做一点点...

weixin_34269583的博客 190

斯坦福演讲:别在不断的优秀里,最终走向平庸

斯坦福演讲:别在不断的优秀里,最终走向平庸 我们中有太多人都把青春奉献给了四个字:“按部就班”。按部就班地上了高中、大学,读了研究生,找了工作;按部就班地找到了男女朋友,生了孩子。 在别人眼中,我们都是“优秀”的代名词,而你自己始料未及的是,在不断的“优秀”当中,我们却把自己的人生活成了“平庸”。 1 “你要做什么?” What are You Going to

科技创新与颠覆者 677

如何成为一名合格的程序员

陆陆续续看过很多大V写的“如何年薪百万”、“如何月入十万”、“我是如何复习三个月考上浙大的”,还有以前打工皇帝的《我的成功可以复制》,对于条件不具备或者自控力不足的人来说很多都没有可操作...

机械猿的博客 1033

简单的程序员

一个程序员 简单的思维 不知道怎么回事,程序员的路在中国该怎么走? 现在不是个人英雄的IT时代 我也不是牛人,一个简单的人 现在的公司,无论是公司的发展和个人的发展都趋于一个下路 我,是一个不善于交际的程序员,总在问题上提不出自己的见解,看不到程序的路,也看不到问题的门,习惯独自解决问题[想起来这个和以前中学时代培养的独自问题解决有关] 我学的东西很杂,能...

weixin_30950237的博客 158

简单程序员

[**简单程序员**] 总是喜欢坐在电脑前总是喜欢工作到很晚约了地点却忘了见面懂得寂寞才明白浩瀚你从来就不问我你还是不是那个程序员沉默是最大的发言权 你说你的程序叫简单我说我的代码叫诗篇向左走又向右走我们转了好多的弯Just 简单的你和我 Just 简单的程序员Just 简单的你和我 Just 简单的程序员Just 简单的你和我 Just 简单的程序员 那张毕业的大照片和那顿散伙儿的饭

光辉的专栏 312

基于LLM的高中语文作文自动批改应用.zip

基于LLM的高中语文作文自动批改应用.zip

上一篇: 我平庸,我骄傲
下一篇: 我13岁那年是如何对程序员失去信任的
web前端开发联盟
博客等级 码龄9年 73粉丝 9原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值