程序员的工具箱里应该有什么?

2025-05-27

程序员的工具箱里应该有什么?

作为开发者,我们经常会接触到各种不同的技术,这些技术对我们来说都是全新的、陌生的,有时还会有人告诉我们,这是下一个大趋势,我们必须学习它。多年来,我一直在倾听这些人的意见,并找到了一些模式,可以恰当地抽象出哪些类型的技术应该包含在你的工具箱中。所以,这里有……

首先,我崇尚全栈开发思维。我真心相信任何开发人员都应该能够胜任任何任务。这并不是说没有专家或专精某一技术的全职开发人员的空间,而是我相信最好的开发人员是那些能够融合其他技术、将各种模式带回“母语”语言、保持敏锐学习技能并保持开放思维的人。话虽如此,我认为开发人员应该了解所有方面,以下是我职业生涯中所涵盖的基础知识。那么,每个优秀开发人员的精简工具箱里应该包含哪些内容呢?

Web 框架

这可以是Ruby on RailsNode.jsPHPPhoenixPerfect等等,其实都无所谓。这里的重点在于 Web 框架应该做什么——它响应给定的 HTTP 请求,从数据库中创建、读取、更新和删除(CRUD)数据,并提供合适的响应。它也可能启动后台任务,或将数据添加到队列/流中以供稍后处理。

任务运行器/调度器

如上所述,任务运行器适用于需要在未来某个时间点或按计划运行的任务。这可以是 Cron、sidekiqVerk,甚至是 Windows 任务调度程序。这里的想法是了解某些任务需要相对于时间本身或相对于请求发生,但可以在稍后执行。例如,处理文件上传;响应是“我们收到了您的文件,谢谢!”,但后台任务可能是实际处理文件,并在处理完成后发送电子邮件。

排队软件

这可以是RabbitMQAmazon SQSAzure 队列存储/消息总线。这里的想法是,后端的一些软件被称为“生产者”,它们将数据放入队列中,供“消费者”消费。这允许您根据服务器负载启动或停止更多消费者。

流软件

与队列类似,队列中的数据项会被消费者移除。流式传输软件则允许数据块像河流一样流过,并且许多消费者可以对他们看到的数据做出反应。这些软件可能是KafkaAmazon Kinesis等。队列和流之间的区别也很重要,但本文不便赘述。

前端框架

这可以是EmberJSAngularReact+ReduxVue.js,甚至是jQuery!了解前端框架的目的是学习一些有趣的课程,例如浏览器怪癖、语言的转换/编译、Web 调试/检查、响应式设计、数据的反序列化/序列化以及 UI/自动化测试。

移动应用程序框架

虽然并非必需,但我认为学习至少一个移动平台会很有帮助,例如 iOS、Android 或 Windows 10 Phone。它还可以包括CordovaReact Native,甚至Unity。移动编程教会了我们很多关于如何在技术限制下进行编程的知识,以及如何权衡用户体验的诸多利弊,例如小屏幕尺寸、电池续航时间和隐私。IDE 支持也为工作环境营造了愉悦的氛围。

脚本语言

有时你需要一些快速而粗略的脚本。这可能是 AppleScript、Bash、Powershell、Python 或 Ruby。只需要一些一次性任务的自动化执行,或者偶尔用 Cron 或类似的程序来运行。每个优秀的开发者都应该知道何时何地编写一些快速而又 hack 的脚本,并且知道如何做到这一点是很好的。

关系数据库

这可以是MySQLPostgreSQLMS SQL Server或任何类似的数据库。这里的目的是学习关系数据库的工作原理以及如何存储和搜索记录。如果您能了解存储过程相对于代码过程的优势,以及在存储和检索时可以进行哪些优化,那就更好了。

非关系数据库

这类数据库越来越多,并且每个都针对特定任务进行了优化,例如ElasticSearch用于搜索,Druid用于基于时间的数据。其中可能还包括更通用的 NoSQL 数据库,例如MongoDBDynamoDB。你应该尝试理解 NoSQL 数据库和 SQL 数据库(非关系型 vs 关系型)之间的区别。

这就是你的工具箱!有了这些,你或许可以构建任何你想做的事情,或者为几乎任何软件业务做出贡献。当然,你不必在一周内学会所有技能,这需要几年时间。你也不必对所有技能都充满热情,你可以自由选择——这是你的事业。可能还有一些我忘记了的值得一提的技术,所以请你轻声细语地告诉我!祝你好运 :)

这是我的“初级开发者日记”博客系列的第 12 篇文章。我每周都会更新,您可以注册并在我的网站上阅读更多文章。

文章来源:https://dev.to/samjarman/what-should-be-in-a-coders-toolbox
PREV
8 个 React 性能技巧:让你的应用飞速运行!0. 设置 1. 避免使用 index 作为键 2. useEffect() 和 useCallback() 3. 记忆 React 组件 4. React.Fragments 5. 延迟加载 6. 渐进式图像加载 7. 使用 JS 动画替代 CSS 动画。8. 生产构建
NEXT
30 次面试中的技术职业建议