新手程序员的困境

我是一名使用 PHP 和 JS 进行编码的全栈开发人员。我已经工作一年了,在这之前我参加了一个新兵训练营。

我感觉自己遇到了瓶颈。在工作中学习 "的宽限期已经一去不复返了,现在我必须完成任务。但我不觉得自己是个优秀的程序员。我读过的大部分代码我都能理解,我觉得我对工作中的大部分事情(sql、graphql、vue、docker、laravel 等)都有较高水平的理解。但老实说,我在新兵训练营时写的代码比现在多得多,我现在做的大部分工作都是从代码库、stack overflow 或 ChatGPT 中复制/粘贴的代码。

我觉得自己处于这样一个灰色地带:虽然完成了任务,但作为开发人员却没有真正进步。

我希望有一天能成为一名优秀的开发人员,一名资深的开发人员。

我唯一的选择是在副项目或课外班上投入额外的时间吗?因为我太疲惫了,下班后根本没时间做这些事。

网友建议:
这很常见。这就是为什么开发人员可以工作 15 年却没有什么长进,也永远学不会 CSS 的基础知识和你可能期望的普通东西。这也是为什么现在很多人找不到工作。与那些没有进入维护模式的人相比,他们并没有太多亮点。

  • 代码库中没有你感兴趣的地方?
  • 你可能会阅读或重构?
  • 有没有一些超出你舒适范围的工作单让你上网?你累了吗?
  • 你是否合理利用了时间?
  • 您是在利用聊天帮您完成工作,还是在利用聊天学习?
  • 你的团队中有人与你结对吗?
  • 您是否利用工作时间阅读文档并在代码库中尝试所学?

也许你的新兵训练营没有教你如何解决问题。也许你所在的公司很无聊,没有什么可学的。

所以,你必须把它当成一个问题来解决:

  • 为什么你筋疲力尽,无法每天花 1 小时做项目?
  • 你怎样才能以不同的方式安排时间?
  • 你能改变方法,让每张票都能学到新东西吗?
  • 还是你做错了工作?
  •  

我建议你与导师或教练之类的人进行交流,让真正的代码摆在你面前。

===========================================================

首先,我要说的是,你才入学一年,真的还什么都不懂。一年后,我觉得自己知道了很多东西。一年后,我又学到了很多。之后的一年也是如此。现在已经过去很多年了,我还记得第一年的感觉。不上网查资料,我几乎做不了复杂的事情。现在我已经做了很多年,重复就是学习。你学会了怎么做,你做了 10 次,第 11 次的时候你就可以不用查资料,直接从头开始做了。

在我的职业生涯中,我比我接触过的大多数开发人员都懂得更多。我仍在不断学习新知识,因为我很幸运能与比我经验更丰富的开发人员共事。这就是我要说的下一点。每个人都需要至少一位导师。一个已经做了足够久的人,他们有丰富的经验,更重要的是,他们有自己的观点。我有一位非常棒的导师,在与他共事的前 6 个月里,我从他身上学到的东西比我之前 3 年自己工作学到的还要多。

就是这样。如果你觉得自己被卡住了,你需要找一位导师,同时也要意识到,虽然你现在觉得自己知道很多,但我可以向你保证,在工作了短短一年之后,你几乎什么都不知道。查看代码。你说你在使用 stack overflow 和 chatgpt。所以你不知道某些事情。探索一下吧。你需要查找哪些东西?它们是如何工作的?看看代码库中你可能无法完全理解的部分。弄清楚它们是如何工作的。弄清楚为什么要做出某些决定。与其他人交流,询问有关代码的问题。有时答案是 "因为这是唯一的工作方式",有时答案是 "我们这样做是因为[学习经验]"。

===========================================================

