资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
本文格式为Word版,下载可任意编辑程序员7年和我的7点感想 程序员7年和我的7点感想 我的程序人生 我是1986年第一次接触计算机的,当时刚上大学,用的是VAX11-780小型机运行Basic程序,一个学期下来,算是学点皮毛。1989年,在大学因微机原理课补考,反而专心学习了一下计算机的学识(第一次考试前都没有看过书,虽然开卷考试也没有pass,不过在考场上现场发挥,将最多分的一道题完整拿下,其它的根本就完全放弃,当然结果就。)。后来由于使用计算机绘制线路板,逐步学习了一些DOS学识和常用软件,并在此后一年多的时间学会了C、BASIC、PASCAL等语言。 大学毕业设计的时候,我分到一个软件设计的题目,是用BASIC语言实现DES加密算法。当时记得分外领会,为了凑过论文要求的40多页,我把程序打印了30多页,DES加密的各种算法表打印了6页,实际真正论文只有可怜的4页纸,结果终究交差。好在程序功能完整,还实现了当时对比新的下拉式菜单操作,评分老师俨然给论文的评语是“言简意赅”,真是喜出望外,还由于这个论文得了唯一的一次奖学金。 自从大学后三、四年纪接触计算机以后,我也象当时大多数学生一样,经常赖在机房蹭机上,虽说有点赖皮,但也学到不少编程学识,当时已经将PC机上的各种编译器尽数收录,在这个过程中,也越来越热爱编程,觉得很有兴趣。 毕业后第一份工作虽然和程序设计没什么关系,但也对比专心的学习了一些计算机的理论学识。工作两年后,和象当时的好多人一样来到广东工作,主要从事软件开发工作,先后也换过两个单位,都是从事一些根本的开发工作,在这个过程中,对编程也有了更进一步的熟悉,根本上也能够纯熟的利用C语言举行开发。 由于将近两年的长期开发,疲乏的我后来换了一份计算机系统维护的工作,这一做就是三年。在这三年中,由于维护工作本身工作量不是很大,我总结自己毕业以来的开发阅历,业余编写了一些通用的开发模块,包括数据库接口到各种常用的公共模块,根本上还可以算是一个简朴而完整的开发包。 所幸当时已经意识到好多编程技巧并养成了对比良好的编程风格,其中的模块虽然全部是在DOS下完成,但后来移植到Win32和Linux系统的时候俨然也只是简朴的调整了一些include文件就根本上编译通过,当时切实得意了一会儿。 在这一时期,由于斟酌编程的事情对比多,也阅读了不少资料,所以我也对当时国内的软件开发环境有了一个自认为对比清楚的熟悉,这个结论就是软件开发是一个有光明没前途的工作,所以后来换工作的一个先决条件就是不从事编码工作。 终止了三年的维护工作,我来到广州,找了一份技术支持的工作,这个工作虽然比编程轻松,但自己也逐步陷入对前途的迷茫之中。这段时间我从事过技术支持、售后服务、售前支持、系统集成、综合布线等各方面的工作,但始终没有体会到以前编程时那样信仰十足的感觉。这段时期大约又是三年,这三年也是我的心情起落最大的一段时间。一方面觉得各种尝试都无功而返,内心分外郁闷;另一方面心里也始终对编程工作有一种恋恋不舍的感觉,总觉得理应做点什么。 由于在这个时期接触的用户范围对比广,也见识了不少令用户和开发商头疼的工程,使我对政府机构和各种企业的IT使用处境和存在的问题有了对比深刻的了解。我觉得虽然IT技术进展飞速,但说到概括的实际应用,一个简朴的开发甚至简朴的需求变更,对用户和开发商来说都挺不轻易,用好系统就更加不轻易,真是象片面用户说的那样,“电脑成了电烦扰”。我结合自己的开发体验,萌生了开发一个简易的企业应用开发平台的想法。 这段时间我在广州也换过不少住的地方,后来根本固定住在天河棠下,大约是2022年底或2022年初的时候,有一天我在小区门口的地摊上乱翻,看到了几本程序员杂志,当时随意翻了翻,觉得内容不错,就全买了下来。其中的一篇文章给我的印象分外深刻,概括内容不记得啦,只记得说过一句话,大意是“不管什么开发语言,所实现的功能虽然在编程方法方面有所不同,但实际上底层的数据交互原理和设计思想完全是相通的”。当时对这句话深有同感,后来又特意找程序员以前各期来看,觉得大量文章的技术水平都对比高。虽然其中也有一些为厂商吹牛的文章,但相比其它的杂志,文章内容切实丰富的多,也实用的多,更难得的是技术含量挺高。对比适合有确定开发阅历的人员开拓思路,提高技术层次。 在之后的几年,我都从小区的书报亭添置程序员杂志,同时也在工作之余坚持开发我心目中的企业应用开发平台MCIS中间件系统。由于以前开发的程序模块好多,在完成了socket通讯、socket线程、http协议处理等几个主要模块后,这个软件已经根本开发完成。主要开发工作根本在不到一年的时间内就全部完成。 按原先的筹划,MCIS中间件软件的主要目的是屏蔽概括技术细节,让对计算机有确定根基,了解SQL语句和html文件的人能够从事基于数据库的应用开发。并根据数据库表的定义生产根本的数据增删改查的功能,将基于数据库的应用开发转换为SQL语句的开发。对单表和根本主从表那么根本不需要任何编码工作,直接生成应用,实现其所需要的业务功能;对繁杂数据表之间的关联处理,也仅仅需要编写一些SQL语句或存储过程;至于程序界面的美化,那么主要利用html模版文件实现。后来又增加了WebService支持和Cache支持,可以将某个业务规律封装为一个WebService来举行发布,或调用其它WebService服务器的功能;还可以自动识别数据的变化处境,大大裁减大量用户并发访问时对数据库的访问频率。 在这一阶段,我从程序员杂志上学习到不少学识和思想,也觉得好多文章中所涉及的观点、方法分外有道理,对这本杂志越来越热爱,后来也从经常添置到每期必买,到结果自己订阅,去年底我就一次订阅了三年的杂志。 可能是有些自负的因素吧,我往往觉得程序员杂志上的好多观点和我不谋而合。我一般热爱看的是人物介绍、产品的底层实现方法等文章;对其它的新名词倒不是很感兴趣;最不热爱的栏目反而是几个人不断的在说各家产品的有什么新技术、新趋势的文章。 在接触程序员杂志的这七年,也是我从迷茫走向成熟的七年,至少我能明白我现在在做什么,也能够承受因此而引起的后果,不管是苦还是甜。 这几年来,我也发生了很大的变化,各种生活也逐步定型,虽然开发不是一个很好的工作,但对我个人来说,技术(更加是开发)依旧是能最发挥我的特点的一个职业。随着年龄的增长,我也能坦然采纳自己对这个工作的爱好,并感受到其中的一点乐趣。 粗粗算来,已经工作快十八年了,接触计算机也有二十年的时间,其中用于编程的时间约莫也有十年,在这里将我的几点体会和大家共享一下。假设您是一个程序员、或者计划做一个程序员,或者计划开一个公司从事软件开发方面的工作,梦想这些观点能够对您有所扶助。哈哈,假设要拍板砖,估计也砸不到我脑袋上。 1、开发规模问题 对于目前业内的一些观点,我并不认同。例如在各种报刊杂志上,经常有专家教授唠唠叨叨在说现在的软件开发已经进入工业化时代,要多少多少人团队开发,才能如何如何。 但是,基于国内的实际处境,其实大量1000万元以下的工程完全是几个人的小团队开发模式,即使大到规模上市的软件公司,概括到每个定制开发的工程,实际工程组的开发人员,也经常只有不到十个人的规模,三、五个人的处境更是多如牛毛。 再看看国际上,我们所使用的一些出名的产品,如unix系统、C语言、notes系统、java语言、甚至最早的windows、dos好多都是几个人的小组所完成的开发。 至于这些产品的推广完善,所需要的巨大人力资源和开发之初的人力投入完全是两回事。在开发阶段,人多不确定就是好事,甚至断定要坏事。 这就像生小孩一样,只要一男一女两个人就完全足够啦,其它的人只有干瞪眼的份。但是,将这个孩子养大成人,除了他的父母,整个家庭、学校、社会等其它各色人等也直接或间接付出了好多。但这个孩子依旧只是他父母开发出来的,其它人只是起一个推波助澜的作用。 2、技术与思想问题 综合分析目前国内的软件开发方法(甚至包括其它IT技术),不难察觉,我们总是热衷于技术,而不提防标准。从Basic、C、C+、一向到java、C#等语言,再到.Net、J2EE等架构,多少技术在我们眼前晃来晃去,有些人也以掌管这些技术为目的,甚至洋洋得意。 其实,冷静下来分析一下其中的核心技术内容,现在的Web开发和早期的CGI方式的Web开发,只有方法上的不同,没有实质上的识别,所遵循的数据标准也没有任何变化。 全日只沉迷于片面的技术,使我们离核心技术越来越远,根本谈不上什么创造性。现在国内好多电子政务的工程在投标时均要求务必基于J2EE或.Net技术,完全拒绝LAMP和其它技术,估计好多美国公司老板做梦都要笑出声来。 重要的是思想而不是工具,就象毛泽东击败蒋介石是依靠思想而不是武器一样,技术并不起抉择作用。 3、技术沉淀的重要性 由于不提防核心技术(其实那怕是一个小小的strcpy都是核心技术的一片面),好多公司没有任何技术积累,也没有可重复使用的底层开发库,更谈不上编程方法和思想上的积累。 由于工作的关系,我曾经接触过不少工程,这些工程都是号称采用了何等先进的技术云云,但实际上好多工程即使一个简朴的按钮修改都需要在每个JSP文件中逐个修改。看了这样的代码,你真的不能不相信,语言是一个工程中最不重要的技术。 4、面向对象的是与非 我始终认为翻译“面向对象”的那个人是一个典型的老光棍,全日想着找对象,所以就想当然的这么翻译,其实我觉得“面向对象”理应是“面向目的”才对。所谓面向目的,说白了就是黑猫白猫的一句话。 其实“面向目的”(而不是“面向对象”)更多的是一种思想,而不是一个所谓的编程方法。所谓的抽象,纵然有其必要性,但四处都是对象的说法,往往只是一些外行说出的内行话。难怪Torvalds对C+批的一无是处。 真正的“面向目的”,就是对一个工程的各个片面采用最适合的方法以达成目的。 5、大道至简 我越来越相信“大道至简”这个哲学观点,从设计产品、系统分析、模块划分,一向到做饭洗菜、吃饭睡觉,甚至到人际交往,这个道理都是相通的。从程序的角度也是如此,一段好的代码大多都是一个干脆的代码。 就像做人一样,简朴做人,自己不辛苦,别人也不辛苦。同样一种开发语言、一种技术、一种开发工具、一种框架平台也是如此。 我个人认为C语言几十年不倒的主要理由,主要就是由于其布局简朴,扩展便当。n年前玩音响的时候,好多发烧友也一致认为,在价格相当的处境下,一个旋钮最少的音响根本上就 是最好的音响,也是同样的道理。 6、责任心和细节 其实大家都知道这一点,但是实际操作起来往往又根本不在乎。做工程需求时,有些人往往只是考虑实现客户要求的功能,而不是从客户要求的内容去斟酌和分析,甚至由于工作量的关系,有意避开一些问题。但是这些问题依旧存在,结果依旧会逐步暴露出来,反而自讨苦吃。 其实,对客户而言,能有更好更完善的方案一般都会情愿采纳,假设能本着对客户负责的精神,客户才能真正信任你;你和客户谈起价格时也才能有理有据。 好多时候只要负起责任,就会有助于察觉全体的问题,并提出一个合理的解决方法,留神到每一个细小的问题。其实大到卫星上天,小到刷锅洗碗,最根本的关键不是什么技术,而是在高度责任心的根基上对细节的把握。 我曾经在跳蚤市场买过一个七十年头的收音机,是春雷703,一个很古老的上海牌子,其信噪比和灵敏度比现在的集成电路的高出好多,理由无它,每一件细小的功能都做到最好而已。其实看一个程序员只要看他对程序跳格的处理,就可以抉择90的处境。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号