一、学期回顾
1.1 回顾你对于软件工程课程的想象
-
最初的期待与目标:
- 你对软件工程课程的理解和期待是什么?
软件工程是一门系统化、工程化地解决软件开发和维护问题的学科。我对该课程的理解是,它不仅教授理论知识,例如软件开发生命周期、需求分析、架构设计、质量保障等内容,还注重培养实践能力,比如团队合作、项目管理和问题解决能力。我期待通过这门课程掌握系统化的软件开发流程和方法,提高代码质量和协作能力,同时完成一个接近真实的项目实践。
- 是否实现了你的期待?哪些方面达成了目标?哪些方面有不足?
达成的目标:
- 学习了软件工程的核心理论,例如敏捷开发、瀑布模型、设计模式等。
- 掌握了团队协作工具(如Git)和开发方法,学会了如何在团队中分工合作。
- 通过课程设计或项目实践,经历了从需求分析到交付的完整开发流程。
- 对代码规范、测试流程有了更深的理解,能更好地保证代码质量。
不足的方面:
- 实践深度不足: 虽然参与了课程项目,但实际项目的复杂度较低,未能完全感受到大型软件开发中的挑战。
- 知识面局限: 部分领域(如高并发、分布式系统等)未深入涉及,对当前行业需求的前沿知识有所欠缺。
- 时间压力: 学期内完成多个模块,时间分配不足,导致部分内容学习较浅。
- 理论与实践的融合: 在学习过程中,理论部分与实际项目的结合还不够紧密,部分理论未能真正应用于实践。
- 对不足的分析和原因(比如时间管理、知识储备等)。
时间管理问题:
在课程任务较多的情况下,时间分配不合理。可能更多时间花在了完成项目或编写代码上,导致对理论知识的学习和思考时间不足。知识储备不足:
课程涉及的内容较广,一些高级开发技术和工具(如云计算、微服务架构等)超出了个人的知识储备,学习这些内容需要额外投入时间。项目规模限制:
由于是课程内的项目,团队规模和项目复杂度有限,未能体验到大型项目中的问题,例如复杂的需求变更、跨部门沟通等。实践导向不足:
部分理论学习停留在教材或课堂讲解上,未能通过更多的实践或案例来加深理解。例如,敏捷开发虽然在理论中学到,但实际项目中缺乏系统的敏捷实践。
1.2 回顾你在这门课程中的投入与产出
- 代码量统计:
- 在软工实践课程当中,我编写了 15000 行代码。
- 团队项目角色与贡献:
- 在团队项目中,我参与了 “行趣” 的设计与开发,我在其中承担了 测试。
- 作业花费时间统计:
作业 | 花费时间(小时) |
---|---|
第一次个人作业 | 3 |
第二次个人作业 | 25.5 |
第一次结对作业 | 14.5 |
第二次结对作业 | 48.5 |
第一次团队作业 | 8 |
第二次团队作业 | 10 |
现场编程作业 | 3 |
团队作业Beta冲刺 | 15 |
累计时间 | 127.5(h) |
实际周均时间 | 16(h) |
预计周均时间 | 15(h) |
-
印象最深刻的作业或答辩:
- 哪次作业/答辩给你留下了深刻印象?
结对编程给我留下了深刻印象。
- 原因分析:是否因为困难、挑战性、团队合作或成就感?
1. 困难和挑战性分析:
- 技术难度:
从无到有开发微信小程序,需要学习微信小程序的开发框架(如WXML、WXSS、JavaScript)、接口调用(如云开发、API接口)、以及UI设计和前后端逻辑的整合。对于初学者来说,这些技术知识可能比较陌生,需要额外的时间去学习和实践,增加了学习和开发的困难。 - 任务复杂度:
小程序的开发涉及需求分析、功能设计、编码实现、调试和测试等多个环节。如果需求不明确或频繁变更,会增加开发的难度。同时,可能需要兼顾多个角色(如开发者、设计师、产品经理),增加了挑战。 - 时间压力:
课程内开发小程序通常需要在固定的学期时间内完成。紧迫的时间会导致在遇到困难时无法深入学习或探索解决方案,而是选择快速完成任务,可能影响学习效果。
2. 团队合作分析:
- 团队分工与协作:
团队开发小程序需要明确分工,例如前端、后端、UI设计等。但在学生团队中,可能由于经验不足或技术水平差异,导致分工不够合理,甚至出现工作量分配不均的情况。比如某些成员承担较多的技术开发工作,而其他成员参与度较低,这可能导致团队效率下降或合作感受不佳。 - 沟通与协调:
团队中可能存在沟通不畅的问题,特别是在需求分析和方案设计阶段,如果没有充分沟通,可能会导致后期开发过程中产生返工或冲突的情况。 - 协作工具的使用:
如果团队不熟悉协作工具(如Git版本控制、项目管理工具),可能会导致代码冲突、开发进度跟踪不清晰等问题,影响整体效率和成就感。
3. 成就感的影响:
- 积极体验:
从无到有实现一个小程序本身是很大的成就,尤其是当最终产品能够成功上线或实现预期功能时,这种成就感会带来极大的满足和动力,让团队成员对整个开发过程印象深刻。 - 不足的成就感:
如果项目过程中出现频繁返工、功能未完成、质量不高或团队合作中存在分歧,可能削弱成就感,导致项目完成后体验不如预期。此外,如果课程项目规模较小,与实际的行业项目相比缺乏真实场景的复杂性,可能让人觉得成就感不足。
综合原因:
- 困难和挑战性: 项目本身的技术难度和时间压力可能导致部分功能未能完全实现,或者团队对一些技术点的学习不够深入。
- 团队合作: 如果团队分工不均或沟通不畅,可能降低效率,延误项目进度,也影响团队成员的成就感。
- 成就感: 最终完成小程序是一种激励,但如果过程中问题较多或成果与预期有落差,可能导致成就感减弱。
改进方向:
- 提高技术储备,在项目开始前进行必要的技能学习。
- 在团队中明确分工与角色,同时加强沟通和使用协作工具,确保每位成员都能充分参与项目。
- 调整时间管理,合理安排学习与开发的优先级,避免过度时间压力。
- 对项目成果和学习过程进行客观评价,增强团队成员对学习收获的认同感。
二、总结收获
2.1 软工实践故事
- 第一次个人作业,设计了个人主页和logo
-
第二次个人作业设计了“羊了个羊”类似游戏
-
第一次结对作业设计了小程序的原型设计
- 第二次结对作业写出了完整的小程序
- 在团队项目中对项目代码完成了测试
设置测试场景
设置为手动测试,并发访问数量为100人
开始手动测试
配置函数为自动测试
结果分析
实时点击率表
响应时间表
2.2 新技术与生产力工具
- 学习到的新技术或工具:
- 学习到的新技术或工具:
- 微信小程序开发框架(WXML、WXSS、JavaScript):
学习并使用微信小程序开发框架,掌握了如何设计小程序界面(WXML)、样式(WXSS)以及功能逻辑(JavaScript)。帮助实现从界面到功能的完整开发,提升了前端开发能力。 - 微信云开发(Cloud Development):
使用微信提供的云开发服务,实现了无需搭建服务器的后端功能(如数据库操作、云函数调用)。减少了基础设施搭建的复杂度,提升了开发效率。 - Git版本控制工具:
学习和使用Git进行团队协作,掌握了代码版本管理、分支操作以及冲突解决等技能。帮助团队更高效地协同开发,避免代码覆盖和重复工作。 - 项目管理工具(如Trello/Notion):
通过项目管理工具分配任务、跟踪进度,提高了团队的任务可视化和沟通效率,确保项目按时完成。 - UI设计工具(如Figma):
使用Figma进行界面设计和原型图制作,提前规划了小程序的视觉和交互效果。帮助更好地将需求转化为开发方案,提升了项目的整体用户体验。 - 测试工具(微信开发者工具自带调试功能):
学习使用微信开发者工具进行小程序调试,定位和解决问题。提高了开发过程中代码的正确性和稳定性。 - API接口调用(如微信支付、位置服务):
学习并集成了微信提供的开放接口,如支付功能和地理位置服务。增强了小程序的功能性,贴合用户实际需求。
- 微信小程序开发框架(WXML、WXSS、JavaScript):
- 学习到的新技术或工具:
2.3 技术之外的提升
-
软技能或个人成长:
-
团队合作能力的提升:
- 沟通: 在团队合作中,学会了通过有效的沟通明确需求,解决分歧,提高了团队内部的理解与协作效率。
- 分工: 项目开发过程中,逐步掌握了合理分配任务的方法,例如根据团队成员的技术特长安排前端、后端、设计等工作,保证了任务的高效推进。
- 协作: 熟悉了使用协作工具(如Git、Trello等)进行团队协作,增强了对版本管理和任务进度的把控能力,同时培养了在团队中互相支持、共同解决问题的意识。
时间管理与任务分配的经验:
- 学会了制定开发计划,将大任务分解为小目标,并按照优先级逐步完成。
- 在时间有限的情况下,懂得如何取舍,把重点放在核心功能的实现上,避免不必要的“完美主义”。
- 通过迭代式的开发流程(如敏捷开发),积累了在短期内完成任务、快速反馈和优化的经验。
思维方式、心态上的变化:
- 解决问题的思维: 通过从无到有开发小程序,锻炼了从分析问题到设计解决方案的逻辑思维能力,学会了在面对复杂问题时分阶段逐步解决的办法。
- 接受挑战的心态: 项目中遇到困难(如技术学习曲线、功能实现瓶颈)时,培养了更积极的心态,懂得主动寻找资源或团队合作克服难题。
- 责任感的提升: 在团队中负责具体模块或功能的开发,让自己更加重视任务的完成质量,学会了承担责任并尽全力完成工作。
- 从结果到过程的转变: 开始关注开发过程中学习到的知识与技能,而不仅仅是项目的最终成果,增强了对成长过程的重视。
-
2.4 其他想记录的内容
-
1. 对课程是否影响了你未来专业选择的思考
这门课程让我对软件工程有了更深入的理解,同时也让我重新思考了未来的专业方向。通过实践,我发现自己对软件开发流程的全局把控(如需求分析、架构设计)和实际编码实现都有一定的兴趣,但也意识到某些领域如后端架构或项目管理可能更适合我的能力和兴趣。这门课程让我更加明确未来想要深入发展的领域,比如偏向系统开发、产品管理,或者结合技术和业务的方向。这种反思对未来的专业选择和职业规划产生了重要影响。
2. 学期中最有趣的片段或最遗憾的事情
- 最有趣的片段:
开发微信小程序的过程中,第一次成功实现了一个互动功能(如点击按钮触发动态效果)时,看到从无到有创造的真实成果,看到想法变成了实际效果,成就感非常强。特别是在调试完成后,互相试用小程序功能的过程中充满了乐趣和激动。
3. 对未来学弟学妹的鼓励或建议
- 多实践,少畏惧:
无论基础如何,勇敢开始动手实践是最重要的。软件工程强调的就是从理论到实践的转化,真正参与开发才能学到最多。 - 注重团队合作:
学会分工协作,不要试图一个人承担所有工作。善用沟通工具(如Git、Slack等),高效分享进度和问题,也要主动承担团队中的责任。 - 合理分配时间:
课程项目时间有限,尽早制定计划,把重点放在核心功能的实现上,避免因追求细节而影响整体进度。同时,要为项目调试和完善预留足够时间。 - 保持学习心态:
软件工程不仅仅是完成一个项目,而是培养思维方式和解决问题的能力。即使过程中遇到困难,也要珍惜学习的机会,将每次挑战都视为成长的契机。 - 技术储备与工具熟练度:
提前学习小程序相关的开发文档、框架基础(如HTML、CSS、JavaScript)和工具使用,可以极大提高开发效率,减少时间压力。 - 享受过程:
这个课程不仅能提高技术能力,还能让你体会团队合作和从无到有创造的乐趣。无论结果如何,珍惜这个学习与成长的过程。
- 最有趣的片段:
三、致谢
-
感谢的对象与故事
- 感谢的对象:
- 老师/助教:感谢授课老师和助教,他们不仅在课堂上详细讲解了软件工程的理论知识,还在项目的过程中耐心解答了许多疑惑。当遇到开发中的技术瓶颈时,助教通过邮件或课堂外时间给予了具体的指导,帮助我们快速找到解决方案。
- 队友:感谢团队中的每一位队友。在整个开发过程中,大家相互支持,共同克服了技术上的挑战和时间压力。特别是在功能开发的关键节点,队友主动承担了自己的任务,甚至在我遇到困难时无私帮助,共同保证了项目的顺利推进。
- 同学:感谢班上其他同学的分享和鼓励。在讨论中,其他团队分享了他们的思路和方法,这不仅启发了我们,也让我们看到了更多解决问题的方式。
- 他们的帮助与影响:
- 队友们在项目分工中积极配合,大家的努力让我更深刻地体会到团队合作的重要性,也让我在压力下保持了动力和信心。
- 同学之间的相互鼓励让我感受到了学习的乐趣,在课后讨论和交流中,学到了很多课堂之外的知识和技巧。
想对他们说的话
致老师/助教:
感谢老师和助教在整个学期中倾注的心血和付出。您们不仅教会了我们软件工程的理论知识,更通过项目实践帮助我们掌握了真正的开发技能。您的耐心指导让我在困惑时找到方向,您的严格要求让我更加注重细节和规范。这门课程让我获益良多,感谢您们的辛勤付出!致队友:
感谢每一位队友的付出与努力。无论是一起加班调试代码,还是在项目讨论中争取最佳方案,你们都让我看到了团队合作的力量。正是因为有你们的支持和帮助,我们才能顺利完成从无到有的程序开发。这段合作经历将是我在大学最宝贵的记忆之一。谢谢你们!致同学:
感谢所有一起努力的同学们。每一次讨论、每一次分享,都让我对软件工程的学习更加深刻。感谢你们在学习上的支持和启发,也感谢我们一起经历的点点滴滴。希望未来大家都能在各自的领域继续发光发热!
最后的话:
“感谢每一个在这段学习旅程中给予帮助和支持的人,你们不仅让我的学习更有意义,也让我在这个过程中更加坚定了成长的信心。未来,希望我们都能不忘初心,继续前行!” - 感谢的对象: