[编程新手系列] 程序员必备工具箱
作为一名初级开发人员,我们经常会遇到许多不同的技术,对我们来说都是新鲜和陌生的,伴随着总有人说这将是下一个热点,我们必须学习。 类似的话我已经听了好多年了,并且已经找到了一些模式,可以适当的抽象出你的工具箱应该包含那些类型的技术。
首先,我相信全栈的心态,每一个开发者都应该可以完成任何工作。这并不是说专家或者全职专业技术人员没有发展空间,我认为最好的开发人员是与其他技术混合在一起的人,并把其中的模式带回自己的“母语”,保持学习技巧,保持开放的心态。总而言之,我认为开发者应该对所有的事情都懂一点,下面是我是职业生涯的基础。对于每一个优秀的开发者来说,哪些应该在必备工具箱?
一个Web框架
这可能是 Ruby on Rails, Node.js, PHP, Phoenix, Perfect, 等等,其实这无关紧要。 要点是web框架应该做什么--根据给定的HTTP请求从数据库创建,读取,更新和删除(CRUD)数据,并提供响应。同时也可能启动后台任务或者将数据添加到后台队列/流中等待稍后处理。
任务调度执行/计划
如上所述,任务执行者是对一些需要在未来的某个时间点需要执行的任务十分有益的, 例如 Cron、sidekiq、Verk,甚至是桌面任务调度程序。这里需要了解的是,一些任务是根据时间点或者是根据请求而生成的,但是可以在以后再去完成,举个例子,处理文件的上传,这里的响应是:‘‘我们得到了你的文件,谢谢!’’,但是后台的任务可能是实际处理文件的操作也可能是当完成文件上传后发送email。
队列软件
比如 RabbitMQ 或者 Amazon SQS 或者 Azure Queue Storage/Message Bus.
意思是一些软件在后台被命名为“生产者”,他们将数据放在队列中,以供“消费者”消费。这允许您根据服务器上的负载启动或停止更多的消费者。
Stream Software
移动编程教授了许多关于技术约束的编程方面的知识,并且权衡了很多用户体验的权衡,比如小屏幕尺寸,电池寿命和隐私。IDE支持也为工作提供了一个愉快的环境。 像 Kafka, Amazon Kinesis 等. 队列和流之间的差异也很重要,但是现在不是来解决这个问题的时候。 .
前端框架
像 EmberJS, Angular, React+Redux, Vue.js, 甚至是 jQuery! 了解前端框架的想法是学习浏览器差别,语言解析/编译,Web调试/检查,响应式设计,数据的解序列化和UI /自动化测试等有趣的课程。
移动应用框架
虽然不是必需的,但我认为学习至少一个移动平台(如iOS,Android或Windows 10 Phone)会很有用。它也可能包括 Cordova, React Native, 甚至是 Unity. 移动编程教授了许多关于技术约束编程方面的知识,并且权衡了很多用户体验,比如小屏幕尺寸,电池寿命和隐私等。IDE的支持也为工作提供了一个愉快的环境。
脚本语言
有些时候你需要一些快速和肮脏的一些脚本。这可能是AppleScript,Bash,Powershell,Python或Ruby。只是为了一个一个自动化任务,或者与Cron或类似的一次又一次地运行。每个好的开发者都应该知道什么时候,哪里可以写点快速而又好玩的东西,而且知道如何去做是非常棒的。
关系型数据库
这些可以是 MySQL, PostgreSQL, MS SQL Server 或者任何类似的东西. 这里的想法是了解关系数据库如何工作以及如何存储和搜索记录。如果您了解了存储过程与代码过程的好处,以及在存储和检索时可以进行哪种优化,那将是一件好事。
非关系数据库
有越来越多的非关系数据库,并且每个都被优化来完成特定的任务,例如 用于搜索的 ElasticSearch 或者用于基于时间的数据的 Druid. 这也可能包括更通用的NoSQL数据库,如 MongoDB 和 DynamoDB. 您应该尝试了解NoSQL数据库和SQL数据库(非关系vs关系)
有了这些,你可以创建任何你想要的东西,或者为你贡献几乎所有的软件业务。当然,一周之内你不必全部学习,这将需要几年的时间。你也不需要热衷于所有工具,你可以选择 - 这是你的事业。可能还有其他一些值得一提的技术,我已经忘记了,所以轻轻地冷静地提及它们给我!祝你好运 :)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
沙发!:grinning:
@OneStep 直接贴 Google 翻译?
@Summer :disappointed_relieved: 有少量修改
@OneStep 你自己能看懂不:
@OneStep 太随意了哈
@Summer 哈哈哈,要不加个翻译评分,也起个过滤作用
@Summer 可能需要一个 :arrow_down: 按钮
有些翻译得不太好