在我作为软件开发人员的第一份工作中,我的团队使用敏捷/scrum来管理我们的项目工作流程,它运行得很好。我有一些经验丰富的导师,他们让我走上了正确的道路--我欠他们一份感激之情。我在那里工作了几年,几个月前我又找到了一个新的机会。
快去做我现在的工作。我在一所大学在教授的指导下工作。自从我在一所大学,几乎每个程序员都是学生(他们便宜和丰富!)我的老板有管理经验,但没有软件开发经验,软件团队并不总是我老板最关心的问题。这些条件为创建一些质量非常差的软件创造了完美的环境。软件项目似乎运行有点流氓,没有设计的想法,并采取了一些真正可怕的做法。我知道事情会更好。
我希望实现一个开发过程,以帮助每个人都走上正轨,提高代码质量,并部署更稳定的软件。我只是不知道从哪里开始。
我不是在寻找答案,比如“使用Scrum",”建立一个kanban板“,或者”看看敏捷!“(虽然想法受到赞赏)。更具体地说,我希望了解如何为这种工作环境实现一个开发过程。员工通常在工作1到2年之间才能继续工作,通常缺乏经验,而且每天举行的会议几乎不可能安排每个人都参加。
一个人如何在这样的工作场所培养质量、效率和沟通?
更新:在阅读了一些答案和评论后,我想我应该提供一些额外的背景。
我不会认为自己是软件开发艺术方面的大师,但我有足够的经验,当我看到它时,我就能识别出糟糕的编程。我可以确定一个开发人员是否有才华,只需与他们一起工作一到两分钟。我对自己聪明地解决问题的能力感到满意,然而,我真正缺乏经验的领域是项目管理,其他开发人员也参与其中(这就是为什么我在这里向所有优秀的人征求意见)。
我说得好像每一个走进办公室的学生都是个十足的傻瓜。这里有一些坏蛋,但我遇到的大多数学生都很聪明,想学习,而且对这项工作充满热情。有些刚开始,他们不知道他们不知道什么。这也没什么。当我第一次开始编程的时候,我的生活并不好过!
发布于 2018-07-12 06:30:04
清理错误比预先检查要花费更长的时间。如果您正在与那些(可能)不熟练或不了解良好实践的开发人员打交道,这意味着在他们的代码被有经验的人查看之前,他们不应该能够更改(主)代码基。
您不希望对方法学进行解释,所以让我略过这一部分:使用敏捷任务来设置可以独立开发的不同特性。
开始使用特性分支,这样每个人都可以在一个单独的分支上工作。当任务完成时,开发人员无法将他们的代码合并到主分支。如果你在使用Git,他们仍然可以启动一个拉请求。否则,使用任何您喜欢的跟踪已完成任务(/branches)的方法。
然后我们进入复习过程。你的问题是,是否也有经验丰富的开发人员的判断比学生的判断更值得信赖,这一点有点模糊。因此,让我详细说明两种方法:
如果有经验丰富的开发人员,请让他们检查已完成任务的代码。如果是好的话,他们可以把它合并成主分支。如果不是,他们可以自己重构,也可以反馈给开发人员需要改进的地方。
如果没有经验丰富的开发人员,那么您总是会遇到问题。如果没有人能识别出好代码和坏代码,那么就不可能保持代码质量。
您能做的最好的事情就是召开评审会议,在那里开发人员在其他开发人员面前展示并解释他们的实现。虽然这不能保证防止每一个问题(例如,如果所有开发人员对良好实践都有相同的误解,那么它仍然可以防止大多数问题(例如,如果至少有一个开发人员有正确的想法并能够表达;或者当问题源于开发人员彼此对问题的不同理解时)。
一个人如何在这样的工作场所培养质量、效率和沟通?
发布于 2018-07-11 02:38:29
在这种环境中,人们是新手,可能会离开,最重要的事情就是强制性的代码审查。
它们有助于传播有关应该做什么的知识。它们有助于防止最糟糕的代码进入代码库。它们促进执行工作的一致性。
因为有那么多的人员流动和缺乏经验,沟通比平时更重要。
发布于 2018-07-12 16:21:42
与其说是一个解决方案,不如说是一个想法,但要找到代码基中的一个关键部分,其中包含与您的学生开发人员可能做的项目相似的特性和元素,并很好地清理它。新开发人员面临的一个大问题是,他们不知道代码库的规范和约定,他们会查看其他代码来了解如何设置自己的代码。让许多新开发人员在一个混乱的代码库中工作意味着他们会看到混乱,并认为这是可以接受的,或者是最好的方法。即使在一个高度翻转的环境中,不良的做法也会使自己长期存在。
通过拥有至少一个原始的、编写良好的代码部分(甚至只有一个文件),您可以告诉您的学生开发人员将其作为最佳实践的一个示例。告诉他们,如果他们能写出类似的代码,你会很兴奋,而且其他的代码可能不是正确方法的好例子。
添加注释或其他文档,并解释为什么要以某种方式完成这些工作,也将有助于新开发人员更快地使用更好的代码实践。
https://softwareengineering.stackexchange.com/questions/373934
复制相似问题