团队敏捷开发个人总结

个人总结

团队

分“投”行动组

项目

智能垃圾分类系统

姓名

李蓉

角色

前端设计开发

  •       回顾

  1. 对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?

     达到的期待和目标:
  1. 通过课本阅读,对软件工程的基本概念、流程和方法有了更深刻的理解,如需求分析、系统设计、编码、测试和维护等。
  2. Git的初步练习使得能够熟练地进行代码提交、分支创建与合并、冲突解决等操作,为团队协作打下了坚实基础。
  3. 泛读和精读开源代码,不仅提高了代码阅读能力,还学习到了许多优秀的编程习惯和设计模式。
  4. 在智能垃圾分类系统的开发中,体验了敏捷开发的迭代式开发流程,学会了如何快速响应需求变更,并在实践中不断调整和优化,首次尝试在python中进行前端设计与开发,学习并基本掌握了steamlit框架和前端交互逻辑的实现。
  5. 通过团队项目,学会了如何与团队成员有效沟通、协作分工,以及如何在项目中发挥个人特长。
      存在的不足及原因:
  1. 深入理解能力不足:虽然对软件工程理论有了基本掌握,但在具体实践中,对于某些复杂问题的分析和解决能力还有待提高。这可能是因为缺乏足够的项目经验和深入学习的机会。
  2. 在泛读和精读开源代码时,虽然能够理解代码的基本逻辑和功能,但对于一些复杂的算法和设计模式的分析能力还有待提高。这可能是因为对计算机科学基础知识的掌握不够扎实。
  3. 在智能垃圾分类系统的开发中,虽然完成了前端设计与开发的任务,但因为时间不足还有能力欠缺,项目的运行速度仍存在缓慢问题尚未完全解决

      2.哪一次作业让你印象最深刻?为什么?

       最让我印象深刻的还是最后一次团队敏捷开发作业。参与此次敏捷开发项目,从alpha阶段到beta阶段的冲刺,我深感这是一个既充满挑战又充满收获的旅程。在alpha阶段,我们面临着技术选型、模型训练、数据标注等多方面的挑战,让我们倍感压力。YOLOv8/v5作为先进的目标检测算法,为我们提供了强大的技术支持,但同时也要求团队成员具备深厚的算法基础和工程实践能力。我们不断学习、讨论、尝试,逐渐掌握了相关技术,查阅了大量的技术文档,参与了线上线下的技术讨论,不断尝试和优化模型参数,并成功构建了初步的垃圾分类模型。在这个过程中,我深刻体会到了技术进步的快速和不断学习的必要性。每一次的失败和挫折,都让我们更加明确自己的不足,也让我们更加珍惜每一次的成功和进步。我意识到,作为一个软件工程师,我们需要时刻保持对新技术的好奇心和求知欲,不断学习和实践,才能跟上时代的步伐。进入beta阶段,我们更加注重模型的优化和应用的落地。通过不断地迭代和优化,我们提高了模型的准确性和鲁棒性,使其能够更好地适应各种复杂的场景。同时,我们也开始思考如何将模型应用到实际的垃圾分类场景中,如与机器人、物联网等设备结合,实现自动化的垃圾分类。

      在敏捷开发的模式下,团队协作和沟通的重要性不言而喻。我们团队在alpha阶段就明确了各自的职责和任务,建立了有效的沟通机制。我们每天都会进行站立会议,分享各自的工作进展和遇到的问题,共同讨论解决方案。这种频繁的沟通让我们能够及时了解项目的整体情况,及时调整自己的工作计划,确保项目的顺利进行。整个过程中,我深感敏捷开发方法的灵活性和高效性。通过定期的冲刺和评审,我们能够及时发现问题、解决问题,确保项目的顺利进行。同时,团队成员之间的紧密协作和不断学习也为我们带来了更多的灵感和动力。而通过项目管理和冲刺阶段的实践,我深刻体会到了计划性和目标性的重要性。一个清晰、合理的项目计划能够让我们更加明确自己的任务和目标,提高工作效率。同时,冲刺阶段的成果展示和总结反思也能够帮助我们及时发现和解决问题,推动项目的持续改进和发展。

一、耕耘

1.1参与项目时间:

项目总持续时间:2024.3.28---2024.6.20

我总共投入了大约三周的时间来负责智能垃圾分类系统的Python前端设计与开发。这包括了对需求的理解、设计方案的制定、代码的编写、测试以及后续的维护和优化。在开发的不同阶段,我投入的时间分布是有所不同的,例如在初期设计阶段可能需要更多的时间来思考和规划,而在开发阶段则需要大量的时间进行编码和测试,后期根据测试人员的反馈进行更改修复。

1.2代码与注释:

在代码编写方面,我总共编写了大约400行的Python代码。这些代码包括了用户界面的构建、用户交互逻辑的实现、数据的处理和存储等。我尽量遵循了代码的可读性和可维护性原则,使用了合适的函数和模块来组织代码,使得代码结构清晰、易于理解。

在编写代码的同时,我也注重了注释的添加。我总共编写了大约100行的注释,用于解释代码的功能、实现细节以及关键算法等。这些注释不仅有助于我自己在后续维护代码时能够快速理解代码的逻辑,也能够让其他团队成员更容易地理解我的代码。

1.3文档:

主要编写了团队需求分析,用户使用报告,团队总结报告和项目复审,还有配合组员完成平时冲刺报告的编写记录。

二、收获

1.所做工作的具体成就,软件的用户有多少,公开的源代码有什么影响力

成就:

用户调研与分析

前期原型设计:

登录界面:

用户界面:

管理员界面:

1.垃圾结果索引

2.用户管理

  • 最终实现

软件用户人数:约50人

公开的源代码影响力:在初次的项目展示过程中获得了老师同学们的认可,后有同学私下询问代码的使用框架等,体现了同学的肯定。

2.你在哪些技能上有提高?请列举出来。

  • Python编程能力
  • Web应用开发
  • 如何设计直观、易用、美化的用户界面
  • 数据处理和分析的能力
  • 解决开发过程中遇到问题的能力
  • 掌握使用调试工具进行代码调试的技能

3.使用了哪些软件/工具

  • Pycharm 开发环境
  • Streamlit框架
  • Git 管理代码

三、结构化的理解

1.知识(Knowledge):就是记忆、认识,能回忆重要名词、事实、方法、规准、原理原则等;

例如:软件工程的名词,原理,能回忆编程语言的某种知识

要求:写出你印象最深的几个知识点

  • 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则内聚、耦合、依赖倒转原则、开闭原则等
  • 需求分析和定义:在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据;需求分析和定义是以用户需求为基本依据,从功能、性能、数据、操作等多个方面,对软件系统给出完整、准确、具体的描述,用于确定软件规格;
  • 软件工程三要素是:方法、工具、过程
  • 软件工程的方法:是指完成软件开发各项任务的技术方法。
  • 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境软件。
  • 工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地开发这一目的。

 2.理解(Comprehension):是要能对重要名词、概念之意义有所掌握,能转译、解释;

例如:名词、原理的解释, 能理解单元测试、效能分析工具是怎么帮助工作

要求:写出你如何掌握了几个名词、概念。

  • 功能测试:检查软件的各项功能是否符合需求和规范,确保软件系统的功能正常。
  • 性能测试:测试系统的设计是否满足预期的性能需求,包括响应时间、吞吐量、并发性等。
  • 压力测试:测试软件系统在高负载环境下的稳定性和可靠性。
  • 接口测试:验证软件系统向外部系统提供的接口是否正常,是否满足要求。
  • 软件工程的原理是指实践中适用的基本原则、理论和方法论,是保证软件质量、可靠性和可维护性的基础之一。

3.应用(Application):是要能将所学到的知识概念、方法、步骤、原则通则等等应用到不同的情境中;

