|
半路出家踏进这个领域的,基本上全部是靠自学的。下面是这些年来的自学途径(含未完成部分),目标是为未来的30年进行技术储备。换一句话说,今后三十年都打算搞技术。什么程序员三十岁怎么怎么,先把这句话践踏在脚下。
下面的图中,黄色部分是正看的(含看了七八年还没看完,但又不想放弃的的),红色部分是待看的,白色是已看的。打叉的是不想看的。
首先,是技艺部分。自学路线如下:
当然,中间还看过其它很多相关书,但我觉得那些书不是很重要,包括《设计模式》。
然后是领域部分。把软件开发分为三个领域:它的本身领域/行业应用领域和企业(政府)应用领域。
1. 本身领域
这张图中,我把领域分为四个维度:系统、数据、算法和网络。这四个维度在未来的30年中都会很重要。上面的书都是我个人觉得适合自学的书。
备注:
(1)别听Google咋呼什么操作系统会过时。操作系统在几十年内仍然是基础。嵌入式那一堆我不了解,但PC、服务器、移动设备未来可能仍然是Windows和*nix的天下,因此,一本Windows Internals和一本Linux内核的书就够了,两个操作系统对比着看,可以更深入的了解操作系统。
(2)虽说《计算机组成与结构》是《计算机体系结构·量化研究方法》的基础,但我觉得做软件的,可以不看《计算机组成与结构》,直接看《计算机体系结构·量化研究方法》,后者很易读很有用。
(3)不推荐自学者看《算法导论》,《算法导论》可作为手册来用。这里推荐的是《算法:X语言实现》和《算法引论》两本书,第一本书是基础,第二本书是讲思路的。
(4)《网络处理器与网络系统设计》一书的前半部分写的非常精彩、简炼,俺只翻过前半部分,后半部分不是搞网络设备的不推荐看。
下面是毙掉的:
(1)前面两个大家都叫好,但我实在静不下心来看,太抽象,毙掉了。
(2)离散数学太杂,但具体的主题又讲的太浅,基本上在每本书中都会讲一些该领域的数学基础,离散数学就可以不看了。想深入某一领域直接Google这一领域的paper就可以了。我没看一本离散数学书,感觉对后面的自学没有影响。作为替代品,我推荐中科大某老师写的《数学基础》(很遗憾的是,这本书我现在搜不到了),讲集合论的,看起来非常爽。
(3)《编译原理》我个人认为也可以不看。它很重要不假,但不是必要的。
2. 行业应用领域
行业应用的基础是数学。因此主要是复习和自学数学知识。未来几十年,IT会大量的向各行业渗透。因此,非离散数学比离散数学会变得有用。下面是俺的储备图:
嘿嘿,从上图可以看出,俺最近正在这一领域攻城掠地。
备注:
(1)线性代数非常有用,但太TMD抽象,学了就忘(大学中开了两门线性代数课,不好意思,毕业后马上忘记光了)。线性代数的核心是“变换”,但这玩意,对高维空间很难理解。因此,需要以复分析作为过渡,把复数运算作为一种变换来理解,然后再过渡到理解线性空间中的变换。复分析以前没接触过,扫了几眼那本《复分析:可视化方法》,突然感觉,对线性代数的理解深入一点了。
(2)《变分法》以前没接触过,接触之后发现很好很强大。
(3)行业应用的关键是数值分析。
(4)数值一般都是采样来的,因此,又需要了解《信号与系统》。
(5)随机、统计、模式分析,这些是随着计算机技术的发展大放光芒……
(6)上面的核心理论都是几十年一二百年前的,估计几十年内,不会过时。是计算机的发展,让这类计算变得可行了。
3. 企业(政府)应用领域
想了想,软件可能涉及的核心应用领域应该是上面这些(“中国人的心理”除外)。这些在N年前已经蹂躏过了。不过现在基本不做这类方面的开发,改作管理研究了。把《运营管理》排第一是因为ERP、OA、供应链之类的应用都处于运营管理的范畴,从运营管理的角度进行了解,会更深刻些。
下面是三个英文词:
Operation System - 操作系统
Operation Management - 运营管理
Operation Research - 运筹学
中文名字不知道是那几个家伙翻译的,搞的三个词完全到三个不同的领域了。Operation System 在 IT, Operation Management 在管理,Operation Research 在数学。实际上这三个是三位一体的,都是讲怎么管理和调度资源,怎么样组织流程的,怎么样优化资源和流程的。Operation System 的对象是计算机资源,Operation Management的对象是企业资源,Operation Research为上面两个提供数学支持,三者三位一体:
再放大点看,可以看见上面三个领域也是三位一体的:
上面是为未来三十年做的知识储备。
it知识库:自学之路——为今后的30年做准备,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。