我发现组织里有很多写了十年代码的工程师。作为一个写了五年代码的码农,想知道写十年代码是一种怎样的体验?写了20多年代码的软件工程师马健,你能回答吗?0:小学设备:红白游戏机Laser-310语言:BASIC语言##在红白机上写BASIC##我最早的编程是在红白游戏机上,我不是写FC游戏,我不是那个老:)。小学的时候买了一台红白相间的游戏机,是机电系四十六所研制的。可配键盘,可当电脑使用。不记得当时在这个玩具上花了多少时间,主要是用BASIC写各种小程序。那时候这个东西没有光驱,需要用录音机录节目,(没错,就是录音机)。下次开机就可以用磁带加载了:)我在网上找了一张这个游戏机和键盘的照片(【私人博物馆】游戏机第01章:黑科技国产红白机年份):游戏机键盘(我那个时候是黑色的):连接录音机的接口:记得当时写的程序是:通讯录,输入首字母,查电话数字。输入了爸爸的所有通讯录。随机生成音符,命名为湖边之松,用ascii字符打印动画,用_-^等字符打印快速移动的虫子。...当时我的辅导书是从图书馆借来谭浩强的《Basic语言结构化编程》。借用图片:##Laser-310##还有一点要说的是小学有电脑课,用的是Laser-310。上了几节课就暂停了,但还是经常向老师要弹奏的琴键。Basic语言主要用在Laser-310上。其他同学不爱玩,都围在旁边的语文学习机旁边,因为可以玩游戏(挖金)。1:中学时设备:PC/AT,286语言:DBASE3FoxBASE+##帮老爸修bug##中学时经常去老爸单位玩电脑。当时的操作系统是DOS,办公软件是WPS、CCED(你可以理解为国内的EXCELonDOS),这些都不是写代码的,暂时不提。当时的数据库软件主要是DBASE3,后来升级为FoxBASE+。都是交互式的数据库管理软件,类似于后来的MicrosoftAccess。写代码的过程主要是学习和继续使用FoxBASE+来完善我的通讯录程序(为什么我想不出其他好玩的东西。。。)。值得一提的是,我父亲单位的报表打印程序有一个bug,打印错了。我帮忙修好了。2:大学里的设备:奔腾处理器PC语言:C语言/C++语言/HTML/XML/VRML##一个绘图程序造成的悲剧##1997年去大学宿舍,6个人联手买了一台电脑,CPU:Pentiummmx166Mhz,内存:16M,硬盘:2.1G。当时6个人一起去救电脑,花了7000,打车回来的时候跟司机说,“慢点开,我们买的电脑,别弄坏了”……囧6个人平均分配上机时间,每人一天。我写了一个简单的VisualBasic程序,每天弹出的时候电脑上应该有谁。我来到大学学习C语言,使用TurboC:有一天,我刚用C写了一个很酷的图形程序,我兴奋地跑回宿舍,对同学说:“来吧,让我给你看我的program》,边说边把3.5寸盘插入电脑运行~~。同学们都挤过去看,然后,就没有了,黑屏,机器启动不了。拿去维修部说是显卡烧了(我还是不明白为什么我的程序会烧显卡)。后果很严重。修电脑用了一个星期,所以我要偿还其他受我影响的同学的电脑时间。接下来的一个月,宿舍的电脑都不能用了:(##BBS用户跟踪系统##从大二开始接触GNU/Linux,开始用GCC编译C代码,开始用VI写代码,没想到17年过去了,我还在用这些很棒的工具,还记得第一次打开VI,不知道怎么退出,只能用CTRL+Z退出到后台,然后杀掉。那时候BBS在学校流行,宿舍还没有联网,上BBS需要去图书馆的机房。那时候,BBS用的是TELNET协议,现在新水木还是支持TELNET协议的,界面是这样的:可以在BBS发文章,看文章,最重要的是可以找人聊天:P。我猜你没用过BBS的聊天室功能,你不知道//bearhug,//puke是什么意思。#p#那时候真的很喜欢一个班smate我和我的网友mm聊天,但是因为电脑时间不同,所以不能经常在BBS上见到她。我用C写了一个机器人程序,登录bbs,每分钟查看她的在线状态。如果她在线,将她的IP地址发送到我的摩托罗拉BP机器。她当然不在线,还得给BB机发信息,免得我去图书馆她已经走了。a)为什么要发送IP地址?这样,我可以看到她在哪里上网,图书馆或计算中心,所以我可以碰到她:Pb)为什么发送到BP机器而不是SMS?那时候还没有手机:(不仅我没有,大家都没有,我买不起模拟信号的手机,BP机是最方便的通讯工具,偷个picture:c)为什么用C来写而不是其他的脚本语言?首先,我当时最熟悉的是C语言,其次,Python还没有普及。2000年发布了Python2.0,当时Perl语言比较流行,可惜没有花时间学好。d)程序在哪台机器上运行?宿舍的机器不能上网,当然不行。答案是数学学院的一位老师,人很好,组织了一个Linux俱乐部。我们有一个共享的Linux主机,我们可以在telnet上编写程序。e)如何将程序发送到BB机?这个问题问得好。当时各地的电话总机(当时还不叫联通移动)都会在他们的网站上提供给BB机发消息的功能。我只是找到了一些有用的并发送了一些HTTP请求。故事还没有结束。我写的跟踪程序不是只跟踪一个人,而是站点上的每个人都在跟踪,并且保存数据。当时觉得不应该只自己用,就自己写了一个webservice。大家可以查看任何人BBS的时间,还可以看到柱状图,总结了网友BBS的规律。BBS站长看到我的服务很受欢迎,就联系我说,不要用机器人爬bbs数据,把这个功能加到BBS系统上就行了。我很高兴。花了一个晚上,去了计算中心BBS负责人的办公室,当着他的面改了程序。第二天早上,我发现不对劲。所有登录BBS的用户ID都变成了大写字母。这都是因为我程序中的一个错误——为了比较字符串,我将一个全局用户ID变量更改为大写字母。.好在站长足智多谋,及时找到了备份,恢复了数据。*更新于2015年9月6日凌晨*感谢大家的支持,我会继续写的。回答几个朋友的问题:有秃头吗?我的头发变稀疏了,但还没有秃顶。是基因问题,我有几个同学已经秃顶了,感觉比我大10岁。..你在干什么?我加入了一家做安卓相关的初创公司。我现在还在写代码,写Java、C/C++、Python。之前没有前端工程师的时候,也是写PHP/Javascript/CSS。网友mm怎么了?我发现每个人都喜欢八卦。后来和mm相处的很好,经常见面聊天,一起去肯德基吃冰淇淋。那是一段非常快乐的时光。是好朋友,***没走到一起。有没有人是我从小的编程世家?不会,我爸妈都是工人,没有电脑基础。纯粹是因为我喜欢玩电子游戏,想了解电子游戏的工作原理。那时候玩的东西不多,可编程的游戏机让我鼓捣了一整个夏天。是数学系的吗?好吧,我的本科学位是在数学系,我的研究生学位是计算机科学。##“不喜欢”##看来大家都喜欢八卦,那我就多写点吧。但是我会关注围绕原题的“写代码的经验”。说回大一那年,刚上大学,开始追高中暗恋的女生,打电话送礼物都忘了。我给她打印排版了我最喜欢的网络小说《***次的亲密接触》,学会了Photoshop,用PS把照片做成卡片发给她。大一暑假,我把宿舍的电脑搬回家,用VB写了一个小程序。邀请一个女孩来家里玩,让她试试写好的程序。一开始是一些很酷的动画,然后是一些选择题,最后一题是“对了,我喜欢你,你喜欢我吗?”下面有两个按钮,“喜欢”,“不喜欢”。女孩见状,顿了顿,点了“不喜欢”。鼠标一过去,按钮就跑了,她追了好几次也没追上。在这一点上,我在想,“放弃吧,按下另一个按钮。”没想到她却说:“我不想再选择了,我走了。”这件事教会了我,“做软件的时候,不要强迫用户接受你的设计。”##刷榜##从大二开始,一些门户网站开始变多,在线用户也变多了。有一个门户网站推出了一个在线交友网站,就是一个很粗糙的facebookbar,可以上传照片和写简介。每个用户的个人资料页面都有一个访问计数器。首页默认按访问量排序。当时的网站很基础,没有验证码,做排名很容易。我写了一个C程序,打上了***的烙印,给自己发了一张布拉德皮特的照片,引来不少女网友搭讪。我室友看到了,问我你干嘛的,也帮我擦掉了。结果,排行榜的前几名是我们宿舍的。不告诉你,我居然认识了一个外语学院的女网友,她跟我说他们外学院的男生太少了。##做中国的HOTMAIL##大三的时候,.com生意红火。有一对回国创业的海归。据说他们是学校老师的孩子。他们通过人脉找到学院的老师,要求推荐一些学生帮忙。老师推荐了我们Linux俱乐部的4个朋友。(值得一提的是,老板之前在美国的一家公司工作,另外两个同事也和他一样回国创业,一个是艺龙,一个是易堂。)第一次见到老板和他的妻子,他们告诉我们,“我们要成为中国的Hotmail!”我们听了很兴奋,决定加入。根据BBSID的首字母,四人也将自己命名为BRAD组。CTO从美国回来,我当时很崇拜他(现在也很崇拜他)。他在清华大学毕业前赴美留学,在美国期间建立了http://bbs.mit.edu。他设计了整个Webmail系统的架构。说到架构可以提一下,不感兴趣的可以跳过这一段。FreeBSD系统,前端使用C编写FastCGI+Apache,后端使用C编写RPC服务器,文件系统用于存储。选择FreeBSD是因为当时Linux的性能不是很强,选择C开发是因为性能好,省服务器就是省钱。用C开发WebMail是不是很不可思议?那时候的硬件性能还不如现在,价格也很高。所以当时我面临一个难题:C语言很容易因为内存错误而崩溃,而FastCGI会要求服务进程一直运行,这对代码的可靠性和稳定性要求很高,因为一旦出错,整个服务都会挂掉。他当时极力向我们推荐了Emacs,并且把我现在掌握的为数不多的Emacs知识都教给了我。可惜在敲Emacs命令的时候看到了他爪子一样的手,所以我决定坚守vim阵营。还有一个让我印象最深的,和写代码一点关系都没有。他特别喜欢在大家吃饭的时候讲黄色笑话,以至于有一段时间,我学得很烂,到处讲黄色笑话。有兴趣的可以百度下载“咬个不停的笑话”,就知道他说的有多恶心了。还在上课的时候,我们每天中午下课就聚集在团委活动室,点了西南村的外卖。我整个下午都在写代码。因为写代码,我逃过好几节政治课,不幸的是,我被点名了,成为我大学期间唯一挂科的一门课。寒假期间,四个小伙伴都没回家,所以10点起床,直接打车去公司,写代码一直到晚上12点。打车回学校睡觉。至此,我可以徒手使用telnet命令向smtp服务器或pop3服务器收发邮件。我对电子邮件协议记得太深了。我还记得我在代码里藏了一个彩蛋,当我在邮件中搜索一些特殊字符时,会出现一个员工列表。后来被一个新朋友删除了。这样4个小弟一个师兄,半年内服务上线,4台服务器支持30w用户。现在回想起来,虽然那时我们还是学生和实习生,但我们所做的和现在所做的完全一样,甚至更纯粹。我认为做有趣的事情就足够了。钱多还是少都没关系。从来没想过股票期权。公司怎么了?2000年,互联网泡沫破裂。公司迅速过渡到商业和校园邮件服务。我最近惊讶地发现这家公司仍然存在。<未完待续>白乔,资深情感码农,70后博士,以后有时间再补充文字:)1995年,我第一次接触计算机编程。当然,我的专业是机械制造。ForTran~~~依稀记得第一节课前一天晚上在床上练指法,对着一张键盘图。看。..讲解FORTRAN的是一位漂亮又香喷喷的老师,但是FORTRAN的课程真的让我很反感。..如果要问当时的经历,恐怕是“无聊”和“恐惧”吧?想想那些“default”、“Enter”和“console”,难怪你不会被吓倒!editor.exe是当时最帅的编辑器(我以前一直在用的一个http://ed.com程序):1996年花钱参加了一次C语言培训,从此发现了一个全新的世界!C语言真酷!关键是C语言还能检测pressanykey,settextcolor,甚至initgraph~~~我对交互的东西比较感兴趣。起初,我模仿各种书籍中的代码,尝试实现文本编辑计算机的一些功能(菜单、编辑、访问、光标),然后直接向图形编程低头,开始熟悉鼠标编程、中文编程、和定时器编程。你能体验一下鼠标箭头光标出现在DOS窗口中的乐趣吗??你感受到大中华汉字出现在DOS窗口中的喜悦了吗??你能体验一下在DOS窗口中拖十字画图的乐趣吗(没错!我是模仿AutoCAD的,因为我是机械专业的)??那时,我已经是系里计算机编程比赛的积极分子了。有一次让我在部门办公室用一台386(打印用)调试程序。那天晚上,我直接拉着同学Y一起编程通宵。...1997年接触面向对象编程的时候,我当时给自己定了一个任务,就是把原来实现的那一堆GUI组件封装成自己的Window、Text、Menu。..因此,我熟悉了OOP和BoralandC++:1998年毕业设计用foxpro,然后转c程序:#p#1999年开始用vc5.0,然后一直用vc和mfc多年:开始接触Web编程,除了vbscript和flash,还发现了asp和interdev:2001年参加工作,开始接触java和jsp。那时候还没有MVC框架,所以自己开发了很多类似的框架:刚开始工作的那几年,真的很开心,没事就去逛水木BBS、Mess、CSDN.2005年前后,我发现Java也有IDE。当然,得到spring、jQuery之类的东西是必然的。2014年从spark转scala:我要声明我是一个感性的程序员,所以总觉得有些怀旧。经常想起DOS时代:我们用KV杀毒:更多的是:我依稀记得UCDOS:老WPS(我不会告诉你我知道***密码是^QIUBOJUN)当然:嗨!看帖子的人说你!看到古时候看像素粗的H图的前辈,怎能不喜欢呢?!这个Ispan,Godbewithu...晚上写完代码,看着躺在床上的老婆孩子。心想:写吧,我还怎么办,除了堆几个代码,我还有什么本事?说说MiloYip,游戏程序员,?翻译。这样,我的前十年大致是从1986年(小三)到1995年(高二)。前两年大概学了一些最基础的计算机知识,BBCMicro的Basic。接下来的两年是自学AppleII,包括ApplesoftBasic和6502组装。然后用PC的DOS,GWBASIC一年。然后在第五年开始自学C语言、x86汇编和计算机图形学,写了简单的3D建模软件。第7年,开始参与商业游戏开发,学习游戏引擎和工具的开发,开始学习C++。9到10年,我作为开发游戏的主程序,也开始看一些计算机图形学方面的大学教材。估计在那10年里,我每年可以看10-20本简单的计算机书籍。前期多去图书馆,后期攒下不少零用钱买书。我儿子(今年大二)还没有开始这种体验,不过他玩的游戏比我以前多了很多,唉。----饭后补课,问题问的是经验。小时候的我就很不一样了,学业积累不是很好,但是还过得去。在这样的环境下,可以说是比较自由,可以花更多的时间去学自己喜欢的东西。做这些事情有时会与家人和老师发生冲突。尤其是高中毕业,到公司一直到11点才回家,还和家人吵了几次架。至于学校,我会代表学校参加一些编程比赛,不是OI那种,而是做教育相关的软件。一开始,3D建模软件也是参赛作品。因为有这些经历,学校比较开放。比赛前几周,我经常上课睡觉,课后写代码调试,有时在学校机房熬夜。我试过几次从校门回家。回家后继续。小时候就已经经历过程序员加班这样的日子,但是全职工作的时候就更少了。编程真的和其他学科不一样。自学喜欢可以进步很快,高中计算机科目秒杀。那时候我们高中有计算机专业,是联考科目,所以我们在学习上省了一门课,很容易得A。因为我会编程,有一次被父母介绍去做一些无聊的事情,比如帮一些公司写dBase程序(不是SQL数据库),我也用Director当教学软件。可能比较无聊的是给别人打字排版(虽然我后来被培训对排版有一定的要求)。还好那十年没有互联网,不然我都浪费很多时间做网页了(后来自己开了个公司,大学的时候就做了。。。)。说起网络,在没有网络的日子里,主要是看书。另一种学习方法是上BBS(用调制解调器打本地电话连接到别人的BBS),在那里你可以找到一些零碎的文档和源代码。我记得当时读过JohnCarmack的早期文件。小时候很容易吸收各种知识。但是那时候确实有些时间是浪费了,学了一些现在看来没什么用的东西,比如DOS的各种内存技术(XMS/EMS),TSR编程等等。那十年的编程生涯,算是很幸福的日子了。青少年很疯狂,他们想写什么就写什么。现在我会更加保守和谨慎,可能是学了太多的规则,太多的实际约束(比如跨平台和跨编译器),太多自己的要求(比如性能),我害怕写一些低级错误。开源哥未完待续,退修知乎10岁:MCU汇编12岁:VB15岁:C/C++18岁:Lisp20岁:类型论(有什么不对的)忘记说经验了。..体验是脖子痛。..痛得睡不着QwQ
