老码农的艰辛转型之路 (退休老码农)

昨晚在“九边Pro”帖子刚才评论区有小伙伴说码农到底是不是青春饭。回复了一下我这50+的现役老码农的“光辉历史”,没想引起了好多码农的关注,就系统性的“回忆"一下吧。

更严谨的说,我应该算是年过花甲的现役非科班码农。我1990年本科,后来又读硕士与博士,我所有的专业都是物理学相关,都不是计算机专业,所以我是绝对的“非科班”出身;但我工作中平均应该有50%的时间,都是在编程(包括软件与固件),现在虽然已经年过花甲,仍然如此,所以绝对应该是“现役码农”。就截个正在写的软件的代码当配图吧。

年过半百的老农民,二十年老码农

1990年大学入学,就从一个1990行截取一段C#代码当配图

现在老了,记忆力越来越差,就零散的记录一下现在还能记得的一些往事。

  1. 我第一次见到计算机,是在1990年大一入学,应该是老师带领大家参观物理系实验室时,第一次见到了计算机。见到了键盘上输入字符,屏幕上就能显示...... 好神奇!
  2. 我们那个年代,我是物理系的,最早的编程课可能是在大二或大三,那时可能学的是Z80单板机?是用的汇编语言去写个小程序?反正是学了,后来从来没用过,现在完全忘了是怎么回事了。我觉得最关键的是:当时学完了,对编程是没有任何兴趣的。
  3. 然后,也可能与单板机并行的,同样可能是在大二或大三,学了Fortran语言。一种“高级的计算机语言”,比汇编语言确实方便多了。记得最终的考试似乎是编写打印输出一个“万年历”,输入任何年份或月份,要求输出当年还是当月的日历?当时重点要考虑的是闰年或闰月之类的事情。我当时应该“展示”出了我的编程能力(良好的码农潜力),这种“大作业”,对我来说,不难。但是,我仍然没有对编程有足够的兴趣,主要可能是觉得不好玩,不如与同学打牌下棋好玩。 [笑哭]但是:Fortran的一种最大的用途,应该是培养了我的编程基础,逻辑基础,并让我明白:计算机编程对我来说,是小Case。
  4. 我们当年的计算机,绝大多数是没有“硬盘”的,只有5寸的似乎是360KB的软盘,每台电脑2个软驱,A、B驱。我们编程调试时,就是几张软盘,两个驱动器换来换去......
  5. 后来,出现了一种3寸的更小的软盘,大小达到了1.44MB,就比360KB的软盘好用多了,可靠性也高多了......
  6. 某一天,在机房,有一个计算机“老手”(他家里条件在当年应该是非常非常好的那种,后来知道他在中学时就玩电脑了,因为他家里就有一台电脑!),“发现”了有些电脑有C盘! 居然有些电脑不只是有A盘、B盘,还有C盘!!! 而C盘我们看不到,是在电脑里边安装着的,叫作“硬盘”! 那个型号的电脑似乎还有个专门的名字,不叫PC机?叫XT机?具体名字我忘了,欢迎还记得的老码农来补充 [谢谢]
  7. "发现C盘"的那一天,我印象特别深,一是了解到有的同学居然在中学时,就见过电脑玩过电脑了,另外,电脑居然还有C盘,有的C盘里似乎还有游戏 ......
  8. 我真正对编程开始感兴趣应该是在大三后或大四初?当时了解到有一门语言挺热门的,叫“True Basic”,其实,是否热门不重要,重要的是这种语言能画图!而我们当时学的Fortran,是画不了图的。由于它能画图,并且当时似乎是计算机的人才比较缺,物理系鼓励我们多学计算机,给了我们一些免费的“机时”,可以去机房上机,自学编程...... 然后,我在基本学会了True Basic后,就用True Basic开发了一个当时比较流行的游戏:俄罗斯方块。我记不得我花了多少机时了,反正当时非常有兴趣,并且最最关键的是,这个游戏我完全独立的把它开发成功了。有同学COPY过去,在机房玩得不亦乐乎。记得某次,有老师来机房,看到了有同学在玩我编的俄罗斯方块游戏,问这游戏从哪来的?同学介绍说是我编的,老师似乎有点不大敢相信,此处必须有:[鼓掌] [呲牙]
  9. 此游戏的成功,让我对编程兴趣大增,也“展示了我的编程实力”。同学们大约也都认为我的编程实力算是在我们这些非科班学生中比较强的了。
  10. 我们当年大学毕业是包分配的。到大四时,由于我们物理系,特别是“物理学专业”,分配有点困难,系里新建立了一个专业,似乎叫“应用物理专业”。这个专业,最重要的是会加学几门计算机课程,并且似乎应该会有更多的机时可以使用,练习编程 ... 然后,这样就方便找工作,好就业 ..... 但是,由于电脑数量有限,这个小专业只能有8个名额。而包括我在内的我们报名的人远超了8个,于是抽签 ..... 抽签结果,我这个似乎是半公认的编程能力最强的 ...... 没抽上。[流泪] 所以,再一次错过了“科班”的机会。
  11. 我们当年除了俄罗斯方块游戏外,另外大家经常玩的一个游戏是“打坦克"游戏,是两人玩的游戏机,连接到电视机上,跑题的话题就不多说了 ..... 估计80后可能也见过?
  12. 我成功完成俄罗斯方块游戏的开发后,下一个目标是把打坦克游戏编出来,但是可能由于这个工作量太大同时我没有足够的上机时间可以使用,直到毕业,并没有能开发成功。
  13. 应该也是在大四,当时开始流行C语言,我记得应该是叫Turbo C2.0。C语言也可以画图,并且运行速度效率比Basic似乎是高得多,于是我放弃了True Basic,改学C。然后这一辈子,估计有50%的时间都是在与各种C语言打交道了。
  14. 本科毕业后,当年的毕业分配制度是“双向选择”,我从小的理想就是搞科研,当“科学家”,当时有一个研究所来我们物理系招生,待遇也还很不错,我很愿意去啊,于是就被 分配到了这个研究所。 然后,我再也不用担心没有电脑用了!因为我们组里虽然有十来个人,只有一台电脑(286),但那电脑几乎没人用,因为他们最多只是闲时拿它来玩玩“挖地雷”的游戏。而我,几乎就有了一台专用电脑!并且几乎是当时最先进的电脑,比在学校里的电脑性能强多了(有C盘[呲牙])。
  15. 由于有了“专用电脑”,我的码农时代基本算正式开始了。也就是本科毕业就开始了,直到如今。
  16. 由于我们组里当时基本上只有我会用电脑编程,写软件。而我当时从事的项目是“数码相机”开发。请注意,这是在1994~1995年。当时的主流相机是胶片相机,还没有民用的“数码相机”。而我们这个项目组,相当的不差钱,我们买到了一些非常非常贵的进口的固态成像芯片(类似后来的CCD与现在的CIS),我们要用这个芯片来开发相机,输出数字图像并保存起来,并在电脑上显示。整个这一套我们叫“图像采集、处理与显示系统“。原本这个项目还需要研究所其他的同事来协作完成的,但组里来了我这个意外的“天才码农”,图像处理、显示等所有相关的软件,完全不需要其他研究室来协助了,我就可以搞定了。然后,要开发“数码相机”,当时有了比较“先进"的可编程逻辑器件Pal/Gal?我又补习数字电路相关知识,学习了相关的编程语言,帮师傅在相机电路上使用上了可编程的逻辑器件,大大精简了电路规模......
  17. 当年,出现了最早期的FPGA,是Xilinx公司出的,这种大规模的可编程数字器件。前面说了,我们项目组不差钱。似乎是花了1万美元买了Xilinx公司的开发软件,然后买了好多我记得是3020与4003这两种型号的FPGA,用来研发我们的特种相机。而由于我在计算机方面的“天赋”,这些固件的开发任务又落在了我的身上,同时还有电路设计 ...... 我估计,我可能是国内极少数在1995年就开始使用Xilinx FPGA的人之一。最关键的是,我现在仍然在使用,仍然在用VHDL写FPGA代码,我怀疑类似我这样的,全国范围内会不会超过100人?[捂脸] 但是,当年我开发FPGA,不是用的VHDL,是用的逻辑图。我用VHDL写FPGA代码,大约是在2003年以后了。
  18. 然后,工作单位有几次变更,但都没有脱离代码一线。后来Turbo C升级到了C++与C#。FPGA编程从逻辑图升级到了VHDL,偶尔也用Verilog,但不太熟。另外,也开发单片机,也主要是用C语言。另外,有一段时间,为了提高图像处理的速度,把同事用C++写的程序中部分代码改成使用汇编语言,这样就大大提高了图像处理的速度。
  19. 工作中,为了读懂某项目的示例代码,也粗略了解了一下Python语言,虽然它现在是最流行的语言,我也想活到老学到老,但目前对我的项目来说,C#就够用了,全转成Python没有必要,所以我不准备转Python了。当需要用时,能看懂Python的基本程序目前对我就够用了。
  20. 目前,自己创业了,在做图像传感器与相机性能测试设备。其中的核心是算法与软件,绝大多数代码基本是由我亲自用C#搞定的;图像处理器评估板开发,需要用FPGA,VHDL代码也基本全是我自己搞定;除此以外,电路板设计、设备的结构设计 ...... 在创业初期,也基本上全是我亲自搞定。
  21. 调试程序,遇到难解决的Bug,确实相当的头痛,可能因为我本身也非科班出身,计算机专业知识掌握的并不全面,在软件技术软件平台飞速发展的过程中,我也没有机会去学习完整的相关的知识体系,只是工作中需要什么,就学什么,所以有时可能会走不少弯路。但是,一旦问题解决了,还是无比开心的 [呲牙] 码农的快乐。

50+的现役老码农,我感觉还是有一些的,我感觉国外可能更多些。我自己的目标,只要身体情况允许,工作中也需要的话,希望能继续努力到60+吧。[加油][加油]

年过半百的老农民,二十年老码农