极客时间已完结课程限时免费阅读

25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?

25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?-极客时间

25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?

讲述:李智慧

时长09:43大小8.87M

你好,我是李智慧,又到了我们模块答疑的时间了。在这个模块里,我主要讲了大数据开发的实践,所以今天我想和你聊聊我在大厂里学到哪些经验。
软件编程大体上可以分成两种,一种是编写的程序直接供最终用户使用,针对用户需求进行开发,可以说绝大多数工程师开发的绝大多数程序都属于这一种;还有一种是编写的程序供其他工程师使用,大到全球通用的各种编程语言、编程框架、虚拟机、大数据系统,小到公司内部,甚至团队内部自己开发的各种工具、框架,以及应用系统内的非业务模块,都是属于这一种。
一般说来,后一种编程因为输出的程序要给其他工程师使用,接受专业同行的审视,而且被复用的次数更多,更偏向底层,所以通常技术难度更高一点,开发这样的软件对工程师的技能提升也更高一点。技术产品难度有难易之分,正如工程师水平也分高下,但是两者之间却没有必然联系。
这些年,我在各种不同的公司工作过,在几个人的小作坊开发过只有几个人使用的所谓 ERP 系统,也在所谓的大厂参与过全球顶级的大数据系统的开发,据我所见,优秀的人哪里都有,大厂里优秀工程师更多一些,但是小作坊里有时候也卧虎藏龙。
导致工程师技术水平不同的不在于是大厂还是小作坊,大厂里有十几年如一日拧螺丝钉的人,在一个极其狭窄的技术产品里重复技术细节的工作,对这些年的技术进步几乎一无所知;小作坊也有自己开发整套技术框架的人,虽说是重复造轮子,但是因为造过,所以对软件开发的关键技术和架构设计有更深刻的领悟,软件设计能力和编程技巧通常也更胜一筹。
如果你有机会在大厂参与核心产品的开发固然好,如果没有,也大可不必遗憾,决定你技术水平和发展前景的最主要因素,不在于公司,而在于你所做的事。小厂因为人少事多,所以你反而可能有更多机会开发一些有技术难度的软件,比如为提高开发效率而给其他工程师开发一些工具,或者为公司开发一些框架供所有项目使用。
但是这些有技术难度的软件,能让你提高技术水平获得更好成长空间的开发工作,通常又不被公司重视,因为小公司做业务尚且忙不过来,去开发什么工具、框架,在老板看来简直是不务正业。而老板也很难慧眼识珠,安排你去做这些看起来不那么要紧的事。所以你需要自己去争取机会,有时候甚至要用自己的业余时间去做,等有了初步效果,能真正提高公司的效率后,你也会得到更多信任和机会去专门持续进行基础技术产品的开发。
大数据技术领域因为通常不用直接满足最终用户的需求,所以大数据开发者有更多机会去做一些底层技术方面的开发工作,比如开发大数据平台整合公司的数据和各类系统;开发数据爬虫获取外部的数据资源;开发 ETL 工具转换公司的各类数据,这些技术也是专栏下一个模块的主要内容。通过开发这些软件,一方面可以更好地利用大数据技术实现业务价值,另一方面对自身的技术水平提升也大有帮助。
前面我说过,身在大厂并不会保证你一定能参与开发有技术含量的产品,更不能保证你的技术能力一定会得到提升。但是我自己在阿里巴巴、在 Intel 工作时还是学到了很多,前面专栏分享的很多内容,都是我在这些地方学习到的。这里我再和你分享一个我在 Intel 学到的关于学习的方法。
在 Intel 之前,我学习技术主要就是从网上搜索各种乱七八糟的资料,有的时候运气好,资料比较好,学习的速度和掌握的深度就好一些;有时候运气差,就会走很多弯路。但是在 Intel,我发现一些比较厉害的同事,他们学习一样新技术的时候,不会到处乱找资料,而是直接读原始论文。通过原始论文掌握核心设计原理以后,如果需要进一步学习,就去官网看官方文档;如果还需要再进一步参与开发,就去读源代码。
我刚开始读论文时感觉很费劲,但是后面习惯以后,发现读论文真的是最快的学习方法,因为最核心的东西就在其中,一旦看懂,就真的懂了,而且可以触类旁通,整个软件从使用到开发,很多细节通过脑补就可以猜个八九不离十。而且越是优秀的产品,越是厉害的作者,论文反而越是容易读懂,可能是因为这些作者是真的高手,自己理得越清楚,写出来的论文越是脉络清晰、结构合理、逻辑严谨。
后来在学习区块链的时候,读原始论文很快就理解了个中关键,反而在跟一些所谓“资深”区块链人士交流的时候,发现他们在一些关键细节上常常犯迷糊,我就感到很诧异,中本聪、布特林在他们的论文中不是说得很清楚嘛。
下面我顺着今天的话题,来回答一下“sunlight001”同学的问题。
我认为,软件开发是一个实践性活动,不管是学习还是应用,最终都需要落到实践中。大数据技术也不例外,没有实践,就不可能深入,想要学好大数据,一定要实践。
而实践可以分为几个不同的层次。
第一个层次是练习实践,我的专栏剖析架构原理居多,这是专栏定位决定的,而且学习大数据真正的难度,或者说决定你技术高度的依然是你是否理解了大数据技术的核心原理。但是大数据的学习一定要配合练习实践,不管是 Hadoop、Spark、Hive 的部署,还是编程练习实践,网上的教程都有很多,step by step 入门学习的资料也很多。通过这些练习实践,结合专栏的原理分析,可以由表及里,从如何上手操作,到理解背后的原理机制,最后能够做到融会贯通。我看到专栏评论里很多同学贴了代码上来,一边学习一边实践,我们向这些同学学习。
通过练习实践和原理学习,掌握的是大数据技术的核心关键,真正对一个技术的掌握是需要掌握其细节,没有经过时间的积累,没有在应用中踩过各种坑、遇到各种挑战,没有对各种大数据技术思考再思考、研究再研究,就不可能掌握细节。所以,大数据实践的第二个层次是应用实践,在应用中解决问题,在实践中训练自己。
关于公司没有接触大数据的机会,一般是两种情况,公司没有用大数据,或者公司用大数据技术,但是你接触不到。对于前一种情况,大数据的价值已经成为普遍共识,你要想办法给老板献计献策,同时在同事间鼓吹大数据的好处,让老板关注大数据、使用大数据。如果最后老板决定使用大数据,那么他想到的第一个应该就是你,你的机会也就来了。
对于后一种情况,如果你已经经过前面的学习和练习实践,掌握了一定的大数据技术知识,申请转岗也可以,在自己的项目中引入大数据和大数据团队展开更多合作也可以,具体也会有很多办法获得应用实践的机会。
大数据实践的第三个层次是开发实践,大数据产品开发有两种,一种是重新开发,比如前面讲过的 Doris、Dew,自己从头设计开发一个大数据系统,这样对学习的好处是可以更深刻、更全面理解大数据。另一种就是参与开源大数据产品的开发,比如前面讲过的 Spark 源码优化,这样的好处是可以和全世界最顶级的工程师一起讨论问题,通过交流学习提高。我在参与 Spark 开发的时候,跟 Databricks、Cloudera 的工程师交流,这些人可能是大数据技术领域最顶级的工程师,跟他们交流收获最深刻的不是技术,而是对他们技术水平的判断,以及进而对自己技术水平的判断,并因此促使自己思考自己未来的技术发展之路与人生之路。
最后我想说的是,这个世界不是为你而存在的,别人根本不会在乎你的感受和你的问题,不会把你想要的东西装在精美的礼盒里打上蝴蝶结送到你的面前,也不会因为你想学习大数据而给你一个实践的机会。不过这样也好,你也不必在乎这个世界怎么看你,只要你想要,你就可以拼尽全力为自己去争取,你要为自己创造机会。
文章最后,我将Dr.ZZZ、纯洁的憎恶、吴科、galen这几位同学的留言,贴在今天的文稿里分享给你,希望同学们的思考也能对你有所启发。
如果你身边也有感到迷茫困惑的朋友,欢迎你点击“请朋友读”,把今天的文章分享给好友。也欢迎你写下自己的思考或疑问,与我和其他同学一起讨论。
分享给需要的人,Ta购买本课程,你将得20
生成海报并分享

赞 13

提建议

上一篇
24 | 从大数据性能测试工具Dew看如何快速开发大数据系统
下一篇
26 | 互联网产品 + 大数据产品 = 大数据平台
unpreview
 写留言

精选留言(15)

  • 纯洁的憎恶
    2018-12-25
    在这个信息爆炸的时代,很可能意味着噪音多过有价值的声音,那么过滤掉噪音直达关键信息的手段就显得格外重要。跳过网上良莠不齐的资料,直接查阅原始论文就是很好的策略。还有就是通过极客时间这样的产品,通过付费门槛和头部声誉过滤掉噪音。
    30
  • lzw
    2019-01-24
    请问,老师说到的论文,一般是怎么获取?

    作者回复: 根据产品名称可以用搜索引擎搜索论文,论文里有引用其他论文,有兴趣可以进一步阅读。

    共 2 条评论
    7
  • 修行者
    2018-12-28
    确实,如今信息太多,如何去甄别有用的信息及价值,显得格外重要; 1. 花大量的时间去对比,判别价值量 2. 通过一定的付费,用金钱去过滤一些无用的噪声 3. 听取比自己层次高的人的一些建议,而不是同等水平人的
    8
  • MJ
    2019-01-02
    问一个很笨的问题,查看论文的渠道,老师可否指点一二?

    作者回复: 百度就可以 MapReduce+论文,如果没有直接搜到论文,点进去通常也会有论文的链接。

    5
  • 晋鹏
    2018-12-25
    给大家推荐一些大数据相关的经典文章吧?
    共 1 条评论
    4
  • 落叶飞逝的恋
    2019-03-04
    只要你想要就拼命的取争取,非常好!
    2
  • special
    2018-12-28
    学习大数据接近一年,对Hadoop各种工具的特点、原理以及编程使用有较为全面的总结,大数据小白入门的好帮手。 欢迎关注公众号: 程序员的修身养性 一起交流学习!
    2
  • 2020-02-09
    跟着老师学习也不能指望一下子就学到许多知识点,之上对大数据有一个更深一点的理解,还有就是学习老师的学习方法,这个是通用能力,也易迁移。
    1
  • Geek_fe18e0
    2022-07-12
    老师您好!我是一名计算机专业的学生。我有意愿在毕业后进入大数据相关行业,但是我感觉很多大公司的大数据基础设施都比较成熟了,请问怎样才能避免自己将来成为sql boy(工作内容偏数据分析)呢?我这样的担忧是否是多余的呢?
  • penng
    2020-11-16
    这个世界不是为你而存在的,别人根本不会在乎你的感受和你的问题,不会把你想要的东西装在精美的礼盒里打上蝴蝶结送到你的面前,也不会因为你想学习大数据而给你一个实践的机会。不过这样也好,你也不必在乎这个世界怎么看你,只要你想要,你就可以拼尽全力为自己去争取,你要为自己创造机会。
  • 小老鼠
    2019-01-22
    你们这个性能测试工具开源吗?若不开源作为一个中小型公司用什么工具测试大数据比较好,另外请教大数据功能应该如何测试。
    共 1 条评论
  • 2018-12-26
    老师,我想租几台云服务器自己搭建练习,请问3台1核1g的服务器能搭建起来吗?

    作者回复: 有点小,可以单机部署的,也可以建虚拟机建集群

  • 阿神
    2018-12-26
    老师,一直有个问题,咨询了很多人都没找到我要的答案。MPP(像greeplum),MPP on hadoop(像HAWQ,Impala),还有spark sql,到底各自适合什么业务场景,企业该如何选型?
  • WesleyWong
    2018-12-25
    公司才开始使用, 我负责各组件的调研, 感谢老师的文章,让我更深入的了解各个组件. 最近遇到各种问题, 还要继续努力.
  • 观弈道人
    2018-12-25
    老师读论文一般都是读英文论文吧,这个难度真心有点大
    共 1 条评论