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

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

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

好的出发点

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

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

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

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

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

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

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

模糊的终点

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

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

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

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

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

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

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

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

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

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

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

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


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

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

相关文章推荐

数据挖掘中的利器--XGBoost理论篇

XGBoost是各种数据挖掘或机器学习算法类比赛中每个团队都会使用且精度相对最好的算法之一(Deep Learning算法除外)。也就是说,对于刚转向机器学习领域的同胞们,在掌握数据挖掘的基本常识概念...

JAVA技术点学习-纯技术面试题

第一部分: 阿里巴巴  高级 阿里面试题目总结: 第一轮面试电话(5月6号): 1.自我介绍,包括做过项目。 2.有看过哪些JDK源码,了解哪些常用库。 3.集合框架HashMa...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型

概述前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架。下面就简单介绍一下RPC框架技术选型的过程...

年会,好不好?

上个周末跑去北京参加了次年会,这周末继续成都的年会,所以这次就写写年会吧。开会年会、年会,总得有个会吧,所以开会成了年会的重头戏,这个会就是公司和部门一年下来的总结与来年的战略规划会。今年连续两场年会...

java 防止xss攻击 通过filter的方法

http://breezylee.iteye.com/blog/2063615 关于xss的概念和解决方案网上很多,可以参考这个: http://www.cnblogs.com/TankXiao...
  • kouwoo
  • kouwoo
  • 2014-12-15 18:45
  • 5376

Dubbo学习(八):监控中心Monitor

dubbo-monitor安装、 监控中心 配置过程 使用dubbo的话,两个工具是不可少的: 1:dubbo的管理控制台,在之前的笔记中介绍过 2:简易控制中心monitor ...

聪明的老板才不招工资低的程序员

前阵子写了一篇《如果两个程序员差不多,选写作能力更好的那个》,就有读者留言说:“老板,不都是选工资更低的那个么?”。其实,这是另一个维度上的看法,正好最近也和一些经常招程序员的负责人们聊起过这个话题,...

当在浏览器地址栏输入一个URL后回车,将会发生的事情?

作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一...

cobar快速搭建

http://code.alibabatech.com/wiki/display/cobar/Home
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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