正确处理无聊的东西

技术日新月异。 每年都有很多闪亮的新东西要学习。 无论是炙手可热的新JavaScript框架,新奇的云AI技术还是最新的时髦编程语言,乐趣无穷无尽。 虽然学习新事物很有趣,但跟不上它是不可能的。 您经常问自己一些问题,例如:

“哪些技术堆栈将使我继续受雇?”

“我应该看看这个热门的新JavaScript库吗?”

“ ______(虚拟现实/人工智能/机器学习/大数据/等等)怎么样?”

作为开发人员,我喜欢学习新技术,但是我只有有限的时间。 我想提高自己的工作效率,追求令我着迷的事物,并留出时间举重,与妻子闲逛,带我的孩子钓鱼。 我一直在问自己如何才能充分利用有限的教育带宽。

多年以来,我了解到,使用户满意比使用最新技术来实现更令人满意。 看着即将使用您的软件的人意识到自己的工作将变得更加轻松时,就会感到神往。

用户不在乎您的新JavaScript框架。 用户不在乎最新的云服务。 用户甚至不关心所有酷孩子使用的新的时髦语言。 用户希望完成工作,以便回家。 他们想要的是不易碎,性能良好且不会将客户数据泄漏给俄罗斯人的软件。

这些问题听起来很无聊。 他们对您刚刚在Internet上听说过的那种新奇事物没有吸引力。 他们没有听起来很酷的代号。 但是,以正确的方式做正确的事情将产生最大的影响。

此外,通过专注于一些无聊而又关键的技能,您可以避开技术跑步机。 您仍然可以学习闪亮的新事物,但是不必紧跟一切。

在这篇文章中,您将学习如何更加意识到如何度过您的教育时间。 您将学习如何计划您的教育,以及如何选择要学习的技能。 之后,您将能够发挥最大的影响力,但仍有足够的时间去钓鱼。

经过十多年的软件构建,我了解到好的软件的关键是正确无聊的东西。

从这里开始:承担责任

最重要的事情是对自己的教育负责。 太多的开发人员认为,使他们的技能保持最新是他们雇主的职责。 这是结束自己不喜欢的工作的好方法。 我并不是说公司不应该为培训付费,但是这不应该是您对技能进行的唯一投资。

此外,您应该考虑自己想要的职业需要哪些技能。 您的雇主可能愿意支持培训,以增强您目前的职位,但您可能最终不想接受。 在一家重视教育的公司工作时,这是您的职业,您需要管理它。

为自己的命运负责。

采取成长心态

第二件重要的事情是采用成长心态。 在我们的行业中,有一种我们称为“ 10倍开发人员”的神话。 这些神奇的独角兽凭借其神似的力量超越了我们凡人。 尽管开发人员之间的技能可能存在巨大差异,但没有人是天才级的软件开发人员。 我们都可以变得更好。

成长的心态意味着您接受了自己一无所知。 您是一项持续不断的工作。 这与具有固定思维方式的人不同,后者认为能力是固定的。 这些人在谈论开发人员技能时会说“您不能教高”。 长久以来,固定的思维定势会使您变得虚弱。 如果您需要保持自己作为大师的脆弱自我形象,就不会挑战自己,也不会提高自己。 持续不断的改进是软件开发事业长期幸福的关键。

心理学家卡罗尔·德威克(Carol Dweck)的研究表明,那些相信自己的能力可以增长的人在逆境中更具韧性,并且通常比同龄人的思维定式更好。 专注于增长,您将不断变得更好。

如果您想了解更多有关成长心态的信息,可以查看 Carol Dweck的Mindset或 本文 总结了她的研究。

制定一个计划

如果您想充分利用自己的时间,请制定计划。 即使您不按照计划执行,也可以提高效率。 我们所有人都过着忙碌的生活。 如果我们不花时间,那就不会发生。

制定计划的第一步是弄清楚对您来说作为开发人员重要的是什么。 弄清您想要从职业中获得什么,以及达到该职业需要具备哪些技能。 一旦了解了自己的职业生涯,就可以使用这些信息来集中精力进行教育。 牢记目标可以帮助您确定优先级。 问自己以下问题:

  • 我想要什么样的职业?
  • 我是否更在乎金钱,稳定性或有趣的工作?
  • 我想要什么水平的工作与生活平衡?
  • 我想为什么样的公司工作?
  • 我觉得哪种技术有趣或有趣?
  • 我想去哪里工作?
  • 我想改天从事管理或创业吗?
  • 我想专攻或更通才吗?

一旦了解了您想要从事哪种职业,就可以不用担心要达到哪种职业。 例如,如果您认为薪水稳定,并且比有趣的工作有更多好处,那么适合在中型企业中找到工作。 这些类型的公司倾向于使用更老,更成熟的技术堆栈。 通常,您希望对他们的业务有很好的了解。 在这种情况下,您可以避免出现任何前沿问题,并等待事情变得更加稳固。

另一方面,如果您不关心工作与生活之间的平衡,也不想成为一名通才,则可以尝试在规模较小的初创公司工作。 小型创业公司往往更前沿,经常采用云技术,因此可以迅速扩展。 您还需要戴上更多帽子,因为没有足够的开发人员来让每个人都专注。 在这种情况下,应将重点放在允许小型团队提高生产率的技术上,并结合对市场上现有产品的广泛概述。

如果您想深入研究特定技术,那么为大型公司工作可能是您的最佳选择。 较大的公司可以支持更多专业的开发人员角色。

花一些时间思考您想要什么样的职业以及支持该职业的公司类型。 进行一些研究,您应该能够弄清楚您想为哪种公司工作,以及在其中成功所需的技能。

接下来需要做的是花些时间学习。 每周找出几个小时可以用来学习新事物。 最好分小块学习,因此每周几天30至60分钟是一个不错的起点。 即使您很忙,通常也可以挖三十分钟。 一小段时间加起来。 30分钟乘以一周五天等于一年130个小时。 您可以在130个小时内完成许多书籍或课程。

就个人而言,我发现清晨是进行个人学习的最佳时间。 虽然我不是一个早起的人,但我发现在工作日之前取消对精神要求较高的学习最容易。 下班后我专注于家庭和健身。

你的旅费可能会改变。 您可能更喜欢早上锻炼身体,晚上学习。 弄清楚什么与您的能量水平有关,并安排时间。

另外,将其他时间重新用于学习。 每年我在车上,打扫房屋和做院子工作时,都会“阅读”超过50本有关Audible的书。 这是使时间更加有用的好方法。 我还删除了手机上的所有社交媒体应用程序,转而使用RSS feed阅读器和Instapaper应用程序。 通过将一些强度不大的学习任务转移到无用的补课时间上,我可以利用自己专用的学习时间来集中精力。

有时间限制后,请进行相应分配。 如果您像我,那么您要学习的东西远远超出了您的可用时间。 与其尝试一次击打所有这些事情,不如一次选择一件事并对其进行处理。 定义一个最终目标并努力直到达到目标。 一个很好的例子是按照自己的方式学习课程或阅读教科书,然后写详细的摘要。 其他出色的目标是根据您的发现创建演示文稿或博客文章(这是我的工作),建立小型辅助项目或提供教您的同事的机会。 关键是要利用您的知识来生产某种东西。 优先考虑学习,以便您首先处理最重要的主题。

此外,请考虑如何在常绿技能和新技术之间分配时间。 您的分配应基于您的职业优先级,专注于常绿技能会更有用。 看着新事物很有趣,但最终,常绿技能将帮助您交付更好的软件。

将您的技能视为投资组合。 大多数投资组合在高风险但潜在的高薪投资与更安全的投资之间取得平衡。 在科技界,常绿技能是您的安全投资。 投资您的常绿技能总能带来回报。 学习闪亮的新技术是一项更具风险的投资。 您可能会获胜,但最终可能会获得无用的技术技能。 就像投资组合一样,倾向于更安全的投资。 我建议以75/25的比例分配以使用常绿技能。

学习技巧

现在您已经有了一个计划和一段时间,您需要弄清楚该做什么。 一直都有新技术出现,但是我们只能选择一些要学习的东西,否则我们可能会过于分散自己。 您可以做一些事情,以帮助您确定选择。

首先,要意识到将时间投入新技术就像是下注。 您打赌这些技能将长期帮助您。 如果您回顾过去,有些赌注已经获得回报,例如JavaScript或Azure,有些则没有,例如Silverlight。 弄清楚会有什么回报并不总是那么容易,这是花更多时间在常绿技能上的另一个原因。 尽管他们不会推动您从事年薪500k的AI工作,但常绿技能将带来可观的价值。

接下来,您可以做的是建立自己的技术雷达。 这个想法改编自Thoughtworks技术雷达。 Thoughtworks员工会定期聚在一起,针对需要关注或采用的技术和实践提出建议。 他们为更广泛的社区发布此列表。 通过列举当前影响其企业的趋势,您可以了解技术前景,确定可行的方法,并对使用的方法做出更好的选择。 在您自己的公司中,这是一项很棒的练习。

虽然Thoughtworks雷达具有与采用技术有关的类别,但您的个人雷达应具有与您自己的学习有关的类别。 随意在自己的雷达中包含并非热门趋势的要处理的事情。 随着时间的推移,我的个人技术雷达已演变为更多的“智力雷达”,其中我将软技能和常绿技能与新技术结合在一起。

我使用以下类别:

深入
这些是我想提高的核心职业技能。 对于这些技能,我愿意参加课程,构建辅助项目,撰写博客文章,并且通常花很多时间来研究这些技能。 这可以包括我想学习的新技能或我想提高的实践。 这是一个要求很高的类别,因此请确保此处没有太多技能。

我的“深入了解”列表:公开演讲,写作,云架构,React,ASP.NET性能和安全性

跟随
这些技术很有趣,但是我还不愿意为此投入巨资。 我将阅读有关这些主题的博客文章或参加会议讨论,但是我并没有花很多时间在它们上面。 这些主题可能是我以后会继续讨论的主题,或者是使我感兴趣的主题,但对我当前的目标没有帮助。 这也是我过去关注的事情的类别,但是现在我只想在关注其他技能的同时保持关注。

我的“关注”列表:Angular,Design,Node.js,Data Analytics,XR,3d打印,心理学

避免
这些是我正在积极避免的技术。 这并不意味着这些都是不好的技术。 别人的“深入”很容易成为我的“避免”。 此类别适用于有趣的事情,但不符合我的总体职业目标。 沃伦·巴菲特(Warren Buffet)进行一项练习,列出您的前25个职业目标,选择前5个目标,然后积极地避免其他目标。 这是同一件事,但对于技术而言。

我的“避免”列表:本地移动开发,物联网

在构建技术雷达时,请考虑您的职业目标,哪些技能可以帮助您实现这些目标并相应地确定优先级。 我经常将自己的优先事项列在雷达的顶部。 了解您的优先级可以帮助您轻描淡写地进行选择。 一旦有了雷达,您就可以使用它来告知您的个人开发时间。

选择雷达技术时应考虑的事项:

这是一种流行的技术吗,并且会保持这种趋势吗?

您能否充分了解某种特定技能以对市场产生影响?

您可以从正在做的事情跳到这项新技能吗?

这是我正在学习的乐趣还是职业?

承诺每个月或每个季度刷新一次技术雷达。 也不要复制先前的雷达。 如果您没有时间研究“深入”列表中的所有内容,那么您就不必承担继承旧主题的义务。 目标是确定优先级,然后对您的时间限制进行​​任何处理。 如果您没有遍历整个列表,请下次做一个较小的列表。

在评估新技术很有趣的同时,您应该始终在教育计划中为常青技能腾出空间。 您可以做很多事情,但是这里有一些建议是根据我过去十年的开发经验得出的。

基本设计和用户体验

以我的经验,大多数企业项目都缺乏专门的UX人员。 通过学习一些基本的UX原理,您可以极大地提高所构建软件的质量。 设计不仅仅是使软件“看起来很漂亮”。 精心设计的软件使用户更容易学习,并使他们更高效。 这也使您看起来更加称职和可信。

对于设计的艺术性部分,我建议作弊。 选择一个类似Bootstrap的框架,并使用公司徽标中的颜色自定义配色方案。 确保您的文字和背景之间有足够的对比度,并且与背景之间的距离为90%。 我不是一个艺术家,但是要达到“足够好”的视觉设计并不难。

接下来,关注应用程序中的工作流程。 用户如何将一项任务转移到另一项任务? 当用户犯错时,应用程序是否会向用户提供良好的消息? 发生故障时,应用程序是否可以正确通知用户? 了解如何编写良好的错误消息并构建响应式工作流。

除此之外,学习如何制作好的表格。 大多数Web应用程序大量使用表格,并且知道如何制作良好的表格会带来好处。 如果您想了解更多,我建议以下内容。

要检查的书籍: 黑客设计 不要让我思考 日常用品设计
退房地点: A List Apart Smashing Magazine

在不了解所编写的技术堆栈基础知识的情况下,从一个框架过渡到另一个框架是痛苦的秘诀。 如果您对标准JavaScript和函数式编程有所了解,那么选择新的JavaScript框架将变得更加容易。 像其他任何东西一样,您可以在这里走太远。 您不会在大多数项目中看到深奥的语言功能。

性能

另一个基本问题是了解如何对所选堆栈进行性能调整。 知道可以使用哪些工具来记录性能,以及有关如何避免麻烦的一般提示和技巧。 了解数据如何在您的应用程序中流动以及出现瓶颈的常见位置。

