我从阅读《实用程序员》中学到了什么

https://www.freecodecamp.org/news/thought-on-the-pragmatic-programmer/

简而言之:古老而又黄金。

《实用程序员》于1999年出版,是一本有关如何成为一名实用程序员的书。真正的意思是“优秀程序员”。

是的,它大约在20年前出版。但是,这本书仍然提供了许多与程序员或软件工程师非常相关的见解,就像有些人如今所说的那样。

您可能以前曾经听说过这本书,并质疑它的真正含义。好吧,今天我将与您分享我在阅读本书时学到的一些有趣的东西。

成为一名程序员不仅仅是技术技能

我正在清洁我的笔记本电脑,发现它很棒。 再见。
亚历山大·德比耶夫AlexandreDebiève)摄影 / Unsplash

阅读本书的标题时,您可能希望它会提供很多技术课程。但实际上并非如此。使本书在20年后仍然有意义的是,它告诉我们,成为程序员并不仅仅涉及技术实力。而且我们经常忽略这一事实。

这本书告诉我们,编程不仅仅是技术能力。

猫吃了我的源代码

我的猫咖喱
照片由Chen Zhao / Unsplash

这是本书的第一章,是一个非常有趣的概念。

还记得有一天我们没有完成作业,我们说那只狗吃了吗?(实际上我不记得了,因为我总是完成作业?)

那以及本章所教我们的实际上是责任。当您对某事负有责任时,您应该准备对此负责。

如果您犯了错误而不能履行这些责任,则必须弥补并找到解决方案。不要编造借口,不要玩指责游戏。您不能仅仅上班告诉所有人猫都吃了您的源代码

提供选择,不要做la脚的借口。

都是关于窗户破了

那寂寞而冷漠的景象立刻引起了我的注意。
照片由帕维尔Czerwiński / Unsplash

在这本书中,有一个关于城市地区的故事,这个城市变得非常混乱和破败,这都是由于一个破窗户造成的。

这很像我们的代码:当我们看到一些脏代码(我们可以看到它是一个坏的窗口)时,我们可能开始认为让代码变脏是可以的。以后再回去是可以的,大多数时候我们从不这样做。

尽量不要让“破损的窗户”得到修复。找到此类代码后,请尽快对其进行修复。当您继续认为没有人有时间修复该损坏的代码时,您不妨去买一个垃圾箱来保护您的代码。

本章讨论的内容实际上很简单:它涉及主动性和照顾您的东西

主动,成为催化剂

接力运动员
照片由布雷登科勒姆 / Unsplash

有时候,您可能知道有些事情是一件好事,或者实际上需要完成某件事。它浮现在您的脑海,您只是想自己就认为这是对的。

如果您一直在思考,什么都不会发生。或者,如果您只是要求将其显示在项目时间表上,则可能会遇到巨大的功能开发要求和技术债务。因此,讨论结束了一年。

现在该加强您的游戏了。尽力而为,不要过度,但要使其合理。一旦您有了完整的想法,就向人们展示。他们可能会认为“是的,如果我们这样做的话可能会更好。”

向他们展示未来,人们将在您周围集会。成为变革的催化剂

更重要的是,这本书还教会了我们一些程序员常会忘记的基本基础知识。

有时,我们对工作的研究越深入,就越容易忘记很久以前学到的基本知识。

忙于追逐功能和新技术改进,我们常常会忘记,在深入研究之前,实际上还有很多事情需要我们事先注意。

干净的代码

滑倒,绊倒或跌倒
奥利弗·黑尔Oliver Hale)摄影/ Unsplash

我们经常忘记的最基本的原则之一是干净的代码。随着功能的堆积越来越多,代码库变得越来越胖,技术债务也随之增加。

但是我们必须始终记住,每次编写代码时都要保持代码的一致性和整洁性。

本书中提到的一件事是DRY原则(不要重复自己)。它与代码可重用性有关。复制是邪恶的,那是事实。重复的代码会使维护代码变得非常困难,并且在您需要更改功能或修复错误时会引起混乱。

还记得那个时候需要修复一些代码的时候吗?您是否意识到有些代码与您刚刚更改的代码非常相似?这样一来,您就必须同时更改该部分和另一部分,然后也许也要更改一下……您就可以了。

找到正确的工具

帕拉托多干草粉
图片由Cesar Carlevarino Aragon / Unsplash摄

就像a夫一样,找到正确和适当的工具非常重要。a夫开始砍树之前。他们必须决定-他们需要电锯吗?还是斧头足够好?也许他们可以使用一种全新的光剑。但是使用菜刀可能需要一些时间才能砍伐树木。

对于程序员来说这是相似的:这本书告诉我们,对于我们来说,在开始工作之前找到合适的工具非常重要(就像一个好的代码编辑器一样)。我们不应该直接进行编码。

例如,实际上可以使用Windows记事本进行编码,然后使用控制台进行编译。但这是适合您的工具吗?尝试找到最舒适的最佳编辑器。学习和掌握它,它将使您的生产率提高数倍。

书中提到了几种编辑器,例如Emacs或Vim。但是如今,您可以找到更多现代代码编辑器,例如Visual Studio Code。寻找适合您的一个。就像您在咖啡中的口味一样-有些人喜欢拿铁咖啡,有些人喜欢卡布奇诺咖啡。

不要巧合编程

这是书中提到的非常重要的一点。在我们所有的编程旅程中,可能有时我们只是盲目地和意外地进行编码……并且某种程度上它才起作用。

您可能不确定自己的实际工作,因此您不断添加越来越多的代码,但它仍然有效。也就是说,直到有问题的一天,您尝试删除一些代码,它完全破坏了所有内容。而且您不确定是哪块引起的。

依靠未知是非常危险的。当您不确定代码应该做什么时,请尝试简化它,并确保代码本身是可靠的,而不仅仅是偶然的可靠。

仅依靠您确定的事情。不要巧合编程。

单元测试

最近,测试是一个热门话题。是的,这也是20年前的一个重要话题(而且将永远如此)。

但是有时候,人们如今忘记了单元测试。他们可能刚刚完成了代码,并且认为一切都还好……直到由于边缘情况导致代码在生产中被破坏为止。

为了保持稳定性和安全地进行重构,我们始终需要通过编写单元测试来保护代码。如果您的测试仅涵盖幸福的道路,那将是远远不够的。对您的代码执行无情的测试,并记住您的代码只有在涵盖所有可用测试后才能完成。

单元测试将帮助您确信自己的代码部分已经完成。

取得所有权

我想谈的最后一件事。众所周知,程序员喜欢以代码形式留下“遗留”。是的,大多数情况下都是不好的。

作为程序员,我们应该为自己的工作感到自豪。我们应该为我们所承担的责任和我们一直在努力的代码感到自豪。

当我们最终能够以自己的代码为荣并拥有它时,我们将可以留下良好的遗产。人们会把我们的代码视为签名。当他们看到我们的代码时,就会知道该代码将是可靠且由专业人员编写的。

整理起来

本书中涵盖了我这里没有讨论的更多主题,例如需求和团队合作。如果您有兴趣探索这些主题,则应尝试查找并阅读本书!

不过,请注意:尽管我喜欢这本书,但看看这本书有多老(20岁),似乎有些东西并不相关。它谈论诸如Prolog之类的旧语言,并像一个真正的新概念一样谈论OOP-因此这些奇怪之处似乎并不正确。

但是不能怪它,因为它已经有几十年了。

除此之外,本书涵盖的大多数内容仍与当前的编程时代密切相关,例如我上面提到的那些主题。

如果我想总结本书中的所有内容,我会说它基本上涵盖了我在网络上阅读的有关成为一名更好的工程师的所有内容

感谢您阅读我有关实用程序员的文章!希望它使您对作为程序员或软件工程师的旅程有所了解。如果您有兴趣了解更多信息,请抓住本书的副本。

使您成为英雄的前五名开发者技能

https://www.freecodecamp.org/news/the-hero-developer-who-knew-how-to-build-lego-bricks/

编程就像用乐高积木一样。任何开发人员都可以选择全新的LEGO集并按照说明进行构建。这很容易。可以将其视为编写学校作业或入门级教程的代码。

真正的软件项目是不同的。这就像建造一个非常大的城堡。除了过去已经建造过。然后有人用野蛮的脚把它撕成碎片。较大的部分仍然保持在一起。但是较小的部分被完全压碎了。一些元素消失在窗外。

您会得到一个盒子,里面装有剩下的东西,还有数千套其他物品。当然,指示也消失了。您只能依靠一张照片来了解城堡的外观。

现在很有趣!让我们看看在这种环境下如何有效工作。

1.接受未知

任何开发任务的第一步都是了解您需要做什么。听起来很明显。但是,任务越大,您获得的未知变量就越多。这是树立明确期望的时刻。

如果您不知道如何入门,那么思考和概念化的时间就太长了。开始并掌握所需的关键要素。然后再想一想。如果有人要求您提前估算或最后期限,请保持坦诚。您不了解或可能不了解的系统某些部分。没关系。

考虑一下Facebook,Netflix或Oracle等平台。或任何更大的企业软件。很少有人能够掌握全部范围。确实已经构建或花费了数年时间的人们。因此,首先,让自己休息一下,不要一无所知。更重要的是,接受您不会一无所知。

经验丰富,生产能力强的开发人员不是更好的程序员。他们更擅长评估他们需要做什么。并选择正确的策略来应对未知数。

乐高类比:想想我们要重建的城堡。假设有人给您一张城堡和盒子的图片,然后问您“建造城堡需要多少时间?” 除了“我还不知道。让我开始并看看一两天后我在哪儿”,对此没有好的答案。

最终完成这项工作的“我害怕未知数”方法是将所有元素从地板上的盒子中放出来。尝试根据颜色和形状将它们分成所属的组。然后看图片,并就如何组装积木制作一张心理图。

