前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >几个对程序员的误解,害人不浅!

几个对程序员的误解,害人不浅!

作者头像
程序员鱼皮
发布2022-11-07 15:32:59
6660
发布2022-11-07 15:32:59
举报
文章被收录于专栏:鱼皮客栈

大家好,我是鱼皮。在很多人眼里,程序员是一类高薪、“高危” 的职业。他们穿着格子衫、顶着一碗超帅的光头,能修电脑、能黑网站、简直无所不能。。。

但直到我自己当上程序员,才发现其实很多都是对程序员的误解。除了外行的误解外,还有很多来自于程序员同行的误解。今天这篇文章呢,我想结合自己的学习 / 工作经历和感悟,分享下我对这些误解的看法,当然也希望给程序员朋友们一些实质性的建议和启发。

外行的误解

1. 程序员为啥工资那么高?人均年薪百万?

作为达不到平均的一方,我觉得这句话伤害不大,侮辱性极强。

程序员平均薪资可能的确稍微高了一点点,但是年薪百万真的是幸存者偏差了,真的极少数程序员(尤其是只凭技术的程序员)能做到这个地步。如果你拿我和小马哥去平均,那我还人均千万、人均上亿呢对吧?

2. 发量代表水平?

之前很多同学看我视频都吐槽说:“你为什么还有头发,你个菜鸡!”

我觉得这句话伤害不大,侮辱性极强,如果发量代表水平的话我应该比在座的大多数同学都要浓密才对。

所以有没有种可能,是因为太菜,需求做不出来、Bug 改不完,所以才经常熬夜加班、精神压力极大,导致头发熬没了呢?

咳咳,别骂了别骂了,是我本人了。

3. 感觉程序员的手速都很快?

我觉得这个要分情况。拿我自己来说,我一般在 2 种情况下敲键盘比较快:

  1. 要么是在写贼简单的、不用动脑的重复代码(比如增删改查)
  2. 要么就是在回消息聊天

所以有没有种可能,程序员的手速是通过摸鱼、怼产品、重复劳动、或者是平时打游戏打得多而提升的呢?

不过毕竟要经常敲代码,所以程序员的手速通常都不慢。

4. 程序员都是 996 吗?

我记得我之前不怎么加班的时候,就有同学在我视频下评论:你为什么不加班?

这个问题直接把我问懵了,好像我真的觉得自己应该加班,不加班是罪过。

我想说其实程序员也是有个人时间的。至于为什么程序员经常会加班呢?我觉得主要是以下几点:

  1. 首先是我们的程序代码是越写越多的,写的越多,系统越复杂,Bug 就越多。就拿我自己来说,刚做项目一周的时候,就那几行代码,Bug 多好查。但现在项目做了一年多了、用户也多了,很多陈年老 Bug 慢慢被发现了,而且经常牵一发而动全身。
  2. 第 2 点是程序员对排期的错误估算。我发现一个有趣的事情,需求是做不完的,你需求做的越快,新需求来的就越快;而且我们很多时候只考虑了做需求的时间,没有考虑改 Bug 的时间。但现实却有可能是改 Bug 的时间比开发的时间还要长。所以可能的话,还是别把需求排太满,预留一部分时间改 Bug。
  3. 当然还有很多其他因素,比如不会拒绝需求、不会跟产品 battle;缺乏经验、写的系统不利于维护、或者身边的人都很卷你不好意思走等等。总之加班是由很多方面决定的。
5. 重启可以解决 Bug?!

对不起,我觉得这个并不是误解。。这是真的!

以前我遇到过一些莫名其妙的 Bug 就死扣到底,但后来我就学聪明了,先重启一下编辑器、重启下软件,说不定就好了。因为 Bug 不一定是你造成的,可能真的是编辑器的 Bug。

大家就理解为电脑死机后,重启一下就又能开机了。原理应该是差不多的(将程序置于初始化状态)?

同行的误解

1. 算法和数据结构不重要?

有很多程序员是这么认为的,觉得工作中也用不到自己写算法,用个现成的函数、类库,或者上网抄一段就能搞定对吧?

