曾几何时,我多少次吐槽自己接触的项目,数落它们的种种不是,项目文件结构混乱、代码层次不清晰、严重的代码冗余、巨型代码块、缺少注释和日志、散落在各处的静态配置项、混乱的数据校验和异常捕获、脆弱的稳定性和扩展性,每一次功能升级和问题解决,都是胆战心惊的。
这些问题仅仅是后端开发阶段可能出现的问题,加上需求分析、功能确认、界面设计、架构设计、技术选型、测试等阶段,会有更多问题暴露出来,每个阶段都是相互递进、相互补充的,需要得到大部分同事的认同才可以往下执行,过程中,需要反复的沟通和讨论,团队成员要合理划分、有所成长,项目成本和进度也要合理的控制。
可见,对于一个大项目,写好多不容易。
我的问题和想法
我主要做Java后端开发,工作有5年了,遗憾的是没有写过令自己满意的代码,开始说的问题多多少少都会有,另外,对自己开发过程中使用的技术也不是特别深入,遇到一些特殊的问题时,也是无从下手。
究其原因,总结有2点:
- 没想清楚「做完一个项目」或「解决一个问题」能够获得什么?
- 浮于技术的表面,深度不够;
记得之前发过一个空间说说:“遇到一个问题时,如果能够嘴角上扬,那是很高境界了”,确实,当遇到问题时,特别是线上紧急问题,内心会有排斥和压迫感,一方面肚子里没水,没有相关的积累和经验,更重要的是心态不对,没想清楚问题解决之后,能够获得什么。
其实,做完一个项目,最直观的收获是:会使用一些技术了,但如果是已经会的而且很熟的技术呢,还能获得什么?更不用说到处copy代码了。
所以,不能仅仅关注功能实现了,对自己来说,实现的过程和质量才是最重要的,一步一步递进,稳步执行,不断总结,慢慢形成自己的方法论。
另外,面对问题,多想想自己从中获得的经验和积累,就不会有排斥心理了,而会很用心的完成它。
有方法、好心态是前提,很重要,想要很好的实现,就需要技术功力了,功力不够,在面对一些特殊的线上问题,或是考虑系统的可用性、性能、高访问量、扩展性时,就会很棘手。
所以,对于经常使用的技术要深入、专一,才能更好的实现系统功能,应对各种问题。
以上是我的现状和反思,希望自己能有所改进。
关注点
现在的我觉得数据结构和算法等基础很重要,虽然实际开发中很少用到,但对于理解JDK核心类库或框架等的实现和设计思路,有很大帮助,这恰恰又是我相对薄弱的地方,一定要慢慢补回来。
在处理高并发时,多线程、IO是基础、网络,多线程使你能够并行处理一个任务,IO使你能够在各个服务和组件中交互,网络是连接的基础,共同完成一个业务操作,掌握它们,对高并发的优化、相关框架的理解有很大帮助。
另外,清晰的项目文件结构和代码层次,统一的代码规范和版本控制,一致的数据校验和异常处理也很重要。
最后是考虑系统的可用性、高性能、易扩展、高吞吐量等,使用领域驱动的思想进行整体设计,深入了解常用的框架和组件,灵活运用各种设计模式。
团队协作和项目管理也很关键,它们是项目真正实施的有力保障,想转向管理的我,要多向身边的人学习。
以后的工作过程中,应多关注以上方面的积累,重视每一个需求点和问题,因为这是积累最好方法。
想到能够获得这么多,你还会排斥吗 ~
随着互联网的发展,项目会不断变大,要求会越来越苛刻,技术也会不断变化,写好一个项目更不容易,要明确自己的关注点,时刻学习和实践。
欢迎扫描下方二维码,关注我的个人微信公众号 ~
相关推荐
用户管理系统是软件开发中的一个重要模块,它...这是一个很好的实践项目,对于想要提升软件开发技能的人来说,是一个宝贵的资源。在实际应用中,还可以进一步扩展,如集成社交登录、实现单点登录(SSO)等高级功能。
在"用Backbone.js写的小项目"中,我们可以深入理解如何利用Backbone.js来实现一个基础的增删改查(CRUD)功能。 1. **Model**: Backbone.js的核心是Model,它代表了应用中的数据模型。在这个小项目中,每个Model...
2. 初始化权重:每个连接都有一个随机初始化的权重,这可以通过正态分布或其他方法实现。合理的权重初始化对于网络的收敛速度有很大影响。 3. 定义激活函数:常见的激活函数有sigmoid、tanh、ReLU等。在本项目中,...
对于初学者来说,这是一个极好的实践平台,能够深入理解Vue2.0的工作机制和开发流程,同时也能锻炼手动配置项目的能力,避免对工具的过度依赖。通过仔细研究和实践这个项目,相信你对Vue2.0的理解将有质的飞跃。
其次,注重细节和准确性是写好需求文档的关键。文档的表述应当清晰,避免模棱两可的表述导致误解。这包括对功能的详尽描述,如“高亮显示”应具体说明何时、如何以及为何使用。每个功能点都应精确无误,确保所有相关...
数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...
所以,写得越清楚,将来回顾起来就越容易。 - **用英文书写**:尽管这取决于团队的偏好,但大多数开源项目和国际化的团队倾向于使用英文书写提交消息,以便于不同国家的成员理解和参与。 在Python开发中,良好的...
2.2.1 第一个容易犯的错误:不清楚调研的的目的 8 2.2.2 第二个容易犯的错误:计划不够细致 9 2.3 调研准备阶段容易犯哪些错误?(中) 10 2.3.1 第三个容易犯的错误:计划没有在内部沟通 10 2.3.2 第四个容易犯的错误...
在本文中,我们将深入探讨如何使用Visual C++(VC++)开发一个简单的MP3播放器。这个项目展示了如何集成音频处理库...对于初学者来说,这是一个很好的学习项目,可以深入理解C++编程、MFC框架以及音频处理的基本原理。
标题提到的"react-一个封装好的react portal组件你不需要在body下面写静态的HTML",就是一种针对这个问题的解决方案。这个组件利用了React的`ReactDOM.createPortal()`方法,自动为你创建和管理Portal的DOM结构,...
为了弥补这一不足,"Android-xposed-ktx"项目应运而生,这是一个基于Kotlin的Xposed扩展项目,它为Xposed框架提供了更加简洁、易读且高效的Kotlin API。 这个项目的核心目标是使Xposed框架与Kotlin语言更好地融合,...
7. 你的性格:你是怎么样的一个人 回答实例:面试官:请简单的介绍一下你自己吧!令狐冲:您好,在下令狐冲,从事 j2ee 开发工作 3 年时间。20002 年至 2005 年在大宋桃花岛软件谷皇室软件公司从事 j2ee 项目开发。...
本项目是一个基于MFC(Microsoft Foundation Classes)框架开发的简易画图程序。MFC是微软提供的一种C++类库,它封装了Windows API,使得开发者能够更容易地创建Windows应用程序。这个程序允许用户在窗口内进行基本...
此命令会在当前目录下创建一个名为 `your-project-name` 的文件夹,并在里面生成一个完整的 React 项目模板。 3. **开发流程**: - 进入项目目录后,可以使用 `npm start` 命令启动开发服务器。这将自动打开浏览器...
标题中的“自己动手写的类似spring框架”指的是一个教学示例,它是作者为了讲解Spring框架的基本原理而自制的一个简化版框架。这个框架的核心功能是模拟Spring的IoC(Inversion of Control,控制反转)容器,帮助...
在给定的"单位写的11个优秀存储过程"中,我们可以期待看到各种实用的示例,可能包括但不限于以下内容: 1. 数据清理和维护:例如,定期清理过期记录,确保数据库整洁。 2. 事务处理:结合BEGIN TRANSACTION、COMMIT...
"前端项目-chai.zip"是一个包含Chai库的压缩包,Chai是一个广泛使用的JavaScript测试框架,它为Node.js和浏览器环境提供了强大的行为驱动开发(BDD)和测试驱动开发(TDD)的断言工具。这个项目旨在帮助开发者在他们...
数据库已分离好,下载后往SqlServer附加我的数据库文件,还有在MyEclipse导入我的项目就就可以使用了(注意我的SqlServer的密码可能和你的不一样,你要根据自己的密码修改我项目里面JDBC的密码,是写在一个db....