imjoey / blog

My Blog based on Github Issues.
286 stars 44 forks source link

寻找快速开发之路 #11

Open imjoey opened 7 years ago

imjoey commented 7 years ago

前传

选择障碍

我对开发语言有极大的完美心理。我用且只用 Java 做主力开发8年的时间,慢慢体会到了它的迂腐笨重。自此,我寻找 Java 的替代品,但貌似现在也还没有选定。比如我觉得 Ruby 的元编程思想很赞,无论是基本库重载,还是1.days.ago,RoR 更是 Web 编程的 killer,但 end 关键字也太丑陋了吧!我觉得 Python 很方便,OpenStack的广泛应用,Python 搞定任何应用系统开发(近3年,Python 是我的主力开发语言),但 Python 的多线程能不能不 monkey_patch!我觉得 Scala 蛮好,Python 一样的编程效率,Java 一样的执行效率,但还是离不开 JVM。虽然我知道“语言无完语言”,核心还是“算法和数据”,但心理那关,真不是理性能解决的。

语言对比(选择),自古就是个极度争议的话题,不知道什么时候开始,但确定永远不会结束。

而如今,Go 异军突起,大有燎原之势。 Go 的并发编程和执行效率,以及云环境下的易于部署,Docker 的火爆,国内互联网公司的大规模使用,让我了解了它的强大;但 Go 的 GC 效率、反射效率、无泛型也让我对它有一定的畏惧。不过我打算尝试一下,没准它未来就是我的主力!

终极目的

找到快速开发的若干种模式,只需要很少的工作量便能快速实现整套系统(一般是:“基于数据库的数据管理”的系统)的代码,极大提升开发效率,极大提升赚钱效率!

内心煎熬

遗憾

我跟朋友们接私活也有好几年了,由于合作的人(同事居多,流动性大)不是很固定,所以没什么固定的积累。比如之前做一个 p2p 金融的项目,甲方要求我们必须用 Java+Spring,大家就临时凑起来搞。但其实我那几年没做 Java,甚至对 Spring 那套东西很是反感;当时我用Python作为主力,即便是 Java,也已经转向了Java派系中的 Play2、JFinal这类快速开发框架(其实现在想想,还是太久没关注 Java,连 Spring-Boot 都不知道)。

失望

最近的两个项目,我都选择了 flask 作为 Web framework,不像 Django,比较灵活一些。但凡事都有两面性,灵活,就意味着很多东西需要自己去找自己去对比。比如 做 restful 的 flask-restful,做参数验证的 flask-wtf和 flask-input,做 ORM 的 flask-sqlalchemy,做认证的 flask-login,做鉴权的 flask-security,做序列化的 flask-marshmallow,这几个看起来与 flask 集成后解决特定问题,互不干扰,但实际上,flask-restful自己做了json 的序列化(其实flask-marshmallow做得更好)和参数验证(其实flask-input做得更好);如果要同时使用 flask-sqlalchemy和 flask-marshmallow,竟然还要安装一个marshmallow-sqlalchemy!

啊!!!这些 flask-*到底都是些什么鬼?我看了其中的一些源码,发现其实就是为了让程序员少写那么一丁点代码。灵活到这个地步,还不如 Django 的专制! 。。。我想静静。。。

指导方针

现有模式分析

要实现快速开发,有两种模式:

有一种叫做代码生成器。在读本科做项目时,就接触过一个,它可以根据数据库直接生成基于 struts1+spring+hibernate+html+jquery 的整套系统代码,除了支持常见的数据 CRUD 外,系统还支持模糊搜索、多属性查找。据说,国家的*项目的管理系统就是用这个代码生成器在一瞬间完成了70%,帮教授节省了巨大的成本。

虽然听起来如此神奇,但在过去的这么多年里,这种类型的通用型代码生成器并没有被主流开发团队使用(包括我)。为什么呢?细想一下,这类神器自动生成的目标代码,通用性高,但定制性差,定制成本高;而且技术团队使用这种东西时间长了,会极度缺少技术积累。所以此类神器只也适合于那种“来一个,做一个,扔一个”类型的项目。

另一种,就是开发模式积累。如果技术团队一起开发了两三个项目,其实是可以确定团队擅长的开发语言、合作模式、代码框架、功能模块,有同类型项目直接拿现成模式去套就行了。这种模式的积累,一方面加速开发,提升团队效率,另一方面,不断强化积累的数量和质量。

也有一些团队,结合了上述两种模式,根据自己的开发模式,自己写代码生成器,节省敲键盘的时间。这种肯定是最优的。

策略

怎么才能寻找我想要的快速开发之路?我想这几步是必不可少的。

开发框架

合适的开发框架是第一步的,这个框架,可以是拿开源的,也可以是改开源的,也可以是自己写的。

代码生成器

找一下是否有现成的代码生成器支持以上开发框架,如果有,用一用,根据自己需求改一改;如果没有,那就自己写一个。

实际应用

“是骡子是马,拉出来溜溜”,做完前两步,就拿出来好好在实际项目中用一用。

hwen commented 7 years ago

好奇。。。你们是如何在接私活的同时兼顾到日常的工作的?

imjoey commented 7 years ago

@hwen 其实很简单,就一点:我不在(移动)互联网公司,^__^。