欢迎来到小螃蟹的博客!

1、博客以班级作业页面的提交时间为准。2、需要提交的代码以github的提交时间为准。3、在deadline前交,分数为实际得分。 4、补交:在deadline 后两天内提交视为补交,分数为实际得分 * 50%;写了但是忘记提交作业和补交扣分一致。5、缺交:在deadline 之后两天未补交视为博客缺交,分数为0分。;
扩大
缩小

小螃蟹的代码进化史

这个作业属于哪个课程 2021春软件工程实践|S班(福州大学)
这个作业要求在哪里 作业具体要求
这个作业的目标 对软件工程实践这门课程进行回顾、总结;对在课程期间学习到的技术进行总结
其他参考文献 《构建之法》、菜鸟教程、CSDN、博客园

一、课程回顾与总结

1.提问题的博客链接

https://www.cnblogs.com/Cherry-XPX/p/14477958.html

2.问题解答与阐明

Q1:关于合格的软件工程师

问题引用:
在《构建之法》的P32中有一段话如下:IT专业的大学毕业生找工作时声称:我精通Java,会用C++写“Hello World”程序,我懂软件工程,我画了很多图,写了很多文档,最后得了很高的分数……这些同学是真的懂软件工程,是一个合格的软件工程师么?

我的回答
不是。我之前曾说:一名合格的软件工程师要有良好的编码能力、自觉的规范意识和团队精神、较强的英语阅读及写作能力、求知欲和进取心等。我曾经以为努力做到以上这些基本上算得上是一名合格的软件工程师了。但是近期发生在自己及周围同学身边的一些事情让我对“合格的软件工程师”有了新的认识。计算机信息技术作为一门学科,在短短的时间催生了一个新兴的计算机行业。这个领域里聚集了从事理论研究、软硬件研发、网络和基础应用的专业人才,时至今日俨然形成了一个新的庞大的科技队伍。在时代的背景下,日益众多的人才加入到软件工程师的队伍中来。为了满足人才的需求,人的教育问题显得日益重要。
计算机科学和软件产业的发展不能离开人的因素。而人的因素又离不开人的教育。人的教育有两层含义:学科教育或者技术教育、人的素质和道德教育。前者决定你有没有资格或能力进入这个行业;后者决定你能否在这个行业立足、走得长远,人的素质和道德教育更是我们事业成功的首要关键。我们的落后,并不光在技术层面,更重要的是在人的素质和人的精神层面。包括软件行业在内的各行各业都有相关的职业操守和一些不成文的规矩,我们所有的合作与竞争都应该建立在此基础上。因此,一名合格的软件工程师,不仅要有过硬的专业水平,还要有良好的素质和修养。软件世界是一个日新月异的世界。软件工程师应该在自己的整个职业生涯中,要不断更新和完善自己的专业知识,还要不断提升自己的道德情操和职业操守,努力向“合格”靠近。


Q2:关于MBTI

问题引用:
P100提到“在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等”。

从事软件行业的人肯定是避免不了团队合作以及结对编程的。那么《构建之法》也在P108提到性格一定程度上会影响合作。据MBTI分析,ISTJ、INTJ以及INTP型人格才适合软件行业。但是我并不属于上面三种类型,自认为学习本专业确实还是有一些吃力的。现在不禁有点怀疑自己,能否提点一二?

我的回答
《构建之法》在P108提到性格一定程度上会影响合作。据MBTI分析,ISTJ、INTJ以及INTP型人格才适合软件行业,可我并不属于上面三种类型,所以我会对自己有一定的怀疑。曾经这种怀疑在我看来是有迹可循的:相同的科目室友花一天时间的复习效果比我花三天时间复习效果好,同一个算法别人听一遍就能够理解而我可能要花时间再听好几遍才能做到,诸如此类的事情不停地在提醒我:我的性格是不是真的不适合?后来,随着软工实践的深入学习,我和周围同学的交流、合作变得越来越多,我逐渐意识到不是性格合不合适的问题,很多时候是方法不对。效率高的同学往往有一套自己做事的方法,他们更加乐于总结、更善于搜索与探寻、对消息的捕捉更加敏锐、和别人的交流也会更加频繁。认识到这些之后,我逐渐摆正了自己的心态,跳出之前给自己定的条条框框后,效率慢慢变得高了起来,学习也变得更加快乐了。


