109
社区成员
项目 | 内容 |
---|---|
作业课程 | CS_SE_FZU |
作业要求 | 作业要求链接 |
作业目标 | 软件工程实践总结——自知之明,勇往直前 |
其他参考文献 | 无 |
一个不清晰的问题一定是没有标准答案的,必须辩证看待。
首先,你是哪里的大学生?如果是国内顶级985的大学生,我认为有必要认真听老师讲课,因为这种顶级985学校老师的授课水平能够给你带来认知水平的提高。如果你是普通985学生或者211学校的学生,别全在听课或者只在听课,如果你是个大专生,别听,不如在互联网上听课,或者做自己感兴趣的事情。
上课要不要认真听讲,如果从学生义务角度分析,那我的回答是:要。学生的任务就是听课,学习。如果从自身发展的角度,我认为不是必要的,或者说,不能只在听老师讲课
每个人的学习能力,认知水平各不相同。这也决定了是否要认真听课这个问题有着不同的答案,如果你不知道做什么一天天浑浑噩噩,那你可以听听课学点东西,不至于什么都没有学到
。如果你有自己的实验,有自己的项目正在进行,那你可以优先做自己的事情。
不同的老师有不同的水平,有的老师可以把枯燥无味的知识通过幽默的方式讲得栩栩如生,有的老师却只会念PPT,那你想听也听不进去呀,包犯困的。
作为一名软件工程专业的学生,我逐渐认识到课堂学习的重要性,但不再将其作为唯一的学习途径。在顶级大学的环境中,认真听讲确实能让我接触到前沿的知识和高质量的教学资源。然而,在实际学习过程中,我发现结合自学和实践能更有效地提升我的技能和理解能力。
具体做法:
通过这种综合性的学习方法,我不仅巩固了课堂知识,还拓展了自己的技能边界,提高了自我解决问题的能力。
二选一的话,一定是“专”一点更好,无论是哪个专业,每年都会从大学毕业出数不胜数的“工程师”,那他们都会面临着一个共同的问题:就业,找公司上班。那老板肯定是按照他自己的需求来招他的工程师,每个领域都会有每个领域的专家,特别是完美主义者,要是他聘用了一个非专家,那他也会在这个工作上不满足,何苦呢?找个专家把事情丢给他放任不管不香吗?
当然“广”也不一定就是坏事,假如你定义一名全栈工程师为“广”,那也不错啊!现在很多企业都在招这个,前后端分离,人不分离。设计,开发,测试,对接。多件事情一个人做,省工资呀!
总之还是觉得专一点比较好,只要你的方向是对的,你就好找工作。但是又有一个悖论,你不“广”,你怎么知道自己喜欢在哪一些方面上面“专”呢?
经过多年的学习与实践,我意识到专业化与广泛化并非完全对立,而是可以互补的。在软件工程的发展过程中,既需要在某一核心领域深耕,也需要具备跨领域的知识和技能,以适应快速变化的技术环境。
具体做法:
这种结合专业化与广泛化的策略,使我能够在保持深度的同时,具备应对多样化项目需求的能力,提升了就业竞争力和职业发展的灵活性。
学习,分为主动学习和被动学习,被动学习:在完成工程目标的时候不得不进行一些学习。主动学习,除了学习自己负责的相关内容,还要把自己的知识面对外拓展,也要关注自己领域前沿的技术和发展的方向。保持好奇心,坚持自律学习,持续终生保持学习,可以通过:1. 写博客,2. 参与开源项目等等。
还要在埋头努力的同时不断地抬头看,关注行业的整个局势,关注行业发展的动向,特别是客户的需求的变化也要观察,根据市场的需求调整自己学习的方向和技术
深入学习最核心的技术,例如计算机底层,算法等等。这样才能保持自己的经久不衰,才能保持自己不断学习永不落伍。
在软件工程的学习过程中,我逐渐将持续学习内化为日常习惯,不仅在完成任务时学习新知识,更主动探索感兴趣的领域,提升自我。
具体做法:
主动学习:
被动学习:
行业动态关注:
通过这种主动与被动结合的持续学习策略,我不仅在技术上不断进步,还提升了自我管理和学习能力,确保自己能够与行业的发展同步,成为一名不易被淘汰的开发者。
团队项目中,选择工作任务的决策通常涉及个人成长与团队目标的平衡。这是一个需要综合考虑多个因素的问题,没有绝对的答案
明确团队目标:首先,要清晰地了解团队的整体目标和当前项目的关键需求。如果某个任务对于项目的成功至关重要,且团队在此方面存在不足或风险,那么选择有利于团队、有把握完成的工作可能更为适。这有助于确保项目顺利进行,并减少因个人选择而可能带来的不确定性。
评估个人能力:在决定承担何种任务时,要对自己的能力和经验进行客观评估。如果某项任务极具挑战性,但你认为自己有能力通过学习和努力来克服这些挑战,并在此过程中实现个人成长,那么选择这样的任务是有意义的。然而,如果任务远远超出了你的能力范围,可能会给团队带来不必要的风险
考虑长远影响:在做出选择时,不仅要考虑当前项目的需求,还要思考这一选择对你的职业发展以及团队未来合作的影响。选择有利于自身成长的任务可能有助于你积累更多经验和技能,为未来的职业发展打下基础。但同时,也要确保这一选择不会损害团队的利益或破坏团队的合作氛围。
灵活调整:在项目实施过程中,可能会遇到各种预料之外的情况。因此,在选择任务时要保持灵活性,随时准备根据团队需要和项目进展调整自己的工作计划
在实际参与团队项目的过程中,我学会了更系统地进行任务选择,既考虑个人成长,又兼顾团队的整体利益。
具体做法:
通过这种方法,我不仅在团队中发挥了更大的作用,还在完成有挑战性的任务中快速成长,提升了自己的综合能力和团队合作精神。
也不一定吧,写博客其实是非常有价值的一个行为,可以把脑子里抽象的想法和思想转化为自己实际的“财产”,不仅仅可以巩固自己学习的知识,还可以作为一种自己能力的展现
写博客符合互联网精神,互联网本着开源共享的精神
还能培养自己的能力吧,你必须清晰准确表达自己的想法
除此之外,要是长期坚持并且文章质量较好,可以打造自己的品牌,可以提供在业内的知名度,和其他开发者交流可以学习到更多知识,且能拓展自己的人脉圈
在实际学习和实践中,我发现写博客与编写代码可以相辅相成,而不是相互排斥。通过合理安排时间,我能够在提升编程能力的同时,通过写博客深化理解和表达能力。
具体做法:
写博客的优势:
编写代码的优势:
时间管理:
通过这种平衡策略,我不仅在编写代码中提升了实际开发能力,还通过写博客深化了对技术的理解和表达能力,双管齐下,全面提升了自己的综合素质和职业竞争力。
收获:在需求阶段,我学会了如何通过系统化的方法准确捕捉和理解福州大学学生及教职工的实际需求,并将这些需求转化为具体、可操作的项目目标。这不仅提升了我的需求分析能力,还增强了我与用户沟通的技巧,能够更有效地明确需求范围,避免项目后期出现偏差。
实例:在福知汇项目中,通过组织多次用户访谈和问卷调查,深入了解学生对学业资源共享、就业信息发布以及心理支持的强烈需求。具体来说,发现学生在学业资源方面希望有一个集中整理和分享各类学习资料的平台;在就业信息方面,需要一个及时更新和分享就业机会的渠道;在心理支持方面,渴望有一个匿名交流和寻求帮助的空间。基于这些需求,明确了平台的核心功能模块,确保项目方向的正确性和实用性。
收获:在设计阶段,我掌握了如何从需求分析中提取关键信息,并将其转化为具体的设计方案和原型。这一过程中,我学会了使用各种设计工具,如Sketch、Figma等,进行界面设计和用户体验优化。同时,理解了用户体验(UX)和用户界面(UI)设计的重要性,能够设计出既美观又实用的界面。
实例:亲自参与设计了福知汇的原型设计。在设计过程中,邀请了多位同学参与评审和反馈,确保设计方案能够真正满足用户需求。例如,在学业资源共享模块中,设计了分类浏览、搜索和下载功能;在就业信息分享模块中,设计了职位发布、筛选和收藏功能;在心理树洞模块中,设计了匿名发帖、评论和点赞功能。通过不断迭代和优化,最终完成了一个用户友好且功能齐全的原型设计。
收获:在实现阶段,我深入实践了编码规范和团队协作的重要性,熟悉了移动端开发的前端框架,如React Native和Flutter。掌握了页面的切换逻辑、状态管理以及接口的实现与调试。同时,学会了使用版本控制工具(如Git)进行代码管理,提升了代码质量和开发效率。
实例:在福知汇项目中,负责实现用户管理模块,包括用户注册、登录、资料修改等功能。使用React Native开发前端页面,并结合Retrofit进行接口调用,确保数据的实时同步和安全传输。此外,还实现了内容审核模块,开发了后台管理系统,允许管理员对用户发布的内容进行审核和管理。通过这些实践,提升了我的前端开发技能和后端接口调试能力。
收获:在测试阶段,我深刻理解了测试在软件开发中的关键作用。通过编写详细的测试用例和执行系统测试,我学会了如何系统地发现和修复软件中的缺陷。这不仅提升了我的测试技能,还增强了我对软件质量控制的认识,确保了最终产品的稳定性和可靠性。
实例:对福知汇的各个模块进行了全面的功能测试和性能测试。例如,在用户管理模块中,编写了覆盖注册、登录、资料修改等功能的测试用例,确保每个功能都能正常运行。在内容审核模块中,进行了压力测试,模拟大量用户同时发布内容,测试系统的响应速度和稳定性。通过这些测试,发现并修复了多处潜在的bug,显著提升了平台的整体质量。
收获:在发布阶段,我学习了如何将软件产品顺利推向市场。了解了发布流程中的各个环节,包括部署、版本规划、用户推广和反馈收集。认识到细节在发布过程中的决定性作用,以及发布成功对于项目整体成功的重要性。
实例:完成福知汇的首次版本发布,涵盖了平台的核心功能模块。制定了详细的版本规划,分阶段发布功能,确保每次更新都能稳定运行。同时,策划了用户推广活动,通过校园宣传、社交媒体推广等方式,吸引目标用户注册和使用平台。在发布后,建立了用户反馈机制,及时收集和处理用户的意见和建议,为后续版本的优化提供了重要依据。
在参与福知汇项目的过程中,我深刻体会到明确且精准的需求对于项目成功的重要性。只有在需求清晰的指引下,项目才能朝着正确的方向发展,为后续的设计和开发奠定坚实的基础。否则,项目可能会出现功能重叠,而其他关键部分却无法得到充分的关注和发展。
担任组长期间,我学会了许多领导技能,包括如何高效地与组员沟通、合理协调资源、解决团队内部的冲突以及激励团队成员。作为产品经理,我掌握了任务分配、进度跟踪和风险管理的技巧,确保项目能够按时且高质量地完成。这些经验不仅提升了我的管理能力,也增强了我在复杂项目环境中的应变能力。
在前端开发方面,我们主要采用了Vue.js框架进行移动端应用的开发。Vue.js 的渐进式框架特性使得开发过程更加灵活和高效,同时也提高了代码的可维护性。为了构建美观且功能丰富的用户界面,我们使用了ElementUI组件库。ElementUI 提供了丰富的预设样式和交互组件,帮助我们快速搭建出符合用户期望的界面。此外,利用Vue Router进行路由管理和Vuex进行状态管理,使得前端应用结构更加清晰,数据流动更加顺畅。
为了提升代码质量和开发效率,我们引入了TypeScript,增强了代码的可读性和安全性,减少了潜在的类型错误。同时,使用ESLint和Prettier进行代码规范和格式化,确保团队代码的一致性和整洁性。
在后端开发方面,我们选择了Spring Boot作为服务器端的开发框架。Spring Boot 的快速开发特性和丰富的生态系统使得我们能够高效地构建和维护后端服务。通过Spring Security实现了用户认证与授权,确保系统的安全性。
在数据库方面,我们使用了MySQL来管理项目的数据,利用MyBatis进行数据持久化操作。MySQL 的稳定性和性能使得我们能够高效地处理大量数据请求。同时,为了优化查询性能,我们设计了合理的数据库索引,并进行了SQL优化,确保系统在高并发情况下依然能够保持良好的响应速度。
数据库设计方面,我们采用了规范化的设计方法,确保数据的一致性和完整性。通过合理的表结构设计和关系建立,减少了数据冗余,提高了存储效率。此外,针对项目的具体需求,我们设计了多张关联表,以支持复杂的数据查询和业务逻辑。
性能优化是我们在使用MySQL过程中重点关注的方面。首先,我们对常用查询进行了分析,使用EXPLAIN
语句评估查询计划,并根据结果调整索引策略。其次,针对高频率的数据操作,我们采用了缓存机制,将部分热点数据缓存在内存中,减少了数据库的压力。此外,我们还优化了数据库连接池的配置,确保在高并发情况下数据库连接的稳定性和高效性。
数据迁移与备份也是我们关注的重点。为了防止数据丢失,我们建立了定期备份机制,并使用工具如mysqldump和Percona XtraBackup进行数据备份和恢复测试。同时,设计了数据迁移脚本,确保在项目迭代过程中能够平滑地进行数据库结构的更新和数据迁移。
通过这些优化措施,MySQL数据库在福知汇项目中发挥了关键作用,支持了系统的高效运行和稳定性。这不仅提升了我的数据库管理能力,也让我更加深入地理解了关系型数据库在实际项目中的应用与挑战。
为了确保接口的稳定性和安全性,我编写了详尽的API文档,并利用Postman进行接口测试,确保API的高可用性和可靠性。此外,采用JWT(JSON Web Token)进行无状态认证,提升了系统的扩展性和安全性。
为了简化开发和部署流程,提高系统的可扩展性和灵活性,我们引入了Docker容器化技术。通过将应用和其依赖打包在容器中,实现了环境的一致性和部署的高效性。此外,使用Jenkins进行持续集成和持续部署(CI/CD),确保每次代码更新都能自动化地进行测试和部署,极大地提高了开发效率和代码质量。
通过这些技术的运用,不仅增强了我的实际操作能力,也让我在解决项目中的技术难题时更加游刃有余。通过实际项目的锻炼,我从一个技术小白逐步成长为能够独立管理和推动项目进展的领导者。
在整个项目过程中,我感受到了巨大的成长,并对我们所开发的福知汇平台充满了珍惜之情。尽管目前我们的能力尚无法与市场上那些成熟的平台相媲美,但每当完成一个基础功能,看到接口成功运行的瞬间,我都会感到无比的成就感。这些技术和实践经验极大地丰富了我的知识储备,让我在项目管理和技术开发方面都有了显著的提升。
展望未来的项目,我将继续运用在福知汇项目中积累的经验和技能,不断提升自己的技术水平和项目管理能力。我计划深入学习更先进的前端框架和后端技术,如GraphQL和微服务架构,以应对更加复杂的项目需求。同时,我也将加强团队协作与沟通技巧,力求在更多的实践中取得更大的进步和突破,为未来的项目带来更多的成功和创新。
通过福知汇项目的锻炼,我不仅提升了技术能力,还在项目管理和团队领导方面取得了长足的进步。这些宝贵的经验将成为我未来职业发展的坚实基石,推动我不断前行,迎接更多的挑战与机遇。
评分:90分
深入理解软件产品对社会影响,设计时注重用户隐私和健康需求。
评分:80分
我在需求分析方面取得了不错的进展,能够辨别并理解客户的多样化需求,知道用户想要什么、需要什么,并能清楚这些需要的优先级以及侧重点,但是我使用需求表达工具的能力较弱,在某些细节处理上还不够熟练,需要进一步的实践和学习。
评分:75分
我对软件开发的全过程有了较为全面的掌握,并能够遵循体系结构设计方法和设计原则。我能够完成设计模型,并参与技术评审,但我的大型系统架构经验不足,对部分问题的处理还不够细致。
评分:75分
在测试阶段,我的实践经验相对较少,特别是在性能测试和安全测试方面。具备一定的设计模型评判能力,但在实际操作中,我发现自己在面对多种设计方案时,有时难以做出最佳选择,需要更多的经验积累和深入学习。
评分:80分
我遵循软件开发各阶段的文档标准,并能够采用规范的表达方式撰写相关文档。我具备与业界同行交流的能力,并能够理解他们的观点和建议。但在某些专业领域的深入交流上,我还需要进一步学习和提高。
评分:90分
作为本次软工实践的组长,我认为我具有较好的团队意识和合作技能,我在团队协作中积累了良好的沟通技巧。在项目进度缓慢或者遇到困难时,我会加强与团队成员的沟通了解,了解他们的需求和困难,为他们提供有效的支持和帮助。在团队工作中,我会注重组织协调和指挥能力的提升,确保团队成员能够高效协作完成任务。
评分:80分
初步掌握项目管理工具,但实际应用经验还需要继续提升。