帮助!公司没有开发基础设施!我被指派来实施!

63次阅读
没有评论

问题描述

最近加入了一家公司,并被指派负责现代化开发团队/部门。目前存在以下问题:
– 开发人员目前在实时网站上进行开发。
– 网站有备份,但没有源代码控制。
– 没有分阶段过程(开发、QA、UAT、生产)。
– 没有自动化构建过程。
– 没有软件开发生命周期(SDLC)。
– 文档很少(如果有的话)。
– 网站使用不同的技术。
– 由于开发延迟很大,时间表非常紧张。
– 开发团队不了解可以帮助调试/开发的常用工具。

用户的计划是:
– 将所有项目都使用相同的技术进行升级。
– 将所有活动项目放入源代码控制。
– 实施分阶段过程,包括开发、QA、UAT和生产环境。
– 实施持续集成/持续交付(CI/CD)。
– 引入工具并为开发团队设置培训。
– 实施编码规范。
– 引入适合团队当前操作方式的方法论,最可能是敏捷或Scrum,并使用相应的工具和文档模板。

用户提出以下问题:
1. 你以前遇到过这种情况吗?你是如何解决和克服这些障碍的?实施需要多长时间(大致)?
2. 你会如何对上述任务进行优先排序?
3. 你会推荐我研究什么?(我特别关注CI/CD方面的内容,以及如何应对如此庞大的任务)

用户希望获得更多关于如何开始以及如何逐步建立的建议和资源。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据经验,我会按照以下优先级来解决问题:
1. 将所有活动项目放入源代码控制:
– 这是一个非常基本的步骤,也是最容易实施的。通过使用版本控制系统(如Git),可以确保代码的版本控制和备份。
2. 实施编码规范:
– 引入一套统一的编码规范,可以提高代码的可读性和可维护性。这将有助于团队成员之间的协作,并减少潜在的错误。
3. 引入适合团队当前操作方式的方法论:
– 如果团队目前没有任何方法论,我建议先采用较为宽松的看板方法(Kanban)。这意味着建立一个任务系统,并始终跟踪所有任务。在确保一切正常运行并确立自己作为一个好团队的基础之后,再考虑全面采用Scrum等方法论。
4. 实施分阶段过程:
– 创建至少一个分阶段环境,并自动化部署到该环境。开始构建/扩展自动化测试,并将其与持续集成系统(CI)相结合。这样,团队将获得包括测试在内的快速反馈。
5. 引入工具并为开发团队设置培训:
– 推荐团队成员使用一些常用的开发和调试工具,如IDE、调试器等。为团队成员提供培训和指导,以帮助他们更好地利用这些工具。
6. 实施持续集成/持续交付(CI/CD):
– CI/CD是一个复杂的过程,需要在团队中建立一些基本的自动化流程。这将包括自动化构建、测试和部署。可以使用工具如Jenkins、GitLab CI等来实现CI/CD流水线。
7. 将所有项目都使用相同的技术进行升级:
– 如果你指的是语言和库方面的技术,这可能并不可行。但如果你指的是Docker、OpenShift等技术,那么可以考虑将所有项目迁移到这些统一的技术平台上。

最重要的一点是,避免自己承担所有工作。给团队提供一些”刺激”,但他们必须自己完成(无论是个人还是通过独立的”DevOps团队”)。如果你自己完成所有工作,最终你将得不到太多回报,因为每个人都会依赖你。

方案2

请注意以下操作注意版本差异及修改前做好备份。

我会按照以下顺序来优先处理任务:
1. 将所有项目放入版本控制。
2. 自动化构建,并立即/同时使用这些构建来建立CI系统。这对于防止尚未习惯版本控制的团队陷入分支困境是很重要的。他们将迅速意识到CI的快速反馈的重要性,即使只是针对构建部分,他们也会开始对即将到来的变化产生信心。
3. 创建至少一个分阶段环境,并自动化部署到该环境。开始构建/扩展自动化测试,并将其与CI系统相结合。现在,团队将获得包括测试在内的快速反馈。

我认为以上步骤是绝对必要的,以便在不耗尽所有资源的情况下继续维护当前项目。在考虑其他工具/技术更改、构建其余的CI/CD流程、进行重构、引入敏捷等之前,先完成这些步骤。

结论

在解决这个问题时,你可以按照上述解决方案的步骤来逐步实施。请记住,这是一个长期的过程,需要团队的合作和逐步改进。同时,你可以参考一些相关的资源和链接,以帮助你更好地理解和解决这个庞大的任务。

希望这些信息对你有所帮助!如果你还有其他问题,请随时提问。

正文完