[建议]我对软工有话说(上)

我对软工有话说


经历了一学期的软件工程课程实践,先给个自己在这门课中学到的东西打个分:

  • 编码能力:★★★
  • 代码质量:★★★★
  • 团队管理:★★★★★
  • 风险控制:★★★★
  • 解决问题的能力:★★★★★

下面也不写总结了,想写的话太多,都融入了团队总结里,但不会对这门课有太多帮助。下面就我而言谈谈感受比较深的几点和建议,希望可以通过自己的努力把这门课改得更好。

1、个人项目的题目设计

个人项目的设计上,建议从一些难解问题里面进行挑选,主要目的是开扩思路与解决问题的能力的培养上,不要是一个简简单单的程序题。我觉得今年的个人项目其实就挺不错的。

这方面最近还在想...

2、团队项目

2.1 新的团队组队模式

我认为,对于一个团队,必不可失的核心人物是两个:项目经理与架构师。如果说项目经理是在过程中探索需求与确立开发方向、进度安排、开会研讨的角色,那么技术顾问在整个团队起步时就应当有团队项目的技术架构设想——包括使用什么技术,学习什么语言,最好可以粗略估算一个功能的实现需要的时长,还能给出一定的引导教程。技术栈的确定有关学习成本,会间接影响项目的进展程度,所以我以为,技术顾问最好是之前有过相关开发经验或者有过丰富的项目实践经验的同学,这样可以大大减少团队因缺失经验而出现停滞的概率。

按照今年我了解到的团队项目来看,我发现有技术顾问或者叫技术骨干的团队,最后都做出了相对较好的产品,没有出现短期或长期停工的不可控情况。

但结合今年的团队情况来看,矛盾点出现在技术骨干在各个团队中比例不一 上。项目经理既有全能的技术,又能管理与协调团队的情况很少,所以一支队伍至少需要一个项目经理与一个技术骨干。为了协调各个队中能够尽可能达到这一点,我认为应当对纯自由组队的制度加以部分限制。至少不应让很多强力选手扎堆聚集在一个项目中,强者扎堆的团队可能做出非常惊艳的产品。愚以为,软工课的初衷是让每个同学——无差别对待地——都完整体验一遍类实际生产环境中的软件开发流程,从而对各个环节的知识有一个结合实践的新认知。强者的聚集是对其他团队资源的剥夺,违背了软工课的初衷——让每个同学都在实践中出真知。一个团队项目如果缺乏带给大家信心的技术骨干,又没有严格监督控制进度的项目经理,到最后大家水一水完成,演示也不认真准备,那么开发与不开发其实没有什么区别。

我有几个想法,但是不太成熟,不知道是否可以对上述情况有所改变:

从个人项目初步评价一个人的能力

从个人项目和结对项目中的个人博客其实可以看出每个同学对一个问题思考的深度、广度与对待软工实践的积极性。个人博客写得认真负责有水平的人,相信也会当好一个项目经理(从今年的情况来看是这样的)。

提前放出项目计划与要求,确定项目经理

将在个人项目中个人博客表现较为突出的8位同学作为种子选手,这8名同学将作为第一轮迭代项目的项目经理。同时,为了给予其他同学机会,保留4个项目经理的位置留给剩下的同学,出4名非种子选手作为项目经理。这12位同学通过黄金点游戏进行优先级排序,在课上选择自选或者给定的项目。

项目策划书与计划安排

这12位项目经理应当在个人项目结束一周后写一个小小的项目策划书,项目策划书不要求篇幅很长(大约500~1000字左右即可),内容包括但不限于:

  • 面向的用户群体
  • web/APP/其他形式
  • 拟定使用的语言/工具/开源项目
  • 项目期待的角色构成与需求的相关领域知识

项目策划展示

按照个人的想法,希望可以设计一个类似于现场招募的环节来招募到志同道合的队友。在项目策划结束后,老师将每个小组的项目策划链接放在一个博客中,然后要求其余同学对项目进行简单了解,并写出自己最想去的三个项目组以及自己适应该项目所会的基础技能或者以前的开发经验,写上自己想应聘的身份:UI/Test/Dev/Product等(三张纸,每张纸上写上自己的权重比,三个项目的权重比和应当为100)。在第一节课上课期间,助教按照项目组将意向表区分开,第一节课结束后,将每个项目组的意向表分发给各个项目经理。

