[名人堂] 【ITPUB名人堂访谈】程序员的华丽转身 从前端开发到后端架构

各位网友大家好,欢迎做客第42期名人堂访谈,我是主持人皮皮。近网上很流行一个词,叫全栈工程师。有人戏言全栈工程师=屌丝战斗机=系统+网络+研发+dba+架构+安全=没女朋友、拿一份工资做三份事情的典型。无论是前端开发还是后端架构,全栈工程师都很精通。本期名人堂我们邀请到了一位全栈工程师坐镇,为我们讲述前端开发与后端架构的那些事儿。


pipihappy8888 Q1: 请简单介绍下自己,分享一下您的职业经历,您目前从事的工作。

jieforest A1:大家好,我是磨刀,社区ID是jieforest,很荣幸能有机会做客ITPUB名人堂。说到职业经历嘛,我的经历还蛮丰富的,我1998年大学毕业,学的是工科,刚开始踏入职场的工作是电路设计,由于我对计算机有着浓厚的兴趣,业余时间努力学习编程技术,尤其是Java,工作三年后顺利转行成为了一名程序员。到了2004年我深感基础的不扎实,辞职考研,考上了某个211&985大学的计算机专业硕士研究生,读研期间深感经济压力,一边在外兼职程序员,一边继续完成学业。硕士毕业后进入一家大型国企,又从程序员做起,一直做到现在的项目经理和部门首席系统架构师。目前我主要的工作内容大致是:一是带领团队完成一个个的外包项目;二是跨多个项目团队提供项目解决方案或系统架构方案;三是不断地培养新人。


请原谅我没有透露我所在公司的信息,因为我在公司很低调,而且社区是我的另一个家,我不太愿意两者有任何关联。


pipihappy8888 Q2: 在近发布的TIOBE编程语言排行榜中,Java位居第二,而近日Oracle甲骨文公司如期发布了Java 8,Java 8被誉为是一款革命性开发平台, 它有哪些新特性?

jieforest A2:前不久安装了Java 8,关于它的新特性正在好好体会中。我觉得值得大家关注并应该使用的特性有:

1)支持Lambda表达式

Lambda表达式是一个匿名函数,来自C#语言。

语法:形参列表=>函数体

Lambda表达式使得程序更精炼、易读。

看下面的例子:

在Swing界面编程中,没有使用Lambda的老方法:

button.addActionListener(newActionListener(){
public void actionPerformed(ActionEvent ae){
System.out.println(“ActionDetected”);
}
});
而使用Lambda表达式是这样的:

button.addActionListener(e->{
System.out.println(“ActionDetected”);
});
再来看一个更明显的例子。

不采用Lambda的老方法:

Runnable run1 =new Runnable(){
@Override
public void run(){
System.out.println("Running without Lambda");
}
};
而使用Lambda:

Runnable run2 =()->{System.out.println("Running from Lambda");};

2)界面开发库JavaFX增强

新增主题Modena;WebView类对HTML5的特性支持的更多;JavaFX开始支持ARM平台。


3)新增一些工具

jjs命令:用于调用新的Nashorn引擎;

jdeps命令:用于分析类文件;

JMX提供了远程故障诊断访问命令;

javac命令和javadoc命令也得到了增强,加入了新参数选项。

4)新的JavaScript引擎——Nashorn等等。



pipihappy8888 Q3: 请结合您自身的经历谈谈您工作中有哪些收获?对于学习编程语言的朋友们,您能否给一些好的意见?

jieforest A3:多看书、多写程序(多实战),这样的话进步很快。我是ITPUB电子书板块的版主,我上传和下载的电子书非常多,看的书也非常多,有一些好书,还没等国内出版社发行译作,我原版都已经看完了。看得多使得我的眼界很宽广,对于前瞻性的技术发展演进和项目技术方案等,也容易形成正确的判断和结论。在公司,我就是各项目组的百科全书,非常多的同事都愿意向我咨询,问我问题。可惜是免费的,否则我就发了,呵呵!多看书的同时也要多实战,只有在实战中才能更好、更快地掌握知识和技巧。只看书的话,很容易纸上谈兵。




