一个人的高考成绩,由过往三年的学习决定。我2020年从学校辞职。辞职前的三年时间,教学工作加上大量的编程,耗尽了时间、体力。除了教学工作、实验课、指导毕业设计,另外开发项目、升级改进项目。做过java版局域网联机对战游戏、仿王者荣耀游戏道具合成、复杂的休闲游戏,做安卓游戏、网页游戏,简易的在线考试系统。最后一次谈的项目,是java学校想做体育课补测管理系统,没来得及做。
做这么多项目、不同技术种类的项目,提高了项目设计、开发能力。做项目耗费的时间精力,比教学工作更多,只能离开学校到企业。
当前项目是一个混合多种技术的架构:
mysql+javaee SSH/SSM+ JSP/Flutter 移动端/IOS 原生/移动端webview。
其他模块:定时任务、短信通知、环信消息、多种格式的云文件上传预览、
网络直播、
拉起手机浏览器、拉起腾讯会议,其他正在开发中的新功能
,在自制的消息模块、文件上传模块上拓展数据分析、数据挖掘;数据大屏
。
只看这个架构,就知道规模、难度、复杂性。艰难的开发过程。各种状况和返工、人员的招聘和离开,都是难题。更有其他技术之外的问题。这不是学生能理解的“软件项目实战”。
人们问我离开学校后悔不后悔。我的个人状况,肯定要去企业。这个项目是真难。
企业中的实战,第一天通知见客户,第二天双方谈需求,做与不做,难易程度、规模大小、技术选型、资金人力,怎么做?前期成果怎么办?舍弃重做,优化扩展?哪个任务优先做?挑了一个简单模块先做,做到一半,遇到了难题、新问题,怎么做?
书本以内的知识,少量代码的例题,是初学者要经历的入门过程。即使到了毕业设计,50个学生做50个不同题目的毕业设计,只是把一个简单技术重复50遍。有老师带领学生做大型项目,虽然好,只是提高了一点设计、开发能力,依然是初学者。一个人毕业后,如果要从事五年、十年软件开发,真正的实战能力,来自企业工作中的积累、各种新问题的磨炼。招聘程序员时,我问:你给项目加一个有竞争力的新功能,怎么设计,技术方案怎么实现?挑战复杂项目,在企业里做商业项目,真是重重考验。
一、项目简介
已经完成的具体项目功能,不能公开。通用的架构、功能点、技术要点,可以写一下。技术是通用的,公司项目不是这个,我按“拼单预约打车”来讲。一个人如果能开发一套完善的“拼单预约打车”系统,就一定能开发我们公司的软件,也能开发其他类似软件。
1
.软件架构:mysql数据库+javaEE后台+PC网页/手机网页/安卓app/苹果app。
2.用户角色:多位乘客、多个客服、多个司机、后台管理员。
3.业务情景:多位乘客先后打车,共同拼一单,等待多个司机接单,客服可以指定某个司机去接单。当客服让司机去接单时,司机可以选择同意、或者拒绝。一个司机可以推荐另一个司机去接单。乘客、客服、司机之间,可以互相聊天。
4.功能点(实际项目的简化版):
(1)乘客:注册登录,预约打车,添加多名乘客,添加司机,预约列表,预约管理,打车评价,关注收藏。
(2)司机:司机详情,我的订单,同意/拒绝预约,添加司机,日程表管理。
(3)客服:添加乘客、添加司机,向司机发出邀请、等待同意。
(4)管理员:各种数据的管理,用户权限管理,全局属性设置、开关配置。
5.模块组件:网络直播、短信通知、消息聊天、文件上传下载、图片预览、视频播放。
二、项目从0到1,技术架构和艰难的实施
过程
各种企业项目,都是标准的用户管理、角色权限、业务流程、业务数据管理、行为日志、消息通知、文件处理,加根据具体业务订制的特殊功能,加第三方模块。
目前的架构师是一个混合架构:
mysql+javaee SSH/SSM+ JSP/flutter 移动端/IOS 原生/移动端webview。
根据公司具体业务、量身订制的软件,先做一个简易版本,再逐渐完善,平时要多次评审测试、修改、返工。
最开始,我用JavaEE SSH+html/js、jq、JSP、ajax,做一个简易版本。然后评审、修改。
之后,其他程序员用JavaEE SSM做预约单列表、关注收藏、日程表管理、司机详情,用户权限管理。
上述功能,是手机版网页效果,使用微信扫码进入;管理员使用PC浏览器进入。
然后,用Flutter WebView加载H5,做安卓APP和苹果APP。使用Flutter Webview和JavaScript的混合交互,使用Flutter的手机文件上传、Flutter版环信消息。
然后,用IOS原生+IOS WebView加载H5,做了新版苹果APP。
数据库设计,用了一种不好的方案。
如果可以重来,我一定用mysql+JavaEE SSM+安卓原生/ios原生,并且重新设计数据库。
低代码平台、代码自动生成工具、前端模板,也许可以加快项目开发。
做一个后台灵活配置、可通用使用的应用系统,Discuz论坛模板就是一个优秀案例。
三、其他项目
JavaEE SSH版患者管理、疾病管理系统,SSM+Shiro+Activiti报销管理系统,都是经验教训。
新的功能是Python数据分析、数据挖掘,人工智能做曲线拟合、然后实现某疾病的智能诊断。