安全

随着软件成为我们生活中更深层的一部分,安全性变得越来越重要。 了解安全编码的基础知识以及如何防止堆栈中最常见的安全问题。 了解如何构建威胁模型以检查应用程序数据流并避免安全漏洞。 了解如何加密以及如何加密以最大程度地减少数据泄漏。

可维护性

最后的基本技能是学习如何构建可测试的代码。 与普遍的看法相反,自动化测试实际上可以加快编码速度。 您不仅可以获得以后的好处,而且可以从编写测试中立即受益。 了解如何在堆栈的各个层中编写自动化测试。

有些人喜欢讨厌“软技能”一词,好像“软”是“不良”的同义词。 当我想到柔和的时候,我想到了武术。 在武术中,软硬技术用于不同的情况。 同样,在软件开发中,软技能和硬技能都很重要。 您想花大量时间从事软技能方面的工作有两个主要原因。 首先是软技能永不过时。 超过50,000年以来,人类的大脑一直是大致相同的配置。 尽管技术和文化在变化,但基本的人性却没有变化。 第二个原因是,您与一些廉价的地下室编码器的不同之处在于,能够与各种利益相关者合作,并处理软件开发的技术和非技术方面。 如果您想成为领导者,无论是在管理上还是在技术上,您都需要能够与人打交道。

这是您应该从事的一些软技能。

沟通技巧

软件是一个沟通过程。 您不仅要与机器交流,而且还需要与人交流。 学习如何清晰地说话和写作是任何团队中的一项重要技能。 学习如何倾听和提出好的问题将帮助您深入了解技术问题。 此外,良好的提问技巧也将帮助您隔离技术问题。

如果每个人都学会了非暴力的沟通和解决冲突的技能,那么除了可以清楚地表达自己的观点,世界将是一个更好的地方。 即使是最冷静的开发人员(包括我自己)也可能陷入纠纷,而这些纠纷可以通过对话轻松解决。 尽管有一整本书涉及非暴力交流,但最大的收获是避免给自己和他人贴上标签。 与其说“你因为__________而搞砸了”,不如将批评改为“你做了_________,这让我感到_______。 如果您可以避免________?”如果您避免使用标签和判断,那么您的讨论将更有成果。

批判性思维至关重要

人的大脑并不是要感知真理。 这是为了让我们活着。 那并不意味着事实并不重要,而是意味着我们有各种各样的认知扭曲使我们以真理为代价而活着。 心理学家将我们的思维分为两个不同的过程。 首先是合理的过程,权衡所有选择并做出公正的选择。 第二个是大脑更大的情感和自动处理部分。 这是我们大脑全天做出大多数选择的部分。 虽然我们的大脑不能只有一半,但我们需要意识到我们的盲点,并寻求有不同想法的人来帮助他们克服盲点。

通过学习批判性思考,我们可以权衡论点并得出真相要比依靠我们的情感处理和运气最终偶然发现真相要快得多。

如果您想更多地了解人类的谬误,请查看 快速思考和缓慢思考

得到一些禅

软件开发可能是一个非常压力的职业,尤其是在关键时期。 了解如何以富有成效的方式缓解压力。 冥想,强调坚韧性的哲学(例如斯多葛和佛教)以及管理自己的自我可以极大地减轻您的痛苦。 关键是要能够将自己的情绪与行为分开。 注意何时离开轨道并进行自我纠正。

学习如何学习

除了花时间学习外,还要花时间改善学习过程。 随着变化的步伐,我们必须不断学习新事物。 让我们确保通过管理学习过程来尽可能高效地度过自己的时间。

关于如何更有效地学习,有很多可用的资源。 一个很好的开始将是使它坚持。

技术日新月异,您有责任对自己的教育负责。

首先确定我们想要拥有什么样的职业,以及实现该职业需要哪些技能。 如果您需要建议或信息,那么技术社区中有很多人愿意提供帮助。 快来收听That Conference Slack频道或您的本地用户组。

知道自己想要什么后,就花一些时间来学习。 制定计划并根据目标优先学习。 专注于高价值的常绿技能。 不要忽视新技术,但是要意识到它们如何适合您的职业计划。

尝试找到理想的计划工具时不要被抓住。 您不需要任何花哨的方法即可实施此做法。 我使用OneNote笔记本,但是您可以用几张纸来完成此操作。

今天封锁一些时间。 通过控制自己的教育并专注于正确的技能,您可以避开无限的新技术跑步机。