软件工程实践总结——收获良多

这个作业属于哪个课程2023软件工程
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标对实践课进行总结
其他参考文献

一、课程回顾

1.1 半年前的思考

软件工程寒假作业

1.2 对于课程开始前的问题,有何新感悟

1.2.1 问题一

Q1:AI辅助编程,是一个银弹么?

  • 原本的回答

AI辅助编程目前不是一个银弹。
AI辅助编程在有限的时间内,可以解决一道编程问题,专业的竞赛选手在AI的辅助下,可以在15分钟内提供满分求解代码。但AI辅助编程对于一些调用深度代码很高的项目,比如C++,项目的函数调用深度可以深入到10乃至18层,这时候使用AI进行编程将很难得到预想的效果。AI辅助编程是未来需要进行解决的一个难题,也是很多从业人员怀疑的一个问题。

  • 现在的答案

AI辅助编程在近年来得到了广泛的关注和应用,其在提高编程效率、解决复杂问题以及推动科技进步方面展现出了巨大的潜力。然而,要判断AI辅助编程是否是一个“银弹”,我们需要从多个角度进行深入分析。
虽然AI辅助编程在自动生成代码、提高开发效率方面确实表现出色。但在某些情况下,开发人员仍然需要手动调整和优化生成的代码,以满足特定的需求或解决特定的问题。
其次,AI辅助编程仍然缺乏人类的直觉和创造性思维。在某些情况下,开发人员仍然需要依靠自己的经验和想象力来解决问题。
所以,AI辅助编程虽然是一个强大的工具,但它并非一个能够解决所有问题的“银弹”。

1.2.2 问题二

Q2:代码量与个人的编码能力有直接关系吗?

  • 原本的回答

代码量与个人的编码能力之间并没有直接的正比关系。编码能力不仅仅取决于编写的代码量,还包括代码的质量、可读性、可维护性、效率以及解决问题的能力等多个方面。
代码质量:高质量的代码应该是简洁、清晰、易于理解和维护的。即使代码量很少,但如果能够高效、准确地解决问题,并且易于扩展和维护,那么这段代码的质量就是高的。
可读性:易于阅读的代码对于团队协作和后续维护非常重要。注释、命名规范、代码风格等因素都会影响代码的可读性。
可维护性:良好的编码实践有助于提高代码的可维护性。这样的代码更容易修改和扩展,而不容易引入新的错误。
效率:高效的代码不仅执行速度快,而且能够减少资源消耗。编写高效代码需要对算法和数据结构有深入的理解。
解决问题的能力:一个优秀的程序员应该能够用最少的代码量解决复杂的问题。代码量并不总是反映问题的复杂性或解决方案的优劣。
因此,虽然代码量可以作为一个参考指标,但它并不是衡量一个程序员编码能力的唯一标准。实际上,过度追求代码量可能会导致代码变得冗余、复杂且难以维护。在评估一个程序员的编码能力时,应该综合考虑多个方面,而不仅仅是代码量。

  • 现在的回答

代码量与个人的编码能力并不直接等同。编码能力涉及代码质量、效率、可读性和可维护性等方面,而不仅仅是代码量的多少。因此,代码量与个人的编码能力没有直接关系。

1.2.3 问题三

Q3:软件开发是年轻人的饭碗,吃的是青春饭?那年纪大的程序员经验丰富但是快速学习能力拼不过年轻程序员的时候该怎么办呢?

  • 原本的回答

软件开发行业在一定程度上被视为年轻人的行业,因为年轻人在技术学习、适应快速变化和创新方面通常具有优势。但这并不意味着年纪大的程序员在行业中没有竞争力或无法持续发展。
当年纪大的程序员面临快速学习能力可能拼不过年轻程序员的情况时,可以考虑以下几个方面来应对:
经验和专业知识:年纪大的程序员通常拥有丰富的经验和专业知识,这是年轻程序员难以匹敌的。可以利用这些经验来提供更有价值的建议、解决复杂问题或指导年轻团队成员。
持续学习:尽管年纪大的程序员可能无法像年轻时那样快速学习新技术,但仍然可以通过持续学习来保持竞争力。可以选择深入学习自己擅长的领域,并关注行业内的最新趋势和技术发展。
导师角色:可以利用自己的经验和知识成为年轻程序员的导师或教练。通过指导和帮助他们,不仅可以传授自己的经验,还可以与年轻程序员一起学习和成长。

  • 现在的回答

