新手程序员的困境

我是一名使用 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 或接口/桥接层如何?是否有某个方面可以做得更好?你的组织在某些方面做得很糟糕吗?你知道为什么吗?特定选择对未来需求变化的适应能力如何?

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659816.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中文计算机自学指南:打开全栈开发之门 | 开源日报 No.161

PKUFlyingPig/cs-self-learning Stars: 40.3k License: MIT cs-self-learning 是一个计算机自学指南。 该项目旨在提供一本完整的计算机自学指南,帮助初学者通过优质资源快速成长为全能程序员。 主要功能和核心优势包括: 提供丰富的开源课程资源支持多…

案例三:U盘提示格式化?3种方法帮你拯救它

在U盘的使用过程中最尴尬的情况就是遇到“无法打开,需要进行格式化”的提示。此时,我们如何才能在不破坏内部数据的情况下,挽救这个U盘呢? 小编今天就和说3个方法,可以用来解决U盘“无法打开,需要进行格式化…

Python学习之路-DRF基础:Serializer序列化器

Python学习之路-DRF基础:Serializer序列化器 序列化器的作用 进行数据的校验 对数据对象进行转换 定义Serializer 定义方法 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。 例如,我们已有了一…

工作流框架Activiti

工作流框架activiti 实现入住管理,审批流。 实现入退住,涉及多个表单的提交和多个角色的审核,若要实现这些流程的开发,最好的技术选型是使用工作流技术。 工作流(Work Flow):是一项将系统任务或操作抽取&#xff0c…

Windows10更新失败 错误 0x80070643、KB5034441的解决方法之二

Windows10更新失败 错误 0x80070643、KB5034441 在知乎Windows10更新失败 错误 0x80070643、KB5034441的原因分析和几个解决方法 - 知乎 参考文章进行操作,更详细信息自己看上面链接。 我电脑的硬盘是mbr格式,而且没有划分恢复分区。 Microsoft Windo…

nop-entropy可逆计算入门(1)

第1步:从大佬的gitee:https://gitee.com/canonical-entropy/nop-entropy下载源码,进行本地编译,具体编译看项目下的readme,想偷懒的可以下载我编译后的jar,放到自己的maven仓库 https://pan.baidu.com/s/15qANnrCh5RV…

Node.js的学习1

Node.js简介 浏览器是JavaScript的前端运行环境Node.js是JavaScript的后端运行环境Node.js中无法调用DOM和BOM等浏览器内置API 终端中的快捷键 使用向上箭头,可以快速定位到上一次执行的命令使用tab键,可以快速补全路径使用esc键,可以快速清…

Sentinel 知识总结

Sentinel 知识总结 Sentinel 是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略,包括QPS限流、并发数限流、线程池限流等,并且支持集群限流。此外,Sentinel还提供了熔断降级、系…

学习使用vite+vue3的所遇问题总结

组件中使用<script>标签忘记加 setup 这会导致Navbar 没有暴露出来&#xff0c;导致使用不了&#xff0c;出现以下报错 这是因为&#xff0c;如果不用setup&#xff0c;就得使用 export default …… setup 是后者的语法糖 在Vue.js中&#xff0c;你可以通过route对象…

USTC ICS(2023Fall) Lab5 Password Verification

LC-3汇编语言 .orig x3000 LOOP1 AND R1,R1,#0ADD R1,R1,#3LEA R0, string1PUTS ;打印string1AND R0,R0,#0ADD R0, R0, #10 OUT ;打印换行符GETCOUT;检查输入的字符是否为W(ASCII码为87)ADD R0,R0,#-16ADD R0,R0,#-16ADD R0,R0,#-16ADD R…

Android 平台代码、版本与API级别对应关系

Android 平台代码、版本与API级别对应关系 代号版本API 级别/NDK 版本Android1313API 级别 33Android12L12API 级别 32Android1212API 级别 31Android1111API 级别 30Android1010API 级别 29Pie9API 级别 28Oreo8.1.0API 级别 27Oreo8.0.0API 级别 26Nougat7.1API 级别 25Noug…

H5网站在线客服小程序源码系统,完全开源可二开 带完整的安装代码包以及搭建教程

互联网的快速发展&#xff0c;H5网站已成为企业与客户沟通的重要渠道。然而&#xff0c;许多H5网站在客户服务方面存在不足&#xff0c;无法及时响应客户的问题和需求。小编给大家分享了一款H5网站在线客服小程序源码系统&#xff0c;旨在为企业提供完善的客户服务解决方案。 …

(自用)learnOpenGL学习总结-高级OpenGL-几何着色器

在顶点着色器和片段着色器中间还有一个几何着色器。 几何着色器的输入是一个图元的一组顶点&#xff0c;在几何着色器中进行任意变换之后再给片段着色器&#xff0c;可以变成完全不一样的图元、可以生成更多的顶点。 #version 330 core layout (points) in; layout (line_str…

案例四:误Ghost分区恢复

1、案例 小王电脑最近有点问题&#xff0c;于是打算将电脑系统重装系统&#xff0c;原本5个分区&#xff0c;第一个区是操作系统区&#xff0c;后4个用户数据区&#xff0c;在一次GHOST时失误&#xff0c;做完发现硬盘只有一个系统区&#xff0c;两个数据区消失了&#xff0c;…

右手螺旋线定则

通电螺线管中的安培定则&#xff08;安培定则二&#xff09;&#xff1a;用右手握住通电螺线管&#xff0c;让四指指向电流的方向&#xff0c;那么大拇指所指的那一端是通电螺线管的N极。

word字体对应

字号‘初号’对应磅值42&#xff0c;字号‘小初’对应磅值36。 字号‘一号’对应磅值26&#xff0c;字号‘小一’对应磅值24。 字号‘二号’对应磅值22&#xff0c;字号‘小二’对应磅值18。 字号‘三号’对应磅值16&#xff0c;字号‘小三’对应磅值15。 字号‘四号’对应…

小程序接入企业微信「联系我」功能

接入模式有两种 1&#xff0c;展示二维码 可以直接调用服务端API的 配置客户联系「联系我」方式 得到二维码地址给到前端直接展示 2&#xff0c;展示类似“联系客服”的按钮&#xff08;文字和样式可以使用企业微信提供的几种&#xff09; a&#xff09;在小程序后台 “设置…

Redis核心技术与实战【学习笔记】 - 9.如何避免单线程模型的阻塞

概述 Redis 被广泛应用的原因是因为它支持高性能访问。所以&#xff0c;我们要重视所有可能影响 Redis 性能的因素&#xff08;如命令操作、系统配置、关键机制、硬件配置等&#xff09;。 影响 Redis 性能的 5 大方面的潜在因素分别是&#xff1a; Redis 内部的阻塞式操作C…

Spring Boot(番外):防止反编译之Jar包加密

1 防止反编译方案 (1)第一种方案使用代码混淆 这个方案已经在上一章Spring Boot(番外):防止反编译之代码混淆讲解过,采用proguard-maven-plugin插件。 在单模块中此方案还算简单,但是现在项目一般都是多模块,一个模块依赖多个公共模块。那么使用此方案就比较麻烦,配置…

Redis RCountDownLatch RSemaphore的应用

一、CountDownLatch允许一个或者多个线程等待其他线程完成操作。 0、设置子线程数 RCountDownLatch countDownLatch redissonClient.getCountDownLatch(DATASOURCE_PLAN_ID plan.getPlanId());countDownLatch.trySetCount(10); 1、等待线程 // 等待子线程完成&#xff0c;…