我是闲大赋,我的Beetl 开源转眼已经有8年历史了,BeetlSQL也有3年开源历史。不断有朋友发邮件告诉我,使用了Beetl代替了原来的Freemarker&JSP,或者使用BeetlSQL获得了很大的便利。 前几天,还就有个朋友告诉我,他们的平台为是国内所有信用卡APP提供服务,使用的技术正是BeetlSQL。
并非想炫耀自己的开源技术,而是感到郁闷,我经常为我自己的开源技术并不能用到自己的公司而感惶恐和悲哀。记得我多年以前我在电信系统公司的时候,有个朋友自称他们研发社交系统说使用了Beetl,他自报家门是电信研究院的,我很开心,我们在一栋楼,他就在我楼下。我也很郁闷,因为我自己的公司,我从来都推动不了使用我的开源。
反对我使用Beetl和BeetlSQL的原因我好多都忘记了,我只记得三个月前,当我推荐公司的开发平台使用BeetlSQL而不使用MyBatis方案的时候,我得到的反驳是,万一我不在公司了,BeetlSQL还会支持嘛?他们认为MyBatis无论如何,都会持续发展,且任何问题都会从网上找到答案。
我对反驳我的同事嗤之以鼻。同样是这些同事,还曾经反对我用Spring Boot 搭建系统,而说要用SpringSide搭建,我后来写了一本畅销书《Spring Boot 2 精髓》他们才作罢。
我每次都收到朋友的来信说采用了Beetl&BeetlSQL,我都会小郁闷一下,为什么不认识我的人愿意信我,而天天在一起工作的同事,却充满了疑惑。
我无法反驳我同事的观点,显然我的开源产品正在跟一个庞然大物做斗争,更何况我的开源还有一定的技术革新。我没有百度,阿里,华为那样公司级别支持,能轻易获取使用者的信任。我从事的开源与我的工作没有交集(我一直都很羡慕有些程序员的工作就是开源),我本人也只是一个IT普通从业者,无显赫的学校背景和工作经历。拿我们客户的话来说我,“你无法说服我,因为你的薪水只有几十万,而咨询公司的人年薪有几百万,虽然我觉得你说的也没错”。
利用开源的人,如顺水行船,创造开源的人,如逆水推舟。
开源生活里碰到的郁闷不止这一处,比如,开源乐趣并不会长久,更多的是责任。开源使得自己专注与某一领域技术,对其他技术不太掌握,很容易落后时代。开源很容易遭受谩骂和攻击,比如,我就在社区里遭受各种诋毁,今天就有一个轻度诋毁 http://bbs.ibeetl.com/bbs/bbs/topic/1321-1.html,事实上我很莫名其妙,严重的莫过于社区网站都被黑过。现在都还有些我马甲周期性的来问候我。我那一代老程序员在年轻的时候被很多技术忽悠过,如早期重量级EJB技术,过度复杂WebService,想接管一切的Hibernate,问天天不应,叫地地不灵。现在,本以为以我对我所在模板技术,数据库访问技术领域的实践以及开源产品成果,可以把让我大胆讲一些同类开源的述优缺点,但还是有不少人恶意揣测我的文章。
开源当然有很多好处,比如获取到更好的工作.... 据说,现在淘宝上专门有买github上的fork和watch的,可见开源人多受IT公司的欢迎。现在外国人都不太理解为何github上有很多中国人疯狂的PR......我的现在这一份工作就是这么获得的,当时面试我后,公司并没有感觉我适合,但幸好一个人喝水的时候看到我的简历,他知道Beetl,也晓得我纯手写了虚拟机代码来提升Beetl性能。再他的推荐下我才能侥幸获得现在一份工作,这也说明,就算你有一个很好的开源,也并不一定能得到应聘公司的肯定,我简历其实还投了很多公司,都没有有因为我做个Beetl&BeetlSQL而能得到一份更好的工作。我有时候想,我应该给其他知名开源打个下手就好了,又不费劲,又能更出名,比如,我应该贡献一下Spring Cloud周边工具开源,或者Elastic Search周边开源,这样,我能得非常高的薪水. 我也劝那些有志于通过开源提升自己的人,多从事一下流行开源技术对自己比较好。Beetl这样技术,虽然很复杂,但谁会欣赏一个模板技术开源作者呢?
做开源有8年历史了,自己的技术有了很大提升,这肯定比在公司做8年业务开发提升太多了,总结了很多软技能,愿意和大家一起分享。
- 开发软件不是一堆人一起做工程,而是一堆人一起写小说。
:可以想象团队开发软件难度多大,有时候开发出来,客户根本看不懂,就是这个原因
- 软件可读性非常重要,远远超过了“写的便捷”
:代码要写的酸爽,还是读的愉快,这是程序员入行面对的首要问题
- 没有一个对象解决不了的问题,如果有,用俩个对象
:当发现解决不了软件问题的时候,也许是你的系统里,有个隐含的对象你没有考虑到
- 没有用一个层解决不了的设计,如果有,用俩层
:这个不用说了,这是分层架构是架构模式里的一等一模式。
- 开源并没有多大乐趣,审美很重要
:开源的区别,最后主要是审美区别,你觉得xml配置好,我觉得JSON好,他觉得YML好
- 故意错误是学习新技术的窍门。
:给新手的建议,比如任何一个技术的helloworld例子,你都可以故意制造若干错误来学习新技术,当然,也可以通过这门技术对错误的处理来了解技术的成熟度。
- 学会最管用的模式是“职责模式“
:这是设计模式里最重要的模式。或者,你只需要知道这个模式就不会犯错。
- 开源并不是百米跑,一声枪响,按照规划直奔终点,而是一场探险攀登,也许下坡路正是到顶的唯一路径
:知识越来越普及,然而开源并不容易
每次因为开源而郁闷的时候,都会写一篇这样博客抒发一下情怀。第一篇发表在2014年,第二篇发表在2015年。不过总得来看,因为开源,日子过的还是非常精彩,比如,机缘巧合获得了一份不错的工作;得到电子出版社青睐,出版一本畅销书;得到很多平台的邀请有露脸演讲机会;还有因为开源结交了很多不可思议的朋友们,最后,我认为最重要的是,也是我的初衷,让技术变得更实用和更容易,我应该改变IT世界一点一点。