但事实上,有些时候并不是你用不到算法,而是你缺了一些知识,根本想不到可以用算法去更好地解决问题。比如同样是存储和查找 20 万 个单词,没学过算法,用数组也能存、也能顺序查找,但是时空间都存在浪费;那如果你知道前缀树或者其他数据结构,就可以大幅节省存储空间、提升查找效率。

我觉得自己学的知识越多,反而会越觉得基础才是最重要的。因为上层的技术不断发展、不断迭代和淘汰,但是底层原理、编程思想、基本功一般是不会变的。

当然也有同学问是不是前端就不用学数据结构和算法了呢?只能这么说,这一块在前端面试的比重的确不大,时间紧大家可以优先以技术框架学习为主,但是有空了还是要好好补一下基础。

2. 写程序应当追求完美?

我觉得这句话对一半,应该是追求 特定条件下 的最优解。

没有工作经验的同学会觉得程序就要完美、看见你程序有 bug 了、写的不好看了、前人留屎山代码了,多少都会嫌弃。

其实真实工作下,我们没办法把程序写到完美,往往是空间和时间的权衡,比如 HashMap ,用内存换查找效率;或者人力成本和资源的权衡,比如花钱买现成的服务、节省开发时间;再或者是需求和实现的权衡,比如天天都让你做紧急需求,你还有空去优化架构、有空去追求极致的性能么?对不对,代码屎山就是这么来的。

所以这里就要求我们在写代码之前先做调研设计,多思考几种方案、权衡利弊,然后从中选择相对的最优解。同时也希望对别人写的代码多一些包容,把你放在别人的场景下,你未必能做得更好。

3. 代码量等于水平?

在学校的时候,我的确是这么认为的,当时经常跟舍友吹牛逼说我今天又写了多少行代码。但现在仔细回想一下,绝大多数可能都是复制粘贴、增删改查。

进了公司后我才发现,真正写代码的时间很少,像前期的需求评审、跟产品 Battle 啊、方案设计、技术选型啊、沟通、资源协调更重要,也往往更花时间。在你想清楚要不要写代码、怎么写代码后,再去写代码,那时你会发现只不过是一种翻译工具而已。

而且就我观察下来,一般职级越高、工资越高、能力越强的人,写的代码反而越少。并不是他们写不出来,而是他们已经写的太多了、已经有了很多经验、更懂得去利用工具来脱离重复的工作,比如写个自动化脚本、重复代码生成工具之类的。

还有一方面原因是公司需要他们去做更重要的事情,从底层的执行慢慢转变为上层的决策,比如刚刚说的方案设计、或者系统架构。大佬定了个框架,写个 Demo,剩下的就交给我们小码农对吧。

所以代码量是无法真正权衡水平的,在做需求时多去思考更合理的解决方案、写代码时尽量避免重复劳动,才是我们要追求的,

4. 技术决定程序员的水平?

我觉得这个误解和上一个很像啊,如果你觉得程序员的工作就是写代码,写的多、写得快就是强者,那你就真的把自己当成码农了。

我觉得衡量优秀程序员的标准绝不止有技术,比如问题的解决能力,同一件事,你完成的比别人快比别人好;比如业务理解能力,给你一个需求,很快就能判断它是否合理、梳理清楚流程;比如沟通能力,你能够很好地维护用户、组员、同事、跨部门合作者的关系,从杂乱的消息中提取出有效信息;比如产品思维,你能给出更好的建议来推动产品发展;比如管理能力,善于组织成员、推动团队发展。再比如分享表达能力,能把自己学会的东西清晰地讲出来、让别人也能理解,我觉得很酷的事情,也是我一直做分享的原因。

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

本文分享自 程序员鱼皮 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 外行的误解
    • 1. 程序员为啥工资那么高?人均年薪百万?
      • 2. 发量代表水平?
        • 3. 感觉程序员的手速都很快?
          • 4. 程序员都是 996 吗?
            • 5. 重启可以解决 Bug?!
            • 同行的误解
              • 1. 算法和数据结构不重要?
                • 2. 写程序应当追求完美?
                  • 3. 代码量等于水平?
                    • 4. 技术决定程序员的水平?
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档