我在第一年工作中学到的7件事
融入第一份工作可能充满挑战。通常情况下,没有人会指导你,告诉你对错,几乎所有东西都得靠自己摸索。在第一份工作中成长和进步也并非一蹴而就,需要时间和努力。我加入了一个团队,他们指导我,并为我提供了一个学习、成长和享受工作乐趣的环境。在这一年的工作经历中,我学到了很多东西,我想分享其中的一些,希望能对未来的职场新人有所帮助。
第一课:不要害怕互动。
如果你像我一样是兼具内向和外向特质的人,你可能会尽可能避免不必要的社交互动。你身上兼具内向和外向特质(或者说内向特质)的一面会让你错误地认为所有工作以外的互动都是不必要的。这是一种偏见,不要屈服于它。正是通过一些最尴尬的“你好”和“很高兴认识你”,我结识了职场上一些最聪明的人。
当你开始与人交谈,了解他们的兴趣、想法和故事时,你就能建立起真正让你感到珍惜的人际关系。这会让你的工作生活不那么枯燥,更重要的是,会让合作变成一件令人兴奋的事情。
我结识了一位热爱教学、维护着一个很棒的技术博客、并且热爱旅行的工程师。我从他那里学到了很多关于Java的知识,并在力所能及的范围内帮助他解决JavaScript方面的问题。我们一起完成了一些复杂的任务。能和这样一位经验丰富的人合作真是令人满足,如果不是当初那句略显尴尬的“嗨,最近怎么样?” ,我可能永远都不会有这样的机会。
第二课:坚持你的工作计划。
我知道把工作带回家是个坏主意,但令人失望的是,我发现自己几乎隔一天就会在家加班。这完全是我自己计划不周造成的。
最终我采用了另一种模式。我会在一天工作开始时制定计划,在一天结束时评估完成的工作量,并根据完成情况调整第二天的工作量,如此循环往复。这种方法起初很有效,直到我开始在工作中途接一些临时任务,导致无法完成当天计划好的任务。
引入基于优先级的任务处理方法。我计划好的任务优先级最高,我根据完成能力和任务影响程度来选择和排序。敏捷团队中经常会出现临时任务,它们很好,是持续避开障碍、朝着更大目标前进的有效机制。但它们会打乱我的日常计划,所以我自然而然地降低了原计划任务的优先级,为临时任务腾出空间。一年过去了,这种方法仍然有效。
确定优先级是一个枯燥乏味的过程,但它对我有以下好处:
- 我很少把工作带回家,所以我在家有很多时间留给自己。
- 完成当天所有任务后,我感觉很好。当我更快地完成更复杂的任务时,我能感受到自己的进步。
- 它提高了我的工作效率,从而也提高了团队的工作效率。
- 我越来越擅长判断优先级,这在工作内外都是一项至关重要的技能。
第三课:坚持你的学习计划。
如果你读过上一课,就会明白制定计划的重要性。在软件领域,没有人是全知全能的,新信息的涌现速度令人应接不暇,那么,如何才能跟上所有新的框架、语言和最佳实践呢?
你不需要这样做。你可以尝试采用T型学习模式。简单来说,就是通过研究和深入学习,精通某一领域,同时拓展在其他领域的知识。
我喜欢学习 Web 技术,所以就深入研究了 React 和 Angular 等前端开发框架,也尝试过其他一些框架。随着工作经验的积累,我越来越意识到,理解 JavaScript(ECMA Script)对于成为一名优秀的前端开发者和构建客户端应用程序至关重要,因为所有优秀的 UI 框架都做着同样的事情:围绕 JavaScript 的核心特性构建封装层,从而提供 API,让开发者的工作更加轻松。
因此,我花了很多时间阅读和理解 JavaScript 的基础知识,尝试各种实验性的 JS 特性,并在工作中运用一些高级概念,所有这些都是为了提高我对这门语言的掌握程度。这有助于我更好地使用现代框架,更快地进行调试,并为我的技术决策提供合理的解释。此外,我还在不断学习更多关于 Web 工作原理、在线支付原理(我的团队正在开发一个支付网关)以及云计算技术的知识。
我所掌握的T型软件知识可能如下所示。
为了高效学习,我每周投入六个小时,持续六个月,阅读、编写代码并与专家探讨 JavaScript。一年后,我可以轻松地运用闭包、Promise 和异步函数等高级概念。虽然我还不是专家,但我正在稳步提升。
通过尝试所有你可能想学的东西,找出你真正想学的领域;最终你会发现自己最感兴趣的是什么。之后,制定学习计划,投入时间,订阅在线资源(付费或免费均可),并按部就班地学习。
第四课:挑战你的同伴。
作为一名初级员工,与经验更丰富、知识更渊博的人共事可能会令人望而生畏。觉得自己应该少一些发言权是很正常的,但付诸行动就错了。
如果你从不挑战同龄人,你就是在剥夺自己学习的机会。坚持我的学习计划帮助我真正理解了 JavaScript 这门语言,包括它的创建目的、使用方法以及一些常见的陷阱。
我们在公司使用 AWS Lambda 来分担异步任务,这个想法很棒。但实现它的代码(用 JavaScript 编写)却不尽如人意。我质疑了代码的效率,抱怨了代码质量,最终请求有机会参与改进。虽然过程并非完全如我所愿(我们仍然有一些 Lambda 函数的代码写得很差,稍后会详细说明),但最终还是取得了一些成效。
- 团队很欣赏我的进步以及我指出错误的能力。
- 我学会了如何更好地表达自己的想法,尤其是在科技领域。要始终清晰地传达自己的观点并不容易,所以需要练习。
- 问“我们为什么要这样做?”帮助我更好地理解了系统,使我能够在下次设计新功能时做出贡献。
下次开会时,不妨先简单地问一句“为什么”。这会带来很大的帮助。
第五课:进行投入与影响分析
作为一名软件开发人员,你致力于解决各种影响程度不同的问题。有时你只是更改按钮的颜色,有时你则需要将欺诈检测机制集成到在线支付流程中。
在开始做某项任务之前,决定你要花多少时间进行计划/完成这项任务非常重要。
相比集成欺诈检测功能,更改按钮颜色对用户体验的影响要小得多。而且更改按钮颜色也很容易撤销,但撤销用户流程中的集成却并非易事。因此,与其花费大量时间规划和讨论按钮颜色,不如直接发布更改,然后等待客户体验团队的反馈,以便决定如何改进。
然而,如果在未做好充分规划的情况下集成欺诈检测功能,可能会破坏现有的用户体验,出现新的漏洞,甚至可能无法有效实现防范欺诈的目标。在这种情况下,单独测试集成功能、讨论极端情况并花时间构建实验就显得尤为重要。这些实验或许看似徒劳,但却能避免代价高昂的漏洞和令人沮丧的用户体验。
当我的团队想要集成一个第三方欺诈检测API时,我花时间编写SQL和Node脚本,在一个隔离的环境中测试该软件。我们可能永远不会用到我写的代码,但它帮助我们发现欺诈检测流程中缺少一些关键环节。如果我们没有意识到这一点,这次集成将会是一场代价惨重的灾难。
遇到问题时,在制定解决方案之前,先想想解决问题会对用户产生什么影响。根据这种影响来规划你的工作。
第六课:从事教学工作
这不仅是回馈社区的最佳方式,也是证明自身技能的绝佳途径。我一直很喜欢教别人,所以也很喜欢在工作中教别人。
通过教学,我提高了自己阐述复杂概念的能力;当别人问到我不知道答案的问题时,我便有机会学习更多。通过学习和教学的循环,我的 React 技能迅速提升。
此外,扮演教师角色还能与团队成员建立有意义的联系。你会赢得信任,并获得合作解决激动人心问题的机会。
作为一名教师,你不仅吸收知识,而且还传播知识,这有助于你的团队信任你,并最终获得机会去解决令人兴奋的新问题。
作为团队新成员,你或许觉得很难开始教别人,但你对系统的新鲜视角和空闲时间能帮助你积累其他人急需的知识。利用这个机会尝试教别人一些东西,哪怕再简单也好。
第七课:不要陷入冒名顶替综合症
软件世界里人才济济,不乏知名人士、有影响力的精英。看到那些在 GitHub 上拥有超过 1000 个 star、持续更新、拥有众多粉丝、在 Stack Overflow 上排名靠前的开发者,而我直到最近才开始回答问题,这让我感到自卑。我陷入了一种自我怀疑的境地:我所掌握的一切似乎都微不足道,我随时可能被取代。我甚至开始拿自己和一些素未谋面的人比较,并为此感到羞愧。这种感觉被称为“冒名顶替综合症”。克服这种感觉的正确方法是换位思考,以更客观的视角看待问题。
你在网上看到的那些高水平开发者,并非一日建成,他们都付出了巨大的努力。你现在需要做的不是对自己的努力感到沮丧,而是继续努力提升自己。你目前为止做得很好,但你还有更大的进步空间。
说到这里,请记住,照顾好你的身心健康,比照顾好事业更重要。
这些经验当然不能解答你职业生涯的所有问题,但应该能让你有个良好的开端。总之,你的第一份工作(软件开发领域)将会充满挑战和机遇。学会明智地选择,犯错时不要苛责自己,并享受过程中的乐趣。
没有人能对所有事情都有正确答案,所以不要害怕尝试你喜欢的事情,并在复杂的软件开发世界中创造你自己的身份。
如果你喜欢这篇文章,请在这里和/或推特上关注我,获取更多关于软件方面的想法。
文章来源:https://dev.to/maybebored/7-things-i-learned-in-my-first-year-of-work-50f4