这种方法不是很有效,原因有两个。首先,如果城堡太大,您可能永远都无法到达那里。第二点也是最重要的一点:您无法评估进度。您可能走在正确的轨道上,或者根本不走。您没有反馈回路。

另一种方法是开始建造城堡。随着您的前进,您将了解找到所需零件的便捷性。您将知道图片是否显示了所有细节,或者结构是否比看起来复杂。

根据这些信息,您可以对完成这项工作所需的时间和精力做出更有根据的猜测。如果值得一做。

如果您需要明天早上建造它,也许去商店再买同一座城堡是更好的解决方案?这可能不是您的决定,但是解决问题并不总是通过更多代码来完成。

2. 接受妥协

开发人员经常称赞和重视“对细节的高度关注”。那里的每一份工作都以一种或另一种形式提供。很好 但是不要将对细节的关注与固执和完美主义相混淆。

启动大任务时,必须定义它的两个版本。第一个版本是您需要验证事物是否按照您认为的方式工作的最低要求。

这就是我所说的“水平工作”。您较大的任务中的每一项都是垂直的。您无需深入研究即可获得第一个结果。首先关注主要用例或方案。并从那里拿走。  

您可以在第一个版本中留下的东西:

  • 错误处理
  • 边缘情况
  • 干净的代码
  • 组态

不用考虑所有这些,只需编写所需的代码即可。您应该快速获得较高的功能覆盖率。当然,从第一个简单的版本过渡到最后一个版本将花费很多时间。那有什么意义呢?

这是一种更安全的进步方式。您想验证您的假设。设计和概念化虽然像您一样聪明又有能力,只能带您走远。弄脏你的手。它比任何“深入研究”都给您更多的知识和见识。

这与应用于业务中新产品或功能的MVP的原理相同。该方法还具有可以显示您的第一个版本并获得反馈的优点。或问问题。在现有代码上集思广益比在图形或概念上集思广益。  

乐高类比:您正在建造城堡塔。在图片上,高塔墙由交错的灰色和白色砖块制成。塔中有一个公主,屋顶上有一条巨龙。

您会找到公主和巨龙,但要找到所需的灰色和白色砖块可能要花很多时间。正确的方法是使用任何砖块建造墙,然后放置公主和龙。您可以留下“改善墙砖”之类的待办事项。

想法是您已经确定了一个问题:建造完美的墙将很困难。让我们接受这一点,继续发现我们尚不了解的所有其他障碍。接受妥协可以防止您陷入困境。

即使您从未到过TODO,也可以告诉您的客户:“这里是完整的城堡。我们知道我们必须改善塔墙,但它已经建成”。这比“由于我们花了很多年才能为塔找到合适的砖块而拖延的时间要好得多。但是,看一下,塔是完美的,并且与您发送给我们的图片完全一样。现在,我们将继续其余的内容。城堡”。

重要提示:不要混淆妥协和草率。

塔的主要元素是公主和龙。不要在塔上放一个农夫,在屋顶上放一只猫,不要以为这是个妥协。它不会工作:)

3.从外部世界开始

您可以控制很多事情。还有你做不到的事情。十年前,我了解到这是我作为开发人员的第一个任务时遇到的困难。任务是集成外部API并处理数据。我有一个星期。即使对于像我这样没有经验的人,这也是一个非常合理的时间表。

这是我所做的(以及您不应该做的):

今天是星期一早上。我已经阅读了10分钟的API文档。看起来很容易。我创建一个测试数据集,然后继续编写代码以对其进行处理。完成后,我将使用真实的API进行测试。

星期三早上,我快完成了。我认为我的代码干净,设计良好,而且一切正常(事实并非如此)。现在,我只需要集成API,就可以提前完成。我不禁以为“我很棒”。

我很快进入了API部分。我正在尝试通过我的代码来达到目的。除了我不能。出了点问题。我浪费了一整天,仔细检查了一切。使用不同的API客户端。没有进展。那天闪烁着,现在是星期三晚上。

我被困住了,感觉与真棒相反。

我星期四上班,请同事帮忙。他告诉我,对API的访问可能受IP限制,因此我必须与该公司联系以将我们的IP列入白名单。好,我有前进的方向。

我向拥有API的公司发送电子邮件。就像早上8点。我愚蠢地期望在几分钟之内得到快速答复和解决。我整个上午都出汗,中午终于拿起电话,打了支持电话。我会解释我的问题,并尽最大努力突出它的“紧急”程度(不是)。

另一端的人向我解释,白名单的时间通常为1或2天。现在我很沮丧。1或2天?这怎么可能?我的任务是世界上最重要的任务(当然,仅对我来说),它们告诉我“ 1或2天”吗?

突然我不再领先了。我迟到了。我失败了。我去找老板,告诉他我搞砸了。我应该在星期一早上检查一下API。然后,我将在同一天请求访问权限,与此同时,我将编写代码。他只是笑着说“是的”。

我终于在星期五获得访问权,并且必须待得很晚才能完成工作。我使代码适应API数据带来的许多惊喜。再见,精心设计和简洁的代码。我稍后将说“没有时间”(有)来说明这一点。

在我幼稚的时候,我觉得访问和错误的文档是很不幸的。现在我可以说这是照常营业。

本课将从您无法控制的内容开始。确认您对环境的所有假设。使用手动和低成本方法尽早尝试。

乐高类比:想象您正在建造城堡,并且一切运行顺利。您现在已经将盒子混合了大约100次以寻找零件。您不禁会想:“我从未遇到过坐在照片塔上的那条巨大的橙色龙”。

您忽略了这些信息,而只关注于自己取得的良好进展。那是人类。前进比处理问题更令人兴奋。最后,您必须确认龙不见了。并非常晚地告诉您的客户,该套装中的较大部分将不存在。这不好。

相反,要做的是遵循该提示:“龙在哪里?”。花费时间来确保100%不存在。立即提出问题。告诉您的客户:“嘿,盒子里没有龙。我不能用其他砖头来补龙。我们该怎么办?”

当人们足够早地知道问题时,他们会惊讶地接受问题。尽早发现问题可以提供更多可能的解决方案。“我们继续知道没有龙吗?” “我们可以单独买龙吗?” “我可以在盒子里看到恐龙。我们可以代替它吗?”

4. 划清界限

当您开始为现有系统开发新功能时,请先定义其与现有代码的接口。当然,您应该尝试并遵循SOLID原则等。但是关键部分要比这简单。只需尝试使接触表面尽可能低。

清晰定义切割的简单过程将改善您的解决方案。这将迫使您解决以下关键问题:用户或系统将如何使用我的代码? 我将得到什么输入?我应该产生什么输出?它可以帮助您将视线保持在球上。

如果您对正在使用的系统不了解,那就更是如此。这是一个很好的机会,可以探索未知的事物,然后再深入了解您已经知道的事物。

它还使打开或关闭该功能变得容易。您可以使用布尔标志或更高级的功能切换机制。

乐高类比:假设您需要建造城堡的延伸部分。要求很高,所以有很大的创造空间。但是您无法触摸现有的城堡。

您可以去建造一个不错的扩展,只是发现没有空间将它连接到城堡的任何地方。那真不幸。您必须快速更改扩展名以使其适合。

正确的方法是首先考虑触摸表面。扩展名将在城堡的哪儿?我可以将哪些砖块贴在上面?他们有什么形式?将延伸部分的几块砖放在一起,将其连接到城堡。验证它们是否插入牢固。您可以从那里自由样式化任何所需的扩展。

5.不要太干

DRY代表“不要重复自己”。这可能是最容易遵循的规则。一旦看到重复的代码行,就进行抽象。可以是基类,也可以是辅助方法。

那会发生什么呢?下一个人来了,需要更改通用代码以涵盖更多情况。它们添加参数和if语句以应对新出现的复杂性。很快,最初的5条简单行变成了30条行,很难弄清楚正在发生什么。

可读性差并不是代码重复的好方法。

最好保留重复的行。然后,您可以随意更改每个实例。

下次您到达“抽象的重复”时,问问自己:您看到某人从抽象中返回了多少次?就像删除基类,然后将通用代码放回继承类。我敢打赌答案永远不会。

原因是抽象和设计模式通常很酷而且很复杂。如果存在,那么“一定有一个很好的理由”。因此,一旦您引入了抽象,就很有可能将其永久保留在那里。

这是否意味着您不应该使用抽象?否。满足需求的用户抽象。像:

  • “我们希望使用输入输出记录对此方法的每次调用”
  • “我们想用数据a,b,c记录每个HTTP请求”
  • “每次创建用户时,我们都需要这样做

这些是抽象的良好候选者,还有更多示例。但是请注意,与业务相关(日志记录,安全性,分析等)相比,这些要求的技术性更高。很少有抽象友好的需求成为您的业务领域的一部分。

为什么?因为业务领域接近于现实世界。而且我们无法控制。在项目开始时所做的假设往往很快就会落空。不要为了避免重复而过度使用工程师代码。

乐高类比:无。乐高积木没有干的概念。

外卖

聪明地工作与更好的代码无关。它是要弄清楚需要做什么,并安全地朝着目标前进。

艰巨而艰巨的开发任务将带来未知数。接受它。学习使用它。

如果您使事情变得简单,并使您的团队,老板,客户以及理想的所有人对结果的期望保持一致,那么您将更有生产力。

谢谢阅读!

最初发布在Fire CI博客上

您解决编程问题还是完成练习?

https://www.freecodecamp.org/news/do-you-solve-programming-problems-or-complete-exercises-the-difference-matters/

人们倾向于交替使用术语“问题”和“锻炼”。但是有区别,这很重要。

Paul Zeitz教授对此加以区分。

取5×5。这很容易,而且是一种练习。5,490,900×496也是如此。这有点困难,需要更多时间来解决,但是您知道该怎么做。这就是关键。

