paint-brush
获得开发工作没有捷径:慢慢学习编码经过@wagslane
2,960 讀數
2,960 讀數

获得开发工作没有捷径:慢慢学习编码

经过 Lane Wagner5m2023/09/13
Read on Terminal Reader

太長; 讀書

3个月后我需要一份开发人员的工作;最好的方法是什么?找到工作没有捷径。
featured image - 获得开发工作没有捷径:慢慢学习编码
Lane Wagner HackerNoon profile picture
0-item

自从启动Boot.dev以来,我就被所谓的“流沙问题”淹没了。从表面上看,流沙问题似乎是一个好问题。如果你能回答它,它就会把你从你所在的地方(在温迪汽车餐厅上夜班)弹射到你想去的地方(告诉朋友你在顺便说一句,Netflix)。


流沙题都是为了寻找捷径。


3个月后我需要一份开发人员的工作;最好的方法是什么?


我看到您在后端学习路径中列出了 20 门课程,但是,*眨眼*我可以跳过哪些课程?

快捷方式有什么问题?

现在,我想澄清的是:想要走捷径实现职业目标绝对没有错。其他任何事情都将是疯狂的。如果有一种药丸可以让你一夜之间变成一名高级开发人员,我会鼓励你戒掉这个傻瓜。


从理论上讲,教育“最小最大化”似乎是一个可靠的策略,但在实践中却行不通。

为什么?因为目的地未知


如果您知道自己要去哪里,Dijkstra 算法就很棒。如果你不这样做,你需要别的东西。

没有人知道他们要去哪里

科技领域非常复杂。我在大学里学习了十种不同的编程语言,甚至在获得学位三年后,我仍然不知道我最终会成为一名编写 Go 的后端工程师。


我面试的都是各种废话,从嵌入式系统到前端开发。是的,事实证明我的 Prolog 课程在我的第一次面试中没有多大帮助,但你知道吗?这并没有什么坏处,现在,当有人说“这是一个声明性系统”时,我的面部表情并没有暴露出我的无知。


如果您确切地知道需要掌握哪些概念才能通过第一次面试,那么您就可以找到一条有效的捷径。问题在于,没有一个精确的知识子集总是足以通过每一次可能的第一次面试。


  • 每家公司都有自己的技术栈

  • 每个 PM 都有自己的“敏捷”版本

  • 每个招聘经理都有自己的 7 步面试流程

  • 每项工作都需要不同的神秘知识


当您开始学习编码时,您不知道第一份工作每天要做什么。我听到人们说,“我什至在工作中从未使用过 DSA 技能”,经过进一步检查,发现他们是 WordPress“开发人员”。

那么,我不应该对最短路径感兴趣吗?

你应该;它只是不是你认为能找到它的地方。作为一名程序员,获得工作的最短路径并不涉及最大限度地减少您需要学习和构建的东西的数量。这种想法会导致一段更漫长、更精神疲惫的旅程。像这样的东西:


  1. 直接跳转到 Web 框架(可能是 Next.js,因为您是基础 af)。
  2. 发现您有构建 TODO 应用程序的天赋
  3. 意识到没有教程就无法构建“hello world”
  4. 尝试通过更多教程来解决这个问题
  5. 在 Twitter 上阅读 ackshaully Rust是最好的语言
  6. 承认在借用检查员手中失败
  7. 重复步骤 1-4 n次,其中nd4_roll * your_stubbornness

最短路径(或者至少是更短的路径)通常如下所示:

  1. 用某种语言学习核心编程/计算机科学概念

  2. 暂时决定您想要进行的编程类型(前端、后端、移动等)

  3. 通过非常适合的技术学习此类编程的基础知识

  4. 在找工作时永远不要停止学习和建设


别误会我的意思,第二条路仍然不短。编程并不容易;如果你被告知是这样,我很抱歉,但如果你愿意付出努力,你可以避免漫无目的地漫步在教程地狱的第九圈。

不要害怕工作

人们花费大量时间试图找到最短的学习路径或试图避免学习“他们永远不会再使用”的东西,他们可以浪费数月或数年的时间完全不学习以避免做任何不必要的工作。冒着花几天时间学习一些与你最终找到的工作不直接相关的东西的风险吗?

狗狗币去月球?

让我们100000000%诚实。有些人正在寻找一种老式的快速致富计划。经过几周与循环的斗争后,他们将放弃并在 Fiverr 上购买人工智能驱动的加密货币交易机器人。别像那些人一样。


成为一名软件工程师并不是一个“快速致富”的计划。这是一个“让上层中产阶级慢下来”的计划


“成功”的秘诀是什么?你必须真正变得优秀。


因此,与其从 StackOverflow 随意复制/粘贴来“修复”遇到的下一个错误,不如多花几分钟来弄清楚它的含义。我无法开始告诉你我已经审查了多少 PR 来“修复”某些东西,但只是补丁中的一个补丁,因为开发人员从未意识到根本问题。


例如,一位前 Java 开发人员(始终是 Java 开发人员)发现有时此函数(在 Go 中)会出现恐慌:

 // sendEmail sends emails, but sometimes panics func sendEmail(e *email) error { // ... }

他们直接去谷歌,发现Go中的恐慌可以通过recover来“解决”。因此,他们打开了一个拉取请求:

 func sendEmail(e *email) error { defer func() { if r := recover(); r != nil { log.Println("recovered from panic in sendEmail") } }() // ... }

这有点管用吗?然而,更好的开发人员会尝试理解并修复代码中的根本问题。他们会添加nil检查,或者干脆停止在这个函数中使用指针......

 // now sendEmail never panics func sendEmail(e email) error { // ... }

你希望倾向于变得更好,而不是到达终点。没有“终点”。有太多东西需要学习。所有软件工程的范围都比您上一个程序的全局命名空间的范围还要大。

这不是你想要的建议

健身、戒毒、创业,当然还有找到第一份开发工作,这些都很困难。不要因为浪费时间寻找捷径而让自己变得更加困难。


学习常青的基础知识,构建你感兴趣的项目,你会惊讶地发现,只要一两年的持续努力,你就能取得如此多的成就。


也发布在这里