我在 4 个版本库中工作。我终于明白了它们之间的联系,以及如何浏览代码,找到我需要工作的地方。这对我来说是一个巨大的突破。但现在,我觉得自己还没有达到 "应该 "达到的水平。我最近开始使用 chatGPT,虽然它改变了游戏规则,让我在开始开发票时获得了牵引力/动力,但我感觉自己并没有真正成长为一名开发者。如果我卡壳太久,我就会开始咨询 chatGPT。我的效率有了明显提高(原本需要几天的任务现在只需要几小时),但我觉得这对我自己是一种伤害。我最担心的是,如果我被裁员,需要开始申请新职位时,我就会力不从心。我朝九晚五地工作。但工作之余,我的时间并不多。我有妻子和孩子,这也是我当初转行的原因。

===========================================================
我经历过这种情况。在我工作的某个阶段,我做的是需要可配置的财务重组系统,处理超过 3000 万行的 16GB 的 excel 文件,同时还要兼顾制作一个具有可配置表单和验证功能的白标网站,而我还是一名初学者。快进到两年前,在同一份工作中,我制作了 60 个电子邮件模板。下个月,我试图在 3 周内交付一个预计耗时 3 个月的应用程序,而我带领的 3 人团队已增至 24 人。有时需要解决棘手的问题,有时需要完成无聊的工作。

工作起起伏伏,问题的难易程度也会发生变化,这就是为什么很多优秀的工程师会跳来跳去,以迎接越来越大的挑战。还有一些人,比如我,喜欢挑战内部问题,并尝试解决这些问题。有一次我觉得无聊,就做了一个刮擦工具,这样我就可以为公司保存一个最新车型的数据库。有一次我觉得更无聊了,就做了一个可配置的网页生成器。它很糟糕吗?是的,但我学到了很多。我是如何平衡的?我要么不做,要么明确向我的经理申请时间来完成一个项目。

有的时候我觉得自己像个大师,有的时候我觉得自己像个白痴。我发现这是开发人员的共同经历,尤其是与其他职业相比,你往往需要更频繁地学习和重新学习。

此外,写更多的代码=/=变得更好。有些工程师只会死记硬背,不会思考。如果你开始觉得问题只是重复性的,没有其他方法可以解决,那就自己找一个更有说服力的问题,或者通过换工作来解决。我觉得这是 "学习 "的最快方法。

很抱歉写得这么糟糕,但我希望能对你有所帮助。

===========================================================
新手程序员往往会误以为掌握编程语言才是最重要的,进而认为编写代码才是最重要的工作。优秀开发人员的价值主要来自工程设计......来自决定哪些代码该写,哪些不该写,来自仔细维护依赖关系,来自保持项目符合良好标准,来自从利益相关者那里收集正确的需求,等等。从初级开发人员到高级开发人员,主要靠的不是掌握编程语言或编写代码,而是其他方面。

因此,我认为,如果你因为没有写那么多代码而遇到了瓶颈,或许可以拿起一本关于软件工程、软件设计、算法、计算机安全、数据库设计等方面的书。少关注语言和代码,多关注流程和系统设计方面的知识。

===========================================================
我认为有多种方法可以提高开发人员的能力。有些人在空闲时间学习,但如果能在公司时间学习,效果会更好。一旦你度过了 "在工作中学习"/一事无成的宽限期,下一步就是想办法在学习的同时还能完成任务。工作环境好的地方会给你一些额外的时间,工作环境差的地方则需要给你的工作增加缓冲时间,这样你才能得到额外的时间。

复制粘贴的垃圾真的是最好的方法吗?通常情况下,复制粘贴的垃圾只是没有人去修复或理解的货物崇拜遗留垃圾。学习堆栈的来龙去脉可能是下一个最好的晋升途径(除非你想在不同的堆栈中从事特定的工作)。你了解 docker、graphql、sql 和 vue(vite) 的所有最佳实践吗?你的 ORM 或接口/桥接层如何?是否有某个方面可以做得更好?你的组织在某些方面做得很糟糕吗?你知道为什么吗?特定选择对未来需求变化的适应能力如何?

你必须选择是要一般知识还是领域知识。前者更有利于找到新工作。第二种更有利于在当前工作中取得成功。两者兼备才是你的价值所在。