蔡茨在有关解决问题的系列讲座中解释说:“练习是一个数学问题,您会立即知道如何回答。” “您可能无法正确回答,实际上您可能永远无法正确回答…但是毫无疑问如何进行。”

问题不是这样。根据Zeitz所说,问题“至少在最初是一个数学问题,您不知道如何回答。”

他通过数学问题解决的角度来定义问题和练习,但它们也适用于编程。

每天,我们都将解决问题的能力用作程序员:调试代码,学习新主题甚至解决问题。练习有其应有的地位,但是作为程序员,解决问题是无可替代的。

练习运动

您可以通过两种方式从练习中受益。首先,它们在学习新主题时会很有帮助。

我现在正在学习JavaScript,并结合使用各种练习和问题来进行学习。这些练习可以帮助我了解模式并熟悉概念和语法。

这是一个要求我编写一个函数的项目的示例,该函数需要一系列汽车。

const cars = [
  { id: 1, car_make: "Lincoln", car_model: "Navigator", car_year: 2009 },
  { id: 2, car_make: "Mazda", car_model: "Miata MX-5", car_year: 2001 },
  { id: 3, car_make: "Land Rover", car_model: "Defender Ice Edition", car_year: 2010 },
  ...
 ]

我必须car_model按键以升序对对象数组进行排序。

这并不是说此练习轻而易举-并非如此。我花了一些时间,并且得到了很多错误消息。

但是,它有资格作为练习,因为我从一开始就知道我需要做的事情。

我最近了解了JavaScript中的数组。尽管我不得不研究如何使用JavaScript进行数据处理,但我还是很熟悉根据Python经验对数据进行排序的方法。明确的指示也有所帮助。

但是这些概念仍然是新的。我需要练习将它们放在一起,这就是为什么此练习很有价值的原因。重复会滋生熟悉感,这些概念在我的脑海中开始固化。

维持您获得的收益

练习还有助于使学习到的信息保持最新。

在学习JavaScript的过程中,我不想忘记我所学到的关于第一门语言Python的所有知识。因此,我每天多次使用抽认卡程序Anki。

在这种情况下,练习可以帮助您保持连贯的资料,提醒您重要的概念,以及使用特定的数据结构或方法使自己感到更自在。到目前为止,这是对您所掌握的知识的维护工作。

我有超过1,000张卡片,里面装满了我以前看过很多次的材料。有些卡对语法有疑问。其他人要求我编写SQL查询或命令行或Git命令。许多其他活动充满了练习,例如“将数字列表向右旋转一个位值”。

重要的是要注意,此练习对我来说曾经是一个问题。如果您做的足够多,那么它就可以成为练习。同时,您可以通过添加约束来使练习成为一个问题。

练习是湿滑的斜坡。一方面,它们对于学习目的很有用。另一方面,仅坚持练习很容易感到舒适。

缺点是:待在舒适区。

处理歧义

编程是解决问题的方法。解决问题将带您走出舒适区。这是一件好事。

对我而言,问题具有两种独特的品质。首先是模棱两可。解决问题在很大程度上与如何有效处理歧义有关。

  • 每次您的程序运行时,都会出现一条错误消息。为什么?这是怎么回事?错误在哪里?您如何解决?
  • 您提出了新的问题陈述。您阅读并重新阅读。乍一看,您不知道发生了什么,更不用说您需要做什么来解决它了。您甚至可能会感觉到“鹿头灯”的感觉,并伴有胃底凹陷。(您选择了一个好问题!)
  • 您需要了解关系数据库。那很广泛。你打算怎么做?首先要关注什么?最重要的是什么?您现在真正需要了解什么?

这些例子都含糊不清。所有这些都需要解决问题,无论是查找错误并解决错误,解决实际问题还是学习新主题。  

为了取得进步,您需要进行研究,试验,找出事实,制定计划并应用各种解决问题的策略。简而言之,您将学会弄清楚。您花在解决问题上的时间越多,获得的观点越多,它揭示的层次就越多,就越接近“ aha”时刻。

拥抱斗争

问题的另一个区别是斗争。它是真实的。

解决问题的能力将测试您的精神耐力和耐心。进展可能很慢,而且过程很繁琐。我辛苦工作了好几个小时,几天甚至几周。

这并不是说练习不会挑战您。他们能。当您知道需要使用特定方法时,这是一回事。您只需要使其正常工作即可。这是一个挑战,有时可能会令人沮丧。

但这完全是另一回事,当您一开始就不知道要做什么时,解决问题时可能会发生多次。对我来说,问题是一场斗争。

最好的解决办法是忍受它并使自己陷入困境。根据我的经验,奋斗意味着我学到了很多东西,而突破通常就在眼前。

克服精神不适时,您会发现自己创造性地思考并设计出从未想过的解决方案。(您会感到惊讶并给自己留下深刻的印象-您知道的比您想象的要多!)您正在成为一个更强大的程序员。

您甚至会发现自己很开心。当然,解决问题具有挑战性,有时甚至令人沮丧。但这也令人难以置信。

就像越过半程马拉松的终点线一样。毫无疑问,过去的13.1英里非常艰苦,但是越过终点线是值得的,我会再做一次。解决问题的感觉是一样的。

是什么:问题或练习?

当您打开笔记本电脑时,是要解决问题还是完成练习?  

练习有好处,可以将它们合并到编程会议中。在编程会议之前,我将练习用作热身。我将翻看Anki抽认卡甲板十到十五分钟,并进行一些练习。如果我正在学习诸如JavaScript之类的新知识,那么我可能会进行整个编程课程来练习。

但是,我每天都花时间解决问题,无论我正在学习或正在学习什么。即使在我花费大量时间进行锻炼的日子里,我也花费大量时间来解决问题。  

因此,当您要开始编程会话时,请注意要执行的操作:练习或问题。无论如何,都要花时间解决问题。

解决问题是一项需要大量实践和时间才能发展的技能。变得更好的唯一方法就是每天工作。这很重要,并且有充分的理由。

我们每天都以程序员的方式并以各种方式解决问题。花时间解决问题是不费吹灰之力的。我们作为程序员的工作依赖于此。

我写了有关学习编程的文章,以及进行编程的最佳方法amymhaddad.com)。

如何获得自学成才的第一份工作

https://www.freecodecamp.org/news/how-to-get-your-first-job-in-tech/

大约六个月前,我开始担任软件工程师的新职位。

这是我有史以来的第一份全职开发人员工作。登陆是两年紧张学习的顶点。

在开始求职之前,我已经完成了freeCodeCamp的整个课程- 一直在全职工作

在所有这些过程中,我学到了很多有关设定目标和实现目标的知识。

我还学习了如何承受职业转变带来的反复拒绝和失败的痛苦。

我决定写我的职业变化之旅-从教学到发展-出于两个原因。

首先,我几乎每天都在社交媒体上被问到这一点。对于希望获得我的建议的人来说,本文可以作为权威资源。

我写这篇文章的第二个原因是我的旅程是艰难的。这不是“在12周内完成一次训练营,并获得了我的第一份技术工作”的故事。我认为,如果您也在努力获得第一个开发人员机会,这可能会给您带来鼓励。

因此,事不宜迟,这是我对您的建议。

了解那里有什么机会,然后相应地学习。

你们中的某些人可能有能力抽出时间休息,而只专注于学习。但是对于那些无法做到的人,您希望尽快开始研究现实生活中的东西。

为此,请问自己一些问题,例如:您想在1-2年后去哪儿?您对哪些公司感兴趣?您想在哪里生活和工作?

根据您的答案,研究市场。查看您列出的公司或您想居住的国家/地区的职位发布。

或者,如果您的梦想是在远程工作,请寻找令您感兴趣的远程工作。

找到所有这些职位后,就开始列出他们要求的所有技能。

然后,通过您自己的首选项过滤所有这些内容。这将为您提供一个很好的清单,以指导您完成学习过程。

设定目标时,您需要确切地知道自己想要什么。如果野心过于广泛,则可能会失去焦点。

这样的一个例子:学习编程语言。

当然,知道一种以上的语言是一件好事。但是,如果您的首要任务是快速找到一份工作,那么最重要的是将重点放在超越任何特定语言的编程原则上。同时,您需要学习那些可以使您尽快受雇的可销售技能。

在学习中以各种方式开始积累经验

新开发人员面临的最大问题之一是缺乏经验。公司希望您拥有1-2年的经验,但是如果没有人愿意雇用您,您将如何获得这种经验?

我的建议是在您仍在学习的同时尽快开始获得各种经验。

在我执行免费CodeCamp课程时,我遇到了100万个 womentotech,这是一个在线计划,旨在为女性和非二进制人群提供技术教育。

我对参加这些课程很感兴趣,他们正在寻找志愿者,所以我既作为学生又作为志愿者注册了。

这是一次令人难以置信的学习经历。而且,我不仅从培训中受益,而且还获得了在远程组织工作的第一笔实际经验。我交了朋友,在志愿服务结束时收到了一封很好的推荐信。

如果您有实习的机会,这也是尽快获得工作经验的绝佳方法。并非每个人都有能力进行无薪实习,但是那里也有许多有薪实习。

我是一名外展实习生,这是我一生中最神奇的经历之一。Outreachy是一项计划,为技术行业中代表性不足的人组织带薪实习,提供免费和开源项目。我非常喜欢它,现在我成为LibreHealth的外展指导

获得实践经验的其他选择包括:

  • 单独或与好友一起构建自己的项目,
  • 为开源项目做贡献(您可以帮助修复错误或编写/翻译文档),以及
  • 自由职业。您可以从为朋友和家人的业务建立网站开始。这将帮助您对自己的技能充满信心,并增加您的投资组合。

在学习时开始执行此操作很重要。因为真正巩固您的知识的最佳方法是在实际场景中实际使用它。

尽快开始面试。

面试是学习的经验。您可以通过面试的方式找出在公司中想要和不想要的东西。另外,您采访的经验越多,您的紧张感就会越小。

