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

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

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

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

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

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

  1. 写代码时尽量少用复制粘贴(ctrl+c, ctrl+v)

    我们在写代码时经常会参考其他人编写的代码或者是从网上搜索查看需要实现的功能用那些代码,这个时候,很多人会很自然的("ctrl+c", "ctrl+v"),简单轻 ...

  2. 关于在写代码时如何使用绝对路径与相对路径及其简单介绍

    在写代码时,我们经常需要使用到其他的一些资源,但是对于一些像我这样经常用绝对路径不用相对路径的新手菜鸟来说,看网上的那些关于绝对路径相对路径的介绍资料也有点难理解,毕竟-没试过的话确实不大能理解. 所 ...

  3. VSCode内用markdown写代码时出现很多段落标记的解决方案

    在VSCode内用markdown写代码时,出现很多段落标记如下图所示. 开始以为是代码的问题,粘贴了很多次,不行. 把代码放在记事本里,粘贴过来,不行. 敲一段代码试试,也不行. 看来是文件本身出了 ...

  4. 在公司写代码时,我总想回家带娃。

    桔妹导读:离天空最近的地方,是父亲的肩膀.在这个特别的日子里,小编也搜集了一些滴滴年轻的工程师奶爸们的分享,听他们聊一聊当爸的初体验.也借此机会祝福所有做了父亲的工程师们,节日快乐! 内心充满激动和紧 ...

  5. 小白用c++画出手枪,写代码时实属不易,请点赞加关注吧!

    大家好,今天屁孩君给大家带来用c++画出手枪写代码时实属不易,请点赞加关注吧! 废话不多说,直接上代码! #include<iostream> using namespace std; i ...

  6. 当我的生活只剩下写代码时

    我对很多事物都充满好奇,很想探究其中的原理及背后的东西. 记得大一那时,想自己做一个网站,于是到图书馆看HTML的书,那时恰好有个关于网站的比赛,于是以此为借口,买了台电脑--更好的借口是为了学习C语 ...

  7. python缩进tab还是空格_Python码农有话说:写代码时应该缩进使用 tab还是空格?...

    对于程序员来说,其实 Tab和 空格远远不只是"立场"问题那么简单. 在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了. ...

  8. keil写代码时遇到的问题——warning:implicit declaration of function XXXX is invalid in C99

    在用keil4写实验的时候,遇到了如标题所示的警告,warning:implicit declaration of function "XXXX" is invalid in C9 ...

  9. 听说,有的程序员写代码时,耳机里放的是相声

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

最新文章

  1. OSChina 周三乱弹 ——我求婚,你敢答应吗
  2. B. Om Nom and Dark Park
  3. php自动加载类与路由,PHP实现路由与类自动加载步骤详解
  4. 面试必备之:MFC socket编程(浅出+深度:服务端和客户端端口问题)
  5. 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表
  6. php set get 作用_浅谈PHP拦截器之__set()与__get()的理解与使用方法
  7. 谷歌浏览器离线安装包下载
  8. 好用的Mac数据恢复软件在这里
  9. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 Semantic Role Labeling (SRL).
  10. neo4j 入门例子
  11. Java 面试 :乐观锁 悲观锁
  12. Python “最短”挑战(12.21)
  13. iphone游戏-钢铁侠2 Iron Man评测
  14. 虚拟主机环境WinWebMail邮件系统的常见问题处理
  15. pass all options of select from View to controller
  16. CRM软件哪个好?该如何选择?
  17. C/C++程序员简历模板(转载)
  18. js-cookie读写浏览器中的Cookie及其应用
  19. HNC 2014华为网络大会
  20. 步步紧逼!英特尔至强E7 v3对决IBM POWER8

热门文章

  1. 力扣题目——230. 二叉搜索树中第K小的元素
  2. java连接mysql数据库方法_java连接mysql数据库的方法详解
  3. 移动端常见兼容性问题及解决办法
  4. maven缺失ojdbc6解决方案 :Missing artifact com.oracle:ojdbc6:jar:11.2.0.1.0问题解决 ojdbc包pom.xml出错
  5. uni.startPullDownRefresh 只能执行一次的解决方案
  6. nodejs进程异常退出处理方法
  7. ‘net’ 不是内部命令或外部命令,也不是可运行的程序或批处理文件 解决方法
  8. 解决问题:swiper动态加载图片后无法滑动
  9. 如何在.NET中启用程序集绑定失败日志记录(Fusion)
  10. java如何构建图_如何从传递边构建子图?