软件开发并非仅是年轻人的饭碗。经验丰富的年长程序员可通过持续学习、分享知识和培养团队领导力来保持竞争力。此外,利用经验指导年轻团队、专注于项目管理和战略规划也是发挥优势的好方法。重要的是保持积极心态,适应行业变化。

1.2.4 问题4

Q4:花费时间越多,代表工作量越高吗?

  • 原本的回答

花费时间越多,不代表工作量越高。
工作效率是衡量工作量的重要标准,花费时间多不代表工作量大,可能只是工作效率低。

  • 现在的回答

花费时间多并不直接代表工作量高,还需考虑效率、任务难度等因素。

1.2.5 问题五

Q5:写博客也会花挺多时间的,如果把这些时间花在写代码上面会不会更好?

  • 原本的回答

写博客和写代码都是软件开发人员的重要活动,但它们服务于不同的目的。写博客的时间投入与将其用于写代码之间的权衡取决于个人目标、项目需求和长期职业规划。
短期与长期:如果你面临紧迫的项目截止日期,那么将时间专注于编写代码可能是更直接的选择。然而,从长远来看,写博客可以为你的职业生涯带来持续的好处。
个人目标:如果你的职业目标包括成为行业内的专家或领导者,那么写博客可能是一个重要的投资。如果你的主要目标是完成具体的项目或任务,那么编写代码可能更合适。
时间管理:高效的时间管理意味着你可以平衡各种活动,包括写博客、编写代码、学习新技术等。通过设定优先级、制定计划和利用工具来提高效率,你可以确保在各个方面都能取得进展。

  • 现在的回答

写博客虽花时间,但有助于知识整理、技能提升和扩大影响力。将部分时间用于写代码确实能提升技能,但博客与代码相辅相成。平衡两者,效果更好。

1.3 新的问题

  • 在项目或程序比较复杂的情况下,如何高效率的进行程序理解?
  • 在软件开发过程中,如何选择合适的技术栈?当需要引入新技术或进行技术变更时,如何确保项目的顺利进行?
  • 如何运用敏捷开发方法,快速响应需求变化并持续交付高质量的软件产品?

二、“做中学”——在实践中学习知识点

2.1 需求阶段

  • 收获最大的知识:如何与用户、利益相关者进行有效沟通,深入理解他们的需求和期望。
  • 提升的能力:需求分析能力,能够将用户的语言转化为具体、可执行的功能要求。

2.2 设计阶段

  • 收获最大的知识:系统设计原则、架构模式以及它们如何影响软件的可维护性、可扩展性和性能。
  • 提升的能力:系统设计和架构规划能力,能够设计出既满足需求又具备良好特性的系统。

2.3 实现阶段

  • 收获最大的知识:具体编程语言和框架的使用技巧,以及最佳实践。
  • 提升的能力:编码能力和问题解决能力,能够高效、准确地实现设计的功能,并处理实现过程中遇到的各种问题。

2.4 测试阶段

  • 收获最大的知识:软件测试的理论和实践,包括测试用例设计、自动化测试技术等。
  • 提升的能力:质量保证和测试能力,能够编写有效的测试用例,发现潜在的问题,确保软件的质量。

2.5 发布阶段

  • 收获最大的知识:版本控制、部署流程以及上线后的监控和维护方法。
  • 提升的能力:项目管理和协调能力,能够确保项目按时、按质完成,并有效地与用户、团队进行沟通和协作。

三、心得体会

3.1 个人项目

