软件工程实践总结——这不是结束,甚至不是结束的开始,这只是开始的结束!

这个作业属于哪个课程2302软件工程
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标完成对软件工程实践课程的总结、个人技术的总结
其他参考文献《构建之法》、CSDN


一、课程回顾与总结

1、回顾自己思考过的5个问题

1.1 以前思考问题的博客

软件工程实践寒假作业


1.2 再解答

Q1.|1.1 如何区分一个好的程序员和不好的程序员呢?

A1:
在经过了个人项目结对编程项目团队开发项目以后
我简略形成了自己的对于一个优秀程序员的简单要求
通常能达到这些要求的程序员,就是好的:


  • 个人项目:
  • 遇到不会的问题,懂得自主学习,查阅资料;
  • 能够有内发的动力催促自己不断推进进度
  • 团队项目:
  • 肯沟通,肯学习,能和项目组员和产品经理沟通报备,达到信息一致,当对产品有不明确时,不闭门造车,而是仔细确定需求
  • 不拖延自己的进度,在有限的时间里能够发挥自己的才能高效率
  • 做好自己那部分工作,不要太插手别人的工作;
  • 通用标准:
  • 懂得去运用代码规范(无论是个人的还是团队的),形成高内聚低耦合的开发习惯 (减少返工)
  • 肯不断学习新知识,强化自己解决问题的能力;
  • 懂得什么时间该休息,什么时间该工作
  • 懂得给自己按照任务的重要性和紧迫性来把大任务分解成小任务

在有了一系列项目开发经验以后,我认为能够做到以上要求的程序员,即是优秀的程序员。(仅限程序员)


Q2.|3.1 对于一名工程师而言,究竟应该是更”专“一点好,还是更”广“一点好呢?

A2:
对于以前的思考,现在的我更加明确了我的想法:


  • 工程师在团队里项目的方向不同,有的人负责精细的工作,比如算法岗,有的人负责统筹的岗位,比如产品经理;
  • 所以回答也是很明显了,你在的职位,需要你广,那你就广吧,职位需要你,那你就吧。


Q3.|1.1 程序员是否有必要为满足小部分人的需求去做软件,或者为软件添加某些功能?

A3:
回答与之前的不同。


  • 是否要满足小部分的需求,取决于该项目在市场上的定位
  • 像是公众使用的软件项目,总有一些需求是小部分的人的需求,因为其项目的特殊性,而要去满足,去添加功能,例如医疗服务软件,银行软件等,需要针对老年人或者视障人士的大字号或者黑色调版本
  • 像是追求盈利的软件项目,对于不能获得很多利润的需求,就没必要花费太多成本去实现。


Q4.|7.2.9 顾客真的知道他们想要什么吗?

A4:
回答与之前不同。


  • 顾客其实是知道他们想要什么的。
  • 其实顾客们总是知道他们想要什么,只不过需要产品经理负责循循善诱,将其导出。
  • 经验丰富的产品经理会使用各种模型方法(诸如原型需求模型等)诱导顾客们表达出他们的真实需求


Q5.|4.5 结对编程在双方差距较大时的意义是什么?

A5:
回答与之前的大致相当


  • 知识传递: 更有经验的程序员可以向初学者传授知识和最佳实践,帮助他们快速成长
  • 错误减少: 观察员可以实时审查代码,这有助于及早发现错误和问题,从而减少后期调试的时间。
  • 代码质量提升: 两个头脑总比一个头脑强。即使一方经验较少,不同视角也可能帮助发现问题,从而提高代码质量。
  • 学习与指导: 对于经验较少的一方来说,结对编程是学习的好机会,可以从更有经验的搭档那里获得即时的指导和反馈。
  • 团队协作: 结对编程增强了团队成员之间的沟通和协作,有助于建立团队精神和信任。
  • 压力分担: 当一个人感到压力或困惑时,另一个人可以提供帮助,分担工作负担。
  • 创新思维: 不同的经验和知识背景可以激发新的思考方式和创新解决方案。


