143
社区成员
这个作业属于哪个课程 | <2022年福大-软件工程、实践-W班> |
---|---|
这个作业要求在哪里 | <软件工程实践寒假作业> |
这个作业的目标 | <回首过去、立足当下、展望未来、学习路线> |
其他参考文献 | 无 |
@
家里人曾经有推荐一些未来前景较为稳定的专业,但还是根据自己的兴趣选择了计算机类相关的专业,毕竟年轻人有试错的成本,选择自己最重要,且目前仍然是互联网蓬勃发展的时代。
由于自己偏向于培养更强的动手实践能力(因为并不是很擅长),接触学习更多的技术,当初有咨询过一些在互联网行业工作的前辈,最后选择了比较注重工程实践环节的软件工程方向。
成为一个平凡小码农,学习过程中要不断的编程,可以开发很多很多软件,学会之后可以给自己身边的人写一些方便的手机程序,或者是给朋友写一些比较有意思的小游戏、互动小程序,还可以写一些人为难以计算量比较大或者套公式的特殊计算器,然后毕业后进入企业做更专业、更大的软件开发。
由于自己并无编程的基础,首先要认真的将自己的语言基础打扎实,接着再学习一些算法,有利于提高编程开发的效率,然后再学习一些有很多“轮子”的语言和框架,进入实战的训练。中途有发现算法的学习对开发效率真的很重要,有去刷一些算法题,同时保持英语的学习,目前前沿的资料大部分是英文。争取刷完pat、六级能得到高分、
少摆烂将更多的精力投入到竞赛之中,但未实现。
| 姓名 | 林建辉 |
出生年月 | 2001/03 | |
籍贯 | 福建福州 | |
联系方式 | 4551985662@qq.com | |
兴趣爱好 | 麻将&篮球&躺平 | |
特长 | 音频、视频剪辑 |
当前值 | |
---|---|
成果和获奖经历 | 2019-2020学年第一学期三等奖学金 2019-2020学年第二学期三等奖学金 2020-2021学年第一学期一等奖学金 2020-2021学年第二学期一等奖学金 2020-2021学年金科奖学金 2020-2021学年校“优秀学生干部” 2020-2021学年院“十佳学生干部” |
专业水平 | 编程语言:C/C++、Java、C#、JavaScript、PHP 技术框架:Yii2.0 开发软件:Visual Studio Code、Visual Studio、Android Studio、IDEA、WAMP 累计代码量:15k+ |
项目经历 | 1、图书管理系统:基于Java语言、数据库来编写系统,实现读者和用户的登录注册、图书以及用户管理员的增删改查、借阅书籍等功能,并按照需求分析、概要分析、详细设计、逻辑设计、调试分析、用户使用结果、调试等流程完成系统开发,为第一次以软件工程开发思想进行小组研发的系统。 2、校园随手拍项目:基于android研发一款手机app、实现拍照上传、地图定位、新闻列表、历史反馈等功能,主要完成基于百度地图的地图显示和定位信息获取的功能。 3、个人博客系统:基于yii2.0的MVC的框架,运用php、html、css等语言来完善一个博客网站,完成了管理员后台基础功能,文章浏览次数统计,dashboard界面,基于RBAC的用户权限管理,访客记录,为第一次大量运用框架知识的结对研发系统。 |
Q1:个人在团队中应该只是一个流水线上的机器吗?
A1:我认为并不是。首先一个团队中会将一个项目分为很多块区域,每一块区域都会有相应的个人负责,对于负责同一块区域的人来说,这时候并不能机械化的各做各的,需要不停的讨论,例如某些相同或相似功能的实现,可以单独的提取出来,讨论以何种算法最高效的解决这部分功能,而后再完善各自的功能块其他细节,而不是一个人负责功能,另一个人完善。其次,对于负责不同的区域的人也不应该像流水线的工作,一般来说,对于一个软件,它的需求可以在研发周期任意过程的改变,这时候不同区域的个人之间就应该及时的沟通,及时的反馈带来更高效的开发。比如面向对象的分析与设计,设计人员需要在设计阶段根据实现的合理性对分析做出改变,分析人员在分析过程中也需要设计人员的支持,两者相互沟通,互相促进。
Q2:作为”卑微“的乙方,开发团队该如何面对变化无常的需求?
A2:首先,将需求变化先降低在需求分析阶段,由于客户与开发人员之间有专业性和思考的角度的差异,往往客户虽然能清楚的知道自己的需求是什么,但无法很好的用开发人员所能理解的角度来表达出需求,因此开发团队应该需要分配一些人员,专门对于甲方的市场背景进行调研,并与甲方积极沟通,将需求完整而准确的转化为设计人员能够理解的,进而减少后期的修改和变化。其次,将需求列作一个清单,并不是一有变化的需求就立刻写入更改,而是以一种周期性的软件更新方式,当需求变化累计到一定程度,再思考将何种需求放入何种位置,哪些需求是可以整合在一起的,避免了功能的重复和杂乱。最后,当面对一些不合理的需求时,一定要及时的与甲方沟通协商,以便于软件质量的可靠性能得到长久的保证。
Q3:比较核心的功能要尽量做的好,达到行业最佳,而那些辅助性的、外围一点的功能则可以以最低代价来维持,甚至不做?
A3:首先,比较核心的功能要尽量做的好是一定的,就好比一辆赛车,对于一个专业的车手来说,核心的发动机一定要足够强大,有充足的动力去支配赛场。软件也是如此,核心功能完备并且强大才会受到更多的用户选择,但对于辅助性的、外围一点的功能要取决于软件使用的场景和使用的人群,例如对于老年人使用的软件,这些辅助性、外围的功能很大程度的影响该款软件的使用,又比如是一款程序员内部使用的软件,并不需要许多花里胡哨的辅助性功能,这对于专业人员来说是可有可无的。总之一款软件想要得到长久而广大的使用,核心功能必不可少,辅助性、外围功能的加持能使其更进一步,毕竟大家都喜欢方便又高效的东西。
Q4:会不会有很多软件工程师可以更短时间内完成任务却特意花更长时间呢?
A4:我个人认为这种情况较为合理,因为对于一个任务的完成的时间并不是固定的,会因为开发人员的状态,所处的环境,设备等因素而导致任务完成的时间不一,因此不能以最快完成该任务的时间去严格限制完成任务时间。可以先预估自己在正常状态的情况下完成这个任务所需要的时间,将完成这个任务所需的时间扩大到到1.5左右,这样避免了因为一些突发事件导致该任务不能按时完成,进而导致团队甚至软件的交付时间受到影响,这种后果通常较为严重,导致多方的利益受损。另外,扩大时间一般来说能更完备、更细致的完成任务,即使提前完成任务,也可以进一步的提升任务质量或帮助团队中其他人继续完成任务,并不会导致很严重的后果。
Q5:软件的缺陷是否应该在规格书中说明?
A5:我认为是应该要说明出来的,既然是已经知道的但却未解决的缺陷,应该是一些不影响核心功能,出现的概率非常小,或者因物理因素无法解决的。如果是前两种情况,在规格书中写明,并给出合理的解决方案,就像操作系统一样,假如某个系统理论可以同时接纳1000个作业,但运行时可以将1005个作业放入,因为1005个作业同时进行的概率非常小,基本不会出现,不影响系统的正常运行。若是由于物理因素无法解决的,直接写明原因和解决方案。
目前并不打算直接就业,认为还需要继续读研深入学习更前沿的技术,才有更多的机会冲击未来就业岗位。若是专硕,则在研究生的学习历程中选择一条自己未来理想岗位的专业技术学习路线。若是学硕,在研究生仍保有强大的科研热情则继续深造,未来从事教育或政府等稳定部门,若科研热情冲垮,则直接就业。
我认为这将是一门高强度高回报的课程,需要自主去搜集和学习很多新的知识,利用新的知识完成实践,在实践中学习新的知识,积累工程经验。软件工程实践课程不仅能锻炼用代码实现需求的能力,而且更重要的是培养用算法解决问题的能力,其中的个人工作、结对工作、团队合作,是一个软件研发周期的必不可少的部分,更偏向于未来工作的模式。大学期间学到的知识五花八门,零零散散的,它更像是一种规范的模式机器,让自己能充分的应用自己所学到的知识,按照合理的流程来进行软件开发进而提高开发效率。我希望通过课程能够学习JAVA后端开发相关知识,学会一些基本框架,完成一定的项目开发。