在我感到100%准备就绪之前,我就开始申请工作,因为我知道我永远也不会100%准备就绪。

即使您不满足所有要求,也要申请,并为面试做好准备。

如果您担心资格不足,那就不要。留给您的面试官决定。

如果您参加了采访,那么他们肯定会对您感兴趣。

记下他们的要求,并为面试官准备问题。这是您学习公司在寻找什么的机会,以及如何准备自己的服务以提供给他们。

另外,请记住,面试是双向的:他们在评估您,但您也应该在评估他们。这是一条两条路,知道这应该可以帮助您在面试过程中感到更加自信和减轻压力。

与尽可能多的人交流,他们已经实现了想要实现的目标。

如果您认识某人自己学习后找到了工作,请向他们提问!请明确点。

含糊的问题不太可能为您提供有价值的信息,因为每个人的旅程都不一样。但是,如果您是特定的,则可以获得有价值的见解。

例如,人们经常问我“你是怎么从老师变成开发者的?” 我发现这是一个很难回答的问题,答案是无用的。这只是我的个人故事。(如果需要,您可以在此处详细阅读。)因此,它的很多方面对于我的个人情况都是极为独特的。

但是,如果有人问:“您是如何用X技能来填补知识空白的?” 我可以为他们提供更多有用的信息,为他们提供资源,为他们提供可以实践的示例,等等。

不要低估您拥有的技能。

当您改变职业时,请记住:您可能是编程的大三学生,但是您确实有很多宝贵的经验和可转让的技能。

如果您一生都在工作,那么您将拥有技术知识和非技术知识,这些知识可以应用于新工作的许多情况。

许多初级开发人员都是曾经换过工作的职业改变者。他们可能擅长于旧工作,并拥有使他们与其他候选人区分开的生活经验。

这些改变职业的人通常也有足够的动力,以至于他们有很大的机会学习一套全新的技能。这显示出强大的个人实力,使您脱颖而出,成为公司的候选人和潜在资产。

您以前的经验(即使无关)也很有价值!您只需要找到一种方法来重新调整其用途,并将其用于您的新职业道路即可。

准备失败,起床,除尘,然后重试。多次。

如果您在事情上不失败,那么您将永远不会成功。学会做生活中的任何事情都意味着要多次犯错,然后才能最终使它正确。

不用担心拒绝。向他们学习,记笔记并继续前进。请记住,坚持是您最好的朋友,只要坚持足够长的时间,您最终就会得到这份工作。

你可以这样做。

我认为您人生中想要做的几乎都是可以实现的。

难度级别可能会因您的出发点而异。但是,当您投入更多精力与他人交谈时,就会获得更多的洞察力和联系,这将对您的旅程有所帮助。

感谢您阅读本文,也祝您好运。

而且,如果您想在求职时保持动力,可以加入我的电报小组Junior Devs

如何使编程更有趣,更有趣

https://www.freecodecamp.org/news/how-to-make-programming-more-exciting-and-funnier/

尽管大多数开发人员都知道编程为什么会令人兴奋,但您可能想知道使编程变得更有趣的方法。

我最近在HereWeCode 的Instagram上问了以下问题:“您想在该帐户上看到哪些小型教程?”。一位追随者回答“如何使编码变得有趣?”。我很惊讶,因为我从来没有问过自己。

经过几个小时的搜索,我想与大家分享使编程更有趣的不同方法。

为什么编码令人兴奋

我认为,总体而言,IT令人兴奋。我们生活在一个世界上,计算机是最重要的事情之一。

正如我们所说,编程并不是每个人都具备的技能。能够开发自己的项目就是这个世界,这为您提供了机会。借助信息技术,一切皆有可能,而且我们处于一个关键时期,那里没有足够的开发人员来满足需求。

编码是一种创造技能,成为项目的一部分很令人兴奋。尽管移动应用程序和网站无处不在,但我与很多不知道其工作方式的人进行了交谈。

到目前为止,我的演讲似乎有点卖得过剩和过分夸张,但这就是为什么编码对我来说令人兴奋的原因。

这就是为什么我如此热衷于创建教育内容的原因之一。

如何使其更有趣

考虑了一下之后,尽管编程对我来说是一种激情,但我记得它并不总是对我很有趣。

通常,当我开始工作时,我会在某个问题上呆几天。有时我会完全失去希望,说:“这不适合我。我尝试了所有操作,但仍然无法正常工作。我不是很好。”

如果您的情况如此,我可以告诉您-每个人都在那里。

由于许多其他原因,也会发生这种情况。例如,当您因使用过多语言或框架而感到无聊时。

无论如何,不​​要太担心这一点。在这里,我列出了一些技巧,可以在需要时给您带来一定的乐趣。

实践

编写代码就像打高尔夫球。当您开始时,它并不有趣。您需要学习所有内容:使用哪种发球手以这种方式击球,如何定位自己,等等。当您前进,开始了解事物并开始与它们一起玩耍时,乐趣就会来临。

不要只是阅读代码,而是运行它

当人们开始编程时,通过简单地阅读代码来完成课程可能是一个重大问题。

在学习编码时,应尝试自己编写和运行它。花时间去做–您将更好地理解它,并且尝试修改代码来创建程序将很有趣。

这是另一个示例:当您在GitHub上搜索代码时,为什么不尝试一下呢?了解他人的工作并将其集成到您的项目中可能会很有趣。

为您的项目或学徒生涯增添乐趣

当您对一种技术感到无聊或想要增加知识时,可以学习新的库,框架或语言。这可能是一个有趣的过程,可以帮助您尝试新事物并乐在其中。

但是,我不建议您仅学习和遵循课程。如果这样做,几天后您会感到无聊。每天或每隔新章节,创建一些小型项目来鼓励自己,并让您的创造力自由发挥。

尝试找到一些有趣的项目进行工作。例如,假设您正在学习JavaScript的基础知识。即使这些技能最重要,学习它们也不是一件令人愉快的事情。一旦知道了如何获取用户输入并在控制台中进行打印,为什么不尝试创建一个可以回答用户问题的简单“聊天机器人”呢?

聊天机器人示例

当我进行搜索以回答此问题时,我从Quora用户那里找到了这个故事,我很喜欢。这是一个很好的例子,说明了如何将乐趣带入​​学徒期。

“另一件事-最糟糕的是学习新事物-这通常非常具有挑战性,并且您的进度比您希望的要慢得多。要获得乐趣,我通常会欺骗我的大脑。

例如,当我学习汇编语言时,我们有一个项目可以对一个很小的硬件显示器进行编程-首先,它非常乏味。您必须学习硬件手册,它具有输入和输出,而您所能实现的只是在屏幕上出现几个字母。

但是我挑战自己去掌握那个东西,并且为此,我想到了自己的“特殊锻炼”。我不仅写了10101在显示器上,还想到了写一些更愚蠢,更幼稚的东西的想法。像–打电话-ME-现在-XXXX一样-在屏幕上闪烁并移动-这比我们在课堂上分配的实际任务要先进得多。我只是用这个愚蠢的东西来激励自己学习有关汇编语言的所有知识,男孩,这很好!:)“- Marcus Biel

总是挑战自己

当您是开发人员时,您始终需要学习新知识以保持最新。一切都在快速发展,您不能被抛在后面。当您不再觉得自己在成长或学习时,就会感到无聊或缺乏乐趣。

为了抵消这种感觉,您可以尝试实现尚未实现的目标。

例如,如果您从未参与过开源项目,则可以在GitHub上搜索并进行首次贡献。

成功地使您的工作在项目中被接受后,您的满意度就会得到提高。通过解决以前未解决的问题,也许您会帮助数十甚至数百人。

您也可以参加编码竞赛或使用编码网站(例如HackerRankCodingGameProject Euler)挑战自己。

从头开始创建个人项目

当您只为公司从事项目的一小部分时,成为一名开发人员会感到沮丧。

也许您一直梦about以求的一个项目,但是您从未花时间去做。为什么不尝试编码呢?您将看到–开始您梦想中的项目很有趣。养成良好的编程习惯也是一个值得追求的目标。

如果您没有任何想法,请尝试找到自己喜欢的主题,例如:

  • 如果您喜欢视频游戏,则可以尝试创建游戏。
  • 如果您正在接受教育,为什么不创建围绕代码的教程?
  • 如果您喜欢硬件和电子产品,为什么不构建Arduino或树莓派?

“编程就像写作–在主要主题上,写作远比写作本身重要。” — lifeisstillgood

定义目标

这一点在我所有的生产力文章中都会得到回报。您必须定义目标。

没有目标,要感到舒适并享受您作为开发人员所做的工作是一项挑战。

寻找导师

如果您再也找不到编码的乐趣,导师可能会激励您。

导师可以给您一个目标,可以遵循并教给您最佳实践。他们还可以帮助您提高编程技能并刺激您的职业生涯。

也许您想知道如何让“英雄”成为您的导师。

好吧,只要发送一条消息,他们就会成为您的导师。

是的,就是这么简单。也许,他们会很高兴得知您对他们的技能的重视程度足以指导您。在大多数情况下,他们将很高兴陪伴您发展。

多睡点

当您处于下降螺旋状态时,编程变得不再那么有趣了。有时候,您可能很难前进并蓬勃发展。

早睡几个晚上或早上睡几天,一切都会有很大的改善。

展示你的作品

有什么比作为一个开发人员和因为一个人呆在地下室而失去全部希望更糟糕的呢?这有点陈词滥调,但是,请相信我,当您长时间在一个项目上独自工作而从未向任何人展示它时,它立即变得不那么有趣了。

该技巧与之前的技巧很接近。分享您的工作后,人们会提出建议或提出问题。这对您将具有挑战性,并将帮助您设定新的目标。

结论

我试图整理一些基本技巧,以帮助您在编程时玩得开心。如果您有其他建议或建议使它更有趣,请随时发表评论或给我发送消息。

