我今天看到一个问答:你什么时候觉得自己编程入门了?

我是一个有十年编程经验的程序员,使用过C++,c语言,python,php,Scala等开发语言,做过小程序,使用汉语编程语言中的神器易语言写过工具。但这一行做的时间越长,越觉得编程是一门哲学:有时候觉得自己早就入门了,有时候觉得不知道编程的门在哪里。

可能很多人会说,编程不就是写代码吗?刚毕业的时候我也是这样想的,能实现一个又一个的特性,将一个个设计转化成代码的过程就是编程。但实际上编程的世界如星辰大海,做得越久,越对这个行业有敬畏之心。

分享一个小例子。那是我刚毕业没多久,我们做了一个windows服务程序,到现场的表现是运行速度很慢,跟测试机上的表现相差很多,其实服务处理的业务并不复杂,现场机器上的表现就很让人不解。后来发现这台机器上每周一的运行速度很慢,我就怀疑是系统每周一有任务占用了服务器资源。查看windows日志和运行服务,都没有找到会导致这类问题的原因。后来我就自己做了一个小工具监控服务器的cpu,内存,硬盘,IO等状态,记录在日志里,然后通过图标工具发现每周一的硬盘读写速度会降低。最后找服务器厂家检测之后发现,服务器的硬盘有坏道,更换服务器硬盘之后这个问题就解决了。但是谁能想到,硬盘的坏道可以导致程序每周一运行速度下降,这大概就是一种无法预判的巧合,就好像最开始那个在电路上让人挠头的虫子(注:bug的由来)。

我为什么举这个例子呢?那时候虽然刚毕业, 但始终觉得自己编程水平还不错,看过很多编程方面的书,在学校写了超过十万行代码,我参加工作之后第一次上手完成项目的bug率就比很多老程序员低很多。我以为我已经算入门了,但是在遇到这个问题之后,我才发现,编程不仅仅是会写代码,更要能够在复杂的运行环境下保障程序安全稳定的运行。就好像感觉我已经入门了,突然又被人踹出门外。

很多程序员都应该知道,业务代码只是编程的一小部分。除了代码的可用性之外,很多时候我们需要为健壮性,可维护性,可读性买单。所以在实现功能的同时,也需要考虑很多跟业务无关的东西。

回到开头的那个问题,到现在我也不知道我算不算入门。我参与设计开发过超百万行代码的软件,也做过很多次编码规范的制定,写过十几篇专利。但是不管是以前从事的行业还是现在从事的行业,总会遇到很多很多难以定位的问题。有可能是时间上的妥协,有可能是觉得它不重要,在一定的阶段内我们都暂时地放弃了继续深究这些问题。我记得上次跟总设计师聊天谈到这个问题,我说其实所有问题都有解决方案,只是我们知识面还不够罢了。所以我觉得编程要永远保持门外汉的心态,保持饥饿,守住初心,这大概也就是乔布斯说的“Stay hungry,Stay foolish”的注解吧。

编程是一门遗憾的学科,我们永远不可能写出完美的代码。刚毕业的时候我就是一个C++程序员,在音视频处理、流媒体、桌面软件(QT和MFC)、工业控制、编译器、嵌入式操作系统等方面有丰富的开发经验。我打算在接下来的日子,从C++的基础开始做起,为大家更新一些视频素材,欢迎有兴趣的同学一起学习、讨论。

Keep struggling, keep dream-chasing!