在个人项目作业中,我不仅掌握了如何从网络源获取数据,同时学会了对爬取到的JSON文件数据进行处理与解析。此外,我还掌握了单元测试框架Junit的使用方法,对代码进行了全面的测试,确保其稳定性和正确性。通过不断学习和实践,我成功克服了这些挑战,并顺利完成了项目。这次项目不仅让我掌握了新技能,还提高了我的问题解决能力和学习态度,为未来的结对编程和团队合作打下了坚实基础。

3.2 结对编程

在本次作业中,我第一次进行软件的原型设计,由于此前做的都是后端的工作,所以对这部分没有什么了解,只觉得是组件的拖拉。但本次作业让我对原型设计有了新的认识,原型设计不仅仅是组件的排列拖拉,需要考虑各方面的因素,比如页面的交互性和组件间的布局排版。通过这一过程,我逐渐认识到,原型设计并不仅仅是追求外观的吸引力,更重要的是要确保设计能够满足用户的实际需求。
在编程实现的阶段,由于我们都没有前端开发的经验,所以选择使用最简单的html+css+js实现,虽然实现了页面的展示,但数据交互性为零。

3.3 团队项目

这次的团队项目不仅让我在技术领域有了更深入的理解和实践,也让我认识到了团队协作与沟通在项目中的重要性。在这个过程中,我也收获了很多。首先,我更加深入地理解了AI技术和Java开发的原理和实践。通过不断地实践和调试,我逐渐掌握了这些技术的精髓和技巧。当然,我也意识到自己在某些方面还有不足。例如,在问题分析和解决方面,我还需要进一步提高自己的能力和技巧。未来,我将继续努力学习和实践,不断提升自己的专业素养和综合能力。我相信,在未来的项目中,我将能够更好地发挥自己的专业能力和团队协作精神。

3.4 自我评分

目标自我评分解释
目标1: 理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念88该目标强调软件工程师的职业道德和社会责任感。软件工程师不仅需要具备技术能力,还需了解软件开发的社会影响,并遵循职业道德规范。我认为自己在理解职业道德规范和实践要求方面做得不错,但对于国情社情民情的了解还需要进一步加深。在软件开发理念方面,我始终努力保持积极向上,注重软件产品的社会价值和影响。
目标2: 掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型90需求分析是软件开发的关键环节。我能够掌握需求分析的基本流程,并熟练使用需求表达工具。但在辨别多样化要求方面,我仍需提升辨别和转化的能力,以确保准确理解并满足用户需求。
目标3: 掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案95在软件开发方面,我能够遵循设计方法和原则,完成从体系结构设计到数据设计和构件级设计的全过程。我注重技术评审的重要性,以确保设计方案的可靠性和高效性。在形成服务组件或软件系统设计方案方面,我能够提出合理的方案,并不断优化和改进。
目标4: 能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案80在技术评测和设计模型评判方面,我能够执行基本的评测任务,并具备一定的评判能力。然而,在创新设计意识方面,我仍需加强,以提出更具创新性和实用性的设计方案。在优选设计方案方面,我能够综合考虑多种因素,但还需进一步提高决策的准确性和效率。
目标5: 遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力90在软件开发过程中的文档编写和管理工作,我能够遵循各阶段文档标准,并采用规范的表达方式,熟悉需求规格说明书、系统设计说明书和系统测试报告等文档的撰写方法,并能够清晰地表达设计思路和实现细节。
目标6: 具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作90能够与其他成员保持良好的合作关系,共同推进项目的进展。我具备组织、协调和指挥团队的能力,能够根据不同的项目需求合理安排团队成员的工作,确保项目按时按质完成。
目标7: 能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力82能够辨别项目中的关键构成要素,并了解基本的软件规模和工作量估算方法。在实际操作中,我仍需加强对项目管理工具的运用和项目管理过程的配置。在管理复杂软件工程项目方面,我具备初步的能力,但还需进一步积累经验和提升管理水平。

四、个人技术总结

实现Python-Java的数据交互,构建python_FastAPI

概述:构建FastAPI接口,实现Python-Java的数据交互

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值