你真的想学编程吗?

本贴最后更新于 1947 天前,其中的信息可能已经时移世异

计算机行业发展迅速。光从近些年互联网公司/计算机软件公司的用人荒就能看出。还依稀记得前些年报志愿的时候,家人劝我别报计算机的理由是:“计算机这种东西,以后会像开车、烧饭一样,人人都会的”。也不知道现在还会有多少人会用这样的眼光来看整个计算机行业,毕竟真正的计算机和平常人认为的计算机,真的不是一回事吧。

打个很常见的比方。程序员一放假到家,各路亲戚总是坐不住,”小张,家里电脑坏了,你有空来看下!”、“小张,这个手机有问题,你帮我修一修。”这样的声音层出不穷,而当你真正接触了某些修电脑时遇到的问题时,发现自己并不会修,他们也会用一种奇怪的眼光看着你,”你不是学电脑的吗?怎么连这个都修不好。”

扯远了哈。其实我主要想说的是,学计算机,学的是设计思想、组成原理、系统结构、操作系统,以及,编程。并不会像绝大多数人想像中的那样。

从大二开始学会用自己的双手创造自己的程序的时候,就陆陆续续有小伙伴咨询我,说自己想学计算机,想学编程,想要我帮帮忙,指一条路。

其实我是很赞成大家都来学编程的,脑子里一下能浮现出的赞成的理由就有:

  1. 编程是把事物不断细分的过程,能够锻炼人的逻辑能力;
  2. 编程需要一个清晰的思路,能锻炼人的思维能力;
  3. 编程是一个创造的过程,能提高人的创造力;
  4. 编程可以帮助人将重复的手工劳作转化成自动化的过程;
  5. 。。。

对于小朋友来说,第 1、2、3 点非常关键,要不为什么老美那边正在不断让编程“低龄化”,走幼教路线呢。

而对于我们来说,第 4 点相当吸引人。因为目前而言,绝大多数的人从事的工作是要使用计算机的,而这些使用计算机的工作又有绝大部分是重复的手工劳作。我母亲的工作单位是医院,有一次需要将一些汇总好的 word 文件里的数据依此填到医院的系统中,其主要工作就是:

  1. 打开 word;
  2. 找到对应的行列;
  3. 复制到系统对应的输入框中;
  4. 跳转到 2,直到 word 内的所有数据都被填入系统;
  5. 提交;
  6. 打开下一个 word,跳转到 2,直到 word 全部被录入完成。

而由于数量过大,单位安排了许多医生护士,让他们在闲暇时间都来帮忙做这些“复制黏贴”的工作。
(我曾经想帮助医院开发自动录入系统,并且已经制作完成。奈何和医院管理系统的制作方的沟通存在些许问题,一直没有真正帮上忙,非常惭愧。)

这就是重复劳作,这也是许多人真正想来学计算机(其实是编程)的理由。

编程很简单的吗?
是!

编程非常简单。配合上目前已有的高级程序设计语言中的战斗级语言(Python),初学者一天时间做出我上文所述的信息录入程序不是梦!

上文说了大二开始有小伙伴陆陆续续找我说想学编程,想入门。最开始的时候我也很热心,毕竟自己喜欢的东西被他人认可并也想学习是一件非常开心的事。我会很细致的问,啊你学这个主要是想干什么啊?之前有没有相关基础啊?是想从最基础的开始学还是直接上手啊?之后也会认真仔细的帮忙查找一些资料推给小伙伴,告诉他们别踩某些坑,让他们知道各个编程语言之间的好坏、用途、学习曲线,会帮助他们一起制定一些学习计划…然而在我看来,真正学的有所成就,能很自豪的对别人说“我会编程啦!”,只有一人。

剩下的要不就是在第一次聊天过后就了无音讯,要不就是在聊过几次后表示“编程太难,不如回家种红薯”,要不就是学学停停,总有更美丽的事物在不断吸引他,要不就是“忙,最近没时间看,等空了一定看”…

