外包公司做遗留项目有意思么?

简介: 过年后,在目前公司的工作就要告一段落了,又恰逢年终,终觉得还是要总结点什么,来个了断吧~ 背景介绍 考虑了一下,似乎技术上没有什么太多可说的,再加上外包项目也不能透露太多客户的东西。

过年后,在目前公司的工作就要告一段落了,又恰逢年终,终觉得还是要总结点什么,来个了断吧~

背景介绍

考虑了一下,似乎技术上没有什么太多可说的,再加上外包项目也不能透露太多客户的东西。3年多做得都是同一个Account(客户)下的项目,是客户产品线下的一个数据中心产品,面向数据中心的基础设施用户,也就是国内IDC。产品提供数据中心IT基础设施运维整体解决方案, 属于行业内KVM交换机顶级品牌, 另一家也是美国厂商, 行业内剩下的就是国内中低端的深圳厂商, KVM over IP 还是较有技术含量的。

该产品有悠久的历史,最早的代码在源码中的标记是10年前, 那时java还处于一个婴儿期, 并没有这么多开源框架支持企业级开发, 数据模型还是用java bean封装,操作方法也在bean中, web层的调用直接穿透到持久层(也就是bean)这里。so,这样的东西有技术挑战么?

遗留项目到底有没有意思?

大部分程序员都喜欢搞新项目,觉得新项目不用吃别的程序员的"狗食", 能大胆用新技术,很爽。但现在IT信息化已经进行了10几年了,如果是外包行业,基本上接的最多的项目肯定都是维护性项目, 一般企业哪有这么多新项目啊,都是遗留系统。

遗留项目自有它的特点, 首先要吃透该系统的整体技术设计, 至少是宏观上的层面要有个整体把握,然后才能根据客户的enhancement需要来设计,不要破坏已有系统的设计,偏离了原来架构的设计意图,会使软件越改越烂,就是重构那本书里提到的"bad smell"。一旦有这个趋势,要及早处理, 这个技术债越欠越多,维护的人员一批一批的换,到最后没人搞得清楚整个系统的runtime运作,有些公司老产品折腾不来了干脆推倒重来, 然后循环又开始了。

这个就是维护的技术含量了,听说还有个专门的行当叫维护架构师,国内公司似乎还没发展到这个程度。你需要在遗留项目定好的条条框框里辗转腾挪,使劲浑身解数,为了提高产品的一点性能,应付越来越多的数据,保证质量的同时,尽量引入当前比较主流的工具或方法学来提高团队效率。

我们的项目就经历过一次大幅重构:

  • 数据库从PointBase内存数据库更换到主流开源库Postgresql
  • 引入Ioc(Guice)
  • 基于原来的bean方式简单操作重新用JPA封装了持久层
  • 由于原来内存库在数据量不大时速度如飞,更换了常规文件系统数据库后必然影响性能,所以加了ehcache缓存,对sql中where语句的查询结果进行缓存
  • 2011年时部分复杂操作页面改用富客户端的Flex来处理,提高易用性(那时Adobe还没有放弃Flex)
  • 高可用:每个WebApp之间的数据库采用开源方案SymmetricDS来处理,支持异构数据库同步(虽然当前不需要)

还觉得无聊吗?也许。

对于大部分项目机会不能自己选择的业内同行,也许有意思的玩意就在你身边,你觉得是一坨shit的东西仍然能从系统的整个生命周期中,结合当时的技术环境,看到这坨shit的一些有意思的东西,从设计文档里体会当时的设计权衡,考虑。 当然,文档里只有设计的结果,有些妥协maybe只有当事人才能知道,but,这不是重点! 这里只想说,一个人想提升自己,如果有心,任何时候都可以,只要会发现。

OK,这是enhancement,那bug fix呢?这个更简单,现在如火如荼的开源,所有人去参与一个项目的第一步是什么?

  • 看项目介绍,找架构文档,有个初步认识
  • 订阅maillist,在里面浑水摸鱼,继续了解项目
  • 去项目的online bug tracking上看看,有啥自己懂得没
  • 然后。。。  改bug去吧~ 混个脸熟吧! 多改几个吧! 改着改着, 哇! 核心开发啦!

