(转贴)当前社会对Linux人才需求+谈linux学习方法
大家好, 我是ChinaUnix论坛的Linux版的斑竹sakiulagi。 首先感谢这么多朋友来参加CU的活动。 我讲的这个题目太大。 能谈出来的只是我个人看到的一些事情和自己学习Linux中的一些想法和大家共享一下, 不太可能说能给大家指出一条赚钱的金光大道, 那我就是在讲传销,而不是在讲Linux了。 讲的过程中有什么错误希望大家指出。 有什么问题我们都可以讨论。
【1】 linux的发展方向和主要应用领域 企业级 不同类型服务器的细分, 其实就是安装了不同的服务, 然后针对这个服务对系统性能进行有针对性的调整。 集群/大规模的科学运算 Linux的优点: 低成本,高可靠性; 缺点: 专业人才少。 桌面产品 发展方向: 办公,政府,大公司采购 Microsoft的主要竞争对手, 政府策略 嵌入式系统 消费领域 电子消费产品 【2】 需要的技术型人才 设备驱动 Linux对各种设备的支持仍然落后于MS。 这个很多因素造成的,不过也留下了一个很大的缺口。 网络安全 大量的网络服务器的应用对安全的要求,包括服务器本身和其他的网络设备如路由器,防火墙。 OA 办公产品的开发,设计 系统管理 Linux服务器的日常维护,性能调整,系统架设 嵌入式开发 各种嵌入式系统上的开发。 【3】关注的基础知识 -操作系统 / Linux内核 的基础知识 基本的概念是最重要的, 比如很多网友问我的机器变慢怎么办? 其实就是你的某些资源被消耗殆尽了, 不外乎是首先检查瓶颈, 比如那个应用把系统内存吃光了。 如果操作系统好好学习一下, 很容易理解Linux, 甚至是一般的操作系统的很多看起来很深刻的东西。 内核不是什么高深的东西。 你在操作系统课上学的pv操作都可以看到, 一些UNIX的基础知识也很重要, 比如什么是文件系统, 什么是mount, 什么是设备文件, 甚至什么是linux? 分发版? 还是内核? 如果我说我的系统是Linux 9.0的, 这个说法确切么? 很多东西没有那么神秘的,关键是你的基础是不是够好。 -数据结构和算法 这个对开发人员尤其重要。不要管什么C/C++, java, 等等…… 语言不是最重要的,工具也不是最重要的,关键是你的思想。 如果你是一个开发人员, 那么这个基础就更是你的必修课了。因为学习数据结构和算法的过程就是培养一个人逻辑思维的过程, 我在这里不讲软件工程什么的,如果你的数据结构和算法都学不好,还怎么学习Design Pattern呢? 管理人员也是一样, 比如一个管理员不懂数据结构,可能只能依靠benchmark来了解文件系统性能,否则根据reiser4的dancing tree算法, 我们又可以多了一些根据来判断, 这个设计到底好在哪里?我相信任何一个Administrator都不会拒绝对自己的系统有更深入的理解的。 -C/汇编编程 在编程的思想和算法都已经学好的前提下,由于历史上UNIX和Linux都是用C写的。 大家也只好多学习一些C和汇编了。 如果Linux是用另一个语言写的,并且这个语言很流行,那么我可能就推荐另一个语言了。 这个是最基本的工具,能把你的思想变成现实的工具。是你和Linux系统的交流的共同语言。 即使是管理人员也要用, 总不能所有的软件都用rpm装吧? 再说对任何一件事物, 多了解一些内部的运行机制可以更好的理解它, 这一点大家可以同意吧?另外,如果没有一点编程知识的话,我觉得要维护一个安全的系统也是有一些难度的,如果了解了系统内部运作的机制,才能更好知道你的系统的漏洞在哪里,最简单的例子,一点编程不学,恐怕很难理解什么是buffer overflow. 而且在没有任何编程基础的情况下, 要理解操作系统的很多知识也是会遇到困难的。 -图形界面开发(Java, GTK+, QT) 随着Linux向桌面应用的发展,图形界面编程的人才将会有更大的需求。无论是用java还是用C/C++, 其实很多时候二者是结合的。 -网络 现在的社会,单独的一台计算机是没有多少用处的,所有的计算机都在网络上。现在这么多作网络安全的机会, 如果要是把网络, 比如tcpip的基础知识好, 不但有利于自己的进一步的学习, 同时对自己的职业前途也不能不说是一个很好的推动。 -日常使用和维护 至少会用vi吧? 至少会一点简单的shell编程吧? 无论你是用命令行,还是用图行界面, 只要用的熟练, 能解决问题,就可以了。 否则日常的工作怎么开展? -HA/HP 集群 如果有条件可以看一下,这个是Linux的另一个很好的应用方向。 -个人能力 分析问题,解决问题。(这个在下面还会谈)。 -语言能力 总要看英文资料的,能看多少看多少,不能逃避啊。 很多人讲英文我不行, 谁帮我翻译成中文的。 这样一个比去新东方上课便宜的多的, 对你的英文阅读能力很有帮助的机会被浪费了…… (上面讲的这些不只是针对还在读书的同学们说的, 即使是已经工作了的网友, 如果有志于开始学习Linux的话, 那么我觉得很多的基础知识都有必要好好读一下。在这里之所以强调基础知识的重要性, 是因为现在的令人眼花缭乱的新技术太多, 其实万变不离其宗, 最终还是要依靠这些最经典的知识基础。 我前两天又看了一下UNIX第三版的白皮书, 是70年代发表的。 里面定义了什么是一个目录, 这个定义和我们通常的定义有些区别, 但是对理解文件系统的结构却有着很好的帮助。 我不是搞学术研究的, 和很多朋友一样, 我也只能业余时间看看这些基础的东西, 但是仍然觉得很有帮助。) 【4】 简单谈一下linux的学习方法 -看书 了解基础知识以后才有交流的基础。 大家可以先到网上找些电子书。 不过我个人更推荐买一本便宜的纸板书看看, 对保护视力有好处。 越是开始的时候, 越要多看一些书, 千万不要看到超过一页的文章就放弃了, 很多厚书反复读过和实践过之后, 就会成为你能力飞跃的第一动力。 -善用网络资源,学会搜索。 遇到问题先google一下, 通常都会有收获。 另外, 网络上的手册很多。大家只要好好看一看,就方便的多。经常有朋友问很多操作上的问题, 以我用的最多的Redhat为例, 官方网站上有全套的安装, 使用, 定制, 各种指南。如果通读一次, 至少是日常的使用不会有什么太大的问题。 同时还能对redhat linux有一个很好的理解。 -Linux版和CU的资源介绍(一句话,精华索引) 经常有网友很不满: 你不直接告诉我, 装什么蒜? 虽然没有给你一块钱, 可是指出的道路是通向一个金库的! 如果不是真的到了生死攸关的时候, 能深入学习一些还是深入一些, 不要只是看着一个答案, 就可以了。 当然如果真的是急事, 那另当别论。 这里, 我再次郑重向大家再推荐我们版的几个置顶帖子。 一个是“Linux 一句话精彩问答”。 这个是我们的斑竹bjchenxu来整理的, 里面包含了我们班上大量网友的智慧。 里面可以找到很多很多的常见问题和疑难杂症的回答。 如果你看过了linux的入门书籍, 了解了最最基本的知识, 那么这个帖子是继续学习的最好的途径。 另一个帖子是以前的斑竹lnx300和现任斑竹好好先生整理的精华帖子索引, 很多比较复杂的问题在这里也可以找到答案。 这两个都不是大百科全书, 可是他是Linux版的所有网友和几位斑竹的劳动的成果, 希望对大家的学习能有所帮助。 -讲究论坛上的交流的方式方法。 多学习别人解决问题的方法。而不止是知道一个答案而已。 交流的技巧。 (热心互助,不要抱怨。老手不要看不起新手,大家都是新手过来的,如果能帮助就帮助一下,不要冷嘲热讽;新手不要不耐烦,大家都是义工,并没有什么义务一定要回答谁的问题。互相指责不解决任何问题,真正的更好利用CU这个大平台才是最终的解决方法。) -多多动手,多多实践 我在开始学习的时候,把系统里所有的可执行文件的manual page都看一遍, 然后把每个能试验的命令都运行一次。 我觉得只有试验才能得到第一手的资料。 -认真学习英文 中英文的资料各有各的有缺点,但有一点是肯定的。多看懂一些资料总是好的。而且很多时候还是英文的资料更全面, 更丰富一些。 比如关于多系统引导, GNU的网站上grub的手册是还是比较全面而细致的, 语言也简练的很。 GNU网站上的其他资料也很丰富。国内也由一些中文手册的翻译计划。 |