首页 > 开发 > JAVA > 正文

java编程入门一个月后感悟的一些行业浅见

2016-05-18 18:54:23  来源:慕课网
  第一基础软件和应用软件
  现在知识膨胀的快,象牛顿时期那样某个天才掌握所有知识的时代一去不复返了,人类社会面对这些快速增长的知识,不得不动员大量的人来分别掌握它。于是科学界出现了越来越细的分工。
  软件行业也如此,即使巨大如微软的公司,也无能力独立支撑快速发展的软件产业,于是以公司为单位,软件业也开始分工。大体可模糊的分为两大类,上游和下游。
  上游主要搞基础软件, 比如操作系统,数据库,一些底层框架,都是大块头,数量不多,此所谓基础软件。下游则在上游的基础上进行犹如珊瑚一样的分叉式发展,种类繁多,数量巨大,此所谓应用软件。
  基础软件和应用软件相辅相成,基础软件是应用软件的基础,应用软件是基础软件存在的目的。
  发达国家的软件业发达,就是因为软件业分工比较合理,每个公司都认真刻苦的练习自己的武功,所有的软件分支都有相应的龙头公司。这样的软件行业整体实力全面而强劲。
  要什么有什么,若有新兴区域,则马上会有新的公司成立钻进去。如此这样,公司有大有小,业务千变万化,但却能构成一个类似生态系统的软件行业系统,相互依赖,运行良好,数据循环,能应付各种大小问题,能有所发展。
      国内软件业相对比较落后,首先是大环境不好,严重的盗版问题,免费问题,不尊重知识产权的气氛,造就了软件生态系统中的巨大的极端化与缺失话。
  什么有利可图,一窝蜂,什么困难重重,都畏缩不上,导致很多软件的缺失,导致整日软件行业的配套的不完善。间接导致软件行业整体的短板效应。
  因此本人对金山这种在困境中仍然开发原创软件的公司表示敬意,虽然存在种种问题,虽然金山的文字处理系统被微软的阴谋打败了,变得无利可图,可是我们现在仍然能看到新版本的文字系统,而且我们看到,微软的三件套几百兆大小,而同样功能的wps却只有几十兆。当然这也有选用不同语言的优势。关键是还是免费的。所以金山值得我的尊敬。
  第二,专业软件与通用软件