现场招募

我个人所设想如下:每个项目经理通过自己手里的成员资料意向表自定一个招募队员的优先级,然后进行现场招募。招募的环节类似于下面的场景:

  • 招募分几轮进行,第1轮,先按照黄金点游戏排名的次序,首先1号项目经理进行邀请。
  • 每个项目经理1轮可以挑选1名成员,当1轮结束后,按照和上次挑选的次序相反的顺序。比如第2轮,首先应该是12号项目经理进行邀请。
  • 某个队员同意加入某个项目组的话,则成为该项目组的一员,并且不能再被其他项目经理邀请。
  • 如果被挑选到的队员还未有组,并且在邀请项目组的意向表中,且给出的倾向权重大于30,则不得以任何理由拒绝项目经理的邀请;如果被邀请的队员不在该项目组的意向表中,则可以拒绝该项目经理的邀请,且该项目经理挑选其他成员的机会顺延到本轮最后一个。
  • 一个团队最低人数为4人,最高人数为6人。
  • 如果一个项目团队最终招募到的人数达不到最低要求,将拆分合并到其他组中。

2.2 团队项目第一周

个人觉得很多团队团队项目的第一周有一点荒废,我觉得只有项目经理在写需求分析等,会让整个团队的学习成本转移到scrum meeting开始后,这样是不好的。与其这样,不如在第一周在项目经理写其他文档的同时,让其他同学也做点东西。

更合理的项目起步

为了不荒废其他队员的时间,我觉得可以每个队员在第一周起始时接受项目经理关于学习语言/框架/工具等方面的安排,个人参考建议如下:

  • 前端通过modao/mockplus/sketch等进行界面原型的设计,并上传到Git/TFS上
  • 架构师选定某个框架进行学习,并与项目经理一起设计API文档,并上传到Git/TFS上
  • 开发/测试人员通过学习项目经理给定的任务,将自己做过的demo和实际体验的心得写成一篇个人博客。

以上是我的一些初步想法,不成熟的地方还请多多包涵~
之后如果有更好更新的想法会及时更新的!

转载于:https://www.cnblogs.com/SivilTaram/p/advice_for_software.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react-router] React-Router的路由有几种模式?

[react-router] React-Router的路由有几种模式? 1、BrowserRouter:浏览器的路由方式,也就是在开发中最常使用的路由方式 2、HashRouter:在路径前加入#号成为一个哈希值,Hash模式的好处是,再也不会因为我们…

Spring MVC X-Frame-Options

https://docs.spring.io/spring-security/site/docs/current/reference/html/headers.html#headers-frame-options 转载于:https://www.cnblogs.com/heshuai/p/5132141.html

[react] react组件间的通信有哪些?

[react] react组件间的通信有哪些? PropsContextref:通过Ref获取组建的实例,在通过实例拿到组件的属性值或者方法的回调 第三方的,Redux是基于Conext基础上的库,Mobx这是依赖收集,EventBus是发布订阅模式&…

Fedora开机自动登录指定用户(root或普通用户)

From: http://www.360doc.com/content/12/0709/11/6828497_223143657.shtml 2010-07-19 12:53:04| 分类:Linux学习 | 标签:|字号大中小 订阅 自从Fedora 10开始,以后版本默认均无法在GUI下界面以root账号登录。其实这个设计是比较好的&…

android中心类库

android开发过程中总会用到各种各样的类库,也即jar包,以下地址可以满足您的需求 地址:http://search.maven.org/转载于:https://www.cnblogs.com/kangweifeng/p/5133233.html

[react-router] 在history模式中push和replace有什么区别?

[react-router] 在history模式中push和replace有什么区别? push():添加一个新的记录到历史堆栈, history.length1。(一般会用来跳转到一个新页面, 用户点击浏览器的回退按钮可以回到之前的路径。) replace():替换掉当…

Web安全开发注意事项

1.sql注入:这个很常规了,不要拼字符串以及过滤关键字都可以防住,需要注意的是,Cookie提交的参数也是可以导致注入漏洞的。 2.旁注:就是说在保证自己的程序没问题的同时,也要保证同台服务器的其他站点没问题…

[react-router] React-Router 4怎样在路由变化时重新渲染同一个组件?

[react-router] React-Router 4怎样在路由变化时重新渲染同一个组件&#xff1f; 1.在同一个组件添加不同的key,以下重新封装了组件&#xff1a; export default function (props) {return (<组件 {...props} key{search参数} />) }2.但是不知道在路由跳转的地方加入ke…

Oracle 彻底 kill session

为什么80%的码农都做不了架构师&#xff1f;>>> --*************************** -- Oracle 彻底 kill session --*************************** kill session 是DBA经常碰到的事情之一。如果kill 掉了不该kill 的session&#xff0c;则具有破坏性&#xff0c;因此尽…

消灭编译警告(Warning)

From: http://blog.csdn.net/liuysheng/article/details/7165143 如何看待编译警告 当编译程序发现程序中某个地方有疑问&#xff0c;可能有问题时就会给出一个警告信息。警告信息可能意味着程序中隐含的大错误&#xff0c;也可能确实没有问题。对于警告的正确处理方式应该…

[react-router] React-Router 3和React-Router 4有什么变化?添加了什么好的特性?

[react] React-Router 3和React-Router 4有什么变化&#xff1f;添加了什么好的特性&#xff1f; React-Router 4 从设计思想上进行改变&#xff0c;引入动态路由&#xff0c;将路由进行了拆分&#xff0c;将其放到了各自的模块中&#xff0c;不再有单独的 router 模块&#x…

WebService学习总结——调用第三方提供的webService服务

互联网上面有很多的免费webService服务&#xff0c;我们可以调用这些免费的WebService服务&#xff0c;将一些其他网站的内容信息集成到我们的Web应用中显示&#xff0c;下面就以获取天气预报数据。气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server)…

【017】◀▶ C#学习(九) - ADO.NET

《C#入门经典&#xff08;中文第四版&#xff09;》在程序中访问数据库学习笔记 --------------------------------------------------------------------------------------------------------- ●● 目录&#xff1a; A0 ………… System.Data.SqlClient 命名空间 A1 ……………

[react] 浏览器为什么无法直接JSX?怎么解决呢?

[react] 浏览器为什么无法直接JSX&#xff1f;怎么解决呢&#xff1f; 因为浏览器只能解决原生的JS代码&#xff0c;jsx不属于原生的js&#xff0c;它是类似于html的语法&#xff0c;然后转化成一个js对象。 这个转化的过程就是通过Babel的babel/plugin-transform-react-jsx插…

vim 基础学习之文件跳转

1. -当前文件上次跳转之前的位置2. .-当前文件上次修改的位置,只要是发生了可能导致变化的命令操作就会被标记&#xff0c;哪怕实际结果没有变化3. ^-当前文件上次插入的位置,只要是发生了插入操作命令就会被标记&#xff0c;哪怕实际结果没有变化4. [-当前文件上次修改或者复制…

[react] react声明组件有哪几种方法,各有什么不同?

[react] react声明组件有哪几种方法&#xff0c;各有什么不同&#xff1f; 1、无状态组件 2、有状态组件 3、高阶组件 4、容器组件 5、回调组件 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

【转】主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgnit...

2019独角兽企业重金招聘Python工程师标准>>> 【转】主流PHP框架间的比较&#xff08;Zend Framework&#xff0c;CakePHP&#xff0c;CodeIgniter&#xff0c;Symfony&#xff0c;ThinkPHP&#xff0c;FleaPHP&#xff09; 2011年08月14日 星期日 12:51 转载自 leol…

[react] createElement与cloneElement两者有什么区别?

[react] createElement与cloneElement两者有什么区别&#xff1f; createElement是创建一个React元素&#xff0c;jsx即是这个函数的语法糖&#xff1b;它的函数签命是React.createElement(type, [props], [...children])cloneElement是拷贝一个React元素&#xff0c;可选择在…

第8章 Service基础Activity与Service绑定

要知道如果调用函数startService方法&#xff0c;那么即使你的程序退出了&#xff0c;但是Service依然运行在后台;也就是说此时想要停止service必须调用stopService方法。 现在我们把Activity与Service绑定在一起&#xff0c;那就是Service要随着程序的退出而终止&#xff0c;此…

[react-router] React-Router 4的switch有什么用?

[react-router] React-Router 4的switch有什么用&#xff1f; Switch的 子组件只能是Route或者Switch组件&#xff0c;它的作用是匹配到下面的第一个路由组件&#xff0c;下面的路由组件就不再进行匹配展示了 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。…