购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 程序员进阶

大学毕业后,初出茅庐的菜鸟经过千辛万苦,总算是找到了人生中的第一份工作。但是,随着工作的开展,菜鸟所面对的问题越来越多。有些人坚持了下来,有些人中途放弃,有些人则在职业生涯中选择了转型。作为一名程序员,不但需要编写大量的代码,还需要对自己的职业生涯做一个规划。结合前辈们所走过的道路,这个职业规划大致是图1-1所示的这个样子。

图1-1 程序员职业生涯

一般来说,从初级程序员到高级程序员需要经过5年的磨砺,这个时间段基本上是业界的共识了。而且,在众多招聘信息中也可以发现程序员的起点都是需要两年工作经验的。也许,有些天赋异禀的程序员可能经过3年的刻苦学习也能达到高级阶段,但是,他们的知识技能往往并不全面,可能只是在某些方面比较熟悉罢了。到了高级程序员的阶段,可供选择的方案就比较多了,大概有图1-2所示的这3个走向。

图1-2 程序员发展方向

如果高级程序员再向上进阶的话,会面临3个选择。第一种方案是成为项目经理,负责管理加上部分开发。因为高级程序员对公司的项目是非常了解的,对公司目前的开发过程也驾轻就熟。如果本人有这方面的意愿,很容易胜任项目经理这个角色。而且,公司通常会从内部选择项目经理,空降项目经理的方式并不是常态,归其原因就是难以熟悉项目架构。

第二种方案是高级程序员可能更喜欢专著于技术,不喜欢出差和撰写大量的项目文档。在这种情况下,他可以成为一名架构师,专门负责维护公司的项目、产品方面的架构工作。如果公司有一定的规模,他可能会成为研发平台的负责人。当然,这种情况的前提是该程序员没有跳槽。

第三种方案是高级程序员可能经历了若干年的开发后,对写代码已经深恶痛绝,丝毫感受不到任何快乐了,但他对公司的项目和产品又非常熟悉,也有深厚的研发积累。在这种情况下,他可以彻底转型成为一名产品经理,纯粹负责公司产品的规划、设计、包装,甚至肩负一定的市场职责。当然,成为产品经理的前提是公司的项目已经产品化或者正在产品化之中。所谓的产品经理,通常就是向技术部提出一个原型设计:“看吧,这就是我想要的东西,至于怎么实现,你们看着办!”如果他懂代码还好说,但如果不懂代码,可能会让程序员陷入抓狂状态!

到了高级程序员的阶段,很多人就开始思考:究竟是去做项目经理?产品经理?还是继续写代码成为优秀的架构师呢?每个人的想法是不一样的,所作出的选择也是不一样的,这跟自己的能力和性格也有一定的关系。

每种开发语言,都有自己领域的架构师,如C++架构师、PHP架构师,当然也有Java架构师了。架构师需要对公司的整个研发平台了如指掌,清楚平台中细枝末节的东西。他极有可能是陪伴着这个公司成长起来的程序员;也极有可能是在别的公司工作多年后跳槽过来的。前者对公司的项目、产品非常熟悉,甚至自己还动手写过业务层。后者可能只是从大体上了解公司的研发平台,毫不深入,但这并不影响他的发挥,真正的架构师看到代码就有一种亲切感,可以很容易分析出隐藏在代码前后的业务过程。

Java架构师,至少需要在Java领域有5年的开发经验。他需要掌握的内容很多,简单点可以分为前端、后端、数据库、服务器、中间件等。前端插件可以极大地提高开发效率,甚至在不需要美工的情况下做出时尚的界面,类似的插件有AngularJS、Avalon、Bootstrap、ExtJS、jQuery EasyUI、jQuery UI等,这些前端插件也可以称作前端组件或者前端框架,种种叫法也看人的习惯了,没必要吹毛求疵。除了这些前端插件外,还需要掌握JavaScript、HTML等技能。后端需要掌握的技能主要是Java、JVM、Servlet、Struts、Spring、Hibernate、MyBatis等,还有最近流行起来的Spring MVC、Spring Boot等。这些技能和框架只有综合起来使用,并且合理地搭配才能发挥出最好的效果。至于效果能够达到什么程度就需要看架构师的本事了。也许有的架构师可以把这个积木撘得很好,也许有的架构师在搭积木的过程中,这个积木就倒下了。数据库方面需要掌握的内容有Oracle、MySQL、SQL Server,一般常用的数据库大概就是这3个。当然近年来,对于架构师需要掌握的数据库又有所增加,它们主要是代表了NoSQL的MongoDB等区别于传统关系型的数据库。但是,数据库相关的内容有不少,例如,需要熟练掌握SQL的各种语法,还需要掌握数据库性能的调优、备份和恢复。服务器并不是重点,但作为Java架构师,仍然需要有所了解。服务器包括物理服务器、云服务器,还有Web服务器,包括我们在开发中使用的Tomcat。中间件在一些中小型项目中并不怎么常用,如EJB技术、消息中间件ActiveMQ。当然,Web服务器也可以算作中间件,如Tomcat、Weblogic、WebShpere和JBoss等。

只有熟练掌这几个方面的技能后,才能算是一个初级架构师。如果想成为大神级别的架构师,还需要学习更多的知识。Java架构师需要对这些技能非常熟悉,并且能像搭积木一样把他们整合在一起,构建出成熟的、完整的软件开发平台,以供底下的程序员在此基础上进行业务层的开发。但是,随着软件技术日新月异地发展,越来越多的框架进入眼帘,这对于我们来说既是好处又是坏处。好处是我们可以选择更好的、更合适的框架来提高项目的性能,降低开发难度,简化开发流程。坏处是可选择的框架太多,以至于让我们难以选择。所以,本书为大家精心挑选出了一名合格的架构师所必备的专业技能和开发思想,以供大家学习和参考,争取尽早地成为Java架构师。 +DqFUV8fVzv5SL0yoGe19rgH0TRHnmYuD8g4CCUSYWHtA5hAsTtqio9d2R7fgC3P

点击中间区域
呼出菜单
上一章
目录
下一章
×