Q3:关于创新

问题引用:
P359提到“谁不喜欢创新呢?然而细细想来,创新就是做和以前不一样的事,并不是所有的人都喜欢‘不一样’”。

书中也列举出了很多种别人“不喜欢”创新的理由,如果我的idea遭到质疑的理由是“这从来就行不通、没有人需要这些方案、在实际中根本行不通”等,我大可以像《构建之法》里面说的那样,通过考虑“对利益相关人要讲清楚‘你能从中得到什么’、创新的想法和目前流行的做法相比,有什么相对优势,能让别人清楚地看到这个区别”等方面解决问题。但是如果我的idea是因为“个人自负/嫉妒或者是面子问题”等原因被否决我又应该怎么办呢?

我的回答
我现在认识到这个问题其实问得不怎么好。首先这个问题不具有普遍性,其次这个问题也不好回答。一个idea从提出到被认可,要对利益相关人要讲清楚“你能从中得到什么”、创新的想法和目前流行的做法相比有什么相对优势,能让别人清楚地看到这个区别,大多数人对足够好的idea是喜闻乐见的。如果真的遇到问题中所出现的情况,那就勇敢地与“坏人”斗智斗勇,努力让更多、更有权威的人看见自己的idea,这样被采纳的概率就高得多。


Q4:关于“赢者通吃”

问题引用:
P372中提到一个“黄金点游戏”(这个游戏规定第一名得到全部的分数,第二名(不管多接近)到倒数第二名都是0分,最后一名还要倒扣分),从这个游戏作者得出“软件行业就是一个赢者通吃的环境,最后一名还要把自己的身家倒贴进去”的结论。

这不禁让我想到:每当班上同学要自行组队完成老师布置的团队项目实践作业时。我发现如果同学A和C成绩较好、项目经验较丰富,而B同学成绩一般、经验不足。此时A和C会更加容易找到队友,同时他们也更加倾向于和对方组队而不是选择B作为队员。长此以往,A、C的能力、成绩、经验等等会以快于B的速度提升,那么A、C自然就能获得更多机会、成绩更好、发展更快。这个例子是不是也能证明软件工程“强者通吃”这个结论呢?那么作为处于第二名和倒数第二名的同学在这种情况下要如何“曲线救国”而迎头赶上呢?

我的回答
我觉得“自行组队做项目 ”这个例子一定程度上能反映软件工程“强者通吃”这个说法。如果一个同学因为能力不足而没有人来找他组队,这个同学可能会因此信心受挫,导致效率不高,再加上水平有限,花费了时间却学习成果不佳,也就是《构建之法》里所说的“最后一名还要把自己的身家倒贴进去”。其实,我能力不算好,我也曾经遇到过这种情况,但是我并没有因此信心受挫。我的做法是化被动为主动,鼓起勇气向能力好的人发起组队邀请,坦诚地向他们说明自身的优缺点,同时也真诚的表达自己的诚意和决心,大多数时候同学们都会乐于一起学习一起进步。如果一味地逃避、不自信、被动地等待而不主动争取,这无疑是作茧自缚,很难有进步。


Q5:关于团队

问题引用:
P409在介绍团队合作的规范阶段时提到“通过聆听、讨论,成员互相之间更加了解,认识到并欣赏各自的能力和经验。在工作中互相支持,大家意识到并尊重各人的个性”。

我想这是团队的leader需要做的事情。我曾经所在的一个学习小组里,我们成员们已经有了一定的默契。A成员累计代码量最高能力最强,但有一个缺点:情商低且不自知(实话实说,没有诋毁的意思)。每当其他成员有失误时,A会毫不留情地当面说出类似于“都是因为他我们才会浪费这么多时间”这样的话语,其他成员的积极性以及自信心或多或少受到了影响。而在leader与A多次交涉无果的情况下,只有留下A或者是剔除A两个选择。我想如果调整团员,那么团队需要花时间重新建立默契;如果留下A,那团队的其他成员继续被打击。此时,leader是否有必要将A换掉?

