抛开题目不谈,我接触了一些天赋异禀的开发人员,他们如同魔术师一般,能够轻松创造出卓越的软件。这些卓越的人才,让外行人对编程行业寄予了无尽的期望。我要讲述的是一个朴实而深刻的真理:并非每个人都是那位忍者大师、编程巨星。
我并非那颗闪耀的明星,而是一名平凡的开发者。如果你也非天才,那么请允许我为你指引一条在这个行业中生存的道路。
让我们从最日常的事情说起——只需Google一下。
我的记忆力有限,对于诸如标准库中的函数和方法、参数位置、软件包名称以及样板代码等琐碎的知识,我往往难以记住。我必须依赖Google搜索。我每天都在这样做,不断从旧项目中复制代码,有时甚至会直接从StackOverflow或Github上复制粘贴答案。可以说,我的开发方式更像是“StackOverflow驱动的开发”。
但请别误会,这种做法并非只有我一人。许多开发者都与我一样。甚至有一次,Ruby on Rails的创始人发起了一场广泛的Twitter讨论,探讨的就是这个话题。这种做法也存在一些明显的缺点:你可能会复制到糟糕的设计决策或是易受攻击的代码;你可能会产生一种依赖心态;一旦断网,你可能无法工作。但在我看来,这些都不是大问题。只要合理利用,它们甚至能成为你的秘密武器。为此,我有一些建议来减少其负面影响:使用IDE来获得自动完成和建议;记住你曾经解决过问题的地方;对所有粘贴到项目中的代码进行分析、重构和审查。
让我谈谈自信问题。像许多开发者一样,我对自己的编码能力缺乏自信。每当我编写代码时,总是担心会出现各种错误。我明白编写无bug的代码并不现实。每当遇到bug时,我们应该积极处理它。重要的是我们编写的代码应该尽可能减少明显的错误。那么如何保护我们的项目免受错误的影响呢?我有一些建议:编写测试并运行它们;使用静态类型或可选的静态类型进行检查;利用自动样式检查工具;使用质量检查工具进行深度审查;在合并代码前进行代码审查。通过这些方法,我们可以提高代码质量,减少错误的出现。
我们都是平凡的开发者,但只要我们不断学习、实践和改进,就能在编程世界中生存并成长。让我们共同努力,编写出更简洁、更高效的代码!身为中等水平的开发者,我深知代码审核的重要性!付费请他人审核代码,这一做法能带来巨大积极影响。陌生的开发者更容易发现代码中的不一致和不良设计决策。
大约十年前,我的团队开发出的首个大型软件项目,在发布为Java源文件时遭遇了困境。目标服务器无法编译,距离提交给客户只有短短几小时。这无疑是一次巨大的失败。虽然最终我们设法启动并运行了软件,但这次经历令人难以忘怀。
面对如此困境,原因在于构建管道中存在众多配置和复杂性,我们无法妥善管理。为此,从那时起,我致力于在隔离环境中打包程序,并在实际部署前进行测试。
随着Docker和容器的崛起,事情变得简单多了。Docker能在相同的隔离环境中运行开发、测试和生产,确保你永远不会错过任何重要环节。面对部署过程中的种种挑战,我有时会忘记服务器创建、初始配置或连接等细节。幸运的是,这些都可以自动化。如terraform、ansible和packer等工具能自动化部署过程,非常实用。
我积极实施CI/CD流程,一旦测试或部署失败,系统会立即通知我。为了提升效率,我遵循以下生存指南:
自动化部署流程;使用Docker进行应用开发、测试和部署;运用部署工具。
即便应用程序成功部署后,我仍缺乏自信。一切可能突然崩溃。这时,Sentry等工具就派上用场了。用户发生错误时,你会收到通知。将多个进程和服务器的日志收集到一处也至关重要。服务器监控同样不容忽视,它能助你发现潜在问题,甚至在用户破坏服务前提前预警。
监控生产中的应用至关重要。我们有时会使用所有工具,有时则选择最需要的部分。学习之路永无止境。要想编写出好软件,我们必须持续学习。每天进步一点点,会越来越好。我们需要理解两件事:每个人都会遇到问题,关键在于做好准备;我们能将问题控制在可接受的范围内。 |