说过软件的分工,我们就映出分工之下的软件另一种分类。专业软件与通用软件
  专业软件更需要跨行业的知识,比如用友金蝶的财务知识,金山的文字处理知识,江民的安全知识,CAD的建筑图纸知识,五笔输入法的汉子知识,即使是搜狗输入法也需要汉语拼音知识,问题来了,我们刚开始学习一门新知识的时候有精力兼顾学习另一门专业的知识吗,即使只是了解。
  而且我们应该注意到另一点,知道江民,还在使用江民的还有谁,这家公司是否存在,大家知道吗?活得很滋润的住友金蝶,大家了解吗,可是说道通用软件,qq,又有多少人不知道,难道江民用友的技术实力比不上qq吗,恐怕不是吧。可是轮成功,有几家软件比得上qq,这就是需求用户定位决定的。
  Qq是全民需要的,用户十亿人口,面向的是最广大的大多数。可是用友呢,面向的是几百万专业财务人员。用户只有不到千万级别,一个是千万级别,一个是十亿级别,即使前者技术实力在强大,在成功也刚不上后者。
  这就是通用软件与专业转件的区别。不在技术,而在于用户在于市场。
  即使不考虑这些,也得考虑多学一门知识的成本吧?更何况越是专业的软件,市场越小,面对变化飞快的世界,说不定什么时候就被市场被世界淘汰了。
  360大战qq很多人都知道,这可能就是一场专业软件与通用软件的一轮较量。虽然360是最大的赢家,成功借助qq上位,站稳安全市场老大的地位,而且借此开辟新的领域,浏览器市场,进而进军门户,搜索领域。进军硬件市场。
  可谓是世纪最精彩的策划,完全达成了专业软件向通用软件的转变。不然的话也将和众多的安全软件企业一起烟消云散。如今的安全市场基本上就这一家独大。已经没有了其他安全公司生存的突然。
  如今,完全可以在bat围剿之下占据一方根据地,还能不断的扩展。
  这就是专业软件与通用软件定位区别。也是我们选择就业的方向。
  无论从市场角度,从技术存货角度,还是学习成本角度,通用软件都是我们这些刚入门的从业人员的不二选择。不过 如果你应经入行三五年还是如此的话,那就只能呵呵了。
  第三,中国软件和印度软件的差距与软硬件相结合。
  这里不想探讨国家大事,只想引出一个话题。所以请耐心看下去。
  在我们的印象中好像中国差印度很大。甚至我过最大it培训机构都与印度合作——accp。甚至学习印度,轮番考察印度的软件行业。
  可其实有的误导的因素在其中,印度的软件行业是纯软件出口,而中国的软件出口却更多的作为硬件的配套出口的。所以如果加上硬件之上的配套的软件的话,印度根本不是我们的对手。
  比如华为等公司的路由器,交换机,通讯设备,甚至是手机。这些产品可不止硬件,软件也是必不可少的。而这些都是作为硬件的份额处理的。软件知识背后默默的功臣。
  这里插入一个话题,软件的外包,在我开来就好比富士康的硬件代工一样,一个是硬件的外包一个是软件的外包,从本质来说都是血汗工厂。我们刚入行可能没得选择,但是如果入行三五年了还如此,那我只能呵呵了。
  从这理我们就引出另一个话题,软件与硬件的结合,这是以前现在更是未来发展的趋势。也是我们未来必然面对的问题。就好像随着我们的深入,软件必然接触到专业领域一样,软件的深层次开发也必然接触到硬件领域。
  接触过老前辈的人知道,早期的软件学习基础,硬件是必学的。
  不过那个时候硬件限制软件的发展,软件完全为硬件服务。而现在,手机的性能都快比得上电脑了。硬件的性能完全富裕,所以我们需要的只是调用硬件资源就行,完全不必考虑硬件的限制。
  可是这只是入门的时候,一旦入行深似海了,第一步就要考虑软件本身的优化。这些涉及不到硬件,在深一步,我们的优化就要考虑硬件了,甚至从编写第一行代码开始,就要考虑硬件了。
  用过苹果手机的都知道,苹果手机的硬件配置并不高,甚至落后主流配置一两个时代,可是运行的效果却比觉大多数手机的运行效果都要好。
  这是为什么,这就是因为苹果是操作系统和电脑整机硬件起家的。
  苹果的软件从编写开始就针对硬件进行优化,软件不仅是其本身,苹果的硬件,苹果的手机系统也对其有优化。从最底层的硬件到操作系统都对苹果的软件进行优化,这就是苹果手机能以落后两代的硬件还能碾压同行的原因。
  知道点电脑发展史的都知道可以说是苹果开创了家庭电脑个人电脑的时代。而又是苹果开创了智能手机领域,其他的玩久了唱片行业等等。从这方面来讲,苹果堪称伟大一点不为过。
  第三,编程语言的选择与远虑近忧。
  现在看来占据绝大优势的仍然是C/C++,java,况且Java还是C++的进化衍生品,再加上市场的需求,所以选择Java是最好的选择。
  这里不谈Java的优势,我们谈一些危言耸听的事情,这个古老文明的智慧,人无远虑,必有近忧。