把原则应用到各种情境场景中,能开发各种类型的应用程序,和不同类型的人合作

要求:写出你怎么在不同场景中应用技能的

  • 了解场景:在不同的场景中,人们的需求和期望是不同的。在开发技能时,需要了解场景的特点和用户需求,以便更好地满足他们的需求。
  • 设计多个意图:针对不同的场景和用户需求,可以设计多个意图。例如,在购物场景中,可能需要设计查看物流、查询订单、下单等多个意图。
  • 使用上下文:在对话中,使用上下文可以帮助技能更好地理解用户的意图和需求。例如,用户在询问物流信息时,可以通过上下文了解到他们是在查询哪个订单的物流信息。
  • 测试和优化:在不同场景中应用技能需要进行反复测试和优化。通过收集用户反馈和数据分析,可以不断改进技能的表现,提高用户满意度和使用体验。

4.分析(Analysis):是要将知识的某些讯息,所包含的成分、元素、关系、组织原理等等分解出来,重新加以组合,并厘清之间的关系;

能将用户需求分解为不同优先级,厘清功能之间的依赖关系

要求:对一个局部领域,写出你的分析

对于用户的需求优先级我们应考虑以下几个方面来进行优先级处理

  • 用户群体:不同的用户群体对需求的优先级有不同的看法。例如,年轻人可能更关注产品的时尚和个性化,而老年人可能更关注产品的实用性和易用性。
  • 需求的紧急性:某些需求可能更加紧急,需要尽快满足,例如,用户在购物平台上遇到支付问题,需要尽快解决。
  • 需求的重要性:有些需求虽然不紧急,但对用户的满意度和忠诚度有很大的影响。例如,用户在使用某个产品时,遇到了频繁的崩溃和错误,这会严重影响用户的体验和满意度。
  • 市场竞争:在竞争激烈的市场中,满足用户需求的速度和质量非常重要。如果一个产品不能及时满足用户的需求,用户可能会转而选择竞争对手的产品。
  • 在判断用户需求的优先级时,我们需要综合考虑以上因素,并根据实际情况进行权衡。同时,需要注意不同用户需求之间的权重和影响,判断哪些需求更加重要和紧急,以便更好地满足用户的需求和期望。

  • 5.综合(Synthesis):是能将知识讯息的某些要素重新安排或合并为有组织的整体,或呈现其间的关系; 例如,用WBS 等方法把项目的目标细化,分配到人,能用燃尽图展现项目进度

  • 要求:写出你在这方面的具体收获

在本次项目中我第一次使用燃尽图,在使用燃尽图的过程中,我深刻体会到以下几点:

  • 项目进度的清晰可见:燃尽图可以清晰地显示项目的进度和剩余工作量,帮助团队更好地掌握项目进展情况,及时调整开发计划和优化工作流程。
  • 督促团队完成任务:燃尽图可以激励团队成员努力完成任务,因为燃尽图可以让每个人清晰地看到自己和团队的进展情况,督促大家尽快完成任务。
  • 发现问题和优化流程:通过燃尽图,团队可以发现问题和瓶颈,并及时优化流程和调整开发计划,提高工作效率和工作质量。
  • 总之,燃尽图是一种非常有用的敏捷开发工具,可以帮助团队更好地掌握项目进展情况,及时发现问题和优化流程,提高团队的工作效率和工作质量。

6.评价(Evaluation):是要依照某规律和准则对讯息做评价或比较。例如,能够评价别的项目的软件工程的质量,能分析一些关于软件工程的说法是否有道理,能分析市面上流行软件的优劣并探究深层原因,能对自己项目进行回顾分析,并提出改进。

要求:选一个你感受较深的领域,说一下你的感受