我的回答
这个问题看每个团队的具体情况吧。如果团队已经足够成熟足够默契,而且A只是单纯情商低没有坏心眼,那么大可不必剔除队员,大家开诚布公地沟通,坦诚地面对队友缺点、互相包容就好。如果A人品有问题,理所当然是留不得的。


3.产生的新问题

1.其实小组在做完需求分析后,我们都有意识到我们小组的项目需求庞大且琐碎,用户版块、发帖版块、组局版块、树洞版块、私聊版块,工作量其实比我们想象中的要大得多。后来小组根据功能的重要程度及使用频率做了适当的删减。但其实在真正面对客户的时候,我们要如何将需求化繁为简呢?


4.分别在项目的5个阶段收获的最大的知识/能力

需求阶段

1.知识:阅读了《构建之法》,懂得了怎么样能够更好地获取需求。
2.能力:思辨能力与创新能力。我们团队的项目从无到有,是从需求分析开始的:人们需要的是什么?我们能够给客户提供什么?市场现有同类产品中能够借鉴的是什么要避免的是什么?我们要怎么在诸多竞争者中脱颖而出?一系列都是我们都要思考并且解决的问题。在此过程中,我们学会了思考、辨别与创新。


设计阶段

1.知识:基本掌握了XD、Axure等工具的使用。
2.能力:收获了更好地与他人沟通的能力。团队开会进行需求分析,没有想象中“你一言我一语”那么兴奋、激烈地讨论,大多数的时候给我“和风细雨”的感受。“和风细雨”是安静却不沉默、轻松且自由。在小伙伴发表意见和看法时,有不同观点的队员不会立马打断他和他辩论,而是会先认真倾听讲述者的想法,然后再提出自己的看法。这样下来,这样的氛围使得在团队中不善言辞的小伙伴能够充分地参与其中。而“和风细雨”是我对团队的初印象,但一个充满奇思妙想的团队绝不只有一个面,队员们熟络后也会互相打趣调侃,更多有意思的想法和观点在玩笑中碰撞、被激发,从而提高了会议的效率。我深刻地认识到,“善于倾听”是团队有效沟通的关键,在沟通过程中保持谦逊、适度幽默也是非常重要的。


实现阶段

1.知识:学习了新技术在团队项目之前我是没有使用过SSM框架的。一开始十分没有底气,所以提前2周找学习资料和网站疯狂补课。刚刚开始的阶段,因为基础不好,看了好多网课收效甚微。后来通过队友的指点,采用边听课边做练习的方法,虽然进度缓慢,但是学习效果有了好转,在团战真正开始的时候能够没有了那么大的压力,当然这离不开我友好热情的队友们。在这个阶段就是通过不断地学习新技术、不断练习、不断请教、不断沟通来获得进步。
2.能力:从队友身上学习到了更高效的学习方法。概括为:有计划、会搜索、多交流、多总结、不纠结。


测试阶段

1.知识:基本上掌握了postman、Eolinker等工具的使用。
2.能力:变得更加有耐心、更加细心,能够更好地控制自己的情绪了。


发布阶段

1.知识:了解了将自己项目部署到服务器的基本流程、了解了将微信小程序发布所需要的材料等
2.能力:学会了辩证地看待他人的评价,学会调整自己的得失心。


5.实践课程经历带来的理解/心得

通过这门课,我收获颇丰、感慨颇多,更加深入地参与并且理解了团队的意义,更加深刻地认识到“态度决定成败”、“细节决定成败”,“行百里者半九十”等话语的含义,但是我最大的收获是学会了正确地看待自己。在团队合作中,正确的认识自己是非常重要的。不要把自己看的太重要,因为人外有人天外有天,只有谦逊才能使人进步,所以很多时候要学会倾听他人的看法和意见,而不是一味地表现自己、看不到别人;也不能把自己看的太微不足道,因为你的潜力永远超乎你的想象。正确的认识自己、不卑不亢,只有这样才能让自己更快地融入团队,更多地获取进步,更好地服务团队。


二、个人技术总结

技术博客标题 https://www.cnblogs.com/Cherry-XPX/p/14931977.html
技术概述 Java后端SSM框架图片上传功能
posted @ 2021-06-28 18:47  骑着摩托车的小螃蟹  阅读(118)  评论(5编辑  收藏  举报
TOP 底部