前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​随笔 | 写代码时极有可能面临的焦虑

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

作者头像
Piper蛋窝
发布2021-03-10 14:36:29
8380
发布2021-03-10 14:36:29
举报
文章被收录于专栏:Piper蛋窝

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

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

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

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

很多人都以写程序为生,我的职业规划大抵也是如此。这两日,被一个 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 。我将把大概的解决思路和探索思路具体阐述于评论区。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Piper蛋窝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 随笔 | 写代码时极有可能面临的焦虑
    • 写代码的优点大概也是其缺点
      • 说一不二,确定性
        • 需要不断学习新技术
          • 如何尽可能避免写代码的焦虑
            • 策略或曰心态上
              • 方法论:记住根目标与回溯
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档