java开发三年,总结一些经历与经验。_java开发工作经历
很多人认为开发三年是成为一名程序员的重要阶段,在这一阶段中他们已经掌握了基础的技术,并熟悉了常用的工具与软件。在职业发展方向上面临的选择也非常多元多样,在这个时候很多人会思考到底是专注从事技术工作、还是从事管理岗位?又或者转向测试、运维、前端等领域?还有人会选择转行到其他领域去发展,在这个时候可能会考虑回到 basics 或者从事一些副业来维持生计。
首先
要总结下这三年的经历与学到的东西。
2014年毕业后,在公司任职期间始终未更换工作岗位;这种职业轨迹可以说是比较少见的情况。由于公司采用外包模式运营,在薪资待遇上相对较低且难以获得专业技术能力;与同类入职者的百名同事几乎全军覆没相比而言, 我可以说幸运之神对我格外关照, 被分配至北京地区工作, 并顺利拿到了完善的出差补助, 从而得以正常生活下去。初到北京时毫无所措的状态, 在经历了适应期后逐渐恢复理性并找到生活节奏。
大学阶段并未系统学习专业知识与技能, 这一现象在同类新入 batch 中并不罕见;然而在实际工作中发现, 大部分新员工在操作层面也未能完全掌握相关技能基础。
第一个项目主要是处理涉密开发工作,在没有互联网环境下完成任务。由于缺乏经验,在网上查找资料又显得繁琐费时的情况下选择直接复制他人代码片段(因为目前还处于学习阶段)。虽然刚刚毕业主要学习了数据库的基本操作如增删改查以及文件传输操作(当时对网络传输协议并不熟悉),经历了长达两个月的高强度工作才逐渐掌握了基本开发技能。项目接手后规模适中,在团队协作中我与经理及另一位同事共同承担了开发工作(印象中整个项目的框架架构采用的是SpringMVC+MyBatis技术 stack,并以tomcat6服务器为核心(国家鼓励国产化发展因此选择了浪潮服务器操作系统麒麟系统以及达梦数据库作为基础架构)。尽管如此但在实际应用过程中仍面临不少问题(国产服务器性能有待提升因此国产技术还需持续改进)。
刚上手的时候我是团队唯一的经验不足者没有指导人员指导导致许多困惑(特别是关于SQL语句书写位置的问题非常棘手)。经过一番摸索终于理清思路并解决了初期的技术难题(虽然在数据上传与下载过程中一度感到迷茫甚至一度考虑放弃)但最终通过不断学习逐步掌握了相关技术。
在项目的开发过程中遇到了不少挑战尤其是涉及到军队系统中的表结构设计部分由于字段较多(100多个字段)导致新增功能异常复杂(从数据转换到传输过程中的IP、MAC地址等属性都需要一一处理)。为了提高效率还进行了多次技术优化尝试包括数据分包传输机制的设计与实现。
在实际应用中发现需要考虑多方面的安全防护措施包括文件加密与传输加密两大模块(文件加密采用分包位移策略确保传输过程中的安全性)。整个开发过程中还涉及到了测试、部署、文档编写等多个环节都积累了宝贵的经验。
通过这段项目的实践积累下来的经验包括:独立承担项目工作的能力、解决突发技术难题的能力以及提升团队协作效率的方法等这些都成为未来工作中不可或缺的基础。
总结:从这个项目中获取了很多宝贵的经验。了解了一个项目从设计到上线的整体运行流程。掌握了许多关键软件的技术操作能力,如企业级数据库系统管理模块的设计与实现等技术细节。项目的实践也暴露了一些需要改进的地方,虽然项目的规模逐渐扩大,但在实际开发中存在大量依赖他人现成代码的情况,仅停留在表面操作层面,离开具体项目后难以独立完成代码编写工作。
第二个项目属于政府部门的任务,在常规的应用管理系统中使用的是SSH协议作为基础架构。该项目包含常见的OA系统和其他相关模块,在基础技术层面的问题相对较少。主要的技术难点集中在对UKey整合方案的支持上,并且需要完成统一身份认证功能模块的设计与实现;此外还需要构建一个功能门户平台,并对现有插件进行整合优化以提升整体效能。项目的持续时间为大约一年,在开发过程中会涉及多个子项目的协调推进以及后期现场驻留进行用户验收测试、需求变更把控、系统稳定性保障和功能性增强等环节
相较于第一个项目而言,在开发进度上更为迅速且成果更为出色。不仅能够独立完成功能模块的设计与实现,并且能够熟练掌握查询方法,并成功调用API进行数据交互。在技术难点方面,则需要特别注意的是,在遇到某些技术难点时缺乏系统化的记录导致遇到类似问题时需要反复查阅资料才能解决的同时也未能将相关经验完整地进行总结与积累。关于框架的具体应用层面,则是当务之急有待进一步提升的部分即当前仅仅停留在表面应用阶段缺乏深入的理解与结构性的认知因此在遇到较为复杂的模块设计时显得力不从心
第三个项目是由深圳市政府主导的大规模信息化建设项目。项目的规模较大,旨在覆盖全市各机关单位的无纸化办公系统运行。由于项目经理工作经验较为欠缺,以及前期工作中的若干问题,致使项目的推进效果并不理想,反而导致工作量持续攀升,人员流动性较高。项目涉及的功能模块包括公文事务、政务流程及督查机制等,由于各方面的业务需求存在差异性,仅靠统一化的流程处理显得力不从心。在协作方面,本项目参与方已经超过10家,作为中软公司主导方,与各方团队进行有效协作存在较大难度。项目的最大问题在于缺乏科学合理的规划设计,加之需求不明确性导致软件开发过程中缺乏必要的安全保障思维。从长远来看,这个项目具有较大的发展潜力,但其实施周期过短且任务繁重,这直接导致连续多月的工作超负荷运转状况难以避免。同时,开发团队的整体素质参差不齐,技术能力有待提升,这也直接影响着项目的整体推进速度和发展质量。此外,项目的第三方平台支持有限制性地进行功能扩展修改工作;平台封装度较高,在可视化界面中可以直接操作数据库以及编写JavaScript代码等操作;但这些都会限制项目的良好代码版本控制实现能力;从而导致同一问题反复出现的现象较为明显.目前该项目仍在积极推进阶段核心功能已实现开发但其接口功能尚待完善;具体包括套红审批、文件签章确认、正文内容编辑等功能模块;以及文件导入与导出操作;移动办公(pad设备)应用支持;邮件系统管理;短信通知服务;二维码打印生成等功能模块;还有CA认证流程支持即时通信工具集成接入数据迁移等关键业务流程的支持工作.目前看来项目的进展仍显缓慢,,面临诸多实现上的困难
第三个项目尚未完成,在短短几个月内给我留下了深刻的印象。由于团队未能为成员提供稳定的岗位 assignments,在最忙乱的时候加入后面临了巨大的工作压力。具体来说,在项目初期我负责需求开发一个月、功能测试两个月以及数据迁移工作一个月。这些经历让我深刻认识到团队未能为成员提供稳定的岗位 assignments,并且现有的项目管理体系存在严重缺陷:团队无法将成员固定在单一的岗位上进行工作,在这种情况下工作效率必然受到影响。作为一名开发者,在这样的环境中工作让我感到不安定:现有的系统架构缺乏足够的安全性,在完成的功能中往往会被他人随意更改却难以发现改动之处(尤其是基于svn的版本控制导致数据库版本难以追踪)。经过这段时间的工作体验后,在各个小组中我都积累了一定的项目管理经验,并对未来如何进行高效地管理和执行大型项目有了更深入的认识和思考。这些经历不仅帮助我在项目的组织协调方面获得了提升,在对项目的整体把控能力上也得到了很大的锻炼与提升
其次
总结下当前个人遇到的问题。
这个人属于经常感到纠结的情况,并且可以说是存在选择困难的人。他现在面临的问题让人感到非常困惑,并对未来没有明确的方向感。
1、这个行业是否能干下去,是不是应该回家。
软件这一行的职业生涯可持续多久;是否能够一以贯之持续发展下去;未来的职业路径是否合理;自己是否有意回到原来的工作岗位;或是开拓个人事业的可能性如何等问题都让人深思不已
2、开发是否适合自己一直干下去,这行是否有上升的空间。
虽然自己是开发出身,但清楚自身的工作分量.正常的开发工作是没问题的,但是一些简单的技术问题还是能够解决.然而,对技术深入的理解以及持续学习的愿望并不强烈,缺乏对技术深入钻研的热情,这样下去即使干几年依然停留在单纯的开发岗位上,也没有太大的职业发展空间.那么是否应该找到适合自己的发展方向?第一个重点方向自然是项目管理.经过多年的开发实践,发现项目中存在很多让我感到不满的问题:需求变更频繁导致后期难以维护;项目的初始规划不够完善,影响了系统的可维护性;作为拥有强迫症的人,这种状况难以容忍.即使自己无法做到完美执行,也可以尝试挑战一下.第二点就是设计了.作为开发者,两年来基本很少接触设计工作:拿到需求就直接开始编码实现功能;框架结构由项目确定,功能模块的设计也是由开发者自行完成.作为科班出身一直认为设计非常重要并且对自己的思维有一定的信心.第三点就是需求了.与人沟通不仅仅停留在表面的功能实现层面,更重要的是理解对方的需求到底是什么.第四点是软件测试工作.经过两个月的时间感觉并不适合自己:重复性的工作让我难以坚持下来;因此应该更多地参与交流并积累经验去努力提升自己
3、跳槽的问题。