您为什么认为编程令人兴奋?您如何使编程更有趣?

如果喜欢,请随时分享此文章。

TwitterInstagram上关注我,不要错过我的内容。

您可以在我的网站上找到其他类似的文章:herewecode.io

生活与编程的并行线程

https://www.freecodecamp.org/news/the-parallel-threads-of-life-and-programming-2/

我坚信我们最深切的愿望是,通过花费时间来向人们展示有关宇宙的一些基本真理。听听它的耳语,并指出它的目的。

而且,如果您对这些课程足够认真,就会找到它们。无论它们是您的思想的体现还是可以握在手中,一旦您看到它们,它们就永远属于您。

编程为生活提供了重要的相似之处。我们的任务是创造一些出头其总和感觉比部分更显著。就像生活一样,它是对无限创造力的考验。有规则,我们必须遵守,一些我们应该遵循,以及其他一些我们可以随意忽略。编程让我们瞥见了关于我们所居住的世界的一些基本事实,无论它是多么短暂。

编程与生活之间的四个平行

迭代就是进步。

您是否知道,如果您以一个便士开始一个月,并且每天都翻一番,那么您在该月的15号会有163美元?当然,您认为,肯定有更好的方法可以在15天内赚到163美元。但是,如果再等15天,您将获得超过500万美元。

继续吧,我会等你做数学的。

在编程中,我们使用术语“ 迭代”来表示重复某件事。在更正式的定义中,它将重复地将一个过程应用于该过程的先前结果。例如,将数字1和1相加得到2,然后将数字1和2相加得到3,依此类推。

当我们进行迭代时,我们会寻找反馈。我们等待要满足一些条件,使我们可以停止迭代或调整如何,我们迭代。如果我们听不到这些反馈,就会陷入无限循环。

生活没有什么不同。我们经常期望我们可以从A点跳到B点,而无需定义A点或B点是什么。而且,即使我们确定了这些要点,我们也希望从头到尾立即采取行动。相反,通常是事实,那就是我们必须从头到尾逐步发展自己的道路。我们必须听取反馈,告诉我们我们在哪里,以便我们进行调整。

当我们有了目标时,通常在最初的几天,几周甚至几个月内都感觉不到进步。我们常常被引诱重新开始或重新开始。但是这样做时,我们未能意识到,虽然我们可能尚未到达目的地,但我们已经远远超出了开始的地方。无需完全重启,我们只需要进行一些小的调整即可。

停止重新开始。让迭代成为创造进度的力量。

最复杂的问题是已经解决的较小问题的集合。

即使是最引人入胜的应用程序,也可以使用一系列大多数平凡的解决方案来解决平凡的问题。实际上,程序中实现的大多数解决方案都不是唯一的。正是这些普通解决方案的结合创造了非凡的产品。

在编程中,有多种方法可以使用这些非常普通的解决方案。一种方法是通过称为抽象的术语。抽象某物就是将某物从另一物移开。

在计算机编程中,当我们抽象某些东西时,我们通常会在较低级别的技术之上构建较高级别的技术。这使得使用低级技术更容易。

例如,大多数编程语言都是神秘的二进制语言(0和1)的抽象。它们在我们与计算机之间一些更基本但又麻烦的交互级别之间建立了一层。这些高级语言使我们可以专注于高级问题。

我们可以更有效地解决问题的另一种方法是使用其他人的解决方案。您可能还听说过一词。而且,虽然我不是在谈论光线不足,灰尘多且安静的地方,但书本并不遥远。

一个,在编程术语,代码是别人写的,解决日常问题。它还抽象了那些对于解决您遇到的问题并非绝对重要的事情。

例如,如果您正在编写一个程序,要求某人登录才能使用您的应用程序,则可以编写代码来自己加密和解密密码,或者可以使用其他人编写的代码为您完成此操作。使用后一种选项,我们可以腾出时间专注于我们的应用程序试图解决的更重要的问题。

我们所有人都以某种形状或形式使用抽象和库。例如,杂货店是生产我们自己的食物的抽象。汽车是徒步旅行的抽象概念。烤箱是生火的抽象概念。这些是我们摆在我们面前的层次,可让我们将时间分配给更高级别的问题。

重新发明轮子只是为了学习如何制造轮子,而不是开车去商店。

如何定义问题就是解决问题的方式。

回想一下卡车在桥下行驶并被卡住的故事。工程师花费了数小时试图找出如何移动桥梁。一个小孩子站起来,与卡车的轮胎面对面,说道:“如果不让轮胎中的空气出来,那该怎么办?”

从孩子的角度出发,问题不是桥太短,而是卡车太高了。

大多数人都可以解决任何问题。实际上,大多数问题都指出了解决方案。例如,如果网桥是导致问题的原因,那么答案就是对网桥做些什么。但是,如果问题是卡车太高,则解决方案(几乎显而易见)是使卡车缩短。

零件的布置比零件本身重要得多。

Google Maps代码库,独立宣言,马丁·路德·金(Martin Luther King Jr.)的梦想演讲,史蒂夫·乔布斯(Steve Jobs)的2005年毕业典礼地址以及我的第一个应用程序“ Hello,World”有何共同之处?

访问相同的26个英文字母。

没有什么比书面文字更让我着迷了。书面文字是人类出现的最强大的技术之一。

是的,我使用技术一词,是因为它甚至被刻在洞穴的墙壁上,从根本上改变了我们保持信息的方式。数据不再局限于我们的思维范围内。

尽管最初将书面文字的目的与保存记录联系在一起,但它很快成为传播思想的一种方式。其中一些想法会激怒,另一些会启发。

通过书写或语音传输信息时,每种语言(包括计算机语言)都具有微妙之处。单词及其组成部分可能略有不同。但是,语言仍然是一组符号,可以将它们排列成似乎无穷无尽的思想。

例如,在英语中,大约有29个符号可用来代表几乎整个宇宙。我已经提到了26个字母,但是使用句点,逗号和问号也很有帮助。

我和您都可以使用这29个字符,史蒂夫·乔布斯也可以使用。然而,基于我们选择相信和说话而存在的字母的组合,我们每个人一生都会遵循不同的轨迹。

有趣的是,尽管我们经常在字典中添加单词,但通常不添加字母。这意味着,从最根本的层面上讲,所有可能存在的想法已经存在,它们的组成部分悄悄地等待着我们将它们改组为现实。

Les Brown通过这个思想实验很好地总结了这一点:

想象一下,如果您愿意的话,就躺在死亡床上。站在床旁–生活中赋予您的思想,梦想,能力和才华的幽灵。

而且无论出于何种原因,您都从未对这些想法采取任何行动。您从未追求过那个梦想。您从未使用过这些才能。我们从未见过您的领导。你从来没有用过你的声音。你从未写过那本书。

他们在那里,站在你的床周围,用愤怒的大眼睛看着你,说:“我们来找你。只有你能给我们生命!现在我们必须永远与你同死。”

问题是-如果您今天死了,您将死什么想法,什么梦想,什么能力,什么才能,什么礼物?

感谢您的阅读!

成为程序员不需要的10件事

https://www.freecodecamp.org/news/the-10-things-you-dont-need-to-become-a-programmer/

您有成为程序员的条件吗?很有可能,您的答案将基于一堆不真实的刻板印象和误解。这些都是有害的,因为它们阻止您尝试此职业道路。

让我们看一下成为一名程序员不需要的一些东西。

介绍

自从90年代末开始使用互联网以来,我一直对编程感到着迷。开发人员可以做的令人惊奇的事情让我着迷。当新网站和后来的应用程序开始从根本上改变我们周围的世界时,我的钦佩才增长。

但是,我从未尝试自己编程。从未尝试过看看它是如何工作的。但是我通常是一个好奇的人,喜欢研究事物并学习事物。那么那里发生了什么?几十年来怎么可能被编程迷住,甚至没有尝试呢?

就我而言,原因就是我所说的“好莱坞黑客”刻板印象。我们当中那些没有接触到该领域现实的人,只会经历媒体的刻板印象。我认为编程是精英(少数精英)的活动。上过独家大学并完成了非常昂贵的长期学位的人。那些拥有可以做数学天才的超人壮举的人的特权。

我现在知道这不是真的。它不是基于现实的。我希望我早一点知道。

我最终明白,这是比我最初想象的更容易获得的职业道路。我遵循了一些YouTube教程,并对编程感到非常兴奋。我认真地学习,并在10个月内从一个无关领域转变了职业。

这不是在公园散步,这是许多艰苦的工作。就像我们学习的任何技能一样,这需要时间和实践。但这并不需要特殊的权力。这是我如何进行切换的故事

现在,我正在作为前端开发人员,我想帮助其他人。我想鼓励那些正在考虑将编程作为一种可能的职业,但是不确定他们是否“具备所需的能力”的人,或者认为有些障碍实际上并不存在。

因此,让我们一起探讨成为一名程序员不需要的10件事。

先决条件

这些都是正确或错误地与我们流行为程序员的形象有关的事物。它们是很好的东西,它们可能会有用。

有抱负的开发人员可以花时间来获得其中的一些技能。但是,它们都不是开始,学习,找到工作或拥有出色的计算机编程职业所必需的。

成为天才。做一个数学家。

这是要消除的最重要的神话-特权人士的神话。要成为一名程序员,您的大脑没有什么特别的事情。

编程是一种技巧,例如弹吉他或参加马拉松比赛。通过这样做,您会变得更好。通过投入时间和精力。通过向他人学习。您做得越多,您投入和发展的技能就越多。

如果您看到有能力用计算机完成出色工作的程序员,那总是将时间和精力投入到他们的工作中的结果。这不是他们天生的天赋,也不是神圣的灵感。

另外,让我们谈谈数学。尽管数学是编程的核心,但您在日常工作中并不需要它。今天,大多数工作使用的大多数编程语言都是高级语言。它们比数字更接近人类语言,并且不需要任何数学方面的专门知识。

编程更像是写作而不是演算。如果您擅长数学,它将帮助您更快地解决某些问题。如果像我一样,您在学校没有爱上它,再也没有回头,这不会成为障碍。

成为计算机向导

编程要求您编写在计算机上运行的程序。您可以使用计算机进行操作。这是您工作的媒介。

但是,您无需成为一名程序员就可以从头开始构建计算机。您不需要能够理解计算机的内部工作原理。或是成为您的所有朋友都遇到计算机问题的那个人。

如果您使用汽车来完成工作是一回事,但实际上成为汽车修理工则是另一回事。当然,您对工具的了解越多,您解决问题和解决问题就越独立。但是您可以成为有效的程序员,而无需先学习如何修复姨妈的受病毒感染的机器!

拥有精英大学学位。拥有CS学位。有任何大学学历。

大学学位是一件很棒的事。它教您方法和调查。它教您自己的学习风格。

总的来说,如果你有幸进入大学,成为一名毕业生是一件好事。成为计算机科学专业的毕业生对于编程来说甚至更好。它为您提供了深度和广度的知识。一流的大学将打开大门,并与您联系。

但是,以上所有内容实际上都不是程序员的必要条件。这个领域挤满了没有CS学位或根本没有学位的优秀程序员。如果您全神贯注,那么您就可以成为一名优秀的程序员。

如今,有许多不同的途径成为开发人员。传统的大学路线只是其中之一。有一些训练营将基本知识浓缩为几个月的紧张工作。对于那些想走自我指导路线的人,有很多在线资源。对于需要在准备职业转变的同时继续工作的人们来说,这是一个不错的选择。并且有许多免费或廉价的选择也消除了经济障碍。

拥有最先进的计算机或昂贵的软件

这可能有点愚蠢。但是对于许多生活在困难的经济形势中的人来说,这意味着迈出第一步与不迈出第一步之间的区别。

我曾经以为程序员需要具有最高处理能力的最先进的计算机,因为他们是编写运行计算机的软件和应用程序的人。我以为要开发软件,您需要专用且昂贵的软件。有点像那些从事设计或视频工作的人所需要的工具包。

因此,当我按照我的第一个教程进行操作时,我感到很惊讶,而构建第一个网站所需的全部是Windows内置的记事本。记事本!!任何计算机上最简单,最无聊的软件。一个文本编辑器,它尽可能平淡而基本。

好吧,是的,您完全可以在一台旧机器上完成所有基本工作,而无需花哨。人们期望在专业工作时拥有一台好的机器。但是作为学习者,您可以通过互联网连接和可以运行文本编辑器的基本计算机走得很远。

此外,您在使用过程中需要使用的每种工具都有免费版本。

英文流利

与上述大多数情况一样,流利的英语会有所帮助。编程语言是在英语国家发明和发展起来的。因此,无论好坏,英语都占主导地位。

编程语言中使用的单词是英语。而且有关该主题的大多数文档,教程,文章和资源都是英文的。因此,如果您具有不错的理解水平,它将很有帮助。

但是,这不应该成为阻碍您进行编程的障碍。您可以学习并熟练掌握中级英语。许多人只能够阅读和理解英语。

刻板印象

在公众的想象中,有许多与程序员相关的刻板印象。现在让我们澄清一下,我并不是说这些刻板印象有时不是真实的,或者以任何方式都是负面的。只是您不需要那些适合的东西。

做个书呆子。成为玩家

让我重复一遍,书呆子很棒,游戏玩家很棒。但是您可以成为技术团队的一员,而不必成为上述任何一种。不是90年代-现在,各种风格的人都在行业中工作。

当您初次寻找工作时,与您合作的团队是您成功的最大因素之一。因此,找到一个气氛良好的支持团队至关重要。比您可能会或可能不会与其他程序员共享的兴趣更为重要。

内向

同上。没有特别适合该行业的个性类型。不要去寻找可能会告诉你这是否适合你的人格特质。您的态度要重要得多。

能够处理挫败感并坚持下去是关键因素。那是一种博学的技能,而不是固定性格的一部分。

多元化

以下各项不是刻板印象,而是统计数据。纵观行业现状,您可能看不到自己的代表。这可能会使您认为这不适合“像您这样的人”,但是您可以识别自己。

但是我们的态度应该相反。缺乏代表性是进入它并将自己摆在那儿的更多原因。业界对于团队多样性的重要性变得更加明智。许多公司和个人都在努力使行业更具包容性。

年轻

您无需年轻就可以从事技术工作。您无需从小就可以成为一名优秀的程序员。

我从39岁开始学习,到第一份工作时才40岁。每个年龄段的人都已经成功地完成了过渡。

学习永远不会太晚。永远不会改变职业。此外,一家只想雇用年轻人的公司可能不是一个工作的好地方。如果您需要更多灵感,请查看有关30、40和50年代获得第一份技术工作的开发人员的故事

做个男人

这应该很清楚。但这不得不说。您不必是一个男人就可以成为程序员。尽管人们仍然占程序员的大多数,但希望这种情况正在迅速改变。

任何具有领导才能的公司都了解性别多元化团队的重要性。这不仅有利于“平等”(这是足够的理由),而且性别多样化的团队可以做出更好的决策,并且不太可能受到偏见。

性别并不是决定您的程序员水平的因素。没有更适合的染色体或大脑结构。编程主要是解决问题。我们需要尽可能多的观点以最佳方式解决问题。

享有特权

当我刚开始学习编程时,我最喜欢的事情之一就是社区的民主,开放和包容性。

编程世界充满了优秀的人才。他们花时间帮助其他人成为更好的程序员。他们创建资源并维护使所有人受益的开源项目。

许多团体和集体仍然人数不足。特别是那些历来被边缘化或难以获得机会的人。但是社区本身比外面看起来更受欢迎和更具包容性。而且它还在不断变化。

您可能不会在受欢迎的图像或有关程序员的统计信息中看到自己。但这不应该成为能够成为程序员的因素。您的性取向,社会阶层,种族,残疾,是否不生活在工业化世界中,是否贫穷。这些都是因素,不是障碍,而是好处。出于与上述相同的原因。

团队的多样性越大,以超越偏见的方式解决问题的能力就越强。那总是一件好事。您可以成为这个行业不断变化的形象的一部分。

奥托罗

我希望本文能帮助您打破关于程序员的神话并消除入门障碍。我希望,如果您对编程感兴趣,可以尝试一下。而且,如果您对它感到兴奋,并且对追求职业感兴趣,那么您将尝试它。

忽略伪装成我们认为阻碍我们前进的障碍之一的自我怀疑。编程很复杂,需要艰苦的工作。但是有关它的一切都是由任何人坚持不懈可以学习的技能组成的。

生活可能很艰难,可能会阻碍我们前进。挑战是应对这些障碍并找到解决之道。因此,让我们至少从路径上消除实际上不是真正障碍的所有杂物。

如果您认识正在考虑编程的人,或者最近开始学习的人,请与他们分享这篇文章。

公开学习 最快的学习方式

https://www.swyx.io/writing/learn-in-public/

如果有一个黄金法则,那就是这条法则,所以我把它放在第一位。所有其他规则或多或少都是该规则#1的详细说明。

您已经知道,您将永远无法完成学习。但是大多数人“私下学习”,并且潜伏着。他们消费内容而不创建自己的内容。同样,这很好,但是我们在这里谈论进入前五分之一。您在这里要做的是养成学习精疲力尽的习惯

  • 撰写博客,教程和备忘单。
  • 在聚会和会议上发言。
  • 在Stackoverflow或Reddit上询问和回答问题。避开 Slack和Discord等有围墙的花园,它们不公开。
  • 制作YouTube视频或Twitch流。
  • 开始时事通讯。
  • 绘制卡通(人们 喜欢 卡通!)。

无论您什么,都要做自己希望在学习时发现的东西不要用“拍手”,转发,星号或赞誉来判断结果-只是从3个月前开始对自己说话。除了我,我几乎每天都写一个开发博客。

你猜怎么了?这不是要让您的内容吸引到尽可能多的人。如果可以的话,太好了,成名时记住我。但是迄今为止,试图帮助过去的最大受益者是未来的您。如果其他人受益,那就是锦上添花。

哦,你认为你完成了吗?不要在这里停下来:

  • 喜欢编码视频吗?与演讲者/讲师联系,向他们表示感谢,并提出问题。
  • 对您使用的库进行公关。
  • 制作自己的图书馆,没人会使用。
  • 从头克隆您喜欢的东西,看看它们如何工作
  • 讲习班。
  • 参加会议并总结您学到的知识。

总会有一个更深的层次。但是,在每一步中:记录您所做的事情和您解决的问题。

该规则下的副标题为:尽力做到正确,但是当您输入错误时不要担心。反复。如果您感到不舒服或像冒名顶替者,那就很好。你在推自己。不要以为您什么都不知道,但是无论如何都要尽力而为,当您不可避免地犯错时,让互联网来纠正您。将您的noobyness戴在袖子上。

人们认为你很烂?好。你同意。请他们详细解释您为什么吮吸。您想要感觉良好还是想要变得更好?没有异议,没有伤害的感觉。然后走开,证明他们错了。当然,如果他们受到虐待,则将其阻止。

我是否提到教学是最好的学习方法?在编码时说话。这可能会让人感到压力很大,我还没做完那么多,但是我最好的技术面试是我最终像我一样讲课,而不是拼命地证明自己。我们是动物,我们被自信吸引,可以闻到绝望。

在某个时候,您将获得一些支持。人们注意到真正的学习者。他们想为您提供帮助。不要告诉他们,但他们只是成为您的导师。这很重要:拿起他们放下的东西。将它们视为提供您要完成的任务。当他们说“有人愿意帮助__ __吗?” 您是第一行中已经举起手的那个孩子。这些是高级工程师,其中一些是技术界最需要的人。如果您帮助他们,他们会与您以一对一的方式相处(ps,总有他们需要帮助的地方)。您不能为此买单。他们将免费教您。大多数人看不到眼前的一切。但不是你。

