前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >广泛vs狭窄的技能树:软件工程技能揭秘

广泛vs狭窄的技能树:软件工程技能揭秘

作者头像
WindCoder
发布2018-09-19 17:42:40
5170
发布2018-09-19 17:42:40
举报
文章被收录于专栏:WindCoderWindCoder

 前言

前几天收到了最新的,但最近进入了996模式,比较忙,所以只能周日抽时间出来发了。

原文Broad vs. Narrow Skillsets: Software Engineering Skills Demystified 作者TIBERIUS FLOREA

正文

每个软件工程师都有自己掌握的技能。如果你掌握了一到两种技能,而其他的技能却很少,那么技能就是“深而窄”;如果你能在不成为任何领域的专家的情况下做一点事情,那就是“广泛而肤浅的”。

我们大多数人都处于中间的某个地方,有一些很强的技能,一些普通的技能,还有很多的略懂皮毛。在这篇文章中,我想讨论一下广泛性的范围,并认为接近广泛的结尾会使大多数程序员受益。

广泛vs狭窄的技能:软件工程技能揭秘
广泛vs狭窄的技能:软件工程技能揭秘

广度和深度当然是相对的。例如,您可以成为Web开发专家,也可以是客户端Web开发专家,也可以是JavaScript专家。所有这些在某种意义上都是“深层次的”,而最后一个比第一个窄得多。

此外,“深而广”和“浅而窄”的技能程度都是可能的:第一个意味着每个人都想雇佣你,而第二个意味着你还没有学到任何有意义的东西。由于它们不太常见,所以也不值得详细讨论。

软件工程师的技能和技能类型

深而窄

具有深厚的技能意味着你至少是一个领域的专家。

拿SQL来说:假设你知道关于关系数据库理论的一切; MySQL,PostgreSQL,Oracle和SQLite的优缺点; 如何优化查询; 何时以及如何对数据库进行非规范化等等。寻找这一特定技能的客户会希望尽快聘用你,并有充分的理由。你会像其他人一样,在地面上奔跑和传递价值。

然而,如果项目扩展或显著改变,你就会被程序员所替代或补充。即使没有重大更改,您是否能够建议架构变更?客户机可以更好地使用NoSQL数据库或根本没有数据库,但是您的狭窄的专业知识可能会使您对这些不熟悉的选项产生偏见。

广而浅

另一方面,如果你是一个不是领域专家的通才,你需要一些时间来增加新项目,然后才能达到峰值生产力。

举个例子,也许你需要做一个Python项目,而你以前从未使用过这种语言。尽管如此,您可能已经听说过一些关于它的东西(动态、解释、多范例),您使用其他语言的经验将使转换更加容易。

您最初编写的代码可能不是Pythonic(包含元组,引用或生成器),但您将知道从哪里开始。你将会取得稳步的进展,而且你的模块将会很容易的改善。你对技术的广泛看法会给你一些别人可能忽略的想法。

当项目变更时,您将成为您团队的资产而不是负债。

现实世界中的技能

从地理上看,狭窄的技能树看起来像高山,而广泛的技能树就像高原。用这个比喻,典型的技能很可能会有几座山,一座山,还有很多平原。

广泛vs狭窄的技能:软件工程技能揭秘
广泛vs狭窄的技能:软件工程技能揭秘

一个随机的程序员可能精通SQL和Python,在web编程和算法方面很好,而且对大多数其他的东西很担心,比如核心转储、OAuth服务器或本地应用程序。这样一个程序员应该继续开发他们的专业领域,同时也发现并填补知识空白。

这一策略可能会在未来几年里为他们提供最好的服务。

为什么程序员需要多样化他们的技能

许多项目需要不相关的技能以不可预知的方式结合起来。虽然广泛熟练的工程师可以为他们中的大多数人提供有用的帮助,但是专家的技能将与很少的雇主的精确要求相匹配。这在短期内不一定是个问题,因为你只需要一份工作来支付账单。

然而…

超专业化是有风险的。如果你能比其他人更好地预测未来,那么把你的鸡蛋放在一个篮子里可能没有问题,但是这种能力很少,而且与技术技能无关。考虑我们千禧年对Windows编程技能的需求。或者问问自己:十年前,我们中的许多人是否已经猜到了Android、Flash、诺基亚或黑莓的各自发展轨迹?

