我希望早点相信的编码建议
我最近庆祝了学习编程一周年。过去一年发生了很多变化,而且我很幸运,最近被一家科技公司聘用,这是我的第一个软件工程师职位。
我知道,我知道……现在网上有很多类似的建议文章,就像一年前一样。虽然我刚开始的时候也读过很多,但我记得自己对其中一些建议不屑一顾,尤其是那些与我先前直觉不一致的建议。 嗯,不如我直接忽略我读过的24篇建议我做某事的文章,然后直接去做,谢谢。💅
比如,我以前在网上露面感觉很恶心,而且浪费时间,完全没有必要。现在我很庆幸自己重新审视了自己的立场,因为当时有一位招聘人员在领英上联系我,希望我申请现在的职位。如果我当时固执地坚持自己的想法,认为可以按照自己的方式去做,而不诉诸于当时让我感到恶心的诸如数字自我营销之类的概念,这种情况就不会发生。
因此,在充分承认文献量已经非常庞大的情况下,我将添加“来自另一方”的另一种声音,希望我可以说服像我一样固执的人考虑以下建议。
不用多说,以下是我给年轻时的自己以及任何刚开始编码之旅的人的建议。
1.考虑训练营是否适合你🗺️
你需要参加训练营才能学习编程吗?当然不是。你学习编程所需的所有资源都能在网上免费获取吗?当然可以。那么,完成训练营还能让你受益吗?🤔 也一样!由专家教师设计的课程能让你更容易按正确的顺序学习,避免深入学习需要预先掌握知识的主题。例如,在学习 React 之前,你应该先学习原生 JavaScript 和常规 DOM 操作。否则,你对前端工作原理的理解就会存在偏差。
但训练营需要巨大的投入。在你为了这项高强度的体验而投入金钱和减少其他责任之前,请务必确保你真的喜欢编程。这似乎不言自明,但令人惊讶的是,很多学生在投入金钱和时间之前,并没有确定自己对编程有长期的兴趣。
值得庆幸的是,有很多廉价的 Udemy 或免费的 Youtube 教程可以帮助解决这个问题。对编程语言有一个坚实的心理模型将为你的成功奠定基础,并使你更容易跟上训练营的快速节奏。我从Colt Steele 的 Udemy Modern Python Bootcamp开始,然后继续参加他的Web Development Bootcamp,最后才报名参加真正的训练营。我可以继续说 Colt 是一位多么优秀的老师,他的宠物命名约定也同样出色(他的鸡叫 Stevie Chicks,伙计们,我还需要多说吗),但我只会听起来像一个愚蠢的粉丝。相反,我会给你一些同样优秀的老师的名字,他们也提供高质量的免费或廉价课程:Angela Yu、Andrei Neagoie、Jose Portilla,但名单还在继续。
2020年虽然带来了疫情、Zoom会议和赛博朋克2077,但也迎来了越来越多的在线内容创作者推出易于上手的课程。任你选择!
2. 选择合适的训练营
如果你打算走训练营的路线(而且你的成功与否并不取决于此,还有其他方法),那么需要注意的是:谨慎选择训练营。我可以写一整篇文章来阐述评判训练营的可靠标准(我应该写吗?请在评论区告诉我),但最终,其中一些标准会比较主观。不同的教学风格和课程适合不同的情况和学习风格。就我个人而言,我很高兴避开了那些没有入学考试或考试极其简单的训练营(例如,“编写一个返回两个数字之和的函数”或“返回此数组中的第一个项目”)。训练营通常持续 3 到 9 个月,我对那些承诺在这段时间内教会你初级职位所需的所有知识,而无需你具备任何先决条件的课程不抱有信心。
我对教授两种以上语言的训练营也持怀疑态度——你可能会用广度取代深度,离开训练营时甚至会对自己能否充分利用简历上列出的技能感到不自信。判断训练营质量的一个好方法是找到毕业生,看看他们的项目或作品集网站——你可能需要通过 LinkedIn、Github 或 Twitter 进行追踪,收集足够多的样本,才能最终确定训练营的质量。与以前的学员联系交流也是一个好主意。
最后,查看SwitchUp和Coursereport 的排名和评论。
3. 尽早创建 LinkedIn 个人资料
无论你是选择参加训练营,还是勇敢自学,都不要低估人脉的力量。这条建议对我来说是最难接受的,我一直推迟创建领英 (LinkedIn) 个人资料,直到训练营的职业服务强迫我这样做。对我们许多人来说,人脉让人感到恶心,数字自我推销是一个令人作呕的概念,而创建领英 (LinkedIn) 个人资料则感觉像是把灵魂出卖给魔鬼。我曾经也有这种感觉,而且在某种程度上仍然如此——我不喜欢生活在一个鼓励我们大声宣扬成就、将自己当作产品进行营销的世界。
但领英也帮我找到了一份工作,并让我结识了许多非常优秀的人才。如果你想通过一条非常规途径进入科技行业,拥有一个领英账户将对你大有裨益。确保你的个人简介写得清晰简洁,并列出你之前的所有经验,无论是否与技术相关。这样,当你准备好开始工作时,你就会拥有一个庞大的人脉网络,并有持续在线展示你的技术能力的经验,无论是通过部署的应用程序、帖子还是文章。
4. 尽早写下你的学习成果
这又是一条我最初持怀疑态度、经常被重复的建议。我能为编程领域做出什么贡献呢?那些比我资历高一百万倍、却又没有学位的低微农民,早就说过了。我写学习文章的时间相对较晚,当时我已经不再关注大多数后端话题了。所以从外部来看,我的在线形象似乎只关注前端,我必须说服我未来的全栈职位雇主,我对后端的兴趣不亚于前端,甚至可能更浓厚。
如果可以重来,我肯定会更早开始写作。如果你因为自己知识匮乏、容易犯错而感到犹豫,别担心。无论你写什么,都有可能有人会读到你的内容,并从中受益。更重要的是,通过撰写你不擅长的话题,你(希望)最终会比平时更深入地研究它们。
另外,如果你犯了错误,别人会在评论里提醒你,这样你就有机会改正错误,从中学习。我再怎么强调把东西写下来有多有用都不为过——我真希望自己早点开始,而且我的目标是即使转为全职工作,也要继续写作,因为我现在知道,这是巩固新知识的绝佳方式。
5. 尽早学习版本控制
拥有在 Github 上提交代码的经历是向招聘人员展示你技能的最简单方法。总有一天,你会想要开始将你完成的练习上传到 Github。虽然我从 2020 年 4 月就开始编程了,但直到 2020 年 11 月,我的训练营才开始鼓励我这样做,我才在 Github 上上传了不少代码。真是可惜,到那时我已经创建了不少全栈应用程序,但全世界永远也看不到它们了!(它们太糟糕了。世界真是走运。)
我应该早点开始,也许两个月后就开始。学习 Git 一开始可能会让人困惑,所以我会等到对编程语言有了基本的了解后再开始,以免不知所措。但几个月后,Git 就成了必需品。YouTube 又一次帮了我大忙。
6. 把精力集中在重要的事情上⏱️
如果你编程不仅仅是为了乐趣,还想转型成为职业程序员,那就考虑尽可能减少其他工作。我知道这并不总是可行的,比如,如果你为人父母,或者依赖全职工作收入(在这种情况下,你绝对是一个坚强的人,我对你做到这一切并不断学习新技能感到无比钦佩)。根据我的经验,总有一天,你会感到不得不做出一些艰难的决定,是否要放弃生活中的其他领域,将更多精力放在编程上。
就我而言,在远程优先训练营进行到一半时,我不得不放弃两份(而不是一份)维持生计的兼职工作,转而依靠政府援助。这感觉很冒险,而且我觉得辞职会让大家失望,但事实证明,从长远来看,这是正确的选择,我为自己在正确的时间放弃了而感到自豪。这是一件艰难的事情。
和任何技能一样,你投入的时间和精力越多,学习效果就越好。这其实很简单。难的是要实时识别哪些东西真正重要,哪些东西可以舍弃。我希望这些信息能对你有所帮助:如果你在学习编程的同时还在努力履行所有承诺——你并不孤单,我们很多人都经历过类似的情况。放弃那些耗费我们时间和精力却得不到太多回报的工作、爱好或人际关系,并不丢人。事实上,这是一件勇敢的事情。
7. 休息是关键
话虽如此,增加编程时间并不一定就能带来更高的成功率——根据我的经验,一个人每天投入到编程中的脑力是有上限的。具体情况可能有所不同,但对我来说,这意味着晚上休息,周末休息。我们每个人在一天中的最佳状态都有所不同,所以一定要遵循自己的昼夜节律,但请记住,过度劳累的大脑很少能写出好的代码。
正如你所见,我非常重视休息。我圣诞节放了假,周末几乎不写代码。希望从长远来看,这个策略能帮助我防止倦怠,并帮助我保持孩子般对写代码的热情。
我最初最不擅长的就是何时该停下来。有些日子,我从早上就开始忙活,晚上却还要盯着屏幕疯狂地修复那些可怕的bug。我总能在早上30分钟内修复前一天晚上困扰了我好几个小时的bug。同样,下次我会告诉自己,这次不一样,这次我会在晚上修复这个bug,哪怕只花10分钟。放弃并结束一天的工作是一项很难学会的技能——我仍然在不断完善它。
8.心态比你想象的更重要
只要你相信,你就能学到任何东西。这并非空洞的陈词滥调,而是我们目前对神经可塑性的科学理解。每次学习,你的大脑都会形成、强化或重新排列神经通路。这意味着你有能力主动、有目的地塑造大脑的物理轮廓——这真是太酷了。认为人无法改变的信念不仅过时且错误,而且危险,它会导致人们将可塑性特质和技能视为不可改变的常数。
不过,还有一个小问题——为了学得更好,你需要相信自己确实能够学习。打破诸如“编程和数学很像,我根本不擅长数学”或“我永远不会成为编程专家,因为我起步太晚”之类的限制性信念,这样你的学习就会更加顺利。
智力并非生来就注定。相信我,我写过一篇心理学论文。或者别相信,因为说实话,几年前写过一篇论文并不意味着你就是专家。但请相信当今的学术界。虽然关于基因在多大程度上决定了我们的认知能力一直存在争议,但任何人都可以极大地塑造自己的智力这一事实已无可争议——一点儿也不。相信智力不是一成不变的,而是可以通过自身努力发展起来的,这种信念也被称为成长型思维模式。这也是你希望应用于编程的思维模式。
9. 不,编程并不容易,这很棒🏃♀️
另一个值得牢记的预期是,编程很难。别指望它会变得难。从零开始学习编程真的不容易,尤其是对于从未做过类似事情的人来说。这是一种全新的思维方式,有效推理抽象概念的能力需要一段时间才能培养。
不要因此而灰心丧气——遇到困难,需要一遍又一遍地重温你自以为已经掌握的概念,这完全正常。随着时间的推移,你会越来越善于提出正确的问题,并清楚地知道自己不知道什么,但永远不要指望自己能脱口而出地知道所有答案。
10. 让眼泪正常化💧
这最后一条建议既是给你的,也是给我的。在编写代码时,感到些许不适是正常的,尤其是在遇到挑战性的情况时——这种情况会有很多。成功部署应用程序时感到高兴是正常的,同样,当 CORS 再次来袭、一切无法正常工作时感到难过也是正常的。
不同的人有不同的情感跨度。出于文化因素,坦白说,还有性别歧视,这个行业通常会吸引特定类型的人。通常,你不会把这类人与展现各种情绪联系起来。(这是一个过于简化的概括,但就本文的目的而言,它已经足够了。)
如今,情况正在发生变化,随着更加多元化的劳动力进入这个行业,我希望我们能逐渐在软件工程环境中将情感正常化。就我个人而言,我对情绪谱系两端的感受都十分强烈,我希望摆脱那种认为表达积极或消极情绪在某种程度上是可耻的,或是软弱的表现的想法。相反,将情感和同理心带入编程环境是一种额外的好处,因为毕竟,使用我们软件的人也只是普通人,能够设身处地为他们着想,才能提升产品的质量。
结论
我希望以上建议对您有所帮助。我承认我们每个人都是独一无二的个体,因此我们的“最佳编码实践”可能有所不同。对我有用的方法不一定适合您。例如,如果您是那种不介意长时间工作和周末加班的人,那么您也许可以用一半的时间达到我现在的水平。但平均而言,我认为以上建议足够通用,可以适用于大部分阅读本文的人。
感谢阅读,祝您编程愉快!或者,也祝您编程愉快,尽管有些伤感。无论您的感受如何,都是合理的。