感受:
  • 快速原型开发:使用Streamlit进行前端设计,我深刻体会到了快速原型开发的魅力。Streamlit允许我快速地将Python代码和数据可视化转化为交互式的Web应用,这对于验证想法和快速迭代设计至关重要。
  • 用户友好性:在设计智能垃圾分类系统的前端时,我注重了用户友好性。通过简单的界面和直观的交互,我希望用户能够轻松地理解和使用系统。这种设计思路让我更加关注用户体验,并提高了我的用户研究能力。
  • 数据驱动:智能垃圾分类系统的核心在于利用数据来优化分类效果。在开发过程中,我深入了解了数据预处理、特征工程、模型训练等流程,并学会了如何将数据有效地整合到前端界面中。这增强了我的数据处理和分析能力。
  • 跨领域知识:智能垃圾分类系统不仅涉及软件工程和数据科学,还涉及环境科学、城市规划等多个领域。在开发过程中,我不断学习和应用跨领域的知识,这丰富了我的知识体系并拓宽了我的视野。
评价:
  • 软件工程质量:智能垃圾分类系统前端设计具有良好的可维护性和可扩展性。通过合理的代码结构和模块划分,我能够轻松地对系统进行修改和扩展。此外,我还注重了代码的测试和文档编写,确保了软件的质量。
  • 软件工程说法的合理性:在开发过程中,我遇到了许多关于软件工程的说法和理论。通过实践,我能够对这些说法进行验证和评价,判断其是否合理和适用。这增强了我的批判性思维能力。
  • 市面流行软件的优劣分析:通过对比市面上流行的智能垃圾分类软件,我能够发现它们各自的优缺点,并探究其深层原因。这有助于我更好地了解市场需求和用户习惯,并为自己的系统设计提供参考。
  • 项目回顾与改进:在项目完成后,我进行了详细的回顾和分析。通过总结项目中的经验教训和不足之处,我提出了针对性的改进措施,并计划在未来的项目中加以应用。这有助于我不断提高自己的项目管理和软件开发能力。

四、属于我们的人月神话

1、项目启动与团队组建

项目伊始,我们组建了一个全新的团队并迅速认领自己的任务,包括前端设计与开发、后端工程师以及测试人员。我们迅速确定了项目的目标:开发一个用户友好的智能垃圾分类系统,通过图像识别技术辅助用户进行垃圾分类。

经验总结:跨领域团队的组建为项目的顺利进行奠定了基础,不同背景的成员为项目带来了多样化的视角与解决方案。

实例:前期由我负责用户调研和原型设计,为后期前端设计与开发奠定基础,通过设计出既美观又实用的用户界面,使用户在享受科技便利的同时,也能感受到垃圾分类的重要性。

2、敏捷开发与迭代

我们采用了敏捷开发的方法,将项目分为alpha阶段和beta阶段。在alpha阶段,我们主要关注于基本功能的实现与用户体验的优化;在beta阶段,我们则着重于系统的稳定性与扩展性。

经验总结:敏捷开发使我们能够快速响应需求变化,通过不断的迭代与测试,确保系统的质量与用户体验。

实例:在alpha阶段,我们收到同学反馈,希望加入调整置信度和阈值,切换模型的功能。团队迅速调整开发计划,将这两个功能纳入下一轮迭代中。经过测试与优化,该功能在beta阶段成功上线,并获得了用户的好评。

3、技术选型与攻坚

作为前端开发者,我选择了Python作为主要编程语言,并结合了Streamlit框架和Vue.js前端框架进行开发。在项目过程中,我也遇到了一些技术难题,如图像识别的精度问题、前后端交互的性能优化等。

经验总结:技术选型需要综合考虑项目的需求、团队的技能以及技术的成熟度。面对技术难题时,我们需要保持冷静与耐心,通过查阅文档、寻求帮助以及不断尝试来解决问题。

实例:在图像识别方面,我们最初采用了开源的TensorFlow库进行训练与识别。然而,在实际应用中,我们发现识别精度并不理想。于是,我们查阅了大量资料,尝试使用不同的算法与模型进行优化。最终,我们成功提高了识别精度,并为用户提供了更加准确的分类建议。

