问题描述
在一个拥有40~50名员工的大型机构里,我被召唤做了一个自由职业者的工作。我来的时候,情况一片混乱。整个开发团队一个月前被另一家公司雇佣走了,有很多过期的工作。我在这里自由工作了约三周,然后他们雇佣了我。从那时起,我一直在努力解决问题,有很多事情要做,我不得不放弃流程,专注于交付软件。
现在,三个月过去了,尘埃终于落定,我希望实施良好的开发实践和方法论,将开发、部署和项目管理相结合。
解决方案
在这种快节奏的环境下,你需要考虑采用敏捷开发方法,如敏捷开发、Scrum、Kanban等。敏捷方法是最广泛使用的软件开发方法之一,它在实践中证明了其有效性。在敏捷方法的范围内,可以考虑采用“结对编程”(Pair Programming)来帮助你在需要时招募其他开发人员,共同完成项目。你还可以结合DevOps和持续集成,建立迭代、增量和演进式的开发流程,以及短暂的反馈和调整周期,为项目提供稳固的基础。
对于部署和服务器管理方面,你可以和基础设施团队密切合作,推动实施“基础设施即代码”(Infrastructure as Code)的理念。虽然手动操作可能会更快,但是采用自动化的方式可以避免技术债务的积累,并确保部署过程的一致性和可重复性。如果可能的话,可以考虑利用云服务,比如Amazon AWS,来简化部署和扩展过程。
针对客户服务器的控制问题,你可以考虑使用工具如The Foreman的Katello场景来管理虚拟机的部署,以及使用Salt Stack、Chef、Puppet或Ansible来管理配置和更新。通过这种方式,你可以将部分管理权交给客户,或者提供自动化的部署方案。同时,你也可以向客户推荐使用云服务,以简化扩展和管理的问题。
选择开发语言和框架时,建议选择支持REST接口的语言,以便更好地与DevOps工具集成。
最后,尝试将之前零散的代码和流程整合到一个地方,这将极大地提高开发效率。
参考资源:
– 敏捷软件开发方法
– DevOps与持续集成
– 基础设施即代码
– The Foreman
希望以上解决方案对你在快节奏机构中的软件开发和部署问题有所帮助!