您问:“有那么多初级开发人员,他们为什么会帮助?”

因为你在公共场合学习。通过教你,他们教了很多。您放大它们。他们有一件事是他们没有的:初学者的思想。你知道这是怎么工作的吗?

在某些时候,由于您提出的所有建议,人们会开始向您寻求帮助。80%的开发人员是“黑暗”的,他们不写,不讲话或不参与公共技术讨论。但你做了。您必须是专家,对不对?不要告诉他们你不是。尽可能做到最好,并在遇到问题或遇到错误时将其传递给导师。

最终,您的导师用完了,只能自己解决问题。您仍然在投放内容。你知道这是怎么工作的吗?

在公共场合学习。

ps最终,他们也将向您支付您的帮助。比您想象的要多得多。

下一页:学习装备(如何在公共场所开始学习)

另外:公开学习的终极技巧(扩展“捡起他们放下的东西”)

另请参见:如何私下学习(并非所有内容都必须公开!)

另外:Big L表示法(扩大了为什么“在公共场合学习”是最快的学习方式)

最初是根据要点起草

相关链接

在某些地方,知识管理是关于创建可以克服人们的知识缺陷的系统。在戈达德(Goddard),似乎真的是要使人们能够分享和反思他们最了解的知识。这是一个微妙的区别,但是我真的很喜欢他们将人们放在这项工作的中心,并且从人们的丰富知识而不是系统中缺乏信息的地方开始。社交媒体具有很大的潜力,但是您需要考虑如何促进人与人之间不同类型的(在线和离线)关系,以便改善他们的思维,进行创新,他们可以快速解决复杂问题,从而增强并加速业务成果。使用社交媒体作为KM工具的一大好处是,您可以同时创建和捕获知识。但是,为了使它真正起作用,人们必须愿意在整个项目生命周期中进行公开协作。由于许多原因,“在公共场所学习”令人恐惧-人们可以找到并坚持使用过时的信息,并且用户在项目的脆弱时期(即,当他们还没有所有答案时)公开自己的知识。但是,在这一部分过程中,学习是最有价值的。如果您在项目中间分享自己的知识和不知道的知识,则可以使人们有机会分享可以帮助您的特定知识。如果可行,这可以节省时间和金钱。为了使它真正起作用,人们必须愿意在整个项目生命周期中进行公开协作。由于许多原因,“在公共场所学习”令人恐惧-人们可以找到并坚持使用过时的信息,并且用户在项目的脆弱时期(即,当他们还没有所有答案时)公开自己的知识。但是,在这一部分过程中,学习是最有价值的。如果您在项目中间分享自己的知识和不知道的知识,则可以使人们有机会分享可以帮助您的特定知识。如果可行,这可以节省时间和金钱。为了使它真正起作用,人们必须愿意在整个项目生命周期中进行公开协作。由于许多原因,“在公共场所学习”令人恐惧-人们可以找到并坚持使用过时的信息,并且用户在项目的脆弱时期(即,当他们还没有所有答案时)公开自己的知识。但是,在这一部分过程中,学习是最有价值的。如果您在项目中间分享自己的知识和不知道的知识,则可以使人们有机会分享可以帮助您的特定知识。如果可行,这可以节省时间和金钱。由于许多原因,“在公共场所学习”令人恐惧-人们可以找到并坚持使用过时的信息,并且用户在项目的脆弱时期(即,当他们还没有所有答案时)公开自己的知识。但是,在这一部分过程中,学习是最有价值的。如果您在项目中间分享自己的知识和不知道的知识,则可以使人们有机会分享可以帮助您的特定知识。如果可行,这可以节省时间和金钱。由于许多原因,“在公共场所学习”令人恐惧-人们可以找到并坚持使用过时的信息,并且用户在项目的脆弱时期(即,当他们还没有所有答案时)公开自己的知识。但是,在这一部分过程中,学习是最有价值的。如果您在项目中间分享自己的知识和不知道的知识,则可以使人们有机会分享可以帮助您的特定知识。如果可行,这可以节省时间和金钱。您使人们有机会分享可以为您提供即时帮助的特定知识。如果可行,这可以节省时间和金钱。您使人们有机会分享可以为您提供即时帮助的特定知识。如果可行,这可以节省时间和金钱。

  • 内森·巴里(Nathan Barry)在他的著作《权威》中:

早在2007年,克里斯·科耶尔(Chris Coyier)开设了一个名为css-tricks.com的网站。这是一个专门用来教人们如何编码网站的网站。(CSS是用来描述网站外观的语言。)当CSS-Tricks首次问世时,我记得读过一个教程,并且自负地想:“我已经知道了。” 克里斯和我的技能水平大致相同,所以我没有从他那里学到任何新东西。由于他不断推出新教程,这种情况持续了一段时间。但是随着时间的流逝,当朋友们开始问我CSS问题时,我发现链接到Chris的一篇文章(因为它们写得很好)比自己解释一切都容易。多年后,克里斯发起了一个Kickstarter广告系列,以重新设计他的网站。那些参与的人可以在幕后访问与重新设计有关的其他教程和内容。目标设定为3,500美元,相当低。他很快就超过了目标,并在活动结束时筹集了89,697美元。难以置信。关键是他相对容易地做到了,这都是因为他建立了一个热爱工作的听众。 他和我从同一点开始,我们的技能以大约相同的速度进步。所不同的是,他教书并与他人分享,而我则将自己所学的东西保留给自己。这使得能够在一个新项目中赚取数万美元与不发布任何东西之间有所区别。

内森(Nathan)通常对LIP有很多重复之处:

关于如何在没有训练营的情况下学习编码的10条提示

https://www.freecodecamp.org/news/10-tips-on-how-to-code-without-a-bootcamp/

2017年西雅图。我刚参加软件开发人员的第一份团队会议。为我感到骄傲的一天!

三年前,我学习了如何在不参加训练营或没有计算机科学学位的情况下进行编码。

从那时起,我一直梦想着成为一名全职开发人员。但是,靠我自己学习编码并不容易,我挣扎了,几乎一度放弃。

如果您正在阅读本文,那么您可能会达到我的目标-自我学习,避免参加昂贵的训练营或回到大学获得计算机科学学位。

这是我的最佳技巧,教您如何在没有训练营的情况下进行编码。

创建一个计划并坚持下去

在学习编码时,常见的错误是没有计划。

您在这里和那里学习一些编码教程,构建一个或两个应用程序,并阅读一些有关编码的文章。但是几个月过去了,您不确定下一步要去哪里。你感到迷茫。

你能做什么?

制定计划-详细的路线图,了解如何精确地编码。

要制定计划,请开始问自己这些问题。

你会学什么语言?您对哪种编码感兴趣?您对创建游戏,构建应用或网站最感兴趣吗?您要关注什么领域?

您的主要目标是什么?您为什么要编码的原因是什么?一旦掌握了技能,您将要做什么?您的目标是成为一名开发人员吗?还是建造一些东西?

您将使用哪些学习资源?  在学习编码时,有许多很棒的(而且完全免费)的资源可供选择,这可能会令人不知所措。无论是freeCodeCamp课程还是其他课程,都请选择一个程序并设定目标以完成该课程。

您每周将学习几小时,何时学习?在上大学或学校时,您通常会知道上课或学习的时间是多少,并且要遵守该时间表。为自己制定最适合自己的时间表,这样您就可以保持进度。

在为自己创建路线图之前,我在教自己如何编码时感到困惑。

我不知道该学什么或下一步做什么。一旦有了自己的路线图,就很容易在前进的过程中前进-我知道下一步要采取的行动。

追求好奇心

“她从来没有见过一只兔子或背心口袋,或一只从里面掏出的手表,并且好奇地燃烧着,她追了上去。” -爱丽丝漫游仙境

制定路线图是关键,但请务必保持好奇心。

要学习编码,请找到与编程有关的一件事,这会让您着迷。找到让您足够好奇的东西,以便在周六晚上进行了解-因为您有时需要这样做。

找到一些关于编码的知识,这就是我最喜欢的作家TK Coleman会不负责任地好奇的样子。您知道当您起床晚了要看一场精彩的演出时,或者您对本书接下来会发生什么感到非常好奇时,已经是凌晨2点了,并且您想睁大眼睛,因为您迫不及待地想知道接下来会发生什么?

探索使您充满好奇心并继续追求的编程领域。随着好奇心的流逝,时间流逝,学到的东西将激增。就像读一本好书或您曾经看过的最佳谁做的电影一样,您必须走到尽头。

弄清楚您对什么感到好奇并追逐它。

让自己负责。

参加编码训练营时,如果您没有完成作业,则可能会被踢出并浪费您为注册而支付的钱。

在学校或大学,如果您不完成家庭作业,则可能会失败上课。

在工作中,如果不露面,您有被解雇的风险。

但是,如果您没有完成免费的编码课程,您将面临什么风险?

没有。您对自己没有任何影响。没有人追究您的责任。

因此,找到使自己负责的方法。

这里有一些想法:

创建一个博客,并宣布(或在社交媒体上)每周将在目标进度方面进行博客。

根据您的需要使用正或负钢筋。告诉朋友,如果您没有向他们出示完成项目的证据,您将向他们支付X钱。或者,每次您在实现编码目标方面取得进展,都会给自己带来奖励。

让自己负责。利用自己。

别无选择,只能学习编码。

公开学习

当我第一次学习如何编码时,我读了有关社交媒体如何影响您的生产力的书籍和文章。随后,我决定删除我的Twitter,Instagram和Facebook帐户。

尽管这确实对我有所帮助(我无法再滚动Twitter来摆脱硬编码问题),但我最终意识到使用社交媒体的好处远大于缺点。

当我回到社交媒体上并开始分享成为一名开发人员的过程时,我结识了朋友,找到了导师,获得了工作机会,并加快了学习速度。我还被告知,通过分享我作为自学成才的开发人员的经历,我启发了一些人。

你也可以做到的。

当我发布有关所学知识的博客文章或社交媒体文章时,我得到了朋友的鼓励和反馈。这种交流为我创造了一个很好的积极反馈回路。我想学习更多,以便再次分享自己的成就。

以下是一些我最喜欢的文章和播客访谈,介绍了在公共场所学习的所有好处以及入门方法:

公开学习:最快的学习方式

利用社交媒体闯入科技领域

与Tania Rascia进行职业转换和公共学习

不要害怕Google的一切。

这是我在Brian Holt观看有关Frontend Masters的出色的Web开发入门课程时听到的。许多人认为,如果必须使用Google的产品,他们并不是很好的编码人员。与此相反,正如Brian指出的那样,优秀的程序员一直都需要Google的东西。

在编写代码时不要害怕Google的事情。谷歌搜索找到答案并不会减少您成为程序员的机会。

建立您知道可以完成的项目。

作为一个初学者开始编码项目是艰巨的。该项目看起来如此庞大,您会觉得好像永远无法完成它。您失去了启动项目的动力,您不知道能否完成。

解决方案?

尝试构建有一定信心可以完成的项目。建立可以扩展您技能的项目,但在能否完成项目上要切合实际。看到完成的项目将有助于激发您继续进行编码之旅。

如果你不知道如何启动一个项目还没有,这个文章我写了从教程移动到编码的项目可能会有所帮助。

建立不可能的项目。

那就是。我的一个好朋友曾在一些最大的科技公司工作,他曾告诉我说,他感到自己作为开发人员的大部分成长都来自建立所谓的“不可能”项目。

他会对要构建的东西有一个主意,然后他便着手去做。尽管建立这些想法似乎是不可能的,但他非常激动,以至于他试图找到一种方法。因此,发生了很多学习。

如果您一直在构建和完成项目,请尝试选择您真正梦想构建的项目,即使感觉无法构建。

凭借对这个项目的热情,您也许能够准确地构建自己想要的东西,或者至少在此过程中学到了很多东西。

寻找导师和您的社区

让导师接你的最无效的方法之一是给某人发疯的消息,并问“你愿意成为我的导师吗?”

与您聊天的人可能已经有很多要求成为导师的请求。如果他们是那种在业余时间免费指导某人的人,那么他们可能已经有几名受训者,不能再另当别论了。当您说“您愿意成为我的导师”而没有具体细节,也没有真正的计划时,您就是在通过确定下一步该做什么使导师提前做更多的工作。可以真正帮助您的人可能不会说“是”。

那么如何找到导师呢?

有很棒的平台,例如CodeMentorCoding Coach。Udacity或Treehouse等计划中也有教练。

您还可以通过提问,讨论您正在学习的知识以及在论坛和诸如StackOverflow之类的地方与他人进行互动来找到导师。

在您周围建立社区可以帮助您在学习编码的过程中获得极大的帮助。这里是一些我最喜欢的在线编码社区:freeCodeCamp。CodeNewbie开发,Stackoverflow,Reddit。

我还在今年年初启动了CodebookClub,这是一个由经验丰富的开发人员组成的免费社区,他们可以一起学习。我们举办现场在线会议,并提供技术书籍以及教程。

不要亲自处理您的错误。

我经常看到新开发人员编写代码,遇到错误,然后说类似“ U!当然,我遇到了这个错误,我很愚蠢”,或者“我似乎遇到了很多错误,我不确定是否要切入编程领域。”

是的,您写了一个错误-我们都做。您的代码中的错误并不意味着您不会沦为开发人员。我再说一遍:编码时的错误并不意味着您不会成为一名出色的开发人员。它们是编码过程的自然组成部分。

想想您最喜欢的视频游戏。当您几次未通过游戏时,您是否想过“ 也许我不是要成为视频游戏玩家 ”?可能不会!多次失败,然后掌握该级别,然后转到下一个级别。

不要亲自处理您的错误。向他们学习,继续前进。

保持连胜。

Joltin’Joe DiMaggio和体育史上最著名的连胜纪录。

当我第一次学习编码时,我休息了一个星期。回到编码时,我觉得我是第一次再次接触到该语言。一旦我在编码方面稍事休息,重新使用它就变得更加困难。

我妈妈建议我开始连胜编码。编码每个。单。天。很多时候,我对代码感到疲倦或无动力,但我不得不继续努力。所以我会编码-即使只是五分钟。因此,即使在我真的不喜欢它的日子里,我仍然朝着自己的目标迈出了一小步。这种动力使我一直走到终点。

保持连胜!

紧跟当前软件工程趋势的12种方法

https://www.freecodecamp.org/news/12-ways-to-keep-up-with-software-engineering-trends/

我经常被问到如何才能跟上软件工程领域的趋势。所以我写这篇文章:

  1. 作为我将来遇到的任何问题的答案,以及
  2. 作为备忘单,因为我变老了,而你永远不知道:)

为了将来参考,我将这些主题分为基于时间的类别。这些类别将指示您需要多长时间检查一次资源。

因为-坦白说-与其他人相比,有些人没有多少时间去跟上潮流。像新父母一样,他们的时间比任何人都要少。虽然每天阅读三个小时来磨练您的手艺是一个好主意,但对于许多人来说这并不可行。

因此,让我们开始吧!

每年几次

调查结果

各种学习组织每年进行一次调查并发布结果一次或两次。这些调查以高质量和有趣的方式显示了计算机科学许多领域的趋势。

没有比StackOverflow的调查更好的例子了。还有其他一些播放器,它们可以完成hired.compacktpub之类的优质工作。

值得深入研究它们并分析他们有趣的数据见解。您可以快速了解这些站点背后的大型社区如何看待这一领域。

12月下旬或1月初的预测帖子

这几乎是陈词滥调:从12月15日到1月30日,您将无法摆脱“ X年前N大软件开发趋势”之类的文章。

这是了解其他人学习和从事的工作的好方法,但我认为他们可能很主观,可能不会吸引所有人。但是每个开发人员都不一样,因此请先尝试一下。

这不是一个详尽的列表,因此请随时在下面添加其他有趣的资源。我的最爱是:

这些是一些最受欢迎的自学平台,因此它们总是共享新的东西。

每几周一次

思想作品

思想工作的顾问提出了严肃的报告。我喜欢标签“采用”,“试用”,“评估”和“保留”,而不是您可以找到的所有流行词。如果您想坚持一个技巧,就应该这样。

聚会和您的社交/专业圈子

您是否去过聚会上讨论他们过去十年的事情?我也不!

很容易不知所措,所以选择一对,不要错过任何一个话题。

通常,演讲者会谈论他们在工作所在的公司使用的技术。如果您想为公司工作,这将是一个很好的机会,了解该公司的运作方式并获得见解。(当然,也总是有Glassdoor。)。

更不用说您可以认识的人以及所有免费的披萨。

同样,请勿低估您的社交和专业圈子。是的,软件人员聚集在一起……如果您让自己与众不同,那么您可能是例外,而不是规则:)您雄心勃勃的同事在他们的议程中总会有一些新奇而有趣的东西要学习。

因此,请确保您交换想法。您将享受它并从中受益。这意味着您应该始终以具有高质量工程文化的公司为目标。

Google快讯

如果您想专注于一些技术,我发现的最好的被动方式是google alert

您订阅了自己喜欢的字词,并且当新的重要结果被索引到您字词的google结果中时,就会收到一封电子邮件。

就像有人每天为您搜索几次,例如“ python3 Django”。

GitHub探索

Github的探索和后续页面(例如趋势)可以一眼就指出开发人员正在做什么。

在撰写本文时,最流行的结果是关于区块链,机器学习和Python的。我认为这些结果代表了该领域当前趋势的很大一部分。

Infoq报告

这是另一个很棒的资源。

我将其归类为Thoughtworks,尽管它们对知识的结构不同。

在他们的主页上,他们显示了一些趋势领域。他们的文章很容易是会议演讲或迷你书,更不用说他们不时赠送的一些电子书了。

您可以查看他们的2020年趋势文章,以大致了解您会发现什么。

每周多次

博客平台的摘要

我的最爱,没有特别的顺序,是dev.tohackernoon.comfreecodecamp.com

您可以每天访问他们,也可以使用他们的文章摘要功能(通常每周一次)。

当这些平台基于人群信息模型工作时,如果有足够重要的东西,您会发现很多关于它的文章。

Dailynow.co

可悲的是他们只有一个浏览器扩展。每日是基于人气的新闻源。您只需打开浏览器上的新标签,即可轻松发现每日趋势和高质量文章。

从个人经验出发,总是很高兴看到您的文章排在第一位。

Hackernews和程序

我不能让社交新闻之王脱颖而出。人们对这两者有不同的感觉(主要是从行为方面考虑,因为评论的范围可能从侮辱和拖钓到对该主题的严肃看法)。但是,如果尝试,您可以提取价值。

Twitter趋势(或其他社交媒体的趋势)

正如我在之前的一篇文章中所写的那样,社交媒体可能会被妖魔化,但是您需要建立一个很好的圈子并从中受益。

我亲自跟踪发现有有趣作品的任何公司,作者或演讲者。

我建议您专注于Twitter和LinkedIn,因为根据我的经验,它们往往更适合此目的。

时事通讯

我将向任何能向我证明他们从未订阅过技术通讯的活跃开发人员支付10欧元。这些新闻无处不在。

这些新闻通讯的作者为您付出了艰辛的努力,并从趋势中汲取了泡沫。

我最喜欢的是tldr更好的devcodeproject和最近添加的Dev每周

结论

感谢您阅读本文。希望您喜欢上面的提示。如果您有其他任何提示,请随时将其放入评论中。阅读愉快!