第一章:你的编程入门了吗?养成良好的编程思维相关推荐

  1. 高一信息技术课件python编程_教科版高中信息技术选修第一章第三节Python入门--奇妙曲线的绘制 课件(22张ppt) 教案 (2份打包)...

    ID:10986924 资源大小:11671KB 资料简介: 教学设计 [课程标准要求] 体验算法思想,了解算法和程序设计在解决问题过程中的地位及作用:能从简单的问题出发,设计解决问题的算法,并能初步 ...

  2. 洗料系列-杂谈篇-麻将自动化---第一章、麻将基础入门

    本文针对麻将的基础入门和常见术语做简单入门科普,为麻将自动化做准备 第一章.麻将基础入门 // TODO 后续章节 1.麻将入门 1.1 麻将组成 北方麻将(共136张) 饼子牌x4 一饼俗称汤圆 二 ...

  3. c语言编程入门教程+网易,人话讲编程·C语言入门:第一讲,Hello World

    //前言 "凡是能够说的,都可以说清楚;凡是不能说的,就应该保持沉默." 维特根斯坦的这一教诲,令人深思--教育乃至生活,人生中的许多问题,都坏在这一点上--本来能够说清楚的,结果 ...

  4. 第一章 51单片机开发入门知识介绍

    第一章 单片机开发入门知识介绍 1.1 51单片机介绍 51单片机是对所有兼容Intel 8031指令系统的单片机的统称. 该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技 ...

  5. python编程入门书-读书笔记之《编程小白的第1本Python入门书》

    本书电子版下载地址:百度网盘 写在前面:你需要这本书的原因 有没有那一个瞬间,让你想要放弃学习编程? 在我决心开始学编程的时候,我为自己制定了一个每天编程1小时的计划,那时候工作很忙,我只能等到晚上9 ...

  6. python快速编程入门课后程序题答案-Python编程从零基础到项目实战 完整PPT+习题答案...

    Python编程从零基础到项目实战是一本介绍Python相关知识的Python基础教程,内容涉及算法.Python数据分析.图形处理.Web开发.科学计算.项目管理.人工智能.Python爬虫等.其中 ...

  7. python快速编程入门教程-终于懂得python快速编程入门教程

    为了提高模块加载的速度,每个模块都会在__pycache__文件夹中放置该模块的预编译模块,命名为module.version.pyc,version是模块的预编译版本编码,一般都包含Python的版 ...

  8. python编程入门经典实例-总算明了python编程入门经典实例

    跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类.在python类,定义类的方法.然后直接使用类的初始化调用自身,获取相应的属性.以下是小编为你整理的pyt ...

  9. python编程入门指南-最简单的Python编程入门指南,没基础也能快速入门Python编程...

    原标题:最简单的Python编程入门指南,没基础也能快速入门Python编程 对Python这门编程语言来讲,几乎是没什么不能做到的.最难的不过是如何入门,也就是你进入Python编程的第一步. 其实 ...

  10. python快速编程入门的课后答案-Python快速编程入门

    内容简介 Python是一种面向对象.解释性的高级程序语言,它已经被应用在众多领域,包括Web开发.操作系统管理.服务器运维的自动化脚本.科学计算.桌面软件.服务器软件(网络软件).游戏等方面. 本书 ...

最新文章

  1. 同一账户同时只能在一处登陆(单点登陆)
  2. 《猿从程序项目经理》读书笔记(八):程序猿站 -- 再牛也合群
  3. 华为的型号命名规则_电力电缆产品的型号命名规则
  4. CNN卷积神经网络:权值更新公式推导
  5. 为什么有些女孩在发现渣男的真面目以后,还喜欢他们?
  6. python decorator. decorator_decorator在Python中的作用
  7. ZLYZD团队第四周项目总结
  8. 你需要启用steam社区界面功能以进行购买_steam官网手机版免费下载-steam官网手机客户端下载...
  9. HealthKit框架参考(转)
  10. app测试环境搭建(适用monkey测试及日志分析)
  11. 数据仓库建设规范(文档版)
  12. DDR内存家族演进史
  13. 我和腾讯不得不说的故事
  14. “安全删除硬件”图标 隐藏
  15. 状态机工作流.实列.报销审批流程(二)
  16. 【Json】Json校验工具
  17. html子代选择器,Css 后代选择器与子代选择器的区别
  18. MySQL基础架构:一条SQL“查询语句”是如何执行的
  19. 嵌入式(stm32)学习之路---MIDI音乐播放器
  20. SQL Server 数据库备份还原和数据恢复

热门文章

  1. centos7:glibc:configure: error: no acceptable C compiler found in $PATH
  2. word 空格变删除 问题及解决
  3. 显卡内存和计算机内存,显存和内存的关系和区别
  4. 掉入黑洞会怎样?被拉成面条,还是前往另一个宇宙?
  5. 常见软件环境的配置、下载...
  6. 如果编程语言是一门武功绝学,那么汇编、C语言······
  7. 一次RAC主机资源使用异常导致的节点重启
  8. 【opencv】支付宝AR实景红包领取方法
  9. 荧光和明场图像融合 matlab,一种用于明场显微成像的多层图像融合算法
  10. Redis 配置文件解读