前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个程序员重写一个旧系统的故事(二)

一个程序员重写一个旧系统的故事(二)

作者头像
用户1608022
发布2018-04-11 11:15:34
9810
发布2018-04-11 11:15:34
举报

最近又干了件吃力不讨好的事情,把公司一套旧系统的后台给重写了。有同学心里可能在嘀咕了,又重写系统,你怎么就这么仇视别的同事的工作成果,拿着公司给你的报酬,却做着其它同事已经完成的事,这么瞎折腾,工作成果在哪里,公司雇佣你的意义又在哪里。

其实这事我挺冤。这也和我刚入行时站错队有关系,我是微软系技术的铁杆脑残粉,做网站的asp、asp.net,做客户端的windows窗体应用、windows universal app,数据库 sql server、access,系统脚本vbs,powershell,这些东西全都学了遍,此外,作为脑残粉,光使用微软系技术肯定是不够,我还购买了不止一部搭载微软手机操作系统的智能手机为微软创造营收,父母使用的手机也都是装着windows 10系统的,自己也永远使用着最新版的windows系统,从win7到win8再到现的windows 10。而且,我会黑微软系以外的所有技术,不但嘴上黑,还在网上发文详细比较微软系技术和其它技术的各种特性,想以此来说服更多人加入微软技术联盟。然而,我所做的一切都是徒劳,和我接触的最多的同一个部门的同事,几乎是受到我对微软技术崇拜的直接影响,而在他们眼里,我表达的所有都显的苍白无力,他们认为微软的技术没有市场,业内招聘需求不多,学习微软的技术就意味着跟自己的饭碗过不去。

也许正是由于我善于使用微软技术的缘故,公司因组织架构变化和人员异动将原来由其它部门负责的两套asp.net系统调整至同我们部门维护,由于这两套系统的重要程度和维护所需的工作量似乎还抵不够招一个专门的.net程序员所需的成本,加上我这个微软技术的脑残粉在,这两套系统的维护工作自然就落到了我的头上。当初,由于我对自身技术能力的自信,曾夸下海口,可以轻松吞下这两套系统。然而,我太天真了,这两套运行维护多年的系统已经长的连他们亲爹亲妈都不认,我这个后爸根本驾驭不了。系统隔一天出一个小BUG,每个星期出一次大问题,再加上一些修改原有功用的需求,直把我折腾的焦头烂额,筋疲力尽。我意识到我已经被两套系统牵着鼻子走了,在它们身上浪费太多的精力,且投入和产出严重不成正比,有时候哼哧哼哧花半天时间只能修复一处小BUG,这影响到了我的工作成果产出和工作时的心情,我必须甩掉这两个锅。

经过和上级的交涉,最终结果是,这两个锅是肯定甩不掉的,但你可以让部门其它同事和你一起来背。好吧,既然我做不到让同事们来和我一起用.net,那只把实现系统的.net技术换成别的,也就是重写这两套系统。

我们部门的系统都是使用php开发的,换句话说就是我们部门的所有程序员都是php程序员。然而,我还是决定使用Java来重写这两套系统,我并不是完全随自己的喜好来进行技术的选型的,我选Java的主要原因是希望通过Java语言静态类型的特性来提高项目的可维护性和降低代码的理解成本。有的同学可能会提出质疑,认为代码质量完全是跟写代码的程序员的技术水平拉挂钩的。我认为,程序员的水平对项目质量的影响最多只占百分之八十,另外百分之二十是跟所使用的语言和框架相关的,选择合适的语言跟降低项目开发维护的成本有着巨大的联系,这种联系随着项目生存时间的增加而被不断的放大。不可否认,一个高水平的php程序员写的代码质量绝对要好过一个菜鸟级的Java程序员写的代码,但实际上菜鸟程序员的数量肯定要多过高级程序员,而菜鸟级php程序员写的程序会是所有程序员的恶梦。既然人力因素不可控,那语言层面的这点优势就一定要牢牢把握住。

说心里话,只要不是从1995年穿越过来的,就应该能看的到现在的Java并不可爱。就如同前段时间杭州G20峰会时的各种约束,各种检查,搞的你写起代码来束手束脚,各种不爽。但正是因为有了这层约束,才能使你写代码的易于管理、安全性高、次序性强、不容易出乱子,而使动态类型语言写程序,很灵活,各种屌炸天语法糖让你高潮不断,然而,出起问题来却能要了你的命。

另人意外的是,在我决定使用Java重写系统时,居然得到了多数同事的赞同,他们也希望将Java引入到我们技术体系中来,并参于相关系统的开发。 .net的各方面的特性都能甩Java几条街,但不管我怎么努力推广,都没人愿意加入进来,而Java天生就招人喜欢,许多程序员都愿意和她亲近。这不禁让我联想到自己的命运,就如同.net,我身上有那么多的优雅特性,但偏偏就永远是单身狗,难到正是因为例命运的相似性,让我产生英雄惜英雄的感觉,才会使我义无反顾,不求回报的追随.net。

虽然我有多年的开发经验,但是我对Java并不算太熟悉,仅有的经验是来自于几个android项目。Java web的经验可以说为零。但似乎如同武侠小说中所写的那样,只要内力足够深厚,任何武器都可即拿即用,而且威力无穷。我使用陌生的Java web开发,几乎没有任何学习成本,网上找了几篇关于tomcat、spring安装和部署的文章阅读,将开发环境搭建了几起来后,就从门外汉直接过渡到熟练工动手开发系统功能了,此外,得益于hibernate框架的威力,我开发的效率还要高于之前使用的php技术。项目从最开始的技术定型到最终上线,几乎没有碰到任何波折,一切都非常的顺利,而且也已经有其他之前是做php的同事参于了进来和我共同开发了。

会用Java是一回事,而精通Java又是另一回事,我可以使用Java技术和框架快速的开发一个网站出来,但是我还是不了解spring框架的内部细节,我没有去看过spring的源码,我不了解tomcat的内部实现细节,也没有看过tomcat的源码,我不懂和如何根据特定的操作系统和硬件环境对JVM进行性能调优,这些都将成为我将来工作中解决问题的绊脚石。显然,我现在还是一个Java新手,一个拥有多年工作经验的新手。

在我刚入行时,曾被这样一段话洗过脑「程序员修炼也讲究内功和招数,算法、操作系统、编译原理、面向对象这些属于程序员的内功,而各种编程语言就是招数,程序员技术的修炼应该是内功为主,招数为辅,只要内力深厚,使用任何招数都威力无穷」,作为一个武侠迷兼程序员,我把这段话当成我职业生崖的指路明灯,我能快束上手Java也正是得益于此。然而,武侠世界变换莫测,令狐冲丧失内力还能利用独孤九剑败尽各路武林高手,任我行抛出橄榄枝选他为下一任日月神教教主的继承人,任盈盈芳心暗许,此生非他不嫁。程序员的江湖中令狐冲式的高手也更受欢迎,就如同一个精通各类Java框架、服务器、虚拟机的Java程序员,到哪都吃的开。

当年,我因为无意中得到一本asp秘籍而拜入微软门下,一路从最低端的vbs学到最高端的f#,出师后才发现本门在江湖上并没有什么地位,口碑还差,根本没有什么江湖组织愿意雇佣我。于是我乔装打扮成前端工程师和php程序员混饭吃,然而,师门在我心目中的地位一直没有动摇过,现在,迫于生活,我又要假装成Java工程师去骗吃骗喝了,然而,这一切都是被自愿的。对于初入江湖的程序员,希望不要重蹈我的覆辙,一定拜入一个在江湖上有声望地位的师门,好好修炼内力,练习招数,出师后能早日升职加薪,扬名立万,迎娶白富美,出任CEO,登上人生巅峰。

一个程序员重写一个旧系统的故事(一)

http://chhblog.com/article_view?id=326

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 带你撸出一手好代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档