其实我也是有点厌烦了。Java 和 Javascript 的关系解释了一百遍,前端和后台的区别说到自己都想吐,廖雪峰老师的 python 教程一天发 8 次,马士兵老师的 java 资料被我永久共享在百度云首页,知乎里专门开了一个收藏来存学习路线…

现在想想真是瞎忙活。以后或许会出现这样的对话吧:

-- “在吗?编程难吗?我想学”
-- "难,建议别学。"
-- "有什么推荐吗?我想做 XXX,我看网上说 XXX 语言蛮好的"
-- “没有,滚。”

我建议,在问之前,真正静下心来想想,自己是不是真的想学编程?学编程的目的是什么?只是解决眼前这个问题吗?说真的,如果是那样的话,还不如给我些许报酬,请我吃顿火锅,然后让我来帮你完成需求。这样学习成本最低,也不占用你的时间,有更美丽的事物也可以去追,而且对我也友好,既赚到了钱,也吃到了火锅,也练了手。

如果你是真的想学编程,也建议你好好想想,编程能带给你什么?其中最主要的一条就是:

能不能真正帮你解决生活上、工作上的需求?并且在将来是否还能持续发挥余热?

毕竟基于需求、基于项目的学习,学习效率是最高的。

比如你是从事统计方面的工作,每天都要接触许多 excel 表格,经常需要对其进行汇总、合并等操作,那么我觉得,使用合适的编程语言制作一个适合自己团队使用的自动化工具,是一件非常自豪、非常拿得出手、非常值得去做的事。而在学习编程之后会发现,更多的统计工作都可以用编程去完成,别人辛辛苦苦花了一天汇总表格,可能你只要上班之后花 30 分钟写个脚本,花 15 分钟调试,再花 20 秒运行,一天的工作就结束了。

你是否真的有足够的兴趣花时间去学习一些符号化的、抽象的语言?

小王非常喜欢游戏,非常想自己制作一款游戏,那么在兴趣的驱动下,小王先后接触了 Unity3D,C#,OpenGL 等…小王不断的用兴趣鞭策自己,终于做出了自己的游戏。前后耗时 2 个月。小王也用制作游戏的经历,顺利的拿到了大厂的 offer。

你觉得你的行业可能被计算机取代,所以你想来了解一下取代你的到底是何方神圣并且从事这方面的工作?

那你大可放心大胆的往下学,这涉及到饭碗的问题相信你自己会不断鞭策自己。而且我相信,程序员绝对会是最后一个被计算机取代的职业,毕竟,剽悍的职业不惧阿尔法狗,充满创造性的行业不可能被取代。

在真正想过这些问题之后,你大可以来问我,我想学编程,从哪里开始入门比较好?或者如果你觉得我不够专业,也可以去知乎上查找一些学习进阶路线,去谷歌上找更专业的学习路线,去听国外的专业课程来提高自己。

说到底,如果你真的想学编程,那么请立刻马上从现在开始,不要拖延!并且编程是要花时间锻炼的,所以请坚持练手,请坚持积累,也请坚持分享!

以上。

  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    531 引用 • 3528 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    我觉得这种个案太鸡汤了

    1 回复
  • 其他回帖
  • someone756

    不热爱编程,在编程路上是走不远的!!

  • someone

    的确是我瞎编的,最理想化的情况了…[em03]

  • 88250

    谢谢分享。小王那部分如果是真的,那我还是建议不要学习编程了....

    1 回复
  • 查看全部回帖
zjhch123
未来的事无人知晓,所以才有无穷可能。 杭州

推荐标签 标签

  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    311 引用 • 1666 回帖
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 8 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 22 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 1 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 229 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    164 引用 • 594 回帖 • 1 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    5 引用 • 13 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    78 引用 • 1743 回帖
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 628 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 1 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 602 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 532 回帖 • 711 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 551 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    76 引用 • 37 回帖 • 1 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    108 引用 • 54 回帖 • 1 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 596 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    163 引用 • 1450 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6504 引用 • 29233 回帖 • 246 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 695 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 243 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 28 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 680 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    139 引用 • 441 回帖 • 1 关注
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