多么的相似。菜鸟都从改bug开始,但别拿这个当终极目标了。。 咱要有长远打算。

还无聊吗? 我不知道啊!

 那好,说了这么多,就是让那些迷茫的人,能在自己的组织结构里,自己可控的部分挖掘潜能,毕竟,没人能阻止你进步。

目录
相关文章
|
9月前
|
存储 人工智能 安全
云计算与网络安全:技术融合与挑战
在数字化时代的浪潮中,云计算和网络安全已成为推动社会进步的两大关键技术。本文将探讨云计算服务的发展,网络安全的重要性,以及信息安全技术的演进。我们将通过实例分析,揭示云服务如何增强数据保护,网络安全措施如何应对新兴威胁,以及信息安全技术的创新如何为企业带来竞争优势。文章旨在为读者提供对云计算和网络安全领域的深入理解,并展示它们如何共同塑造我们的未来。
|
9月前
|
安全 生物认证 Android开发
深入探索iOS与Android操作系统的安全性差异
本文旨在通过对比分析iOS和Android两大主流移动操作系统在安全性方面的差异,揭示它们各自的安全机制、面临的挑战以及用户如何提升自身设备的安全保护。通过对系统架构、应用审核机制、数据加密方式及隐私政策的深入探讨,本文为读者提供了一个全面了解两大平台安全性的视角,并提出了实用的安全建议。
|
9月前
|
缓存 Java 数据库连接
MyBatis缓存机制
MyBatis提供两级缓存机制:一级缓存(Local Cache)默认开启,作用范围为SqlSession,重复查询时直接从缓存读取;二级缓存(Second Level Cache)需手动开启,作用于Mapper级别,支持跨SqlSession共享数据,减少数据库访问,提升性能。
145 1
|
11月前
|
开发框架 分布式计算 前端开发
ArkUI 介绍
【10月更文挑战第12天】
699 10
|
11月前
热电材料:温差发电的绿色能源技术
【10月更文挑战第17天】温差发电技术利用热电材料将热能直接转换为电能,具有环境友好和高效的特点。本文介绍了热电材料的基础知识、温差发电的工作原理及应用案例,包括人体体温发电、海洋温差发电和工业余热利用,并展望了热电材料的未来发展。
|
Java 缓存 Linux
如何回答性能优化的问题,才能打动阿里面试官?
阿里妹导读:日常工作中,我们多少都会遇到应用的性能问题。在阿里面试中,性能优化也是常被问到的题目,用来考察是否有实际的线上问题处理经验。面对这类问题,阿里工程师齐光给出了详细流程。来阿里面试前,先看看这篇文章哦。
21447 2
如何回答性能优化的问题,才能打动阿里面试官?
|
前端开发 C# 开发工具
WPF 自定义柱状图 BarChart
原文:WPF 自定义柱状图 BarChart WPF 自定义柱状图  当前的Telerik控件、DevExpress控件在图表控件方面做得不错,但是有时项目中需要特定的样式,不是只通过修改图表的模板和样式就能实现的。
1215 0
|
弹性计算 应用服务中间件 开发者
阿里云学生服务器购买价格及学生免费服务器配置领取条件
阿里云学生服务器原来活动为云翼计划,后来升级为开发者成长计划,现在在高校学生在家实践活动中可以领取免费云服务器和无影云桌面
9770 1
阿里云学生服务器购买价格及学生免费服务器配置领取条件
|
SQL 存储 分布式计算
Presto 架构原理与优化介绍 | 青训营笔记
MapReduce代表了抽象的物理执行模型,使用]槛较高。 与Mapreduce Job相比,OLAP引擎常通过SQL的形式,为数据分析、数据开发人员提供统的逻辑描述语言,实际的物理执行由具体的引|擎进行转换和优化。
729 0
Presto 架构原理与优化介绍 | 青训营笔记
|
数据采集 机器学习/深度学习 人工智能
复盘|重庆智慧水务:掌握技术,掌握主动权
重庆水务集团的智慧建设,解决了三个难题——数据采集、算法应用和数据文化的建立。
947 0
复盘|重庆智慧水务:掌握技术,掌握主动权