143
社区成员
这个作业属于哪个课程 | 2022春软件工程实践 -W班 (福州大学) |
---|---|
这个作业要求在哪里 | 软件工程实践寒假作业 |
这个作业的目标 | 准备工作、回首过去、立足当下、展望未来、学习路线 |
其他参考文献 | 《构建之法》、CSDN、GitCode |
仓库地址:戳这里
说实话,在高考结束后的一段时间,我还不太确定自己究竟对什么样的专业感兴趣,对软工的了解也不是很多o(╯□╰)o。当时的想法其实比较单纯,就是想选择毕业后就业收入高的专业,在学长学姐口中以及各种论坛上得知计算机类的专业比较有前途,未来的发展趋势很好,考虑到我的高考分数和往年福大的软工录取线比较接近,因此满怀期待地选择了软件工程专业。
由于大学前没有接触过编程,因此在当时的我看来,软件工程专业很高深,毕业后成为一名码农,每天的工作就是坐在电脑前噼里啪啦的敲代码,开发各种花里胡哨的软件。期待是在短暂的大学四年时间里,能够静下心来学习,掌握各种专业知识和编程技能,未来进入大厂并开发出有着良好用户体验的软件,有着高额的薪资,从此走上人生巅峰[doge]。
希望自己能够像高中时期一样,掌握在课堂中所学到的知识,利用课后时间巩固这些知识,并在学有余力的情况下适当进行课外的拓展。在确定被录取后,我购买了《人月神话》、《编程珠玑》等书籍进行阅读,对软件工程有了初步的认识。在三年的学习生活中,我立下的FLAG有很多,比如要拿到奖学金,要加入西二在线Java组,参加各种竞赛并获奖......但很遗憾因为能力有限只完成了其中的一部分o(╥﹏╥)o。
| |
|
|
|
|
C语言、C++、Java、C#、html、css、javascript、php | |
Yii2、Vue2.x | |
Dev-C++、Visual Studio、VsCode、Eclipse、Android Studio | |
30K |
|
|
|
|
问题一:结对编程中,应选择与自己能力互补的搭档比较好还是与自己能力相近的搭档比较好? 问题来源
我认为结对编程中应选择与自己能力互补的搭档比较好。这样的搭配在结对编程肯定有一段阵痛期,需要有更久的磨合过程,毕竟两人之间能力互补的话,在初期的交流上会存在一些困难,也会导致开发的速度较慢,但在熟悉了两人各自的擅长的领域、效率就会大大提高。同时,假如A、B二人擅长的领域不同,则A的劣势可以被B的优势所弥补,反之亦然,使得程序的完成质量较高,从而起到1+1>2的效果。此外能力互补的两个人,相比于能力相近的搭档,在互相交流学习后,补足自己的短板,对各自能力的提升有更大的帮助。
问题二:应该在什么时候使用goto?问题来源
在任何情况下都尽量不要用到goto语句。初次了解goto语句还是在大一上C语言课上,当时老师特地强调了最后不要使用goto,否则会让程序的结构变得十分复杂,在之后学习汇编程序设计时,我深刻理解了这一点,在阅读包含jmp语句(与goto的功能类似)的汇编程序时,所需要花费的阅读时间就要成倍增多,编写程序时也常常理不清头绪,如果在工程量更大的项目中使用goto语句,想必会更令人头疼,非但不能使程序逻辑有清晰体现,反而会起到相反的效果。
问题三:技术力不足的企业进行产品的创新是否过于盲目?问题来源
我认为技术力不足的企业也可以进行适当的产品创新,并不是过于盲目。诚然,很多创新都需要技术作为支撑,技术力不足的企业,即便有好的点子提出,实施起来受到技术等因素的制约,最后往往会半途而废,但也正如书中P355所说,创新并不仅仅包括技术上的创新,还有商业模式、用户体验等方面的创新,这些技术要求并不高的方面,在企业对市场进行调研后充分了解消费者需求,并且有足够预算的前提下,大胆做出创新,也完全有着成功的可能。
问题四:每日立会是否会适得其反? 问题来源
每日立会能够提高项目开发的效率,并不会起到适得其反的效果。在过去的学习中,我也接触过一些团队项目,当时并没有采取每日立会,仅仅是将任务分配给每个成员,规定在deadline之前将各自的任务完成并汇总。这带来了许多问题,例如有些成员早早地完成了自己的任务,而另一部分在deadline临近时甚至还没开始任务,这就导致项目最终只是一个半成品,并且完全由团队中的少部分成员开发,其余成员都在划水的现象。每日立会强迫每个人向同伴报告进度,迫使大家把问题摆在明面上。同时团队要启动每日构建,让大家每天都能看到一个逐渐完善的版本。
问题五:学生与职业程序员的区别? 问题来源
根据文中P35给出的关于大学生与工程师PSP数据比较可以得出,大学生在编码阶段花费的时间较多,这很好理解,毕竟工程师有着多年的编程经验,编程能力比大学生更强,花费的时间显然也更少,但还有一点更为重要,工程师将更多的时间花在计划、需求分析等方面,这意味着在具体的编码过程中能够有更高的效率。除此之外,工程师在测试阶段所花费的时间比重也远高于学生,这是因为工程师开发的项目都是供用户使用,因此测试必须面面俱到,以便给用户良好的体验,而大部分学生在学习过程中更注重编程,对测试没有引起足够的重视。
首先希望能够成功拿到推免名额和理想学校的offer,然后在研究生阶段继续深入学习,跟着导师做科研项目积累经验,同时进入一些企业进行实习,了解未来的工作并提高自己的核心竞争力。在毕业后把握住机会,争取能够进入大厂,找到对口的岗位。
我对课程的理解是,随着课程的进展,我们通过老师布置的任务,逐步完成项目从立项、设计、开发、测试、维护的整个流程,从而熟悉软件开发。
因为之前自学过Vue并写了一些简单的项目,但因为缺少后端接口而无法继续,因此希望能够在课程中学习到Java后端开发的知识,并且在项目的开发过程中运用到相关的框架,提升自己的编程能力和团队协作能力;在学习过程中遇到困难,希望能和老师以及助教多进行交流。