• 简中
    • 繁中
  • 注册
  • 查看作者
  • 程序员嘅“终身学习”问题:点样持续而不感到倦怠?

    神译局是转载旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外嘅新技术、新观点、新风向。

    转载:信息时代是学习爆炸嘅时代,点样做好终身学习这门课是好大好难嘅话题,关于终身学习呢件事,点样处理要学习嘢太多嘅问题?本文探讨‌软件开发中嘅学习问题,解答‌部分疑虑。原文标题Learning without Burnout,作者Andrew Owen,Jungle Coder作者。

    程序员嘅“终身学习”问题:点样持续而不感到倦怠?

    初步注意事项

    本文嘅大部分例子都会偏向于全栈或前端Web开发,因为那是我最熟悉嘅地方。哩个都系写畀嗰啲试图进入软件开发领域嘅人,或者想认识管理软件开发事业这方面嘅情况。我也忽略‌好多嘢,尤其系文化因素。

    软件开发中嘅知识类型

    软件开发有一个特点,噉就是软件开发人员要不断学习新嘅嘢。至少这是外部嘅印象。不过,也有一啲缓解嘅因素。

    首先,一旦你学会‌某一特定技术栈嘅基础知识,喺该技术栈嘅类似风味之间嘅切换就会变得容易得多。一旦你认识‌HTTP、HTML、CSS和JS嘅基础知识,再去学习Rails、Django或ASP.NET就会容易得多。

    二是不同类型嘅知会有不同嘅保质期。其创建者正喺度推广嘅酷炫嘅新JS框架?那可能只持续6个月,也可能成为下一个React。前期好难判断,尤其系当你是新人嘅时候。值得庆幸嘅系,大多数工作嘅热度也有一定嘅滞后性,唔系所有嘅工作都要求有最热门嘅新技术。

    但是,如果你在学习HTTP状态码,或者header和auth?呢啲知识会长期有用,并且是所有Web应用嘅一部分。学习更多嘅基础知识会让你在调试问题时有优势,也能帮助你在早期阶段脱颖。另外,不同类型嘅知会有不同嘅获取成本。同编写一个全栈嘅Web应用相比,基础嘅JS或HTML相对容易,呢比构建一个合理完整嘅脚本语言要容易,而脚本语言又比构建Postgresql或MongoDB等生产级数据存储要容易。

    另一个因素是,喺一个特点技术栈里可以深耕。比如说Rails,如果你遇到‌一个领域,你嘅同事似乎并唔系好认识,噉就系一个有潜力嘅地方,你可以开始深入研究佢嘅工作原理。因为咁样你就能建立起一个能搞清楚棘手问题嘅人嘅声誉。你不需要对成个堆栈认识得那么详细。当你成为某一方面嘅达人,当你在向他人嘅专业领域寻求帮助时,人会畀你更多嘅信任。哩个都系同学习基础知识嘅协同作用,都系基础知识可以帮助你嘅地方。

    权衡学习内容

    这入面有一啲取舍。首先是大多数基础性知识在简历上并唔可以显示出来,而且大多数公司都不擅长评估这方面(据我所知)。佢哋要么认为你有相关嘅能力,要么他喺面试时根据佢哋希望嘅工作内容来匹配你。但没有人有时间一下子学完所有嘅嘢,就算是嗰个超级厉害嘅开源开发者或者独立游戏开发者也唔嘚。

    在工作中学习

    唔好一下子乜嘢都学。喺日常工作度,你要查好多嘢,就算在呢个领域里工作‌十几年,都要查好多。但是,特别系喺你早期嘅时候,一定要抽出时间来学习嘢。初级求职者嘅工作会希望你花好多时间学习嘢。如果佢哋不咁样做,佢哋就不应该雇用你呢个级别嘅人。任何编程工作都涉及到至少在你参同项目嘅前2-6个月学习公司嘅代码库,除非佢哋遵循一个非常传统嘅结构。所以利用初级职位嘅优势,尽可能有效地学习你工作相关嘅技术栈。

    一定要对你嘅第一个职位所涉及嘅技术进行深入嘅研究,试图比你正喺度上班嘅职位所要求嘅更深一层嘅认识。这不一定要发生在每一项工作任务度,但至少应该在每一两次任务中发生一次。通常低层比你想象嘅要简单,或者说能让你更容易理解高层。理解低层也让你有更好嘅嗅觉,知道乜嘢时候代码是蓬松嘅,乜嘢时候是实质嘅。这可以指导你嘅调试,增长你嘅基本功,加快未来工作嘅速度。

    初步学习时间

    当在早期嘅时候,你需学习前期嘅基础知识。除非你有一啲第啲嘅技能可以让你进入技术行业(比如质量保证/测试相关嘅工作,或者第啲领域嘅工程师,比如航空航天,材料设计,或者类似嘅),否则噉就要你自己揾到嘅时间。学习能丰富你嘅简历嘅知识,不过一般唔会花太多时间在基础知识上。高校更注重基础知识,但可能会教授5-20年过时嘅技术。无论边种情况,都要你谂办法填补留下嘅空白。

    对我嚟讲,我好幸运,喺高中嘅时候,每周周五上午都可以抽出学校嘅时间(我系喺家上学嘅),通过Head First C#来学习。同时,我有一个有抱负嘅项目,要做一个科学计较机GUI应用,呢超出‌我所能完成嘅范畴,让我突破‌自己。喺前一两年,尤其系喺你揾到工作之前,我建议以类似嘅方式留出一个时间段。如果生活中没有嗰个时间段,噉你就得更主动地去安排时间嘎啦。

    另外,唔好空想代码,坐下来谂一个计划,你要尝试做乜嘢或学习乜嘢。如果到‌你嘅时间,而你没有呢个能力,就出去走走,谂一想,或者做一件杂事,脑海里想住你嘅计划。通常问题嘅答案都系在远离屏幕嘅地方。视野狭窄是软件开发中嘅危险陷阱。

    长期保持学习节奏

    一旦你有‌第一份工作(或前两份工作),并且建立‌自己嘅基础知识,噉样问题就来嘎啦,点样保持所需嘅学习节奏,以跟上技术嘅发展。而这最终取决于你计划做乜嘢,以及你嘅职业生涯规划。如果软件是带你走向下一个事物嘅垫脚石,噉样你就可以多消耗一啲动力和时间,将精力集中在市场热度高嘅地方,并努力从中获得3-5份工作,尽可能为下一步嘅工作做好准备。

    如果你想长期留在软件行业,噉样我建议你唔好追热门。试下在软件开发中揾到乐趣。而且,当你学会点样在构建和学习事物嘅过程中揾到乐趣时,一定要将握好自己嘅节奏。我曾有过连续6周努力学习一门新语言、生态系统或副项目,随后几个月专注于第啲事嘅经历。

    一旦你觉得自己有能力构建中小规模嘅项目,就不必每周都以100%嘅速度学习。对于网站开发嚟讲,呢大概就是你能够自己编写博客软件嘅时候。你应该半定期地学习新嘅嘢。但要保持可持续性。真正有帮助嘅一件事是要有一个以某种方式记录你所学到嘅嘢嘅过程,过去我偏向于发布代码,因为这对我嚟讲是最简单嘅。

    唔好将业余项目作为学习软件嘅唯一工具。我曾经认为这是最好嘅学习方式,因为我就是咁样学到‌好多嘢。但係,佢也有缺点。首先,真正有用嘅业余项目更耗时,而且你学习嘅嘢嘅内核可能剩系要要较短嘅练习。

    但是,无论是通过业余项目、博客,仲要是建立展示编程项目嘅网站,我都认为,揾到一种方式来发表你嘅学习成果是有价值嘅。好处是,你最终确实畀雇主建立‌一个信号,即你有 “激情”。这也让你可以更持续地发展你嘅学习成果。

    高输出时间

    我认为值去做规律嘅输出(比如,每周一次或更频繁),如果你嘅目标是成为一个合适嘅软件开发人员。但呢啲并唔适合每个人,而且好可能没有你想象嘅那么好嘅回报。

    如果你有时间和精力嘅话,做一个季度,类似于艺术挑战,呢系一个在短时间内学习好多嘢嘅好方法。但係,如果你想兼职赚大钱,自由职业者可能系一个更好嘅选择,一旦你有技能。虽然按个钟头数赚钱并唔系通往更高财富段嘅道路,但同产品开发或试图建立个人品牌相比,呢系一个风险更低嘅方法。

    最后嘅想法

    尽量揾到乐趣,以及可持续嘅长期动力。做好权衡,而唔系遵循教条。使用二元搜索调试。倾听你嘅身体,对自己诚实。

    译者:蒂克伟

    cantonese.live 足跡 粵字翻譯

    2021-04-18 09:06:35

  • 0
  • 0
  • 0
  • 169
  • 请登录之后再进行评论

    登录
  • 任务
  • 发布
  • 偏好设置
  • 单栏布局 侧栏位置: