编程基础学习计划

之前半年初步接触了编程,并在实习中学习了很多数据分析的知识,面对基础的数据分析是足够的,可是面对更深层次的分析,我相比科班出身还是有很大的差距,目前已经意识到的问题包括代码编写的不规范,无法准确判断算法的复杂度等等,这些都是需要重新学习一下基础知识,所以才打算写下这个计划。

说是计划,其实更多是网上资源的汇总,毕竟网上的前辈更有经验。首先需要说明的是,我个人的规划是偏向于数据分析方向,我希望通过学习,我能够具备完整开展一个项目、结合数据进行分析、根据结果制定相关策略的相关技术要求。除此之外,对于机器学习、深度学习我也很感兴趣,实际上,真正让我爱上编程的,是Alpha Go战胜人类的那个故事,所以,这些都是我的计划目标。

制定计划之前,我认为了解求职过程中公司对这些岗位的要求,通过这些要求再制定计划是更有效的,在这里,我选取了google的两个职位的信息:Strategic Cloud Engineer, Machine Learning or Big Data, Cloud Professional Services和Technical Solutions Engineer, Big Data and Machine Learning, Google Cloud Platform
ポジショニングマップ
ポジショニングマップ
其中提到相关的要求,包括:
(1)熟练掌握一门或多门语言(其中一个甚至指明是c++、java或者python);
(2)具有云存储解决方案,SQL数据库管理,云网络解决方案和/或分布式计算技术的经验、拥有一项或多项Google Cloud Big Data产品(Dataflow,BigQuery,Pub / Sub等)或开源或专有等效产品(Apache Hadoop,Spark,Beam,Kafka,Cassandra等)的经验;
(3)有一种或多种Google云端机器学习产品(Tensorflow,语音,自然语言等)​​或商业/开源等效产品的经验、具有核心数据科学技术的经验,如回归,分类或聚类,以及深度学习框架(如TensorFlow,Torch,Caffe,Theano等)的经验;
(4)有使用推荐引擎,数据管道或分布式机器学习的经验,以及数据分析和数据可视化技术和软件的经验;
(5)了解数据仓库概念,包括; 数据仓库技术架构,基础架构组件,ETL / ELT和报告/分析工具和环境(例如Apache Beam,Hadoop,Spark,Pig,Hive,MapReduce,Flume)。

除了以上要求,因为我不是科班出身,所以还有一些相关的基础需要补充学习。首先当然是Java和python基础的巩固,然后主要就是数据结构和经典算法的学习,根据网上一些前辈的分享,递归也是一个需要重点学习的内容。

根据上面提及的内容,最终就得到以下的学习顺序,首先重新学习Java基础,深入理解后,再学习数据结构,之后学习算法,结合学习到的知识,对交通大数据项目代码进行分析改进,这是第一部分。

此时应该已经具备一定的基础,如果发现还有需要补充的则根据实际情况安排学习,然后就是转到python的学习,python主要觉得对机器学习的支持较好,很多框架模型通过python都可以较容易实现,利于学习,所以先学习python,主要就是希望能把交通大数据的代码用python重写一遍。然后就是linux系统的基础学习,因为目前已经对linux有一定的了解,所以就进一步学习linux较深入的原理等,对linux的知识进行全面的补充。学习到这个阶段,应该具备刷leetcode的能力了,所以应开始刷题了。

之后就是数据分析方面的深入学习,这里有两个方向,一个是机器学习,一个是大数据分析。暂时选择先学习机器学习,然后再了解大数据处理(Hadoop、Hive等)。之后还有tensorflow这个框架的学习,最终,希望能完成生物信息提取系统的改进,这将成为另一个主要研究项目。