程序员成长启示录:走出调试迷思.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

27讲试试:⼀种“坏”习惯

曾经,我碰到⼀些程序员问我:“我以前是做安卓的,现在想试着学下后端服务开发,你觉得怎样?”我⼀下⼦就卡住了,不知

该如何回答才好。是:学习本是个好事,但前⾯加个“试着”似乎感觉就不太好了。

好的出发点

“试⼀试”的初衷本来就该是好的,它表达了⼀种好奇⼼,以及尝试⾛出舒适区的勇⽓。

程序员这个职业,会带来⼀些职业习惯。⽐如,可能会经常性地去尝试⼀些新东⻄,然后看看它是否如预期般那样被应⽤或实

现。

这⾥,我就拿程序员“调试程序”这项⽇常⼯作来举例。调试,就是这样⼀种需要不断去试的过程。

还记得我⾯《炫技与克制》⼀⽂中讲了我早年刚开始⼯作时的那个⼩故事吗?那时我带着炫技的⼼态应⽤了刚刚接触的

Java线程编程通信来实现⼀个客户端⼩程序。结果后来程序出了Bug,⽽我不断修改,Bug从这⾥,⼜从那⾥冒出来,

让那时的我产⽣了巨⼤的挫败感。

当时,我花了很⻓时间⼀直在“抓”这个Bug,⽤的⽅法就是调试技术。但因为这是⼀个机率性出现的Bug,⼀步步调试反⽽从

来没出现过,但真正运⾏起来⼜总是偶然出现,实在让⼈抓狂。在这样的单步调试中,我就是怀着⼀种期望凑巧能碰到的⼼

态,做了很多⽆⽤功,最后也没能解决真正的问题。

这个案例虽然已经过去了⼗⼏年,但还是给我留下了深刻的印象,久久不能忘怀。我把它出来,就是感觉想必这条曾

经的我不会是特例。

表⾯上看,是当时那种炫技的⼼态致使我选择了不恰当的实现⽅案,也最终导致出现了对于那时的我来讲很难解决的Bug。但

其实这⾥真正的症结是:我对于线程间通信的知识出现了认知性盲点,这属于“我以为⾃⼰知道,其实不知道”的问题。

我习惯性地⽤调试去找Bug,这就是⼀种“试⼀试”的⽅法,出发点(找到Bug)是好的,过程也是很艰⾟的,但最果却

是⽆功⽽返。即便⽤这样的⽅法最终找到了Bug,也有⼀定的运⽓因素,并不具备可重复性。

当时,我正在读⼀本有关线程编程的书,后来读到某个部分时,关于这个问题的根源我突然就恍然⼤悟了,因为这个部分正好

弥补了“我以为⾃⼰知道,实际却不知道”的认知盲点。我习惯性的调试⽅法,虽然有⼀个好的出发点,但问题是,我不知道我

在调试什么。也许是想通过调试证明程序逻辑本不该出错的,或是通过调试发现其他的疏漏,但在这样的盲⽬调试中最终也没

能定义清楚我调试的终点到底是怎样的。

那时的我就是⼀个刚进⼊编程领域的⼩⽩,调试,然后在看上去很复杂的调试界⾯忙忙碌碌,感觉很专业,但最终收获的

仅仅是对调试器的熟悉程度。⽽且⼀不留神,就⾃觉不⾃觉地养成了这种“试⼀试”的“坏”习惯。

模糊的终点

这⾥,“试⼀试”的“坏”习惯的“坏”字之所以加上双引号,就在于它的出发点本是好的,但如果终点是模糊的,那就“坏”了。

近些年来,就出现过⼏轮的技术热,⽐如,刚进⼊移动互联⽹时代就⼤热、但如今已经回归常温的移动开发,曾经⼤热现已降

温的云计算与⼤数据,以及还在热度中的⼈⼯智能、机器学习和等。⾯对这些技术热,很多⼈都跃跃欲学之、试之。可

能你也不例外。那么,到底为什么你会想去尝试⼀种新技术?是你仔细思考后的主动选择,还是说或多或少⼜被技术潮流所裹

挟?

好些年前,移动开发还在升温阶段时,我也不可避免地被这样⼀种潮流所裹挟过。我开始看⼀些关于iOS开发的书,从语⾔

到⼯具。其实,尝试学习⼀种新技术并不是坏事,即使是被技术潮流所裹挟,但问题出在,这次尝试的终点在哪⾥?

我是想成为⼀名移动开发⼯程师吗?还是说我有⼀个想法,需要开发⼀个App来达成?抑或我仅仅是想学习并了解下移

动开发是怎么回事,从⽽进⼀步提升下技术的⼴度理解与视野?

然⽽以上皆不是,我当时的尝试完全没想清楚终点在哪⼉。后来热度下来了,其他⼯作任务也多了,也就慢慢遗忘了。回过头

来看,这只是浪费了⼀些时间和精⼒罢了。

⼏年后,⼈⼯智能与机器学习⼜热了起来,我⼜开始尝试学习起来,但较上次不同的是,这次我把尝试的终点定义得很清楚。

我不是想成为⼀名机器学习领域的算法⼯程师,也不是因为它很热就“随波逐流”地被潮流裹挟,我这次尝试的终点就是想

搞清楚关于⼈⼯智能与机器学习的三件事:

它的原理与应⽤场景;

它的前世今⽣;

它如今已抵达的边界。

搞清楚这三件事,虽不会让我成为机器学习的专家,但会提升我对于这个热⻔技术的判断⼒。因为,现实中我需要判断⼀些真

实的业务场景该如何结合这样的技术,这就需要了解它们的应⽤场景和⼀些

文档评论(0)

182****0328 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档