4、团队协作与沟通

在项目开发过程中,团队协作与沟通至关重要。我们采用了Git和燃尽图进行项目管理,每周进行站立会议以同步进度与解决问题。此外,我们还建立了线上协作平台,方便成员之间随时交流与分享。

经验总结:有效的团队协作与沟通能够提高项目的开发效率与质量。我们需要建立明确的分工与责任体系,保持信息的透明与共享,并及时解决项目中遇到的问题。

实例:在开发过程中,我们遇到了一个关于前后端数据交互的难题。通过线上协作平台的讨论与尝试,我们最终找到了问题的根源并解决了它。这次经历让我们深刻体会到了团队协作与沟通的重要性。

5、总结与展望

通过智能垃圾分类系统的开发实践,我们深刻体会到了敏捷开发的魅力与挑战。在未来的项目中,我们将继续运用敏捷开发的方法与技术选型策略,不断提升团队的协作与沟通能力,为用户提供更加优质的产品与服务。同时,我们也期待在更多的项目中积累更多的经验与人月神话。

五、对团队的分析

1. 形成期(Forming)

在形成期,团队成员初次聚在一起,对团队目标、规则和角色有初步的认识。在我的团队中,这一阶段我们主要进行了团队建设的活动,明确了项目的目标、范围和分工。通过几次团队会议和讨论,我们逐步建立了初步的信任和沟通机制。

2. 震荡期(Storming)

震荡期是团队内部冲突和矛盾的高发期。在我的团队中,随着项目的深入,不同成员之间的观点、方法和工作习惯差异逐渐显现。我们经历了一些关于工作分配、优先级设定和决策过程的争论。然而,通过坦诚的沟通和协商,我们逐渐学会了尊重彼此的差异,并寻求共同的解决方案。

3. 规范期(Norming)

在规范期,团队成员开始形成共同的行为规范和价值观。我的团队在这一阶段制定了详细的工作流程和沟通机制,明确了每个人的职责和角色。同时,我们也建立了一些团队文化,如相互支持、共同学习和持续改进。这些规范和文化的形成有助于增强团队的凝聚力和执行力。

4. 执行期(Performing)

在执行期,团队开始高效运作,专注于实现项目目标。我的团队在这一阶段表现出了高度的协同性和执行力。我们按照既定的工作流程和计划推进项目,定期进行进度评估和风险管理。团队成员之间的沟通和协作变得更加顺畅和高效,项目进展顺利。

5. 创造期(Adjourning)

创造期是团队发展的最高阶段,团队成员能够共同创造新的想法、方法和价值。在我的团队中,虽然我们在执行期取得了不错的成绩,但我认为我们还没有完全达到创造期。虽然我们在项目中遇到了一些挑战和难题,但我们更多地是在现有框架内寻求解决方案,而不是共同创造出全新的方法和价值。然而,我相信随着项目的持续进行和团队的不断成长,我们有望在未来达到创造期。

总结来说,我的团队在团队形成阶段、发展阶段、创造阶段,都经历了不同的挑战和成长。虽然我们还没有完全达到创造期,但我们在团队协作中积累了宝贵的经验,并建立了坚实的团队基础。在未来的工作中,我们将继续努力提升团队的创造力和创新能力,以期在项目中创造更多的价值。

六、证明学会了软件工程

在担任团队敏捷开发智能垃圾分类系统负责Python前端设计与开发的角色中,通过回顾《构建之法》中提到的软件构建的三个目标:满足需求、控制复杂性和满足构建的经济性,以下是我分析自己在这方面的学习和实践。

1、满足需求

