首页 > 其他分享 >后端开发实习宏观总结

后端开发实习宏观总结

时间:2024-09-01 13:24:24浏览次数:5  
标签:总结 功能 代码 系统 宏观 问题 测试 实习 bug

学习后端开发已几载,加上前不久的实习让我感悟颇深,斗胆总结一下,也是告诫自己继续努力,共勉,再加油加油!

1.从小事做起,然后再扩展

无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止。我从来没有妄想过能够一步登天。相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中。

我很喜欢John Gall的这句话:“复杂系统总是源于简单系统的演化。”

2.一次只改变一件事

当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键。换言之,就是使用短迭代。必须确保这个问题解决之后,再转移到另一个问题上。这适用于向下提交。如果在你添加新功能之前需要先重构代码,那么先提交重构,然后再添加新的功能。

3.尽早地添加日志记录和错误处理

在开发新系统时,我做的第一件事就是添加日志和错误处理,因为这两者从一开始就非常有用。如果系统不能照常工作,那么你就需要知道程序中发生了什么——这是日志的作用。错误处理也是如此——错误和异常越早处理越好。

4.每一行新代码必须至少执行一次

在你真正完成一个功能之前,你必须对它进行测试。不然,你怎么知道它是不是按照你的想法在执行呢?通常情况下,最好的方法是通过自动测试,但并非总是如此。不过,不管怎么说,每一行新代码必须至少执行一次。

5.在整体测试之前先进行模块测试

先进行部分模块测试可以节省时间。通常说来,我们在整合不同的模块时也会出现问题,例如模块之间的接口不匹配。但是如果我们能够信任各个组件的话,那么跟踪集成问题就会变得简单得多。

6.所有事情所花费的时间总是比你预期的要长

特别是在编程中,即使一切进展顺利,我们也很难对功能所需的时间做出正确的预算。并且,开发软件时碰到各种意想不到的问题是非常常见的。

侯世达定律其实道出了真谛:做事所花费的时间总是比你预期的要长,即使你在预期中已经考虑了侯世达定律。

7.先了解现有的代码

大多数的编码都需要以某种方式改变现有的代码。即使是新功能,也需要适应现有的程序。所以,在你加进去新的内容前,首先需要了解当前的解决方案。否则,你一不小心就很有可能会打破现有的功能。这意味着,阅读代码和编写代码都是必要的技能。这也是为什么看似微小的变化仍可能需要很长时间才能解决的原因之一——你首先必须了解上下文。

8.阅读和运行

幸运的是,对于理解代码,我们有两种互补的方法。你可以阅读代码,也可以运行代码。运行代码的确是个非常棒的好方法。所以,请确保充分利用这两种方法。

故障排除

9.bug总是难免的

我不喜欢那些宣称软件开发可以“一蹴而就”的高谈阔论。不论你再怎么费尽心机,bug总是难免的。最好能够做成可以快速故障排除、修复bug和部署修复的系统。

10.解决故障报告

每个开发人员都应该花时间去处理来自客户的故障报告,并修复bug。这能让你更好地理解客户的意图,明白如何使用系统,知道排除故障的难易程度,了解系统的设计情况。这也是为自己的开发成果负责的好方法。

11.重现问题

修复bug的第一步就是重现问题。然后你得确保修复之后,问题能够彻彻底底地消失。这样一个简单的规则可以确保你不会误将非问题当作是问题,并确保解决方案真的能够奏效。

12.修复已知错误,然后再看看有没有遗漏的地方

有时候,可能同时存在着几个不同的问题。它们之间的互相作用,可能会让你毫无头绪,束手无策。不要纠结于搞清楚发生了什么,先去解决所有已知的问题,然后再看看还有什么不对的地方。

13.没有巧合

在测试和故障排除时,不要相信会出现什么巧合。就像你改变了定时器的值,那么就会改变系统重启的频率。所以一切都并非是巧合。添加新功能,另一个不相干的功能变慢了?这绝对不是巧合。相反,是你应该仔细调查的内容。

14.关联时间戳

在故障排除时,事件的时间戳可以作为你的好帮手。寻找偶数增量。例如,如果系统重启了,并且刚刚发出过一个3000毫秒左右的请求,那么可能是触发了某个定时器,才导致出现重启的动作。

团队合作

15.面对面的交流最有效

当我们需要讨论如何解决问题时,那么面对面的交流比视频、打电话和电子邮件都要好。

16.橡皮鸭法

遇到你绞尽脑汁也解决不了的问题时,不妨找一个同事,然后将问题解释给他们听。很多时候,当你在叙述时,即使你的同事一言不发,你可能也会突然灵光乍现找到问题的关键。

17.问问题

阅读和运行代码往往非常有助于指出代码的目的和它的工作原理。但是如果你有机会咨询那些更为了解的人(例如原来的程序员),那么千万不要错过。

18.共享荣誉

不要贪图荣誉,该是谁的就是谁的。例如:“Marcus想出了这个主意……”(如果真是他想的话),而不要说“我们想出的……”。

其他

19.尝试