最后,顶级雇主高度重视不同的技能。Facebook在开始六周之后才会为团队分配新员工。Google鼓励内部转移并运行多个轮转程序。即使你喜欢自由职业,保持你的选择不会受到伤害。如果你曾经考虑过为那些公司工作,那么你至少应该是一个多面手。

假设你确信并想要使你的技能多样化,那么你会怎么做?

如何多样化和提高技术技能

你可以用金钱换技能:

  • 接受较低的费率,同时过渡到陌生的领域。如果你的生产力比平常高75%,临时减薪25%是公平的。你会很快恢复。
  • 在申请需要他们的工作时,用你想要的技能做无薪的演示工作。如果事实证明,你还没有准备好改变,这仍然是一个有益的经验教训。

你也可以用时间来换技能:

  • 贡献一个开源项目。你会得到建议和验证,回馈给社区,也许会被潜在的雇主或同事注意到。
  • 为快乐、灵感和日常工作做一个个人项目。例如,我在学习React的同时克隆了智能手机之前的Snake游戏。

你必须寻找学习机会,但你不能不断地这样做。对于我的Toptal面试项目,我使用了Node.js和Backbone,这两者我都没有太多的经验。这很有趣,但所需的学习速度不能持续数月。

理想情况下,当你挑战自己学习新东西时,你会在长期的稳定期(稳定的产出和收入)和短暂的间隔期间交替。你多久后一次取决于几个因素,如你目前的技能,市场需求和你的个人目标。

为什么广度对雇主有好处?

就雇主而言,在某些情况下总是需要深入的技能:

  • 雇主和雇员之间几乎没有信任或时间承诺。
  • 当可能发生灾难性后果(如隐私或安全事件)时。
  • 当需要深奥的技能。
  • 在截止日期紧迫和不可协商的情况下。

尽管如此,许多项目并没有检查这些boxes,他们的招聘经理也应该考虑全面的工程师。许多技术技能,例如测试和代码文档,以及所有软技能(如通信)传输。即使产品没有完全改变,弹性也很重要;如果你雇佣的是摊档,一个多面手就可以把工作放在第一位。

广泛vs狭窄的技能:软件工程技能揭秘
广泛vs狭窄的技能:软件工程技能揭秘

鉴于广泛的技能树的重要性,我们应该鼓励开发者多样化,我们应该把广泛的知识的重要性传达给那些可能过于注重“多年经验”和各种领域和技能的雇主。

最终目标是满意客户的往绩记录; 除了硬性和软性技能之外,这也证明了工程师能够转换到不熟悉的领域。对于自由职业者来说,这也是一个强烈的动机,他们没有冒险进入新的领域,他们准备这样做。

寻求合适的平衡

当广泛的技能树被低估时,一些优秀的开发人员闲置,一些好的项目人员不足或超出预算。要求一个完美的技能匹配就像要求现场工作,因为它使得难以匹配供应(合格的劳动力)和需求(奖励工作)。

这一切都不是针对领域专业知识的论点; 它将永远重要,并获得丰厚的回报。我们应该记住,广泛的技能树也很重要。

了解基础知识

什么是知识库?

它是开发人员技术技能的集合,例如语言、框架、工具等。两种常见类型是深度/狭窄(很少有专家技能)和广泛/肤浅(许多技能,没有领域专长)。

如何决定哪些技能需要改进?

找出你不熟悉的10种技能。一般技能(如解释语言和web框架)比特定技术(Python、Rails等)提供了更好的长期价值。

如何扩大技术技能库。

通过投资,例如,降低你的利率,或者在过渡到一个新领域时做无偿的演示工作,或者投资时间,比如建立一个开源或个人项目的投资组合。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  前言
  • 正文
  • 软件工程师的技能和技能类型
    • 深而窄
      • 广而浅
      • 现实世界中的技能
      • 为什么程序员需要多样化他们的技能
      • 如何多样化和提高技术技能
      • 为什么广度对雇主有好处?
      • 寻求合适的平衡
      • 了解基础知识
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档