1.3 新问题

  • Q1. 在团队项目中,项目经理如何公平地分配相应的分工给到各个部分的组员呢?

  • Q2. 在团队项目中,项目结束后,项目经理如何公平地去评价各部分组员的贡献度呢?

  • Q3. 在团队项目中,评价贡献度的时候引起了争论,项目经理要如何去和各个组员沟通呢?

  • Q4. 在团队项目中,当项目进度与预期出现严重不符的时候,项目经理该如何督促各部分的组员及时完成任务呢?如果实在无法完成,该如何压缩或者舍弃功能模块呢?

  • Q5. 在结对编程中,当伙伴的进度和自己不大匹配(超前或者落后)的时候,自己要如何与伙伴沟通,来使得项目整体的进度不会出现太大的差别呢?

2、5个阶段,每个阶段收获最大的知识或能力

2.1 需求阶段

  • 在个人项目和团队项目中,我能够很好根据NABCD分析工具分析用户的需求;
  • 团队项目中,我在和项目经理一起使用原型模型需求分析方法,以及从用户的角度思考的方式,和UI开发人员以及项目开发人员沟通交流,市场用户调查等方式,成功完成了需求分析文档的编写;
  • 我收获到了使用NABCD法和原型模型需求分析等方法来分析用户需求的能力。

2.2 设计阶段

  • 在结对编程和团队项目中,我学到了如何将整个项目的功能分成清晰的功能模块;
  • 我还收获到了设计前后端接口文档的能力,并成功将前后端接口运用到实际的项目中。

2.3 实现阶段

  • 在结对编程和团队项目中,我都负责比较多的部分;
  • 在结对编程中,我学习了Vue3框架的前端编写java的SpringBoot框架,学了如何使用Gson和fastjson来快速处理解析json格式的数据,并学会使用axios协议网络请求和部署服务器方面的知识
  • 在团队项目中,我主要学习了使用微信小程序原生开发封装的,基于微信云平台的Node.js云开发,编写了非常多的云函数,并利用这些云函数成功实现了团队项目中各色功能,诸如:互助社区帖子,评论点赞,收获评论收获点赞等功能。
  • 在实现阶段,我还学到了和团队队友沟通的知识。懂得勤于沟通是我最大的收获,在团队项目中克服拖延的恐惧和队友们一起协作是我收获到最宝贵的宝藏

2.4 测试阶段

  • 在个人项目、结对编程中,我收获到了使用java的SquareTest的单元测试插件来进行java程序测试的能力。
  • 在团队项目中,我收获到了一个教训。软件项目的测试,一定要有一个规范的过程,而不能像无头苍蝇一样。

2.5 发布阶段

  • 在个人项目中,我学会了打包java程序为jar包的方式
  • 在结对编程中,我学会了部署服务器的方法(包括前端Vue打包,后端SpringBoot的maven打包)
  • 在团队项目中,由于发布小程序要经过的审核阶段比较严苛,所以没有发布,但是我学习到了发布一个软件大致的流程,诸如审核、发布、推广等。

3、结合经历,谈谈理解或心得

3.1 个人项目

  • 其实在个人项目中,主要还是因为没有类似的数据操作经验,比如说对于json数据的解析和输出,不是很熟悉的话,一开始学习处理就比较困难,容易造成压力以及退缩感,但是当熟练掌握了如何处理json后,就轻而易举了。

3.2 结对编程

  • 结对编程,顾名思义,和伙伴的沟通交流十分重要。结对双方都要非常清楚这次的软件开发项目的分工,并且不可互相拖延,进度上才不会有较大的风险。在结对过程中,双方都能互相帮助才是最好的结对,这样才能有效开发出好的项目。
  • 除此之外,在结对的过程中,能更高效地学习新的知识,来自于开发项目中的疑难杂症所激发出的自学的技能,以及结对队友为你提供的帮助,这些难点通常只需要有人指点一下即可解决。
  • 结对队友有的时候能很好地帮助你分担压力,相比于个人开发一个项目,肯定是非常舒服的。

3.3 团队项目

  • 团队项目中,我认为沟通是最重要的。有不清楚的环节、不明晰的设计方面,一定要询问,询问项目经理,询问队友,问清楚以后再设计才不会造成误会,造成返工。
  • 对于团队开发的时候,可以由项目经理来制定一个总的开发方案,以及开发时的代码提交规范等;
  • 项目经理要做的工作挺多的,如果能够做到给每个组员都分配适应的工作就更好了,队员们才不会像无头苍蝇一样不知道要做什么,从而提高开发效率,减少争执和误会。
  • 在团队中,不要去拖延自己的进度,非常重要!

4、对各个课程目标的掌握程度

目标掌握程度(百分制)解释
目标1:理解软件工程师的职业道德规范和实践要求,了解国情社情民情,理解软件产品对社会、健康文化等影响,树立积极向上的软件开发理念。96分我在开发软件的时候,比较理解软件工程师的职业道德规范和实践要求,会按照符合当代社会价值观的方式,去开发传递积极向上正能量的软件。
目标2:掌握需求分析的全过程,能辨别客户表述的多样化要求,熟练使用需求表达工具,能够规范、准确地表达客户的需求,构建需求分析模型。90分我在团队项目中,很好地做到与项目经理合作一起调查使用NABCD方法讨论分析用户需求,通过和UI开发人员以及项目开发人员的沟通,达到表达用户需求,建立需求分析模型的成果。
目标3:掌握软件开发的全过程,遵循体系结构设计方法和基本设计原则,通过正式的技术评审,完成从体系结构设计模型、数据设计模型和构件级设计模型,形成面向高效可靠的服务组件设计方案或软件系统设计方案。85分在团队项目中,我主要还是遵循团队中协商规定的代码编写规范,基本能遵循着用况图、数据库设计文档、前后端接口文档,面向流程体系结构来进行设计。
目标4:能够执行从组件到软件系统的技术评测,具备设计模型的评判能力,具有创新设计意识,能够优选设计方案。80分在团队项目中,我能做到基本的设计模型评判,选取较好的设计方案,或者去改正队友的设计方案,基本具有创新设计意识。
目标5:遵循软件开发各阶段文档标准,采用规范的表达,掌握需求规格说明书、系统设计说明书、系统测试报告等文档撰写方法,具备与业界同行交流能力。90分在团队项目的开发过程中,我都是采用需求规格说明书、系统设计说明书、数据库设计说明书等文档来攥写方法,能够有效与同行交流。
目标6:具有良好的团队意识和合作技能,能够与其他成员开展有效的沟通和协作;能够组织、协调或指挥团队开展工作。95分在团队中,我不仅负责开发后端云函数,还负责一小部分的前端样式,除此之外我可以充当团队内项目经理的副手,帮助经理组织协调好整个团队的节奏和工作。
目标7:能够辨别具体软件项目管理中涉及的构成要素,掌握软件规模和工作量的估算方法,能够选择合适的工具规划软件进度并对项目管理过程进行配置,具备初步的管理复杂软件工程项目的能力。70分在这一目标上,我只能做到比较基础的估算,由于没有经验,因此基本上只能做比较宽泛的时间安排。在学习的过程中,我初步学会使用Git管理项目。我还在逐步体会管理复杂软件项目的流程。

二、个人技术博客

微信云开发数据库多表连接查询的技术

概述:

  • 在编写微信小程序后端云函数的时候,基本上是要调用数据库的;
  • 但是对于高范式的数据库设计,有的时候需要用到二到三个表连接查询,这时候就要仔细思考如何运用微信云函数的多表连接查询技术
  • 除此之外,该篇技术博客还将介绍几个云函数使用技巧

非常感谢林老师三位助教、还有结对编程开发的伙伴团队项目开发的七位伙伴们,本门课程的学习,使我受益匪浅。这些收获,必将活用于我今后的工作学习生活中。
Sun Jun 02 2024 22:16:33 GMT+0800.(at FZU)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

selfsuki

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值