pipihappy8888 Q4: NoSQL越来越多地被认为是关系型数据库的可行替代品,特别是对于大数据的应用程序。你是否赞同这种说法?请结合NoSQL的优缺点来谈谈您的理由。

jieforest A4:我觉得NoSQL的出现是为了满足日益增长的互联网应用的需求,因为传统的RDBMS功能过于繁重、冗余,并不能很好地满足目前很多互联网应用的大并发、高读写、弱一致性、灵活的数据模型或模式自由的数据模型、超强的可伸缩性等的需求。



说起RDBMS,大家可能会觉得功能繁重,究其根源大概是因为关系数据库管理系统太过于成熟。发展的成熟就使得几乎一切功能都具备,程序员或DBA要做的仅仅是理解、掌握并很好地使用它而已。


NoSQL数据库功能简单,甚至功能很单一,不同的NoSQL数据库其设计目标也不相同。以Redis键值内存数据库为例,其新的2.8.8版,它的安装包才1049KB。文档型NoSQL数据库MongoDB其新版2.4.9的安装包也才104MB。而关系数据库如Oracle、SQL Server、DB2的安装包都要以GB来计算。RDBMS如此大的安装包,里面塞了什么东东?完备的用户、角色、权限的安全机制;事务处理;存储过程;视图技术;保证数据一致性的锁机制;数据库的备份与恢复等等。大家请看,塞进去的这些功能,对很多互联网应用来说,未必派得上用场。


对于目前热门的词汇“大数据”,NoSQL技术加上分布式文件系统,两者共同完成大数据的后端存储。单靠NoSQL技术,在大数据的很多应用场景下并不能满足需求。


NoSQL与RDBMS,两者谁也不能取代对方,都是数据存储领域不可替代的技术。至于MongoDB的使用场景,适合MySQL的地方且事务处理很低,满足这两点的话,MongoDB很适合。




pipihappy8888 Q5: 在2014年3月份的数据库流行度排行榜中,前三甲仍然是Oracle、MySQL和SQL Server,MongoDB超越了DB2挤进了前五名。作为佳NoSQL数据库的MongoDB,您觉得它有哪些亮点?适用于哪些场合?

jieforest A5:在众多NoSQL数据库之中,MongoDB是像关系数据库的NoSQL之一。我们在多个项目中选用了MongoDB。其实拿MySQL跟MongoDB做对比是适合的,MySQL是关系数据库的代表之一,MongoDB是NoSQL的代表之一。两者都是开源、免费。有人或许会说,MySQL官方的企业版和集群版收费。是的,但我们有免费的MariaDB或Percona可以选择。

我觉得MongoDB大的亮点有:

1)做分布式和集群简单、方便,轻松实现高可用;
2)读写性能非常高,满足海量互联网用户访问的需要;
3)易用,去DBA。MongoDB的优化和集群都不难,很快就能搞定,然后就不需要DBA了,省去了招聘DBA的薪水。
4)模式自由,但仍然可以以关系模型来构建数据库,对现有系统是个福音。


pipihappy8888 Q6:您觉得程序员与DBA,哪个前景更好?

jieforest A6:近国内外都在流行一个词叫Full Stack,中文翻译过来叫全栈工程师,也叫全端工程师。举个例子来讲,全栈工程师就是一个能独立盖一幢10层小洋楼的人,而普通工程师则是可以和一群人盖一幢摩天大楼的人。以前,软件工程师在意的是成为某个领域的专家或者高手,而现在很多程序员慢慢地就练就了精通多门技术的本领。程序员与DBA平分秋色,分工的不同而已。就一般而言,Oracle DBA的收入相对较高。不管怎么样,要获得高收入,就得努力成为所在领域内的专家级的人物,精通你所掌握的技术,这是前提。其次如果遇到好的机遇一定要抓住,这个你懂的!

非常感谢ITPUB社区版主jieforest给我们带来的精彩分享,也欢迎各位网友积极回帖讨论自己感兴趣的话题,交流自己的心得。
ITPUB, 名人堂, 程序员, 前端, 架构, ITPUB, 程序员, 前端, 架构

相关文章