我希望自己在第一份开发工作中就知道的 50 件事(第一部分)
由于这篇文章很长,我将它分成两部分。
如果我能回到开始我的第一份全职软件工程工作前几周,我会告诉自己以下 50 件事。
你可能不会完全同意这份清单上的观点,但没关系,因为这是一份为我准备的清单。不过,我很想在评论区听到你给年轻时的自己的建议。🤠
1. 大多数人都愿意提供帮助
一般来说,没有人希望你失败。你在这个领域的同事和熟人通常都想帮助你成功。信任其他开发者并在需要时依靠他们是个好主意。
有一条经验法则对我很有用:永远假设其他人有最好的意图。
2. 测试是你的朋友
编写测试并不总是很有趣,但在我的第一份工作中,它对我建立大量的测试技能非常有帮助。
首先,因为编写测试是一种令人难以置信的脑力锻炼,可以构建你想要解决的问题;它要求你仔细思考完成任务的每个步骤。
其次,编写测试有助于让你和其他人确信你的代码能够按照你的预期运行。这种做法在我最初几次提交拉取请求时给了我很大的信心。
3. 没人知道他们在做什么
我的第一份工作中饱受冒名顶替综合症的困扰。很大程度上,是因为我认为周围的人比我更懂技术。但我错了;每个项目都有一些地方是每个人都会遇到困难的。
4. 有些人知道自己在做什么
尽管项目的某些部分对于每个开发人员来说都具有挑战性,但项目的某些部分团队中的一两个开发人员已经掌握了。
弄清楚这些人是谁,并学会在我在他们的专业领域遇到困难时向他们请教,这将大大有助于我对这个项目感到满意。
5. 开源并不可怕
当我刚开始以编写软件为生时,开源真的让我感到畏惧。如果我一开始就知道开源其实并不可怕,我就会更早地参与其中(这对你的职业生涯来说非常有益)。
6. 你的英雄也是人
人们说你不应该见你的英雄,因为他们会让你失望。我说你一定要见你的英雄,因为你会意识到他们也是人。
在过去的六七个月里,我花了大量的时间去认识我的英雄们。
我发现我所敬仰的人和我一样,他们和我一样也面临着许多同样的问题。
这种团结鼓励我尝试去像我的英雄们那样行事;如果他们和我一样遇到同样的问题,那么我没有理由不能做很多我钦佩他们的事情。
7. 你不需要知道一切
软件工程是一门极其复杂且庞大的学科。地球上没有人能够完全理解这个领域。因此,你不应该尝试。
第一份工作让我因为知识匮乏而感到无力。与其纠结于那些我不懂的东西,不如先挑个方向,花时间认真学习,然后忽略那些没时间学习的东西,等到更好的机会出现再说。
8.深度比广度更重要
继续这个想法,有时候,真正了解某件事会非常有价值。我从自己维护的开源项目中自由职业的经历中学到这一点。
9. 广度比深度更重要
或者说,这个世界需要通才。根据你的职业目标,拥有全面的知识面可以成为宝贵的资源。
在我目前的工作中,由于涉及一定程度的管理,我吸收大量不相关信息的能力非常宝贵。
此外,这种广度为我学习新事物奠定了坚实的基础。
10. 代码简洁
太多的初学者,包括我自己,认为复杂的代码令人印象深刻。
最好的代码是简洁易懂的。如果代码太复杂难以理解,那不是你的错,而是代码作者的错。不要让这种想法占据你的脑海,给你带来麻烦。
11.你的任务是学习
这是我在实习生和初级员工身上经常遇到的情况。你不应该因为在工作中学习而感到内疚,这就是工作。
即使是老年人,也会在工作中花费大量时间阅读教程并学习新技能。你应该在工作日这样做!
12. 第一性原理比死记硬背更有效
记忆很有效。事实上,我鼓励通过重复来练习。然而,这并不总是学习推理概念的最佳方法。
如果我花时间去了解我所使用的技术所采用的方法背后的原因,我就能更有效地决定解决我遇到的每个问题的正确策略。
13. 你应该写下你正在学习的内容
案例和观点。
直到最近,我才开始积极地撰写软件工程相关的文章。成果显著。我能够更有效地记忆信息,而且可以随时查阅自己撰写的参考资料。
这是我采访 Chris Oliver 时谈到的,但将你的学习内容保密毫无意义。不妨在博客或 dev.to 上分享你的笔记和想法。
最糟糕的情况是,当您需要记住一些技术性的东西时,您可以在网上找到一个可以参考的地方。
最好的情况是,您能够帮助他人,并且从知名度中获得一些好处。
14. 在代码审查中保持积极
即使你不正确,你也应该在进行代码审查或结对编程时分享你的意见。
首先,这有可能提高团队代码的质量。这也可能是一个为你的同事(甚至是你的上级)提供指导的机会。
第二,当你犯错时,你有机会被纠正。你应该把它看作一个机会。即使别人很粗鲁,你也能从中找到一线希望,学到一些东西!
15. 结对编程时要积极主动
我强烈地感觉到,在结对的情况下,经验最少的开发人员应该是坐在键盘前的那个人。
在我的第一份工作中,有很多次如果能从资深同事手中夺走键盘,我会受益匪浅。结对编程时,由初级同事掌舵的好处有两方面:
首先,当年轻人开车时,需要年长者解释每个步骤,以鼓励年长者分享背景和背景知识。
其次,这种做法可以避免出现这种情况:沮丧的资深同事会吐出十几行代码,却什么也没解释。没有什么比资深同事不解释问题是如何解决的就跑掉更糟糕的了。不要让资深同事吝啬你的指导;这是他们工作的一部分。
16.制作易碎玩具
当我刚开始专业编程时,我专注于构建有用的软件。
我没有建造任何东西,因为我还没有准备好开始建造其他人可以使用的东西。
如果我当时只是开发一些简单的项目,方便我进行编程,不用担心破坏重要的东西,我学得的速度会快得多。这样我以后就能开发出有用的东西了。
17.休息一下
照顾好你的大脑。这份工作讲究的是认知效率。每周工作90小时并不能提高认知效率。
18.锻炼
与休息一样,锻炼对大脑健康非常有益。
这是我在工作第一份工作时疏忽了的一点,结果付出了代价。健康状况不佳、睡眠周期糟糕、焦虑等等,都是缺乏运动的副作用。
我有很多建议:如果你不喜欢高强度运动,或者想找个轻松休闲的活动,可以试试飞盘高尔夫。如果你喜欢解决问题,室内抱石也非常有趣。如果你对拓展大脑和提高专注力感兴趣,可以尝试长跑。最近,我开始接触泰拳,它非常适合那些追求实用体育活动的人。
19. 不要沉迷于重构
我花了太多时间试图编写完美的代码。作为一名初级程序员,编写完美的代码不是你的职责。让你的同事看到你不太理想的代码,他们会帮助你改进。
20. 写下你的错误
我花了很长时间才开始记录自己犯过的错误。记录你的错误(以及避免这些错误的策略)能帮助你避免重蹈覆辙。
21. 写下你的胜利
同样,记录你的胜利也很重要,但原因不同。
对抗冒名顶替综合症的最佳策略之一是提醒自己在职业生涯中所做的所有伟大的事情。
例如,提醒自己在生产环境中运行的所有代码、对流程或文档所做的任何改进,以及构建的任何自动化流程。所有这些都很有价值,可以用来提醒自己是一位有价值的开发人员。
22. 寻找导师其实很简单
当我刚开始工作时,我认为导师必须是一个正式的安排。
我正在寻找一位高级工程师,每周或类似时间帮我解答疑惑。这样的关系确实很有用,但并非必需。
后来我才知道,导师其实可以更随意一些。我播客里的所有嘉宾都是我的导师。
我确实有几个朋友,每隔几个月会和他们一起喝咖啡,但每位导师不一定都是固定的约会对象。找一些你圈子里的人,请他们抽出30分钟时间,你会惊讶地发现你能学到很多东西。
23. 你不必是专家才能指导别人
初学者应该成为导师。
当我刚进入软件领域时,我总是觉得我需要一定程度的专业知识才能担任指导,但事实并非完全如此。
当然,如果您从未用 JavaScript 构建过任何东西,就不要尝试就 React 进行演讲,但即使您并不了解一切,您也可以帮助周围的人。
寻找机会与周围的人分享你的知识;小到你发现了一个很酷的文本编辑器插件,都可以。与他人分享能帮助你更好地适应导师的角色。
24. 说“我不知道”是个好主意
很多工程师不敢承认自己对某些事情一无所知。我职业生涯中也曾有过这样的经历,但最终我意识到,学习的唯一方法就是承认自己的无知。
坦然承认自己的无知,你会惊讶地发现,周围的人往往会效仿你的做法。而且,如果你足够幸运,那些懂得更多一点的人还会教你!
25. 记得说
作为“我不知道”建议的后续。请记住尽可能地添加“yet”。
我个人认为“yet”是英语中最有力的词之一,如果你正确使用它,即使在你感觉最糟糕的时候它也可以鼓励你。
“我还不知道。”
“我还不够好。”
“我还不能为开源做出贡献。”
这种心态彻底改变了我与职业的关系;我希望在我从事第一份工作时就知道它的价值。
本文的第 2 部分即将发布!
还有更多...
这些天我写了很多文章,我运营着一个播客,并且我已经开始发送一份关于我听到的所有精彩故事的新闻通讯摘要。
您还可以在Twitter上关注我,在那里我会制作一些有趣的表情包并谈论作为一名开发人员的感受。
文章来源:https://dev.to/jacobherrington/50-things-i-wish-id-known-at-my-first-developer-job-part-1-2dm4