程序员的 “坏” 习惯:试一试

原创 2017年07月31日 21:31:24

有时,碰到一些程序员会问:“我以前是做安卓的,现在想试着学下后端服务开发,觉得怎样?”。我一下就会卡住,不知该如何回答好。学习本是好事,但前面加个 “试着” 似乎感觉就不太好了。

好的出发点

“试一试” 的初衷本来就该是好的,它表达了一种好奇心,和尝试走出舒适区的勇气。

程序员这个职业,会带来一些习惯,我们经常性的会去尝试一些东西,然后看看它是否如我们预期般工作。比如,程序员的一项日常工作之一就是 —— 调试程序。调试,就是这样一种需要不断去试的过程。

在刚工作不久,我正在做的一个项目是一个客户端程序,程序包括一个后台任务线程去批量处理一些任务,另外还有一个 UI 界面,一个前台线程等待后台任务线程的处理结果通知,实时地在界面上去刷新重绘任务处理进度。这个程序会时不时的出现一个 bug,前台的 UI 界面不时地就死在那了,任务处理进度再也不动了。

当时,我花了很长时间一直在抓这个 bug。用的方法就是调试技术,但因为这是一个机率性出现的 bug,一步步调试反而导致从来也没出现过,但真正运行起来就总是偶然出现,让人抓狂。在这样的单步调试中,我就是怀着一种期望凑巧能碰到的心态,做了很多无用功也没能解决真正的问题。

这里真正的问题是,我不知道其实是我对于线程间通信的知识上出现了认知性盲点。我习惯性的用调试去找 bug,这就是一种 “试一试” 的技术,你的初发点(找到 bug)是好的,过程也是很艰辛的,但最终结果却是无用功。

后来,那时我正在读一本有关线程编程的书,读到某个部分时,关于这个问题的根源就突然让我恍然大悟了,这个部分正好弥补了我缺失的知识点。而我习惯性的调试方法,虽然有一个好的出发点,但最严重的问题是,我不知道我在调试什么,我没能定义清楚我调试的终点到底是怎样的。

那时的我就是一个刚进入编程领域的小白,喜欢调试,在看上去很复杂的调试界面忙忙碌碌,感觉很专业,而收获的仅仅是对调试器的熟悉程度。而且自觉不自觉的还养成了这种 “试一试” 的 “坏” 习惯。

模糊的终点

“试一试” 的 “坏” 字之所以打了引号,就在于它的出发点是好的,但如果终点是模糊的,那就 “坏” 了。

近些年来,出现过几轮的技术热。比如,刚进入移动互联网时大热但如今已经回归常温的移动开发、曾经大热现在略有降温的云计算与大数据、目前还在升温阶段的人工智能与机器学习。那么,到底为什么你会想去尝试一种新技术?难道没有被技术潮流所裹挟吗?

好些年前,移动开发还在升温阶段时,我也无可避免的被这样一种潮流所裹挟过。我开始看一些关于 iOS 开发的书,从语言到工具。尝试学习一种新技术并不是坏事,即使是被技术潮流所裹挟,但问题出在,这次尝试的终点在哪里?我是想转型成为一名移动开发工程师么?还是说我有一个想法,需要开发一个 App 来达成?亦或我仅仅是想学习了解下移动开发是怎么回事,提升下技术的广度理解与视野。

然而以上皆不是,当时的尝试完全没想清楚终点在哪?后来热度下来后,也就慢慢遗忘了,浪费了一些时间和精力罢了。如今,人工智能与机器学习又热了起来,我又开始尝试学习了解起来,但这次我把尝试的终点定义得很清楚。我不是想转型成为一名机器学习算法工程师,也不是因为它很热所以被潮流所裹挟,这次尝试的终点就是想搞清楚关于人工智能与机器学习三件事:

  1. 它的原理与应用
  2. 它的前世今生
  3. 它如今已抵达的边界

搞清楚这三件事,不会让我成为机器学习的专家,但会提升我对于这个热门技术的判断力。

试一试,需要有更清晰的终点。关于终点,可以从三个方面来考虑:

收获结果
定义清楚尝试这件事,到底能收获怎样具体的结果。比如,考试,尝试的结果就是要通过。

体验过程
有时候结果并不确定,比如,创业,结果未必就能成功,那么这样的尝试难道就没有意义了吗?有的,因为创业的超低成功率,所以,收获过程多于结果。

验证猜想
这个部分程序员就很熟了,编程中的调试其实最重要的目的就是验证猜想。引入一种新技术或框架,验证 API 的调用结果或运行输出是否如你所想,即使最终否决了,也获得了判断的依据与知识。

试一试,是走出舒适区的一次行动,但也不要胡乱尝试,得大致有个方向和期待。

回到文章开头,尝试下后端开发,这是一个好的出发点,但还没有定义清楚你这次尝试的终点。


写点文字,画点画儿,记录成长瞬间。
微信公众号「瞬息之间」,既然遇见,不如一起成长。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

做饭给自己一人吃,如何最快速,且营养有保证?

二六 ,又土又木的设计师 792 人赞同 作为一个长期一个人的单身狗,这个我非常有经验啊。下面介绍一下我这三四年独居生活总结下来的经验。 1.周末在家多屯点儿菜放冰箱,按照每顿饭一荤...

thrift学习第二步,一个简单的双向通信demo以及原理讲解,以及注意事项

经过一番研究后,摸清楚了thrift的基本使用方法和其工作原理.thrift的确是封装了java原生Socket,所以从根本上来讲是可以实现双向通信的,正如上一篇文章中翻译的外文中所说的,无需建立双连...

程序员的 “坏” 习惯:试一试

有时,碰到一些程序员会问:“我以前是做安卓的,现在想试着学下后端服务开发,觉得怎样?”。我一下就会卡住,不知该如何回答好。学习本是好事,但前面加个 “试着” 似乎感觉就不太好了。 好的出发点...

烧入工具试一试!

  • 2015年03月09日 11:16
  • 507KB
  • 下载

s7a可以试一试

  • 2014年12月06日 20:34
  • 3.43MB
  • 下载

试一试dgraph

在github上下载了0.7.7版本的tar包dgraph-linux-amd64-v0.7.7.tar.gz。我是在ubuntu16.04下试的。解压后可以运行,但是在浏览器里输入localhost...
  • AHAU10
  • AHAU10
  • 2017年07月15日 20:24
  • 1118

优化大师,root工具,试一试吧

  • 2015年05月26日 16:33
  • 28.6MB
  • 下载

大家可以试一试:一个局域网软件

  • 2010年07月19日 16:26
  • 2.31MB
  • 下载

扛住100亿次请求?我们来试一试

1. 前言 前几天,偶然看到了 《扛住100亿次请求——如何做一个“有把握”的春晚红包系统”》(url)一文,看完以后,感慨良多,收益很多。正所谓他山之石,可以攻玉,虽然此文发表于2015年,我...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序员的 “坏” 习惯:试一试
举报原因:
原因补充:

(最多只允许输入30个字)