软件职位
- 41 次浏览
DevOps工程师
- 35 次浏览
【DecSecOps 】DevOps & DecSecOps 路线图 [从初学者到专家]
“在你的每一次旅程中看到可能性的光芒。”
作为我的第一个博客,我强烈希望这个博客必须在读者的脑海中闪耀。
在这篇博客中,我将解释我在 DevOps 旅程中所遵循的路径。
那么,什么是 DevOps?
这是一个常见问题,当您在 Google 中搜索 DevOps 时,您也可以将其作为推荐问题找到。 但在进入实际定义之前,我将用简单的语言解释什么是 DevOps。
“开发+运营=DevOps”
DevOps 不是一种特定的技术、工具或技术堆栈,而是可以将其定义为软件开发中的一种方法论或过程,通过确保整个过程的顺畅流动来帮助快速有效地交付软件产品。在公司的工作流程中实施 DevOps 将帮助开发团队和运营团队更加轻松。
“DevOps 是文化理念、实践和工具的结合,可提高组织高速交付应用程序和服务的能力:以比使用传统软件开发和基础设施管理流程的组织更快的速度发展和改进产品。” — AWS
“开发”阶段包括规划->创建->验证->构建->应用程序打包。在“Ops”阶段,我们有发布->部署->操作->应用程序监控。后期开发活动与运营团队相关联。
为什么选择 DevOps?
DevOps 的主要优势是可以在开发的每个阶段采用的自动化功能。
“作为开发人员,我们拥有的最强大的工具是自动化。” — 斯科特·汉塞尔曼
在正常的开发环境中,开发和运营团队共同完成项目。在某些情况下,当开发人员编写代码并将代码及其配置传递给运营团队进行测试和部署时,开发人员将开始着手下一个项目。那时在之前项目的部署过程中,如果因为代码有问题而出现错误,运维团队会指向开发团队,这会篡改开发者当前项目的开发流程.因此,为了解决所有这些冲突并增强时间管理,正在使用 DevOps。在 DevOps 方法论中,开发和运营团队将携手合作,这有助于他们降低项目的复杂性,并可以在正确的时间交付产品。
DevOps 的优势
以下是在项目中实施 DevOps 的一些优势:
- 速度
- 快速交货
- 可靠性
- 可扩展性
- 改善协作
- 安全
这些观点在每种技术的优势方面可能听起来相似😁,但所有这些优势都有助于 DevOps 在其他方法中脱颖而出。
DevSecOps
DevSecOps 是上述 DevOps 定义中增加了“Sec”。
“开发<+>安全<+>运营=DevSecOps”
在 DevSecOps 中,在 DevOps 的每个阶段都确保了安全性,即从规划阶段到最终交付阶段,每个阶段都包含适当的安全集成。
DevSecOps 的主要好处是更快地交付更安全的代码/产品。
DevSecOps 的好处:
在项目中实施 DevSecOps 时可以获得的一些好处是:
- 快速交付安全代码
- 每个阶段的安全性
- 漏洞评估和修补管理
DevSecOps 的实现:
DevSecOps 就像是现有 DevOps 实践的掩护或盾牌。它可以通过多种方式实现。
“左移”是 DevSecOps 的口头禅:它鼓励软件工程师将安全性从 DevOps(交付)流程的右侧(末端)转移到左侧(开始)。在 DevSecOps 环境中,安全性从一开始就是开发过程中不可或缺的一部分。使用 DevSecOps 的组织将其网络安全架构师和工程师作为开发团队的一部分。他们的工作是确保堆栈中的每个组件和每个配置项都得到修补、安全配置和记录。 — IBM
主要的实施过程是让开发和运营团队都了解常见的漏洞,以便他们可以为部署生成安全的代码和安全的环境。
对于 DevSecOps,学习路径与 DevOps 类似,唯一的变化是在每个阶段学习实现安全性。
一些资源是:
我的 DevOps 路线图
通往 DevOps 的旅程是一条漫长的道路,其中有许多里程碑。正如我所提到的,由于 DevOps 不是一项特定的技术,因此最好了解所有更新的工具和框架。永无止境的学习欲望🤓和更新知识的兴趣将有助于实现这一目标。我坚信将较大的任务分解成较小的部分将有助于更有效地完成整个任务。这是我在 DevOps 旅程中所遵循的路径:
1. 学习操作系统。
对于 DevOps,操作系统及其基本概念非常重要。 因为在处理服务器时,了解虚拟化、内核、文件和存储管理等主题至关重要。在这个阶段学习 Linux 非常重要。 了解 Linux 命令并学习它们会很棒。
资源:
- Linux 和终端命令简介 — Kunal Kushwaha https://youtu.be/iwolPf6kN-k
- Linux 初学者教程:Linux 操作系统简介 — Guru99 https://youtu.be/V1y-mbWM3B8
- Edureka Linux 完整课程 https://youtu.be/Wgi-OfbP2Gw
2. 学习一门编程语言
至少需要了解一种编程语言😐。 学一个没什么大不了的,当然会有一些困难,但是如果你学习一门编程语言,比如 Python、Golang 等,那就太好了。
资源:
3. 计算机网络
在处理服务器时,有必要确保入站和出站网络规则、端口、防火墙。 如果你能学习各种网络协议、网络模型、路由、桥接等会更好。通过学习,你可以管理和控制服务器的网络,并可以为你的应用程序制定特定的网络配置。
资源:
- Nerds lesson — https://youtu.be/k9ZigsW9il0
4. Docker 和 Kubernetes
Docker 和 Kubernetes 是两个重要的 CI/CD 工具。 最好对容器、容器镜像、容器编排、打包等有所了解。
资源:
- Docker — https://youtu.be/3c-iBn73dDE
- Kubernetes — https://youtu.be/X48VuDVv0do
5. 其他 CI/CD 工具
持续集成和持续交付/持续部署 (CI/CD) 工具是那些促进开发人员和运营团队顺利工作的工具。 持续集成处理开发人员将代码集成到项目存储库的主分支中,而持续交付则自动将经过验证的代码发布给公众。 许多工具有助于支持这一点。 其中一些是 Jenkins、Circle-CI、Nagios、Github Actions 等。
资源:
- Github Actions — https://youtu.be/R8_veQiYBjI
- Jenkins — https://youtu.be/FX322RVNGj4
- Travis CI — https://youtube.com/playlist?list=PLT7ak8zxhXKjVTn3Lwc2MM4eEDfp811ys
这里只列出了部分工具,熟悉了之后就可以尝试相关的新工具了。
6. 云计算
云计算是目前最热门的技术之一。 DevOps 方法采用的大多数提到的工具和项目都是基于云的。因此,了解基本的云术语和技术非常重要,一旦您掌握了这些,您就可以切换和实践您正在使用的云服务提供商提供的服务。
资源:
- https://youtu.be/RWgW-CgdIk0
- AWS (Amazon Web Services)
- GCP (Google Cloud Platform)
- Azure (Microsoft Azure)
额外主题
以下是一些可以作为附加组件学习的主题,如果您对它们有所了解,那就太好了。
- 学习 YAML、JSON 等脚本语言。
- shell脚本基础
- 服务器管理基础知识(Linux 和 Windows)
- 网络服务器
额外资源
这些平台可以帮助您了解 DevOps 和云计算的最新信息,也可以帮助您参考。
- IBM Technology— https://www.youtube.com/c/IBMTechnology
- DevOps AWS
- DevOps.com
- Atlassian
- Azure
- DevDaily
- Linux Foundation
- Spacelift
附言这些资源将有助于了解 DevOps。正如我所说,由于 DevOps 不是一项特定的技术,完成这些路径将使您对此有所了解。要成为专家,您需要使用最新的工具和技术进行更新。 “小知识永远不会浪费”,有了这种心态,您可以取得更多成就。做一个永无止境的学习者,练习你学到的东西。将你学到的东西应用到现实生活中会产生巨大的变化,并帮助你成为这方面的专家。
原文:https://faun.pub/devops-decsecops-roadmap-from-beginner-to-an-expert-c3…
- 31 次浏览
Web开发工程师
- 18 次浏览
【职业职位】软件“开发者”和“工程师”有什么区别?
工程师使用工程原理监督整个系统,而开发人员则专注于创建功能性软件。
答案吗?这取决于你问的是谁!
这些角色之间并没有正式的区别,公司使用自己的经验和知识来定义符合他们需要的描述。更让人困惑的是,区域差异也可能存在,即教育方面的明显差异。但是,可以评估和分析各种数据来源,以便从中得出结论。
根据计算机科学学位中心的说法,软件开发者和软件工程师的角色是不同的:
软件工程是指应用工程原理来创建软件。软件工程师通过连接客户的需求和适用的技术解决方案来参与软件开发生命周期。因此,他们系统地发展过程以提供特定的功能。最后,软件工程意味着使用工程概念来开发软件。
另一方面,软件开发人员是程序背后的创新驱动力。软件开发人员负责整个开发过程。他们是那些与客户合作创造理论设计的人。然后,他们让计算机程序员编写正确运行软件所需的代码。计算机程序员将与软件开发人员一起测试和解决问题。软件开发人员在软件开发生命周期的每个阶段都提供项目领导和技术指导。”
Udacity也认为存在着强烈的差异:
软件开发人员和软件工程师这两个术语,与普遍的看法相反,是不可互换的。开发人员知道如何编写代码,并可能拥有构建有意义的产品所需的技术技能。软件工程师遵循一个理解需求的系统过程,与涉众一起工作,并开发满足他们需求的解决方案。开发人员倾向于单独工作。软件工程师是大团队的一部分。”
那么这在实践中意味着什么呢?让我们更详细地探讨其中的差异。
软件工程师技能和职位描述
软件工程师是能够管理复杂系统的高度熟练的软件开发人员。一个人不仅能够构建一个功能齐全的应用程序,而且有足够的经验,知道如何以一种容易重构、自我文档化、从而更容易调试的方式构建它。
他们将在各种项目中扮演领导者、顾问和个人贡献者的积极角色。他们必须在识别和实施新的IT应用方面提供分析建议,以帮助客户和公司实现战略目标。他们必须能够管理资源,协调开发任务和监督技术项目计划。在整个软件开发生命周期中,他们经常与IT、运维和开发人员合作
他们知道,在一开始就考虑周全可以节省几天的工作时间,也可以避免日后的头疼。他们不是致力于编写最聪明的代码,而是致力于让代码变得显而易见。他们知道最好的代码是你永远不需要写的代码。
软件工程师应:
- 有技术专长,有广泛的项目工作经验
- 精通模式设计,创建弹性和容错系统
- 使用自动化测试工具,如小黄瓜,黄瓜或Ansible
- 了解如何创建和维护IT架构、大规模数据存储和基于云的系统。
- 构建可扩展的部署管道,以支持持续集成和持续交付
- 他们必须能够有效地独立工作,并与远程团队一起工作。
- 高级软件工程师必须监督复杂的系统分析、设计和开发程序。
软件工程师的角色通常包括:
- 研究、设计、开发和测试他们的软件,以及通过网络编译和分发软件
- 修改现有的软件是为了解决缺陷,采用新的硬件或改进其性能。
- 分析用户需求,评估软件需求,包括设计可行性和成本/时间限制。
- 为客户提供产品规格、设计等方面的咨询。
- 协调系统软件的部署和安装
- 监督是技术人员和工程师的工作
软件开发人员技能和职位描述
软件开发人员不仅要负责编写代码,他们还必须审查当前的系统,提出改进的想法,包括为此所需要的努力。软件开发人员将与分析师、最终用户/市场营销人员和设计人员密切合作。
软件开发人员还必须确保他们的代码在您投入使用之前通过测试它,使用可控的和真实的情况来工作。他们必须有一个完美的眼睛,以妥善解决bug和修改程序,以提高运行效率。
最好的软件开发人员是有创造力的,并且有专门的技术来提出一个创新的想法来解决客户的问题,并且有足够的经验在问题出现之前发现很多问题。
通常遵循Scrum、XP或看板等开发生命周期方法或交付框架的软件开发人员。
软件开发人员必须具备:
- 优秀的分析技能,因为他们需要不断地将需求与软件能力进行比较。
- 他们必须熟悉计算机语言,以便有效地使用计算机程序,如Java, c#, c++, Python
- 有使用GitHub等开源工具的经验
- 良好的反馈和沟通能力,注重细节,因为小错误可能导致大问题
- 注重细节将帮助他们在不同的开发阶段管理同时进行的项目。
- 即使是他们不熟悉的语言,也能理解代码的逻辑。
- 软件开发人员必须不断地监视他们所做的更改,包括解决缺陷,以确保高质量和一致性。因此,他们必须不断地在分配的工作、管理截止日期和时间表之间转换。
总结
总结一下软件开发人员和工程师之间的主要区别:
- 开发人员执行。他们的才能往往集中在一个单一的领域。而不需要“大图”。因此,软件开发人员主要关注的是开发代码,这是软件开发周期的一部分。
- 工程师将工程原理应用到软件开发中进行设计和计划。总是有“大局观”,在很多领域都有人才。工程师可以扮演开发人员的角色,但工程师的核心关注点在于架构。
- 最后,软件工程和软件开发之间的主要区别是后者监督工程,而前者关注于创建功能性程序。
任何人都可以成为软件开发人员。如果您了解少量的编程概念,那么您就有了成为软件开发人员的基础。他们编写的代码没有任何性能和可伸缩性分析。这个元素的大部分是由软件工程师完成的,这使得这个角色不同于软件开发人员。
如果你是一名软件开发人员或工程师,你总能学到一些新东西,因为很多人会根据项目和客户的不同在这两种角色之间切换。
原文:https://shecancode.io/blog/software-developer-or-engineer-whats-the-difference
本文:http://jiagoushi.pro/node/1463
讨论:请加入知识星球【超级工程师】或者微信【it_training】或者QQ群【11107767】
- 238 次浏览
前端开发
- 14 次浏览
可靠性工程师
- 24 次浏览
后端开发
- 14 次浏览
程序员
- 48 次浏览
【程序员】8个迹象表明你是一个了不起的程序员
你是一个好开发者还是一个坏开发者?事实上,我们大多数人都是“普通开发人员”。我也是一个普通的开发者。但我正在努力提高我的知识和技能。
所以,我一直在寻找是什么让开发人员好或坏,以及我们如何了解它。我最近写了一篇关于它的文章。这篇文章是“迹象表明你是一个糟糕的程序员”(你可以在本文底部找到文章的链接)。
今天,我们将讨论优秀和出色的程序员的标志。这篇文章的灵感来自 GitHub 上 Daryll Santos 的一篇长文。我总结并挑选了一些似乎与我相关的迹象。所以让我们进入事实。
优秀程序员的标志
1.先尝试或实验
优秀的程序员不会问资深程序员,而是自己先尝试。它可以帮助他们学习新事物,并为他们将来解决新问题做好准备。
症状:
- 拥有自己的宠物项目
- 遇到问题时考虑替代解决方案。
如何获得这个特质:
- 不要害怕失败。
- 为小实验腾出时间。
- 给自己一点tips,让自己解决问题。
2. 情感脱离代码
让我们开始吧。 Code 不是您的未婚妻或孩子。请不要告诉我这是你的心血结晶!每次听到都觉得恶心。任何从你身体里出来的东西都不是你的孩子。 😛
关键是代码不是你的孩子,你不必在情感上依恋你的代码,也不要在必要的时候改变它。
代码只是字节。改变它或重新使用它,但不要依附于它。优秀的开发人员不会在情感上依附于他们的代码。
症状:
- 愿意放弃数月的工作来采用另一个开发人员的优秀代码。
- 当老板说你的代码需要更新时,不要变得防御。
- 不提交灭有被注释掉的代码。
如何获得这个特质:
- 不时阅读和使用其他人的代码。
- 如果你开始一个新项目,如果你认为你可以做得更好,有时从头开始(大多数时候,你实际上可以)
- 如果你真的依附于你的代码。做你在有毒关系中所做的事情。删除代码,从头开始编写。
3. 热情的修复者
优秀的程序员喜欢修理东西。就像你从其他程序员那里得到一个项目,你发现他/她在某处编码了一些硬编码值。
大多数程序员都会忽略它,但优秀的程序员不会。在一个项目中有很多东西需要修复。他们希望更好地执行每一段代码。
症状:
- 他们不相信规范,也不会深入了解需求。
- 总是在互联网上寻找更好的解决方案。
- 在添加新功能之前,请检查现有功能是否可以重新设计以执行这两项任务或完全替换为更好的方法。
如何获得这个特质:
- 始终尝试了解某种情况下的实际问题。您了解得越多,就越能找到解决方案。许多程序员不了解问题,并在没有策略的情况下开始编码。在中途,他们意识到他们应该放弃代码但不能或不。
- 选择代码的有效版本。
- 如果可用,请使用内置函数。
4. 他们教别人
我从来没有见过一个优秀的开发人员,他们不应该教别人。教学不仅是一种高尚的美德,而且可以帮助人们更好、更深入地理解一个主题。
症状:
- 关于他们的工作或主题的博客。
- 有时会在 StackOverflow 上回答。
- 可能有一个 Youtube 频道。
- 对于其他开发人员来说,评论是多余的。
- 在其他程序员遇到问题时帮助他们。
如何获得这个特质:
- 尝试与同事或工作中的朋友讨论更多问题。
- 如果有人遇到问题并且您知道解决方案,请帮助他们。
- 在测试的基础上开始写博客或创建视频教程。你也可以从那里赚钱。
5. 追求完美
完美和痴迷并不相同,尽管它们非常接近。我已经在这篇文章中谈到了对自己的代码的依恋或痴迷。但完美是不同的。完美主义的开发人员总是专注于性能、架构和其他美丽的事物。
症状:
- 解雇优先于妥协
- 蔑视交货日期
- 较少关注促销和金钱
- 喜欢斯坦利·库布里克 (Stanley Kubrick) 导演的电影😆
如何获得这个特质:
- 为你的工作感到自豪。
- 如果您迷恋程序员,请不时向他/她展示您的代码。 😄
6. 知识饥渴
开发人员可以在压力或赚钱的情况下消耗知识。动机很好。它可以是金钱或名称。但这不应该是恐惧或压力。
以自己的兴趣学习的开发者是最好的。因为消费知识是一门艺术,你不能用压力来战胜饥饿。
症状:
- 可以背诵 C 标准库中的所有 includables
- 蔑视交货日期
- 较少关注促销和金钱
- 喜欢斯坦利·库布里克 (Stanley Kubrick) 导演的电影😆
如何获得这个特质:
- 不时与优秀的程序员交谈。
- 参加研讨会,参加与编程相关的活动。
- 看一些黑客电影😛
7. 用代码思考
一个优秀且充满激情的程序员会变成一个程序,并像程序一样思考。有时他们想澄清一些小事情,并在逻辑上验证一切。
症状:
- 在随意的谈话中,他们最直接的比喻来自于编程结构。
- 在现实生活中的 if-else 情况下争论太多。
- 在实际场景中缺乏常识。 😃
- 《社交网络》是他们最喜欢的电影。
如何获得这个特质:
- 不要死记硬背,要理解它们。
- 学习一些数据结构和算法,从解决方案的根源去理解。
8. 入乡随俗
有一次我的同事不得不(他是这么认为的!)辞职,因为我们的老板给了他一个新项目,要求他学习 Flutter,但他是一名原生 android 开发人员。
我一直相信程序员是关于逻辑、结构和解决问题的。语言和框架只是工具,但程序员不止于此。
症状:
- 不要卷入“语言战争”。
- 不要太喜欢一个框架。
- 了解不止一种语言/框架。
- 喜欢建筑不仅仅是解决问题。
如何获得这个特质:
- 学会逻辑思考,而不是盲目地解决任何问题。
- 爱的问题。
- 不要传递需要一点努力才能解决的问题。
结论
除了这些迹象之外,还有很多迹象表明成为优秀或出色的程序员。
有一种流行的理论认为,如果你想成为某件事的大师,你必须花费 10,000 小时来学习、练习和工作。
这意味着擅长某事不是百米比赛。这是一场马拉松。你必须要有耐心和热情。但你需要做的第一件事就是尝试。你必须尝试,你必须知道如何变得擅长。
但是知道如何擅长某事很方便,因为它会为您节省大量时间。
原文:https://javascript.plainenglish.io/8-signs-that-you-are-a-fantastic-pro…
本文:
- 12 次浏览
软件工程师
- 22 次浏览
【软件工程师】如何成为 10 倍软件工程师
初级工程师常犯的 3 个错误。 你在做吗?
10x engineers are fact. Bigfoot is not.
最好的工程师比普通工程师好 10 倍。 就像一支单人军队一样,他们自己提供的价值比一支初级工程师团队加起来的速度更快。
但那怎么可能呢? 不是越多越好吗?
在我担任 Netflix 和 Amazon 的工程主管期间,我曾与两位刚毕业的实习生一起工作,一直到首席工程师(亚马逊的 L7 及以上),我可以证明确实存在 10 倍工程师。 我也可以自信地说他们不是:
- 打字速度快 10 倍
- 工作 10 倍的时间
- 编写 10 倍以上的代码
事实上,10 倍工程师可能会以一半的速度打字,一半的工作量,并花更多的时间删除代码而不是编写代码。
10x engineers tend to be better at LeetCode too, but it’s not what sets them apart.
最好的工程师和初级工程师之间的区别归结为心态问题。 他们使用正确的工具,提出正确的问题,并且知道如何确定优先级。 即使是非技术人员也可以开发的与编码无关的技能。
最好的工程师与普通工程师的区别在于(令人惊讶的是)非技术技能。
在本文中,我讨论了初级工程师常犯的 3 个常见错误,以及高级工程师如何以不同的方式解决相同的问题——导致截然不同的结果。
1. 对工具的研究不够
亚伯拉罕·林肯曾经说过:“如果我有 8 个小时砍树,我会花 7 个小时磨斧头。”
初级工程师将花费 8 个小时用钝斧砍伐。 高级工程师花了一个小时挑选合适的电锯。
5分钟砍树。
- Honest Abe would’ve made a great engineer.
我看到初级工程师犯的一个常见错误是他们一头扎进编码中。 他们只坚持使用他们知道的工具,并尝试使其适应各种情况。
如果一个普通工程师只知道如何使用锤子,他们也会用它来挖洞。🙄
他们几乎没有花时间研究其他替代方案——或者是否有可能完成编写 0 代码的工作!
使用正确的工具是工作数周与在 10 分钟内完成任务之间的区别。 这就是产生 10 倍差异的地方。
示例任务:建立网站
最近,我有幸与一位初级工程师打赌谁可以更快地建立个人网站。
新毕业生用了 2 周时间,写了 1000 多行代码。 两周后她甚至没有完成!
我花了 1 天时间,写了 0 行代码,甚至没有流汗。 你可以在这里看到我主页的结果。
- Notion page + super.so for deployments = michaellin.io
当我请初级工程师解释她是如何处理这个问题时,她为什么花了这么长时间才完成的原因变得很清楚:
“嗯,我在学校学会了如何制作 React 应用程序,所以我只是用它从头开始创建了一个网站。但是很难让图像和 CSS 正确。而且我也不知道如何部署它。所以我想我必须在 AWS 上编写一个自定义部署脚本,但对控制台有点困惑。微型实例和大型实例又有什么区别?”
请注意这位工程师的方法如何遗漏了几个关键点。首先,她从未讨论过:
- 要求——没有提及搜索引擎优化、评论或预建模板是否重要。
- 替代工具——他们只知道 React + AWS 并坚持使用它。
想象一下尝试从头开始重建评论功能。或确保 SEO 正常工作。这些功能中的每一个都是团队正确实施的工作价值。难怪她没有说完!
2.不寻求帮助
这是一个非常简单的问题,很容易修复,但是浪费了太多时间,我不得不提一下。
一些初级工程师有这样的误解,认为高级工程师就像一个孤独的天才。如果他们坚持解决问题,他们最终会得到解决方案。
10x engineers are not “lone geniuses”, but need to ask for help too!
但这是一种相当幼稚的思维方式。很多时候,不同之处在于他们缺少上下文——他们不可能自己推断出的信息。
因此,他们不只是寻求帮助,而是在代码库上苦苦挣扎,一遍又一遍地查看相同的代码行,当向队友提出 5 分钟的问题会立即解决问题时!
一个知道如何寻求帮助的经验不足的工程师总是会击败一个从不寻求帮助的更有才华的工程师。
有时很明显,需要额外的上下文才能继续。例如,通常不清楚:
- 为什么代码库的结构是这样的
- 从另一个团队调用哪个 API
- 部署如何工作
这些是上下文情况的示例,在这些情况下,您最好寻求帮助而不是进一步挖掘代码库。不要害怕寻求帮助!
3. 没有提供商业价值
10x 工程师首先是投资者。
他们明白他们的工作是一项投资——他们的投资回报必须大大超过所花费时间的成本。他们了解机会成本:花费在构建一个功能上的时间意味着没有花费在构建另一个功能上的时间。
工程师必须权衡机会成本——“在你可以构建的所有功能中——这个功能是否最能利用你的时间?”
他们明白代码是达到目的的一种手段——业务目的。如果他们可以在没有代码的情况下实现他们的目标,那就更好了!编写的工作更少,维护的代码也更少——这是一个双赢的局面。
10x engineers are investors. Like Warren Buffet.
我看到很多新工程师忽略了这些业务目标。一些例子:
- “这项新技术真的很酷。让我们花 5 天时间将其集成到网站中”(与产品不对齐)
- “呃,我不喜欢代码的结构方式。让我们花在下一个 sprint 重构上”(机会成本——可以把这段时间花在构建创收功能上)
- “这个平台太老了——让我们迁移到一个新平台吧”(迁移是否可以帮助您显着加快移动速度,还是只是一种渐进式改进?)
正是这个数学导致了 10 倍的工程师。如果一个初级工程师花 2 个小时来处理一个不会增加收入的复杂功能,但一个高级工程师花 1 个小时来完成一个简单的副本更改,它是收入的 5 倍,我们的生产力提高了 10 倍:
1/2 的时间花在产生 5 倍收入 = 10 倍交付价值的功能上。
最后的想法
非技术技能(“软技能”)是最强工程师和最弱工程师之间的差异因素。如果工程师避免了上述所有错误,但很难使用,那么他们的 10 倍技能就会失效。
Netflix 文化平台的摘录。
你努力成为一名工程师。 工程比不做一个混蛋要难得多。 不要因为你的自负而让你的努力付诸东流。 永远记住:
工程师必须首先交付价值。
想要更多职业建议?
我是迈克尔,前 Netflix 工程主管,后来成为企业家。 6 个月前,我辞去了 Netflix 的一份梦想工作,为自己工作。 我写关于工程、职业建议和初创公司的文章。
原文:https://medium.com/@_michaellin/how-to-be-a-10x-engineer-fdac2a5a1bd5
- 17 次浏览
【软件工程师】收入最高的 10 种编程语言
介绍
Gartner 对 2022 年董事会调查的看法表明,数字技术计划是 2022 年和 2023 年的首要战略业务优先事项。作为软件开发的基础构建块,许多最现代的编程语言都有可用于加速的框架和工具包发展,进而推动数字化转型。
各行各业的组织都在寻找最佳技术、架构和实践来加速数字业务,因此了解现代化软件开发是数字化转型的关键至关重要。
应用程序开发和现代化计划有多种编程语言可供选择。高级组织通常能够更好地支持多种编程语言,但现实情况是大多数组织没有并且必须为大部分开发工作选择 3 到 4 种编程语言。
选择最好的编程语言
团队在组织内为一项任务使用不同的顶级编程语言并非闻所未闻。但是,使用过多的编程语言会造成长期维护风险和技能短缺。
要为您选择正确的编程语言,建议您:
- 在符合语言优势和/或有能力获得所需技能集并实施所需框架、工具和平台的用例中引入新的编程语言。
- 选择 3-4 种互补的编程语言来支持您的项目,方法是确定您的组织中最常用的编程语言并确认这些是您的市场中可供雇用的技能组合。
现在,为你和你的职业选择合适的编程语言很大程度上取决于什么会给你未来的发展和职业发展带来更大的结果。做出该决定的一个很好的参数是平均工资,以了解您的知识的需求程度,并为您提供未来发展的晴雨表。
接下来,我们将深入探讨收入最高的 10 种编程语言,以便您了解 2022 年和未来几年,哪种编程语言是最值得学习的编程语言,以及它如何保持一致与您的战略目标。
收入最高的 10 种编程语言
Java、JavaScript、C# 和 Python 仍然是企业现代开发的主要通用编程语言。尽管不同编程语言的技能组合正在增长,但学习曲线就在那里,这意味着投资和培训可能会成为开发人员的潜在阻力,因为他们没有明确的前景或长期价值证明。
为了您的职业发展和职业发展,明智的做法是选择具有最光明未来并且准备为您的知识付出最多的语言。如前所述,虽然 Java、Python 和其他语言仍然是一些最流行的编程语言,但这并不一定使它们成为收入最高的语言。
例如,The Next Web 研究表明,在 2021 年,收入最高的编程语言是 Rust。 Rust 语言的采用和流行度一直在稳步增长,根据去年的 StackOverflow 开发人员调查,Rust 是开发人员的首选。
开发人员喜欢 Rust,因为它超级快速且内存效率高,这是帮助它轻松与其他语言集成、提高性能、保证线程安全的关键特性,而且它的大量文档也没有什么坏处。使其成为收入最高的编程语言之一的另一个因素是 Rust 开发人员的数量非常少。
由于有许多数字浮动,在这个列表中,我们浓缩了一些对收入最高的编程语言的估计:
- Rust — 最高平均工资:超过 18 万美元
- Go——最高平均工资:超过 17.9 万美元
- Scala——最高平均工资:超过 17.8 万美元
- Python——最高平均工资:超过 15 万美元
- Java——最高平均工资:超过 13 万美元
- Swift——最高平均工资:超过 12.5 万美元
- C#——最高平均工资:超过 $125K
- C++——最高平均工资:超过 $125K
- JavaScript — 最高平均工资:超过 125,000 美元
- Ruby——最高平均工资——超过 12.5 万美元
值得一提的包括 Clojure、F#、Elixir、Erlang、Perl、Kotlin、Haskell、Typescript、Swift 和 Solidity 语言。总而言之,我们可以预期 Python 语言将继续在需求和薪酬方面表现出主导地位。
无论您是游戏新手还是经验丰富的开发人员,学习编程语言绝不是一个糟糕的决定,并且是提升您的编程生涯的最快方法之一。
在你的简历中使用各种新的或成熟的编程语言来加强你的专业形象是一张让招聘人员和招聘经理立即注意到的快捷票。
原文:https://blog.hireterra.com/top-10-highest-paying-programming-languages-…
- 26 次浏览
软件质量保证工程师
- 17 次浏览