面临Java发展迷茫的新手求助,该如何构建自己的技能树?
初入职场的新手常常会因为面对过于广泛的领域选择而感到迷茫,特别是像Java这样的流行技术,其应用范围广泛,使得入门者难以确定学习的方向。一位刚工作半年的小伙伴在微信上向我咨询了这个问题。他对于如何构建自己的技能树,如何选择学习的方向感到困惑。我深刻理解这种迷茫,因为这是一个非常普遍且重要的问题。不知道要学什么,当工作之余空闲时,可能就只能通过浏览新闻、看小说、打游戏等方式消磨时间,这对个人成长和增值并无益处。我想就这个问题与大家进行探讨。
在我看来,开发过程中的学习策略主要有两种:广度学习和深度学习。如果能很好地结合这两种学习策略,就会逐渐形成程序员最理想的技能结构——T型结构。也就是说,一方面要拥有广泛的知识和技能,另一方面又要精通某一特定领域。简而言之,就是要做到一专多能。
广度学习:
以C++语言为例,如果你从事网络开发,就会面临选择哪种框架的问题。是选择libevent、ACE、Asio还是Qt Network?如果你从事GUI开发,又该如何在Qt、CEF、MFC、wxWidgets、DirectUI之间做出选择?了解和选择这些框架的过程,就是个人广度学习的过程。这个过程会让你快速了解各种框架的优缺点,让你在实践中学习如何搭建环境,如何写Demo验证关键技术点。这个过程不仅能够快速拓宽你的知识面,也建议你把每次了解到的技术框架都记录下来,有闲暇时可以深入学习。即便你不是预研技术方案的工程师,而是参与产品开发,也可以主动去了解、选择技术框架,了解为什么选择这个技术而不是其他技术。这样以点带面地学习,可以拓宽你的知识面。
深度学习:
大多数时候,我们会使用一门语言和一两种技术框架进行软件产品的开发,这就是进行纵向深入学习的绝佳机会。对技术框架的学习可以分为三个阶段:基础开发、熟悉内核及原理和框架优化。以Qt为例,当我们经历第一个阶段后,需要继续深入学习其原理和内核,熟悉源码,并在此基础上进行优化和完善。只有这样对一个框架真正掌握后,才能在深度上提升自己在该项技术上的价值。因此建议大家在有空闲时梳理自己用过的技术框架,选择当下工作中仍在使用的进行深入学习。
最后我想说,不管是广度学习还是深度学习,都是从实际需求出发的。因此明确的学习目标至关重要。最好的学习时机往往是在工作中遇到问题时进行学习。同时如果想学习与当下工作内容无关的知识和技能为未来投资的话最好为自己设计一个软件项目用你想掌握的技术去完成它实践是检验知识的最佳方式。总之没有需求要创造需求没有问题要创造问题只有有了明确的目标和学习动力我们才能持续不断地学习构建自己的技能树实现个人价值的不断增长。 |