写好一个项目不容易

曾几何时,我多少次吐槽自己接触的项目,数落它们的种种不是,项目文件结构混乱、代码层次不清晰、严重的代码冗余、巨型代码块、缺少注释和日志、散落在各处的静态配置项、混乱的数据校验和异常捕获、脆弱的稳定性和扩展性,每一次功能升级和问题解决,都是胆战心惊的。

这些问题仅仅是后端开发阶段可能出现的问题,加上需求分析、功能确认、界面设计、架构设计、技术选型、测试等阶段,会有更多问题暴露出来,每个阶段都是相互递进、相互补充的,需要得到大部分同事的认同才可以往下执行,过程中,需要反复的沟通和讨论,团队成员要合理划分、有所成长,项目成本和进度也要合理的控制。

可见,对于一个大项目,写好多不容易。

我的问题和想法

我主要做Java后端开发,工作有5年了,遗憾的是没有写过令自己满意的代码,开始说的问题多多少少都会有,另外,对自己开发过程中使用的技术也不是特别深入,遇到一些特殊的问题时,也是无从下手。

究其原因,总结有2点:

  • 没想清楚「做完一个项目」或「解决一个问题」能够获得什么?
  • 浮于技术的表面,深度不够;

记得之前发过一个空间说说:“遇到一个问题时,如果能够嘴角上扬,那是很高境界了”,确实,当遇到问题时,特别是线上紧急问题,内心会有排斥和压迫感,一方面肚子里没水,没有相关的积累和经验,更重要的是心态不对,没想清楚问题解决之后,能够获得什么。

其实,做完一个项目,最直观的收获是:会使用一些技术了,但如果是已经会的而且很熟的技术呢,还能获得什么?更不用说到处copy代码了。

所以,不能仅仅关注功能实现了,对自己来说,实现的过程和质量才是最重要的,一步一步递进,稳步执行,不断总结,慢慢形成自己的方法论。

另外,面对问题,多想想自己从中获得的经验和积累,就不会有排斥心理了,而会很用心的完成它。

有方法、好心态是前提,很重要,想要很好的实现,就需要技术功力了,功力不够,在面对一些特殊的线上问题,或是考虑系统的可用性、性能、高访问量、扩展性时,就会很棘手。

所以,对于经常使用的技术要深入、专一,才能更好的实现系统功能,应对各种问题。

以上是我的现状和反思,希望自己能有所改进。

关注点

现在的我觉得数据结构和算法等基础很重要,虽然实际开发中很少用到,但对于理解JDK核心类库或框架等的实现和设计思路,有很大帮助,这恰恰又是我相对薄弱的地方,一定要慢慢补回来。

在处理高并发时,多线程、IO是基础、网络,多线程使你能够并行处理一个任务,IO使你能够在各个服务和组件中交互,网络是连接的基础,共同完成一个业务操作,掌握它们,对高并发的优化、相关框架的理解有很大帮助。

另外,清晰的项目文件结构和代码层次,统一的代码规范和版本控制,一致的数据校验和异常处理也很重要。

最后是考虑系统的可用性、高性能、易扩展、高吞吐量等,使用领域驱动的思想进行整体设计,深入了解常用的框架和组件,灵活运用各种设计模式。

团队协作和项目管理也很关键,它们是项目真正实施的有力保障,想转向管理的我,要多向身边的人学习。

以后的工作过程中,应多关注以上方面的积累,重视每一个需求点和问题,因为这是积累最好方法。

想到能够获得这么多,你还会排斥吗 ~

随着互联网的发展,项目会不断变大,要求会越来越苛刻,技术也会不断变化,写好一个项目更不容易,要明确自己的关注点,时刻学习和实践。

欢迎扫描下方二维码,关注我的个人微信公众号 ~


情情说

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan