老码农教你在 StackOverflow 上谈笑风生
作为一个高大上的码农,你肯定用到过 StackOverflow,必须的。会有人否定这个断言么?那他恐怕不是真正的码农,或者说还没入门。StackOverflow 对于码农的重要性,基本就和诸葛亮对刘备的重要性差不多,它上知 Java 下知 MySQL,中间懂得各种算法。只要你拥有与它沟通的技巧,它几乎可以回答你遇到的任何技术问题。
不过,很多码农对它的体验也就仅限于此了。查询一下,找到问题,然后把里边的代码复制粘贴到自己的 IDE 里,然后接着调试代码。万一没有找到符合的条目,就只好去其他地方问。其实你本来还可以做更多,比如主动去 StackOverflow 提问,去回答其他人的问题。这样才能在里面谈笑风生,充分体会到 StackOverflow 的乐趣。
有人要问了,我在 StackOverflow 找到答案,解决了我写代码时候遇到的问题不就行了,回答问题是那些大牛的事情,我何必浪费这个时间呢?对于这种论点,虽然我写这篇文章的时候很想说它是错的,但是理智告诉我,这样做也没有错,如果非要让每个人都在 StackOverflow 上做贡献,恐怕 StackOverflow 就不好玩了。
不过,在 StackOverflow 上积极贡献自己的问题和答案还是有好处的,主要是练习英语、练习技术和扩展视野三方面。
- 首先,StackOverflow 是一个英语社区,不管提问、评论还是回答,都得用英语把自己想说的话说清楚,这个过程可以锻炼英语读写能力;
- 其次,技术方面,在 Stackoverflow 上会遇到各种千奇百怪的问题,比你在工作中遇到的多得多,这可以锻炼你快速识别和解决问题的能力;
- 最后,在 StackOverflow 的问答中会不断冒出一些新技术,有利于扩展知识面。比如我在尝试回答一个 Grails 问题的时候,碰巧提问者用到了一个分布式缓存的插件,我为了回答这个问题,先花了三四个小时阅读这个插件的文档才能开始调代码,最后问题答对了,也学到了新知识。
所以,我还是坚持认为,用一些业余时间在 StackOverflow 上贡献自己的问答是有利于国内码农的成长的。
要这么做,首先你得有个账号,这是显而易见的。但是,关于注册账号、查找问题、提问、给出自己的回答、积分规则、获得徽章的条件等等入门知识,在 StackOverflow 上都有介绍,我就不说了。具体内容你可以去 http://stackoverflow.com/tour 自己看,花不了多少时间。
这就好比你要去参加一个 party,首先你得有邀请函,还要了解这个 party 的主题,费用是 AA 还是有人赞助了,哪些人能去 VIP 包间,这些都是基本的条件。但是,除了这些以外,还有一些很重要的礼仪或惯例之类的 “潜规则”,比如穿着要求、当地习俗、禁忌事项什么的。要不然你一身西装革履去了,发现里边全是大裤衩子和拖鞋,到时候没人搭理你也是正常的;要是不小心违背了一些禁忌,保不齐被人一顿胖揍就更惨了。
其实,StackOverflow 就可以看作是程序员的一个大 party,而咱这篇文章主要就是聊聊里边一些潜规则的东西。当然了,这里只是老码农我自己的体会。兄弟水平有限,也许会有说的不对的地方,或者对某些人不适用的观点。本着言者无罪的原则,你自己判断就好。觉得哪句话对就照着做,觉得不对就当没看见呗。如果你看完了有不同意见非要提出来也可以,不过我反正是不会采纳的。
言归正传。首先我要说的是,不要把挣积分作为参加这个 party 的目的。StackOverflow 的 reputation 机制是它的一个核心,你在里面能做哪些事都和这个数字有关系。虽然我承认 reputation 很重要,但是我还是要说,reputation 是身外之物,它只是你在上面提高水平之后自然产生的副产品。
如果你就是只关注积分,那我教你两个歪招,后面的内容你就不用看了:一、多注册几个马甲,给自己所有的问答点赞,分分钟几百积分到手;二、提问题也是有积分的,多提一些门槛低的弱问题,比如 “JS 里的 == 和 === 有什么不同?”,然后选择一个正确答案也能快速得积分。两招配合使用,积分上万不是梦!再见!
好了,接着和其他同学聊。我是很不赞同那种趴在 StackOverflow 上刷题使劲挣积分的做法的,这样把 StackOverflow 功利化了。因为这样抢的都是自己拿手的简单题,全是在做熟练工,花了很多时间也没什么提高。我们的教育环境里很悲哀的一点就是题海战术,孩子们从小就是通过大量练习熟练掌握了一些没用的技能,到工作了以后还是会不自觉地照着这个套路来,多可悲!就算你花5年时间刷一万题得了7万积分又怎样?有的牛人一个回答分分钟就得到八千多个赞8万多积分我会乱说?
我觉得正确的心态是像比尔盖茨看他的银行存款余额一样看待 reputation,多点少点都无所谓。把注意力和时间集中到你感兴趣的技术领域,回答一些能对你有启发的问题。遇到自己不理解的内容,可以积极和提问者及其他回答者探讨交流,这样的收获才是最大的。
其次,就是用代码说话。Linus 说过:Talk is cheap. Show me the code. 这句话其实也是 StackOverflow 的社区文化精髓。不管是提问还是回答,尽量把代码贴进去,一段代码能抵几千字。有些新手看到一个问题觉得很简单,不假思索地就按自己的直觉回答了,然后就期待着积分蹭蹭地涨,可等了半天发现别人全点了“没有帮助”,最后不但积分没涨反而拿了一堆负分滚粗,还奇怪这是咋回事呢?
我的看法是这样的:如果问题里有代码,就不要泛泛而谈,把代码调通了再来总结,这样才会对提问者有帮助。否则,如果光是问 “NoSQL到底好在哪里?” 这种空泛的问题,或者不调代码只回答 ”因为 CSS 3D transformation 和 IE9 以下版本不兼容“ 这样的空话,他不拿负分谁拿负分?实际上,StackOverflow 里边的那些下箭头就是为这样的同学量身定制的。
通过这个过程,能锻炼严谨的思维习惯,改掉空谈的毛病。比如在生活中,问对问题和听懂问题其实都是一门大学问。时间长了你会发现,其实写代码和做人的道理很多地方是相通的。具体怎么相通呢?各人会有各人的体会,这里就不多说了。
第三,尽量写规范化的地道英语。首先不要有太低级的语法错误、单词拼写错误等,让其他人理解起来很费力,这样就像在 party 里喝醉了酒胡言乱语一样,是不尊重他人的行为;再有就是逻辑表达清晰,让别人能明白你的思路,不要前言不搭后语;最后,不要有人身攻击、种族歧视等绝对忌讳的语言,也要注意别在文字中不自觉地流露出这方面的暗示,比如“这都什么年代了,还有人用 JSP?”,这样等于说用 JSP 的人土老帽,肯定会被愤怒的 JSP 专家们集体打负分的。
如果英语水平比较初级,怎么办?也不必因此而裹足不前,大胆尝试嘛!一开始可以模仿,找几个类似的问题或答案,把其中的文字复制下来保留论述句子结构,然后把里面的一些单词替换为自己的关键词。改完之后要多看几遍,不通顺或者逻辑上有矛盾的地方要认真改过来。通过这个过程,也有利于逐步提高自己的英语阅读和表达能力。
第四,这里给新手提个醒,你问了问题,也有别人给你解答了,一定要记得标记正确答案,最好在评论里告诉回答者结果并表示感谢。这样是给回答者付出心血的应有回报,自己也能得到积分。有的人在 StackOverflow 上呆了好几个月,问了几十个问题,自己的积分还是个位数,有经验的玩家就不愿意回答这种人的问题了。很显然,他们都是看了答案就拿走用,从来不给标记或点赞的。地球人都知道,看贴回帖是一种美德。点个正确答案的标记又不会怀孕,举手之劳而已,何必省这点事呢?这种行为太损人品,绝对要避免。
如果对方给出的代码你拿来不好用,也不一定是人家给的答案不对,有可能是你没用好。这时可以在评论里给对方提供进一步的反馈,并可以利用 @ 通知对方。比如功能实现了但是会冒出异常,就把异常信息给对方,有必要的话再一并提供你的开发环境配置,让对方可以评估不同环境下的差异,并在你反馈的基础上进一步完善答案。
第五,回答问题的时候,对于表达不清或过于宽泛的问题,不要急着回答。如果提问者是菜鸟,也不要直接就给人家的问题点负分下箭头,最好先在评论中问他一些具体问题,或者要求他贴出代码,帮助他完善自己的问题,等确定自己搞清楚问题了再给出你的答案。StackOverflow 的评论区也有很多精华,特别是那些点赞数很高的,往往是对答案或问题不可或缺的补充信息。
此外,对于有助于完善问题或解答的其他评论和答案,也可以点赞支持。因为,恰如其分地对其他人的问答和评论进行评价,有助于让高质量的问答获得更多关注,这也是你对社区的一种贡献。
好了,就说这么多吧。最后我还要强调一点,就是上面我说的这些其实都是浮云,大部分是废话,重要的还是你亲自去尝试。看别人讲多少道理,都不如自己亲身的体验和领悟。在网络社区里,新手犯一些错误也没什么关系,只要自己积极参与,用心总结提高,就能得到很多收获。预祝你在 StackOverflow 玩得高兴!
老码农教你在 StackOverflow 上谈笑风生的更多相关文章
- 老码农冒死揭开行业黑幕:如何编写无法维护的代码[ZZ]
下面是一篇有意思的"代码大全",可谓 逆软件工程. 老码农冒死揭开行业黑幕:如何编写无法维护的代码 原文如下 让自己稳拿铁饭碗 ;-) – Roedy Green(翻译版略有删节) ...
- Java老码农心得:卷了这么多年,您真的卷会了吗?
前言 大家好,我是福隆苑居士,今天跟大家聊一下程序员在当下内卷成风的情况下,使用什么方法可以了解行业发展趋势,知道哪些该学,哪些可以略过,今年应该掌握什么,可以放弃什么,让自己时刻紧跟行业的步伐永不掉 ...
- 2020互联网寒冬之下,作为一个Android老码农,是如何进入腾讯的?
由于众所周知的原因,原生Android开发如今已经日渐凋敝,作为一个Android程序员,不仅要会Java,Kotlin,JavaScript,Css,Html,还要会Flutter,C++,FFmp ...
- 【转载】 大龄码农那些事——也谈996.ICU
原文地址: https://www.cnblogs.com/helloyaren/p/10657414.html 请扫码关注!!! 您的关注将是您做的最正确的事情!!! 大龄码农那些事专注分享大龄码农 ...
- 大龄码农那些事——也谈996.ICU
1.背景 近期Github突然有一个开源项目火了,叫“996.icu”,开源地址:https://github.com/996icu/996.ICU ,目前star的人数截止我写这篇博文时已经高达17 ...
- 6年DotNet码农的盲目经历
前言 第一篇没有选择记录与技术相关的文档,是考虑到有必要给查阅这篇文档的伙伴们“自我介绍”一下,大佬们看了求带或指导,我很愿意学习,初学者们看了千万不要重复走我之前的“学习之路”:我老家贵州,再过 ...
- 上不了Google是码农的悲哀
http://refyt.com/?r=34d1edb7dba42e8d 上不了Google是码农的悲哀.1. 资料大部分都在国外的网站,差不多倍感伤心.2. Google Play没有办法访问了.3 ...
- 码农英语四级考了6次,也能进知名IT外企
程序员学英语 这显然不是新鲜的话题,但再怎么重复强调都不过分! 为啥要学 IT是当今世界发展最快的行业,没有之一!作为其中的从业人员,要始终保持对最新技术的关注度,难免需要阅读英文新闻或文章 平时工作 ...
- 【整理】待毕业.Net码农就业求职储备
声明:本文题目来源于互联网,仅供即将从学校毕业的.Net码农(当然,我本人也是菜逼一个)学习之用.当然,学习了这些题目不一定会拿到offer,但是针对就业求职做些针对性的准备也是不错的.此外,除了技术 ...
随机推荐
- 【WEB前端经验之谈】时间一年半,或沉淀、或从零开始。
距上次写博客还是有点久了,中间有个写的念头,不过由于不知道写什么也就放弃了. 14年4月份第一份前端工作到现在也有一年半之久了,自己对前端的热爱相对于一年前是有过之而无不及.一年半的时间里自己也成长了 ...
- [vijos1892]树上的最大匹配(树形DP)
题目:https://vijos.org/p/1892 分析:(100分其实用到各种c++优化,没什么实际意义,所以弄70就可以了) 题目很简单,很容易想出用树形DP,但是求方案数的时候,满满都是细节 ...
- ThinkPHP中的跨控制器调用与框架执行流程
一.跨控制器调用 UserController.class.php <?php namespace Home/Controller use Think/Controller class User ...
- UITableViewdataSourse的协议所有方法
UITableViewDataSource @required- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection ...
- 安装xampp二三事
1.chrome 找不到页面时会自动跳转到hao123 安装完chrome后,想测试下localhost,结果找不到页面,当然正常的显示是“该页面无法显示”才对,可恨啊,总是直接转到hao123页面上 ...
- “耐撕”团队2016.04.19站立会议
1. 时间 : 20:20--20:40 共计20分钟 2. 人员 : Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客 ...
- .net 使用PowerShell获取电脑中的UUID
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OS ...
- fluery算法
#include<stdio.h> #include<string.h> struct stack { int top; ]; }s; ][]; void dfs(int x) ...
- Oracle11g 32位安装步骤
1.注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符.官方下地址:http://www.oracle.com/tech ...
- bzoj 3437 斜率优化DP
写题解之前首先要感谢妹子. 比较容易的斜率DP,设sum[i]=Σb[j],sum_[i]=Σb[j]*j,w[i]为第i个建立,前i个的代价. 那么就可以转移了. /**************** ...