本文探讨了软件工程师在技术领域进行深入学习的策略。文章以JS异步控制为例,强调了深入理解技术规范与实践的重要性。虽然不必事无巨细地深入所有技术细节,但对核心概念的深入理解,如Promise的本质,能帮助工程师更好地解决问题。作者提出了一个问题:对于普通软件工程师而言,哪些技术领域是值得深入学习的,以及如何加深对异步编程等核心概念的理解。
🤔 深入理解技术规范与实践:文章以JS异步控制为例,强调了对技术规范如Promises/A+的深入理解的重要性。通过实践,可以更深刻地理解异步编程的本质,以及它解决了哪些问题。
💡 核心概念的深入理解:文章建议,对于核心概念,如Promise,不应仅仅停留在了解层面。深入学习其本质,理解其解决的问题和实现方式,能提升解决问题的能力。
📚 技术选择与精力分配:文章指出,工程师需要权衡学习的广度和深度,将有限的精力投入到更重要的技术领域。不必事无巨细地深入所有细节,而是选择那些对职业发展有关键影响的技术。
🧐 异步编程的学习方法:文章提问,如果不去了解Promises/A+等规范,想要加深对异步本质的理解,应该学习哪些方面的内容。这暗示了对异步编程的理解需要多角度、多层次的思考。
原帖提了一个面试题,用来考察对 JS 异步控制的熟悉程度。
个人在学习 JS 时特意看了一遍 Promises/A+ 并尝试实现过,感觉这类东西跟算法等计算机基础课一样,平时工作中肯定用不到,99% 的概率不需要你手搓一个 Promise 或事件循环之类的东西,但仅读过文档说明,跟真的参考规范并尝试实现过,理解程度肯定是不一样的。
又或者以 Java 举例,仅了解 Java 语法和标准库,和深入探索过 JVM 的各种机制与细节,在线上排查 OOM 问题的时候,思考的层次和维度就会不同。
然而人生苦短,学海无涯,没人且没必要事无巨细地深入到这种程度,需要将有限的精力投入到更重要的地方去,所以才有此疑惑:
对一个软件工程师(而非研究人员或特定领域的技术专家)来说,技术领域什么才是值得深入学习的?
或者回过头来,仅以 Promise 为例,如果不去了解 Promises/A+ 等规范,想要加深对异步本质(是什么,解决了哪些问题、如何解决)的理解,应该去学习哪些方面的内容呢?