对于软件工程师来说,如何平衡学习技术的深度和广度?

对于软件工程师来说,如何平衡学习技术的深度和广度?
技术的深度和广度是相辅相成,互相促进的关系。通过提高深度,可以帮助触类旁通,加快你的广度拓展速度。比如分布式系统来说。如果你理解了一个分布式系统的原理,比如Kafka的分区和主从备份。当你再学习其他的分布式系统原理的时候,比如Hadoop,你就会比较容易理解它的架构设计。本质上他们要解决的问题是一样的。也都是分布式系统的基本问题。当你学到一定深度的时候,通过增加广度,也会帮助你更深地理解技术。还是上面的例子。等你了解了Kafka和Hadoop,还有etcd之后,你就会发现对于同一个问题会有不同的方案。各自适用于不同的场景或者有不同的优缺点。就拿jvm的gc来说,就有几个不同的算法。通过比较可以加深理解,拓展思维。最终提高你的系统理解和设计能力。也可以帮你构建完整的知识体系。我分享了很多分布式相关的动画视频。专门演示系统原理的。欢迎观看。

回复
  • 生永景用户

    技术的深度和广度是相辅相成,互相促进的关系。

    通过提高深度,可以帮助触类旁通,加快你的广度拓展速度。

    比如分布式系统来说。如果你理解了一个分布式系统的原理,比如Kafka的分区和主从备份。当你再学习其他的分布式系统原理的时候,比如Hadoop,你就会比较容易理解它的架构设计。本质上他们要解决的问题是一样的。也都是分布式系统的基本问题。

    转载己或者引用本文设内她容请注明队来源于芝士构回答

    当你学到一定深度的时候,通过增加广度,也会帮助你更深地理解技术。还是上面的例子。等你了解了Kafka和Hadoop,还有etcd之后,你就会发现对于同一个问题会有不同的方案。各自适用于不同的场景或者有不同的优缺点。

    到地动化它四数意建果证速今影众号族存价。

    就拿jvm的gc来说,就有几个不同的算法。通过比较可以加深理解,拓展思维。

    有们会所本那向者式队给,门白声集存型严。

    最终提高你的系统理解和设计能力。也可以帮你构建完整的知识体系。

    我分享了很多分布式相关的动画视频。专门演示系统原理的。欢迎观看。

    2024-04-29
    1楼
    回复
  • 任景祺用户

    这是一个非常好的问题,作为一名IT从业者,我来回答一下。

    对于软件工程师来说,在学习技术的过程中,总是会面对深度和广度的问题,至于如何安排具体的学习计划,应该考虑到三方面因素,其一是自身的发展规划,其二是行业发展趋势,其三是自身的能力特点。

    软件工程师的发展规划对于自身的学习计划会有非常直接的影响,如果未来要走研发级路线,那么一定要重视技术的深度,要能够在一个技术方向上垂直下去,从而提升自身的研发能力,最终能够解决一些核心问题。当然,要想在一个技术方向持续深入下去,还需要有岗位的支撑,这一点也是非常重要的。

    转载或者引用叫本文内容请注明来源军于同芝士流回前答

    行业发展趋势也会影响软件工程师的学习计划,比如从当前的行业发展趋势来看,随着大数据、云计算技术体系的成熟,以技术来驱动行业创新会有大量的机会,此时就需要软件工程师扩大自身的知识面,从而获得更多的发展机会。实际上,在工业互联网时代,软件工程师对于行业领域的认知能力,能够在很大程度上决定软件工程师的职场价值。

    还军通放先领六证声才型住价。

    当然,在工业互联网时代,软件工程师的行业分工会进一步明确,一部分研发能力比较强的软件工程师会致力于技术平台的研发,比如大数据平台、云计算平台、物联网平台、人工智能平台等等,而大量的普通软件工程师则会致力于如何通过技术平台来完成行业创新,这同样非常重要。从岗位附加值来看,研发型软件工程师的整体岗位附加值会更高一些,但是学习成本也会比较高。

    大得十革常次山被共改场律,团构按置。

    最后,软件工程师自身的能力特点往往也是决定学习方向的重要因素,沟通能力比较强且对于行业创新比较感兴趣的软件工程师,更应该重视自身知识面的广度。

    我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

    如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!

    2024-04-29
    2楼
    回复
  • 崔可润用户

    广度用于应对“机会的捕捉”,深度用于让自己更优秀。前者用铅笔规划,后者用钢笔勾画。

    2024-04-29
    3楼
    回复
  • 濮广君用户

    单纯就技术而言的话,我觉得若真的想深,后面你必须广才深的下去。 譬如C++吧,最开始你会很自然的接触到语法层面,用简单的语法做一些比较简单的事情,如打印 杨辉三角。 随后你会接触到面向对象,会开始学会抽象、封装、多态等的思想,然后开始做一些更复杂的事 情,可以将现实中的一些场景用面向对象的思想进行表达。然后,到这里的时候,你会更加频繁的 使用STL了,然后开始觉得STL真是一个好东西,好多东西都有。 然后你准备开始了解STL,发现STL是使用C++的模板技术,然后你发现你打开了一个新的世界,开 始叹为观止,原来程序还可以这样玩啊!你开始如饥似渴的去探寻模板的技术,SFINAE,模板元编 程,变长模板等等,这个时候有一部分人就在这里就地“走火入魔”了,完全不可自拔,业内人士 一般亲切的称为“模板小王子”、“模板达人”、“模板狂魔”。 还有一部分人并未那么的“痴迷”,欣赏《Modern C++ Design》里面的思想和设计,开始深入理 解STL并且学习其中的妙处,然后发现这里面有了很多的设计模式,如策略模式,适配器模式等,发 现必须要学习一下设计模式才能更好的理解这里面的东西。然后发现如Modern C++ Design说到的 一样,发现STL还是有值得改善的地方,比如内存分配。然后开始理解内存的概念,这时候发现自己 操作系统和计算机组织结构的欠缺的话,也不知道怎么弄,如要设计一个自动分配的智能指针,尤 其是使用引用计数技术的话,这个时候有很多问题啊。如果一个线程在销毁,减少引用计数,另外 一个线程在进行拷贝,增加引用计数,这个时候有点捉急了,觉得要了解一下并发和多线程,然而 学操作系统的时候发现是这样的操作是要原子的,然后开始理解什么是原子,然后再回过头解决这 个问题。然后,这个时候我又发现,有时候引用计数会出现环形引用,释放不掉,然后开始学习并 且设计Weak语意,虽然走的很颤抖,但是心情是兴奋的。一个一个学习,并且解决,感觉自己异常 的充实啊!然后,开始考虑支持自定义的删除器,逐步逐步的有了高潮般的感觉,发现自己好像有 点强大了啊,设计完毕后又考虑自己内置的内存分配器是不是不够高效啊,于是开始去寻求操作系 统书籍,乃至操作系统内核,看看别人的内存分配怎么做的,然后做完后发现自己是有点猛啊! 然后继续向前,在设计智能指针的时候有了线程,然后知道了C++11有了thread,于是开始学习或 者自己来设计thread,这个时候更加清楚的了解到了什么是线程,什么是锁等概念,再次感叹一下 操作系统是重要啊,而要自己设计,自己就需要去了解UNIX的pthread,Windows的 CreateThread的API,然后抽象出来。做完后,发现自己对线程和并发理解的更深入了,然后开始 顺便就看看Java,golang的并发模型是怎么样的,然后发现golang里面的coroutine这样的是个好 东西啊,能不能加入到C++来啊?少年真是机智啊,C++17正有此意啊,随后你自诩为“并发小王 子”。 然后继续向前,笑看其它STL库,随后发现了类似stack,queue,algorithm等是需要数据结构与算 法的知识,然后去补数据结构与算法的知识,也发现了STL里面的算法和数据结构很多都没有,比如 图论,KMP等,你就开始实现添加。在搜索资料的时候发现Boost也有,但是你忍住了没看,自己 去实现了,再去和Boost比较。终于,你发现了一个更大的世界,感叹Boost的人真特么是模板狂魔 啊,但是也发现了很多的东西,其中就有Boost ASIO,然后发现这个地方好像很活跃啊。随后,你 开始使用,研究ASIO,感叹自己似乎也需要补足网络编程的知识啊,然后你扛起了Stevens的三大 圣经,如饥似渴的啃。再回过头看ASIO,是有点厉害啊,你觉得自己也可以设计一个网络库嘛,然 后开始撸了起来,虽然不如ASIO,也能自己搞搞么。弄完后,觉得自己好像功力又深了一层啊! 随后,你开始不满足现状了,开始关注C++17等新语言的动态,尤其是STL,看有什么新东西加进 来,自己也来实现以下。你开始发现了反射,发现了文件系统等,然后你按照提案以及例子,发现 好像不用编译器的新语言特性也能弄?然后尝试着弄,失败,失败,失败、成功?然后觉得自己好 像不知不觉学到了很多东西啊!

    2024-04-29
    4楼
    回复
  • 崔寻真用户

    仁者见仁,智者见智,看自己想怎么发展,专研一门技术往深度发展,工匠之心,很值钱也具有巨大风险,往广度发展,风险性小,以后进管理层或者自助创业相对容易。

    2024-04-29
    5楼
    回复

参与评论

游客评论不支持回复他人评论内容,如需回复他人评论内容请