​随笔 | 写代码时极有可能面临的焦虑

2021-03-10 14:36:29 浏览数 (1)

随笔 | 写代码时极有可能面临的焦虑

本科学管理,被诸如《市场营销学》这类课程的作业搞得焦头烂额时,就会羡慕学计算机(或更广一点如「工科」)的同学:工程问题,有绝对的标准与尺度;不像这种经管的作业,没有明确的基准,辛苦写好的作业到底能得多少分,怕是只有老师的心情说的算。

现在自己每天敲代码,心态反过来了。

代码或者说项目文件有问题,那么程序跑不通就是跑不通,我就得在原地打圈圈,花费大量时间与精力排查问题、尝试解决——还未必有效——进而,我会想到:那些写《商业计划书》的、那些与人打交道的,只要持续推进,就横竖会把自己的任务解决,只不过是效果有好坏之分吧。羡慕。

很多人都以写程序为生,我的职业规划大抵也是如此。这两日,被一个 bug 卡到怀疑人生,便开始思考:

•写代码的优点大概也是其缺点?•再次遇到同质问题,如何避免焦虑?

写代码的优点大概也是其缺点

仅仅从工作内容上看,我觉得有两点是『写代码』这三个字概括的工作很吸引我的:

•说一不二,确定性•需要不断学习新技术

说一不二,确定性

我们写出一个1 1的程序,则得到的结果一定是2,这就是我所谓的「确定性」;但也正是因为我们预期了「确定性」的结果,当出现「不确定性」的事件时,我会尤其焦虑。

当我写出一个1 1的程序时,得到的结果是3或者得不到结果,我就会很迷茫,进而只能根据自己有限的知识与检索能力逐一进行排查:

•程序语法有错误吗?通常不会有,否则编译时会报错;•程序逻辑有错误吗?•是编译器的问题吗?•是操作系统不兼容的问题吗?•...

大部分情况下,我们可以通过互联网得到解决方案,因为我们的错误有人犯过,并且他/她自己或者其他高手已经给出了解决方案。但是当我们在自己的领域深挖时,我们面临的问题只有我们自己经历过,这将导致没有人能为我们提供手把手的指导。

我面临的问题是,我无法在 windows 10 平台上编译并使用 gecode ,而让我感到焦虑的是:我之前已经在 linux 上成功编译运行了 gecode 的实例,并且在 windows 10 上我都是按照 gecode 的编译说明书配置的:

•我首先尝试用 gcc/g 编译,失败,在调用 sh 脚本时,显示 OS 不适配,那我只能更换平台•于是改用 Cygwin 上的 gcc/g ,在编译时也报错,没有查到类似错误及其解决方案•最后,我下载 VC ,使用 MSVC 里面的 cl.exe 直接搭配 gecode 的 64 位安装包,成功运行了实例

但之后还面临一系列问题,这里不详述...

总之,我目前面临着一个最棘手的问题:

•能运行、不报错、逻辑通顺,但自己的实例就是与预期不符...•或者说,没有结果;无论我更改什么配置,结果都是一样的即「没有结果」,这将导致我不知道哪里出了问题,很难把搜索范围减小

需要不断学习新技术

『需要不断学习新技术』让写程序没那么枯燥,却也充满挑战。

令我焦虑的是,我没有扎扎实实学完技术,而是直接上手做。

比如,gecode 自己有一套逻辑体系,而这个体系并没有在我的脑海里成型。但我现在却要求自己直接开始应用 gecode 写实例——这将导致我效率低于预期。

或许当程序员的话,真的需要占用自己的生活时间,来学习工作上的技能,否则,容易跟不上业务、被淘汰。

如何尽可能避免写代码的焦虑

老读者知道,我讨厌束手就擒,也不会怨天尤人。

遇到不舒服的地方,要么想办法改善,要么避开。

我将从两个方面分析『如何尽可能避免写代码的焦虑』:

•策略或曰心态上•方法论:记住根目标与回溯

策略或曰心态上

首先,宏观的心态是:

•就算现在做不出来会怎样?就算真的永远做不出来会怎样?- 会导致别人都有论文了而我的研究还没有成型?长期做不出来会导致老师的失望?•好,那这些后果我能承担吗?至于让现在的我焦虑吗?宏观上,能承担做出来的后果,我还有别的路可以走;不至于让我现在不开心。

微观上:

•有没有其他思路?我有什么收获?•比如在这个例子里,我第一次脱离 VC 使用命令行直接调用微软的 cl.exe ,我知道了 Cygwin 及其背后的大概原理...

卸掉思想负担,轻装而行。

方法论:记住根目标与回溯

找 bug 的过程实际上使人疯狂,当我冷静下来时,我发现我似乎已经与『根本的目标』背道而驰。

于是我冷静下来,画了一颗“树”。

树状图

这才发现,自己一直纠结的 bug ,似乎可以先「搁置」。因为 pybind11 目前只是一个手段而已,我们可以先抛开 pybind11 ,回溯到“第一阶段结束”那里,思考有没有思路二三四。别忘了,我们的阶段性目标是『载入数据』,而根本目标是『运行自己的实例』。或许,我们可以回溯到““第一阶段”开始前,考虑更换一个系统,如 Linux 或者 Mac OS 。

此外,向他人求助不失为一个好手段。

成文于 2021年2月22日九点半前,而此时(2021年2月22日中午一点半),已经解决了 bug 。我将把大概的解决思路和探索思路具体阐述于评论区。

0 人点赞