作为前端设计与开发人员,我始终将满足用户需求作为首要任务。在alpha阶段和beta阶段,我通过以下方式确保满足需求:

  • 需求分析与沟通:与产品经理、测试人员和后端工程师紧密合作,深入理解用户需求,确保前端设计与开发能够准确反映用户期望。
  • 迭代开发:采用敏捷开发方法,通过迭代的方式逐步交付功能,确保每个阶段都满足用户需求,并及时收集用户反馈进行调整。
  • 用户测试与验证:在alpha阶段和beta阶段进行多轮用户测试,验证前端功能是否满足用户需求,并根据测试结果进行优化。
2、控制复杂性

在智能垃圾分类系统的前端设计与开发中,我通过以下方式控制复杂性:

  • 模块化设计:将前端功能划分为多个模块,每个模块负责特定的功能,降低模块间的耦合度,提高代码的可维护性和可扩展性。
  • 使用框架和库:利用成熟的Python前端框架Streamlit和库(如Panda、Vue.js等),简化开发流程,提高开发效率。
  • 持续集成与测试:设置自动化测试和持续集成流程,确保代码质量,减少因代码变更引入的缺陷。
3、满足构建的经济性

在满足需求和控制复杂性的同时,我也关注构建的经济性,通过以下方式降低成本和提高效率:

  • 优化开发流程:采用敏捷开发方法,快速响应需求变化,减少不必要的返工和浪费。
  • 复用代码和资源:通过代码复用和资源共享,减少重复开发,提高开发效率。
  • 合理使用工具和技术:根据项目需求和技术栈,选择最适合的工具和技术,提高开发效率和质量。
  • 团队协同与沟通:与团队成员保持良好的沟通和协作,共同解决问题,提高团队整体效率。

综上所述,通过担任团队敏捷开发智能垃圾分类系统前端设计与开发的角色,我深刻理解了软件工程中的三个目标:满足需求、控制复杂性和满足构建的经济性。在实践中,我通过需求分析、迭代开发、模块化设计、使用框架和库、持续集成与测试、优化开发流程、复用代码和资源以及团队协同与沟通等方式,努力实现了这三个目标。这些经验不仅提升了我的技术水平,也增强了我的团队协作和项目管理能力。

七、建议

对于大一的我:
  • 打好基础:作为大一新生,你可能还在学习编程的基础知识。在这个阶段,我建议你注重编程语言(如C语言)和前端技术(如HTML、CSS、JavaScript)的学习,确保你对这些基础有扎实的理解。
  • 培养兴趣:尽早找到自己感兴趣的领域,比如前端开发、后端开发、数据库管理等,并深入学习。兴趣是持续学习的动力。
  • 参与项目:尽可能多地参与实际项目,无论大小。通过实践,你可以将所学知识应用到实际中,并学习如何与团队成员协作。
对于开学初的我:
  • 明确目标:在项目开始之前,确保你对项目的整体目标、范围和关键里程碑有清晰的认识。这有助于你更好地规划自己的时间和工作。
  • 学习敏捷开发:了解并熟悉敏捷开发的方法论和工具,如Scrum或Kanban。这将有助于你更有效地与团队成员协作,并快速响应需求变化。
  • 注重沟通:在项目中,与团队成员、产品经理、测试人员等保持密切的沟通。确保你理解他们的需求和期望,并及时反馈你的进展和遇到的问题。
  • 持续学习:在项目中,你可能会遇到新的技术挑战和问题。不要害怕这些挑战,将它们视为学习的机会,持续提高自己的技能和知识水平。
对于后来人的期许:
  • 勇于尝试:不要害怕尝试新的技术、方法和工具。在软件开发领域,新的技术和方法不断涌现,只有勇于尝试,才能保持竞争力。
  • 团队协作:学会与团队成员有效协作,尊重他人的意见和贡献。在团队中,每个人都是重要的,只有共同努力,才能取得成功。
  • 持续学习:保持对新技术和新知识的热情,不断学习和成长。在软件开发领域,只有不断学习,才能跟上时代的步伐。
  • 追求卓越:追求卓越的代码质量、用户体验和项目成果。在项目中,始终关注细节和用户体验,力求做到最好。

  • 31
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值