如果你不知道某种编程语言功能的工作原理,那么不妨写一个小程序来理解它是如何工作的。这同样适用于测试你正在开发的系统。如果我将参数设置为-1,会发生什么?当我在重启系统时,如果服务当掉,会发生什么?以此来研究它的工作原理。

20.带着问题睡觉

如果你正在解决一个很难的问题,那么不妨带着问题睡觉。有科学研究表明,这样做虽然你表明上并没有在主动思考,但你的潜意思却这么做了。其结果就是,第二天再去研究问题,解决方案已经呼之欲出了。

21.不断学习

我们需要不断地学习和了解软件开发。你可以尝试不同的编程语言和工具,阅读软件开发的书籍,接受MOOC以及bilibili等等课程。相信我,量变才能达到质的飞跃,这些小小的学习积累,终有一天会大大地提高你的知识和能力。

标签:总结,功能,代码,系统,宏观,问题,测试,实习,bug
From: https://blog.csdn.net/m0_74969835/article/details/141783056

相关文章

  • Java语言 数组定义与赋值 类型总结
    总结1.定义:数据类型[]数组名;2. 赋值(长度): 数组名=new数据类型[数组的长度];3.数据类型[]数组名=new数据类型[数组的长度]4.赋值(初始化)(第四点详细的看下面具体分析)   数据类型[]数组名=new数据类型[数组的长度]{元素1,元素2......}     ......
  • 新赛道-2024.8 CSP-J组月赛-T1总结
    题面:王老师最近做了一道经典问题《翻纸牌》现在王老师有 n 张牌,编号分别为 1,2,3…n,每张牌一开始都是背面朝上的现在他要进行 n 轮操作,第 i 轮操作时候,他会将所有编号是 i 的倍数的牌正反翻面现在王老师想知道,当他进行完 n 轮操作以后,所有正面朝上的牌的编号......
  • Vue面试常见知识总结2——spa、vue按需加载、mvc与mvvm、vue的生命周期、Vue2与Vue3区
    SPASPA(SinglePageApplication,单页面应用)是一种Web应用程序架构,其核心特点是在用户与应用程序交互时,不重新加载整个页面,而是通过异步加载页面的局部内容或使用JavaScript动态更新页面。以下是对SPA的详细解析,包括其优点和缺点:SPA的优点更好的用户体验:SPA无需重新加载......
  • GUI-4及总结
    Swing标签Icon标签将绘制的图形赋给JLabelpackagecom.bao.lesson10;importjavax.swing.*;importjava.awt.*;publicclassMyIconextendsJFrameimplementsIcon{//属性privateintwidth;privateintheight;publicMyIcon(){};//无参......
  • 2024年8月总结及随笔之逝
    1. 回头看日更坚持了609天。读《零信任网络:在不可信网络中构建安全系统》更新完成读《软件开发安全之道:概率、设计与实施》开更并持续更新2023年至2024年8月底累计码字1463007字,累计日均码字2402字。2024年8月码字109278字,同比增长177.6%,环比增长27.3%,日均码字数3525字,累......
  • 2024.8.31 总结(集训 考 DP)
    今天依然是上午考DP,三个小时四道题。我觉得今天的题目较昨天更简单。考场上就想出了四个题,但是我以为T1\(O(n^3)\)的做法是暴力,想了好久T1也没想出更好的做法,于是开写,然后造数据测了测,发现跑得比较快(极限数据应该也是能在我的位置上那台电脑里1s内过的)。结果出分是330,......
  • 社会实践实习报告还没写?推荐这款AI工具,一键高效生成
    随着科技的飞速发展人工智能逐渐渗透到各个领域为咱们的工作和学带来了极大的便利。在撰写社会实践实报告这一环节一款名为“锐智AI”的一键生成工具应运而生它以其高效、智能的特点成为了广大学生和职场人士的得力助手。本文将详细介绍锐智AI助手的功能、优势以及采用方法帮......
  • 十大时间序列模型最强总结(六)Prophet
    六、Prophet1.原理Prophet是由Facebook开发的时间序列预测模型,专为处理具有强季节性、趋势变化以及缺失值和异常值的时间序列数据设计。它的核心思想是将时间序列数据分解为趋势、季节性和假期效应三个部分。2.核心公式推导:3.优缺点1)优点:适用于具有季节性......
  • Redis常见问题总结
    Redis常见问题总结参考小林codingRedis常见问题总结Redis集群架构所产生的问题及如何处理Java全栈知识体系Redis集群搭建目录1.认识Redis2.Redis应用场景3.Redis持久化4.Redis设计认识RedisRedis是一种开源的内存数据结构存储工具,用作分布式内存中的键值数据库......
  • 单参总结——心电信号
    心电波形的滤波及心率计算心电测量原理心脏通过一系列电活动驱动其收缩和放松,这些电活动可以通过电极在身体表面检测到。心脏的电活动主要包括:去极化:心脏的电信号从心房开始,经过心室,导致心脏的肌肉收缩。复极化:心脏肌肉放松,准备下一次收缩。心电波形心电图(ECG)波形中的......