各位朋友大家好,我是太平洋在线xg111蔓藤教育的太平洋在线手机版刘铁猛老师,身为老师,我从来没有离开过软件开发的一线工作,到今天为止,已经在软件行业拼搏了xg111net15个年头了。在这15年里,我从中国的一名业余程序员,成长为专业的软件工程师,进入美国微软工作,在技术与管理能力成熟之后,我开始在美国的西海岸创业,两年内我就带领我的公司,成为了微软的金牌内容提供商,现在公司已经被并购了,我和我的团队也正在为上市做着最后的冲刺。
现在与您分享,我对过去十五年来得失的总结,希望对您有所启迪和帮助,让您少走弯路,看看能不能把我十五年才做完的事情,压缩到十年甚至五年就做完,并且取得更高的成就。
软件行业里,开发技术是安身立命之本,今天就从技术开始聊起。有人说,软件行业技术变化太快,需要终身学习。这句话经常让新接触到这个行业的人有所恐惧,怕自己跟不上发展,会被淘汰。其实,大家跟本不用紧张,为什么呢?因为回顾过去十五年,软件开发的模式和架构,基本上是没有什么改变的。更新换代的,只是工具和框架级别的东西,而且越变越简单、越变越方便、越变越清晰。下面,就给大家举几个例子:
随着Window95的普及,软件进到了图型化的用户界面。随着Window98的普及,互联网就随着,IE浏览器进入了千家万户。就把1998年算做是软件开发新时代的元年,从那个时代开始,三大软件开发领域,就出现了——分别是桌面开发、web开发、web服务开发。今年是2018年,20年过去了,这三大领域并没有发生什么变化。变化的只是用来做开发的工具和框架,比如说,我是微软技术体系的,我用得开发工作是VS,从1998年开始VS平均每一年半发布一个新的版本,从VS1.0到VS2017也就是15.9,这就跟年货一样,每一次更新VS都更好用、更方便,而且还逐年加入了单元测试、自动化测试、性能测试、版本协同、项目管理等等。这些好用的功能,包括前一段时间微软大手笔的收购了GitHub,这个也是为了升级VS这个地表最强大的开发工具,这些更新所带来的变化都不大,每个新功能最多花上一两周的时间就能够熟悉了。所以说只要稍微学习一下,就不可能被淘汰。
咱们来看一下三大领域当中的桌面开发。1998年的时候呢,大家用的是微软的Visual Basic和Borland公司的Delphi开发工具,后来呢Borland公司因为经营不善就给卖掉了,而他的核心开发人员就加入了微软,于是在随后的2002年左右,微软就推出了全新的.NET平台,在之后就是各大厂商纷纷推出了自己的智能手机平台,比如有苹果的IOS,谷歌的Android,和微软的Windows Phone。智能手机本身就是一台小的计算机,智能手机的程序开发也应该算做是桌面开发。然后在随后的十几年里,这些开发技术,都在自己各自的轨道上不断的进化,在这个进化过程当中,有的平台就越来越流行,越来越受欢迎,有的平台就慢慢得消亡了,退出历史舞台了。在这整个的演化过程当中,有这么两点就从来没有改变过。第一点,就是桌面开发的事件驱动模型,以及后来演化出来的数据驱动模型。还有一点就是,把桌面程序做为客户端,通过网络去访问服务器上的资源。所以在我看来,所有这些桌面程序,还有手机程序,他们的本质上并没有什么不同。不同的是,各个厂商之间为了构建自己的技术壁垒,和市场壁垒,逼着程序员不得不使用自家的编程语言、开发工具、开发框架。这样,好把程序员栓在自家的开发平台上,让自家的开发平台上的程序越来越多,平台卖的越来越好。所以说做为程序员,只抱定一个开发平台的话,就中了这些厂商的圈套。
三大开发领域里还有一个是Web开发,什么是Web开发呢?就是动态生成HTML用户界面,用浏览器来模仿桌面程序,跨网络的来实现桌面程序的事件驱动模型,和数据驱动模型的这样一种开发方式。最早的Web开发技术,有ASP、JSP这些技术;后来还逐渐演化出了Applet、Flash这些开发工具;再后来为了让这个项目更好管理,能够做出更大的项目来,还进化出来各种各样的MVC框架,比如Spring MVC、ASP .Net MVC、Laravel、Django等等。这些框架,凡是Web开发也离不开数据库,用户的数据也总要有地方放。所以大家发现了,只要选择的是Web开发,无论你用得是什么开发工具、什么开发框架,你的知识体系就是由那么几部分组成的:一部分是HTML+CSS+JavaScript的浏览器开发;一个是使用MVC或不使用MVC的业务逻辑开发;还有一部分就是数据库开发。
三大开发领域当中的最后一个就是,Web服务开发。说白了就是,把Web开发当中的用户界面这一部分给它去掉,让桌面程序、手机程序、或者说是跑在浏览器里面的HTML+JavaScript程序来充当用户界面。这样开发者,可以更专注于业务逻辑和数据库的开发,这样开发出的项目也更加的干净,更好管理。并且这个服务一但开发出来之后,可以让多种客户端去共享。现在职场上,Web服务开发,加上各种各样的客户端开发,是比较流行的,比较好找工作的。那么Web服务开发的工具和框架呢?也是经历了数代的技术更新。最一开始,刚进入这个行业的时候呢,还要手动的去写TCP/UDP 的Socket的编程;再后来就出现了WebService这样的技术;再往后就出现了WCF这样的封装的很好的Web服务技术;现在最流行的已经变成了RESTful的WebService,客户端与RESTful沟通的时候用得是。总体上,工具和框架越来越简单、越来越方便,与其说软件开发行业容易被淘汰,还不如说软件开发行业越来越容易上手。
为什么要介绍说软件行业的变与不变呢?就是因为大多数情况下行业新人都是未看清行业的全景下,就一头扎进去开始学习的,往往是在学习和工作了四五年之后,才开始意识到原来这个行业是有自己的运行规律的。很有可能已经在一个技术上投入了好多年之后才发现,原来最喜欢的、最擅长的是另外一个领域的技术。之前我们并不知道还有这样一个领域,也并不知道还有这么多有趣的事情可以做。
如果同学想成为软件行业的高手,未来拿到比较高的薪水,请这样选择学习与发展的路径,一共有九个步骤:
第一步:选择自己感兴趣的开发领域,也就是客户端开发、服务开发、还是Web开发。
第二步:选择了开发领域,就决定了选择的工具和框架,从众多的工具和框架中选择一个你感觉舒服的。
第三步: 选择了工具和框架之后了,就限定了你可以选择的编程语言,从这些限定的编程语言当中呢,选择一两门自己觉得喜欢的编程语言。
第四步:选好编程语言之后,要扎扎实实的学习这门编程语言的词法、语法、算法、面向对象和设计模式,这个顺序不能乱。
第五步:每一门编程语言都有他的标准库,比如C++语言是STL,Java语言是JDK,C#语言是.NET Framework,标准库是程序的基本模块,一定要把它们用熟。
第六步:掌握了标准库之后,这时候再看你的开发框架,就会注意到,开发框架它一定是符合标准库的设计和调用方式的,它们的风格是一致的。这时候,就可以很快的把开发框架用起来,就可以开发出想要的程序了。有很多新人,一开始就想学习开发框架,忽略了标准库的学习,耽误了很多时间。
第七步:随着自己开发的程序越来越多,解决的问题越来越多,对开发工具和框架的掌握也会越来越熟练,自己就变成了一部百科全书,很多人就把你奉为高手,愿意向你请教。
第八步:随着你见过的程序越来越多,合作过的人越来越多,就具备了指导团队设计开发的能力。这时候就可以选择,是继续走技术路线,还是成为技术方面的领导者也就是架构师;或是说发现自己对协调团队成员感兴趣的话,可以成为团队人员方面的领导,也就是开发经理;或是说对商务统筹方面感兴趣,就可以去做项目经理。
第九步:也是最后一步,再往上走,根据公司大小的不同,可以成为公司的中层或者高层;再或者,可以选择自己创业。
选择好学习和发展的路径之后,剩下的就是尽全力去拼搏了。可能听到有些朋友发出这样的感慨,我已经尽全力拼搏了,为什么得到的和付出的不对等?实际上,在全力拼搏的过程当中,也是有很多需要注意的细节的。在未来的课程当中,我会为大家一一的进行讲解,内容就包括——如何走出自己的舒适区;如何拓展自己的人脉,让越来越多的高手来指点自己;如何为自己设定有效的学习目标、学习计划、然后进行主动的学习;如何要选择加入的团队;如何选择未来要跟着的领导;还有就是如何提高自己的沟通水平;如何在沟通当中培养自己的领导力和管理能力等等,这些内容对我们的职场发展是至关重要的。
今天提到的每一点,展开来讲都有很多值得注意的细节,这些细节是我们在学校里所接触不到的,因为没有那本技术书籍会记录这些内容。了解到这些细节之后,你的发展速度和薪水可能会是别人的五倍甚至十倍,或者当别人苦于不知道在哪儿找工作的时候,你已经拿到一大把内推和面试邀请了。更重要的是这些知识和细节,跟你是不是专业出身、和你是不是名校毕业、它是没有关系的。而是每个人都听得懂的,每个人都学得会的弯道超车的技术和技巧。如果你想比别人拿到更好的工作,赚到更多的薪水,提升更快的话,可以通过蔓藤教育找到我,我会在跟你进行认真深入的沟通之后,为你量身订做一套个人发展方案,开发你的潜力,让你从身边的朋友中脱颖而出。
——本文为蔓藤刘铁猛老师原创,如需转载请注明出处,刘铁猛老师《Python语言入门详解》线上报名微信feifeimvc,更多视频内容请访问/