打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
原来,豌豆荚大牛是这样搞定新平台的...| Live干货回顾

作者|范怀宇
编辑|Emily
如何形成牢固的金字塔型的知识结构?怎么样从本质上提升存量知识和学习能力,进而快速掌握新的技术平台?在这里,你或许能找到答案。
程序员在实际操作中都会遇到哪些问题?

当我们成为或者打算成为程序员,经常会面对这样的问题:

  • 我想学习 Andorid,该如何入手?

  • 小程序很火,想了解一下,该怎么开始?

  • 公司用了 Java Spring 的后台框架,我要如何快速跟上?

  • 公司要做新项目,可以从零开始做技术选型,我要怎么样做决策?

......

这主要涉及快速学习新平台的切入点、方法论,和相关的工具等问题。本文将结合我学习 Android、小程序、不同后端框架的经历,帮助大家构建自己的方法论,提升快速学习的能力,能更从容的拥抱未来的挑战。

知识体系=存量知识+学习能力

 金字塔型知识结构

我们往往希望自己在程序相关的知识领域是一个金字塔形的知识结构,它有这样的3个特点:

1、有层次-对不同层次的问题都有所了解;

2、有高度-在某个特定领域下的理解是有专业深度的;

3、有广度-对编程语言有很好的延伸,是一个非常全面的构成。如对编程语言不仅会原生的C ,可能还会Java这样的托管,可能也会懂一些脚本语言如JS等,有个全面的了解。

在实际工作中会有很多的工程师,知识结构确实是金字塔型的,但这个金字塔形结构有会有一些空心的地方,可能对某些语言不是那么熟悉,但并不影响他构建金字塔形的知识结构。但是怎么样形成一个稳固的一专多能金字塔结构呢?这就要构建一个自己的扎实知识体系。

 知识体系的构建

一个人的知识体系其实是等于存量知识 学习能力。虽然有一些暂时不知道的技术领域,但是他有很好的学习能力,当需要到时候能非常快地把这块技术学透,去应用。这样就能够迎接这个行业随时会出现的变化,来解决实际的问题,学习能力可能对于我们在这个行业持续的发展有非常重要的价值。

另一方面,存量知识在本质上也非常重要,它是解决眼下问题最重要的基础,其次,它能改变你的学习曲线,因为当你有存量知识背景的时候学习知识更快一些。第三,我们讲的如何快速掌握新技术平台,实际上是希望能在现有基础上提高一些效率,本质上和存量知识是紧密相关的,存量知识很丰富的话,你的学习速度就会变快。

而存量知识的积累是需要时间慢慢积累的。当行业变化太快时,学习一些新的方法,提升自己的效率,加之存量知识的持续积累 ,自己的学习速度就会越来越快起来。

如何学习新的技术平台?

我对技术平台的理解是:把技术领域的书架子落地到具体的开发平台,也就是把技术知识变成具体产品。

大部分人的操作会是:拿一个现成的代码,先跑起来,然后再改。我不建议这样子,虽然能解决问题,但本质上会埋下很多的坑。正确的做法应该是:对编程语言的了解至少能实现开发,包括基本的语法能写的出来、在运行时有充分的认知,然后弄清楚功能类库的用法。

理解平台的编程模式,也就是运行时的运用,是真正快速掌握一个新平台的关键所在。不管什么目标,都需要对运行时了解才行。

需要从MVC的视角看平台,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范。MVC=运行时+类库。其中,编程语言是基础,类库体现了平台的能力,如界面库、数据获取、工具库等能力。运行时体现了数据和界面的连接,体现了程序在运行阶段和系统的交互方式,理解运行时,就是了解了平台的编程模式。

参考下图:


举例:如何学习android开发?学习android开发该怎么入手?

学习之前先列一些问题,后期的过程当中做一些问答,最终弄成一个问答表-这是最好的手册和最好的复盘资料。我平时会写一些博客,不是刻意去写这些博客,而是把问答表拿出来写成博文复盘,在这个过程中会重新认识这些问题。有些问题之前理解的不正确,或其他人给我提一些意见,都会是对问题重新的认识,这个过程中可能还会产生新的问题,然后再产生新的认识后发布在博客上。在这样的模式下,有层次有规律的把一个问题弄清楚。

构建反馈系统。两三天的学习,回答了一些问题也产生一些新问题,再用几天的时间用来实践,然后反复再发现问题,再实践。学习和实践迭代进行,实践,是检验认知的最重要手段。



如果给你两周时间,如何在Android上开发一个内容应用?



什么是好的学习素材?
  • 官网是最好的学习资料,会有重要概念和核心思想的介绍,不擅长英语阅读的人,可以临时去github等中译版。

  • 其次是开源的平台,会有源代码,是后期进阶的最好素材,定位问题的最佳手册。(小米首席架构师崔宝秋也在二叉树采访视频中提到:读代码是程序员学习的第一步,只有你读了大量的代码,读了不同风格和领域的代码,才能够真正提升自己的功底,读了很多高手的优质代码以后,才能够快速提升自己写代码的能力。)

  • 如果需要更系统化的东西,更推荐书本或者付费视频成体系的内容。

  • 代码的demo示例:在线的github等的示例是最好的。

  • 搜索引擎:中英文都可以,但是英文的关键词更方便些,对于小程序的话肯定是中文搜索。

最最重要的,是要动手,保证更新迭代频率,读代码还只是纸上谈兵,真正要成为一个编程高手必须写,只有动手才能得到反馈。

Q&A

1、怎么阅读没有文档的源码?

现实情况下,大部分都是在没有文档的情况下理解源码的,至于怎么去理解其流程、核心设计、甚至重构,不要太早的在意细节,首先定下来我的目标是什么,然后围绕目标产生的一些问题,列下来,比如在哪个地方或者调用了一个函数等。有了概要的理解后,再回到具体的问题,看某个问题是最影响代码的哪个部分,再去解决这个问题,最后把这些写成心得总结写到博客还能帮助到他人。

2、移动端是不是可以考虑转行?如果转行做什么好?

转行其实是个伪命题,如果你保持对深度对广度的追求,保持一个持续的了解,你会发现你觉得一些好的东西会在新的平台上出现,而这时候去做转行是一个非常顺理成章的事情,因为你对这个问题的关注不是个偶发的、临时的,而是保持学习,过渡也不是陡峭的,而是顺其自然的就移动到了新的平台。至于做什么好?其实是自荐的,随着你去关注一些新得平台,什么东西有了很多有趣的东西,那你逐步就会看得到,自然也就知道下一步该去做什么。

3、如何带动起团队的工程师气氛?现在目前团队各种闷骚寡言,年龄跨度也大

本质上工程师氛围和闷不闷骚没有太大关系,因为本质上是让工程师有一些空间做自己的事情,需要用工程的手段连接大家,鼓励大家来分享一些东西,想一些活动组织大家做一些讨论,打破大家平时不愿意沟通,或者是沟通的东西不在一个层面上,去做一些这样有明确目标的活动,整个讨论氛围会更好一些。这些都是从而促进工程师间的互相沟通,互相碰撞的一些策略。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
零基础如何自学编程?
国内首款儿童编程在线学习系统上线!
编程能力的四种境界
学习Java必须避开的十大致命雷区
真人工智能招聘(微信群答疑)
Gravity:一套代码跨IOS和Android两平台
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服