程序员正确的提问方式(个人建议)

前言

本文主要写给目前在我技术交流群里的同学。

为什么要正确提问?

对提问者而言,好处在于:

  • 更清晰地描述清楚自己的问题;
  • 问题得到解决的概率更大
  • 被提问者更愿意解答你的问题

对被提问者而言,好处在于:

  • 花的时间更少,去解决问题
  • 心情更舒畅点,更愿意去解决问题

怎么样才算是一个正确的提问方式,我的建议是,设身处地,仔细想想,假设自己是那个被提问的人,自己是那个要解决问题的人,需要提问者,提供什么样的东西,才能更好地解决问题?

这个大家其实工作中,学习中都会碰到,比如,你的同事要请教你一个问题,你问对方什么问题,对方支支吾吾说不清楚,你听不明白,这问题还能解决吗?

再想想,测试的同学提bug时,是不是好多就是图一贴就完事了,问题什么时候发生的,什么场景发生的,哪个用户触发的,这些信息完全没有,你说,你怎么解决?

我们这边的测试,每次就是贴图,也不说把出现问题的那个单号,用户id之类的复制出来,每次我们开发同学改bug,都要照着图去敲单号?你想不想吐槽?

扯了这么些,其实就是说,我们要尽量地,在职场,在生活中,去做一个靠谱的人,做一个同事喜欢的,愿意和你合作的人,和你合作起来很愉快的人。

以前,我问同事问题,也是qq里直接贴图,后来一个同事就和我说,贴文字啊,不然对方还要敲一遍。

恩,这就是同理心。

正确的提问,核心就是要有同理心。

下面说具体的,java工程的提问方式。

一、使用maven工程

先加个重点,请去掉target目录,那个很大,微信或者qq,传都要传半天,而且有时候是在手机收的文件,一般看问题肯定是电脑上,没有去掉target目录的话,一个工程,几十上百兆很正常,这时候,要把微信上收的文件,转到电脑,就要花几分钟。

java后端,以maven工程居多,所以,一般来说,一个标准的maven工程,长这样:

就是一个文件夹,然后里面一个pom,一个src文件夹。具体可以看下面的图(来自于网络:)

这样的maven工程,不管是什么ide,都是可以直接import的,这样的话,解答问题的人,拿到这个工程,可以直接导入自己的ide中。

如果是多模块聚合工程,一般长下面这样:

不知道怎么搭建聚合工程的话,可以看我以前的一篇文章,比较早了,写得一般,不过还是可以看看。大家也可以自行搜索。

https://www.cnblogs.com/grey-wolf/p/6606334.html

二、数据库sql

第二个要点,是工程涉及的sql脚本,一些问题可能不涉及数据库,那就算了。有的是,没有数据库,根本启动不了;或者,启动后,也没有数据,去进行问题的测试和复现,这时候,就必须提供sql脚本。