Java诞生了不过几十年,在此期间又诞生了多少消亡了多少语言。我们不指望Java仍然能兴盛三五十年,能在兴盛十年就是我们的幸事。而这远虑就是三五年甚至十年几十年之后的事情。
  那就是Java被更加先进的语言取代之后呢?被图形化编程取代,被自然语言取代,甚至整个编程行业被淘汰之后呢。
  所以针对Java被更先进的编程语言取代的可能。我们唯有继续学习,保持学到老的习惯。前辈告诉我会C++的学习Java会容易很多。同样有可能我们在掌握Java一门语言的基础上学习下一门语言也有可能更加轻松。
  至于第二个远虑,那就等十年之后在考虑吧。我们知道有这个可能就行了。我们不可能将自己的一辈子寄托在一个语言甚至一个行业之上,三条腿走路远比两条腿走路更加安全稳当。即使怪异一点。
  。也希望我们能用十年甚至是三五年就能攒够一辈子的开销。在行业奔溃之前买好房子车子,还有漂亮贤惠的老婆。如此还管他身后洪水滔天,干亲何事。
  第四,行业的水深水浅,进阶之路。
  我干过建筑业,就拿建筑来比较说。感觉它和编程行业有着很多相同点。
  每一座建筑,都是一个工程,而程序中每一个项目,不也是叫做工程项目么。
  决定建筑计划(决定项目计划)- 决定建筑功能(确定软件需求)- 建筑设计图纸(软件建模)- 开始建筑施工(进入编码阶段)- 施工完成验收(项目验收)- 客户入住(客户使用)- 后期维护阶段(后期技术支持),整个流程很类似吧。
  业务人员:这个相当于软件公司的业务吧;建筑设计师:这个我不知道怎么类比,建筑界我现在马上想到了贝律铭,软件业能够将编程做到艺术级别的,少之又少,不过有一本编程之美,数学之美的书很好,却没有时间与能力去翻看。只能留待以后了;建筑工程师:相当于架构师吧。
  能够把天马行空的想法,转变为实际可行的编程架构。软件业这个级别的人才,就可以量产了,但还是很少。而且软件业不同于建筑业,许多东西都已经成为定式,在大学里就能学到。每一个好的架构师,都是靠大量的项目经历锻炼出来的。
  不过我曾经听到这么一个传闻,互联网大佬的公司面试架构师,面试的试题是基本的编程。可是面试人员的水平惨不忍睹。被刷下去了。可是后来此君却当上了此公司一个大项目的首席架构师。
  不是此君卧薪尝胆,屌丝逆袭。而是正派面试官临时有事,将面试推给了一个程序员。而这个临时面试官竟然用面试程序员的办法来检验这个架构师。
  后来正牌面试官回来查看面试题才赶忙请了回来。他说,架构师需要会写代码吗?当然可以不回,就好像设计院的,你让他给你面试砌砖,这是一回事吗?
  虽然有些夸张,但是事实如此。我国没有专业的架构师课程,所以多是从底层爬上来的,所以多会编程,但是正经的架构师甚至是不需要会编写代码的。当然会了更好。
  包工头:相当于项目经理,统筹具体的日常工作。施工人员:工头下面,就是具体干活的人了,有电工、起重、焊工、架子工、木工、油漆工、砌筑工、抹灰工、瓦工、混凝土工、防水工,试验工、水工等,八大员之类很多啊,对应软件业,不就是掌握各种技术的程序员了么。
  比如前段开发,后端开发,Java web工程师,安卓开发,大数据,搜索引擎等等。至于小工:这些人基本没有技术,全凭体力干活,软件业好像没有,但网管行业里好像很多这种类型的。工地上的工长也是五六千七八千的工资。栋号长一万左右,项目经理一二十万的年薪,跟我们软件行业的工资差不多,当然这都是行业兴旺的平均工资。
          好了,废话说了很多,不清楚大家明白我的意思了没有,从行业整体来衡量,大家可以看看自己处于一个什么样的位置。同样的体系结构,我们最开始还都是处在软件业的最底层。
  就像建筑业的施工人员,下一步要么走技术路线架构师,要么走管理岗位,项目经理。项目经理在工地上也分大小高低的,在软件行业也是如此。比如工地上的工长只管一个工种,然后是栋号长,一般管理一栋楼。接着就是一个基地,好几栋楼,最后大概就是项目了,好几期项目。
软件行业的项目管理也应该类似。