一般sql脚本格式如下:

  1. 建表sql

    CREATE TABLE `user` (
      `id` int(10) NOT NULL,
      `username` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
    
  2. insert等初始化数据的语句
    
    insert  into `user`(`id`,`username`) values (222,‘ssss‘);
    
  3. 建库sql
    CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
    
    

一般,以上sql,都可以直接通过navicat等工具生成。大家可自行搜索。

三、问题的复现步骤

一般来说,针对web工程,很多问题,都是通过api请求去触发,比如平时我们遇到的各种bug;少部分是定时任务等触发。

如果是请求触发,就需要提供:请求的接口,路径,参数是什么样的,因为不同的参数,可能一个能复现问题,一个就不能。

可以像下面这样提供:

我上面只是举个例子,大家不要用图片,尽量用文字,比如,如下的curl格式,就能完整展示请求的内容:

curl -i -X GET  ‘http://127.0.0.1:8080/gym_war_exploded/user/borrowEquipment.do?eqId=54383a62-0a45-46b6-b1b0-c1be58446a4f&userId=c5d759d9c8f8407992ded888eebaf19b‘

四、尽量去掉无关因素

这个是加分项,前面第一点我说了,现在主要用maven工程,大家知道,下载依赖还是需要不少时间的。

很多时候,你给一个完整的工程过去,里面几十上百个依赖,对方下载都要下半小时。。。你说这怎么搞?

所以,大家尽量提供一份:能复现问题的最小工程。

简单就是,pom.xml里,不要大而全,尽量按需要来,这也是我平时工作中很注意的一个点,包少了,打包都快得多,启动也快得多,调试也快些(这时候可能需要加载或扫描的类、jar包就少了)。

五、其他

todo,其他待补充。

总结

有的同学觉得,我提个问题,也太麻烦了。当然,问题从来都不简单,尤其是,信息还不够的情况下。如果真心希望问题得到解决,那肯定是要花点时间的。

原文地址:https://www.cnblogs.com/grey-wolf/p/12656429.html

时间: 2024-10-29 03:23:03

程序员正确的提问方式(个人建议)的相关文章

程序员自我提高的几点建议

一.背景 中国程序员的成长是与其学习环境相关,据统计,现时做计算机软件开发的人员65%是大专及本科学历,15%是来自于其他的培训机构.可见一个开发人员大致的学习经历和初步经验来自于大学. 而在印度,韩国,以及欧美一些软件外包相对发达的国家大部分是采用中专学员,他们从中学阶段即接受最为严谨,最为科学的软件工程培训.一般,大学毕业生后也会从事编码工作,但工作一至两年后即往系统分析师,架构师发展. 二.程序员自我提高的几点建议 下面的几点建议还算比较实诚,关键看你的执行力. 1.提高文档编写能力 误区

提高程序员项目设计水平的11条建议

1.分析清楚你要面对的项目. 这是进行所有工作的第一步,如果你在这个地方都犯错了,那么后续所做的一切努力都是白费.比如,你要完成图书管理系统,那么你就应该明白这个系统主要是用于解决图书管理的问题. 2.考虑项目设计的方法. 在这个阶段,你要根据这个项目的特点考虑设计的工具和语言.比如,对于图书管理系统,它需要封装性好,这样有利于管理和维护.而这个系统开发周期较短,功能较简单.所以,根据其特点,选择Java作为开发语言会是一个不错的选择. 3.收集完整的需求. 花时间整理清楚你的用户群的基本需求有

程序员自我提高的几点建议 很实诚(转)

一.背景 中国程序员的成长是与其学习环境相关,据统计,现时做计算机软件开发的人员65%是大专及本科学历,15%是来自于其他的培训机构.可见一个开发人员大致的学习经历和初步经验来自于大学. 而在印度,韩国,以及欧美一些软件外包相对发达的国家大部分是采用中专学员,他们从中学阶段即接受最为严谨,最为科学的软件工程培训.一般,大学毕业生后也会从事编码工作,但工作一至两年后即往系统分析师,架构师发展. 二.程序员自我提高的几点建议 下面的几点建议还算比较实诚,关键看你的执行力. 1.提高文档编写能力 误区

程序员应对中年危机的几条建议

程序员中年危机的焦虑 说到程序员的"中年危机",这四个字承载着太多焦虑,而焦虑的原因主要有以下三点: 1.上有老下有小.左有房贷右有车贷,职业选择经不起任性: 2.自己不断增长的期望和实现之间的差距越来越大: 3.行业从业者更加年轻化,互联网寒冬人才需求缩减,自己却一直停滞不前遭遇瓶颈. 时代成就了我们 很长一段时间,我都在想,这些年程序员收入确实不错,程序员因此一度被特别关注,其实深入思考你会发现,我们也只是运气还行,恰好赶上历史机遇了而已,说直白点,这是智能手机和移动互联网带来的行

面试?顺谈Java程序员学习中各阶段的建议

第一个问题:阿里面试都问什么? 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题.说实话,LZ只能隐约想起并发.JVM.分布式.TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住.而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小. 甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好. LZ参加的是阿里的社招面试,而社招不同

程序员学习新技术的 10 个建议~

1.克服惯性 万事开头难,克服惯性是学习新技术的第一步.举个日常生活中惯性存在的简单例子,当我们看电视的时候会因为遥控器不在身边而懒得换台.幸运的是有很多的小技巧可以调动我们的积极性,帮助我们克服惯性. 对于我来说,微习惯是一个很好用的小技巧.与其被手头的任务吓到,不如将任务细分为一个个具体的微任务,然后挑选其中的一个开始做起.通过完成一个个的微任务,你会发现自己克服了惯性,并且这项任务不再显得难以完成. 这个方法可以被应用到学习新技能的过程中.关键就是将大块任务细分为微任务. 2.关注大牛 学

程序员摆脱疲劳的 11 个建议

原文网址链接:http://url.cn/XId9x4 我们的行业压力大.人手少.节奏快,所以有时候很容易让人感到倦怠和失望.程序员总是觉得很累,烦躁甚至是沮丧. 这里有一份快速指南,能够克服可怕的“程序员疲劳”: 吃一顿丰盛的早饭 高科技产业的很多人都是熬夜到凌晨 3 点,很晚才起床,不吃早饭就冲到办公室.或者随便在路边脏兮兮的早点摊,买点难吃和恶心的熏肉三明治.早餐是一天中最重要的一餐,这是真的.而且不仅仅是要吃早餐,早餐吃什么也很重要.尽量吃点富含蛋白质的食物,比如豆类.牛油果和全麦面包等

给程序员新手写简历的一些建议【转】

最近帮很多朋友review他们的简历,总结起来存在以下问题: 1简历太多页 请尽量不超过两页.一般地,每个hr阅读简历的时间大概在20s,甚至更少.写那么多页不仅毫无必要,而且有害.而且我怀疑一般的应届毕业生不大可能说写三页的履历.有些人说,你写不了三页是你水平不行,经历不丰富.按我说,写三四页不是履历丰富,而是根本不会写作. 2大量无用信息 这些无用信息具体包括: 民族,身高,是否团员,具体家庭住址.星座 自己的兴趣爱好.喜欢打篮球和写代码有联系吗? 自我评价最多一句话,不要一坨一坨.建议不要

程序员高效编程的14点建议

概述:下面是开发大牛总结的高效编程的 14 点经验. 下面是开发大牛总结的高效编程的 14 点经验.不管你是编程菜鸟还是资深程序员,或许都能从中得到启发. 1. 计划 所谓 plan,其实就是对于编程中的“设计”阶段,当然,这里的 plan 并不像设计那样重量级.它要求我们程序员在正式编程前最少要考虑一下下面的问题: 你这个程序,工具或是项目的目的,究竟是用来干什么的.你只有知道做什么,要达到什么样的目的,你才能做得好,做得对. 需要有什么样的功能.需要你给出来个功能表.这样可以保证我们不会遗漏