`
bruce198
  • 浏览: 235020 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

(转)一个普通IT人的十年回顾 续

阅读更多

反观我们国内的大量教材,还有大量的垃圾论文(包括硕士,博士的,本科的就算了,我
看绝大部分根本不能称之为论文),全都是“浅入深出”,作者自己都未必明白,就东拼
西凑,摆出个样子吓人。本来完全可以用大白话三言两语讲清楚让人明白的道理,有人专
门要绕一大圈,专挑用高深的数学公式来表达,唯恐别人容易理解,显得他水平不高!呵
呵,什么东西一沾上“数学”,立马身价百倍。我就听过一个北师大的一个在读博士说过:
如果一篇博士论文中没有一个数学公式,根本就不算是博士论文。这句话对不对,大家可
以多思索。我数学不好,没资格讨论数学,我的直觉:数学是工具,但如果为了发表论文
等目的而故弄玄虚,为数学而数学,是不合道理的。中国的学术水平与现状,大家都心知
肚明,不用我废话了。

现在每年都毕业大批的计算机专业学生,可其中真正具备扎实根基的可以很快胜任工作的
我看只有5%(95%的学生不要扁我,不同意就当我在说胡话,我很瘦的,一扁就没了?)。
多年以来,我国高校计算机教育是按照计算机科学研究者来培养的,可事实上,有多少学
生能从事计算机方面研究的能力?我看应分流,80%的学生按工程师方向来培养,20%的学
生按研究者方向来培养,而且应大幅减少必修课的数量,计算机领域太深太广,样样都想
教给学生,反而成了夹生饭,一个想从事硬件设计的学生和一个想从事软件开发的学生,
能给他们一样的饭吃吗?学校应提供各种条件和资源去引导学生,激发学生的创造性与主
动探索性,让他们去尝试,去发现自己的长处,最终找到最适合自己的发展方向。不这样
做,中国软件后继乏人,没希望。

5.实践第一

2002年下半年,我和一个朋友去了北京郊区的一家杂志社,看到的情形让我震惊:在信息
产业最发达的北京,这家杂志社还用人工查对杂志订单和款单,看着那按省来登记的几大
本厚厚的客户登记本,工作人员需要手工来在其中查找相应的信息。这样的工作效率,这
样的行业信息化水平!北京如此,全国又如何?

从这件事上,我看到了中国软件业的另一方面。一方面我们没有核心技术,另一方面,已
有的技术又根本没推广没用好。追踪世界先进水平,对于我等这种水平的人来说,确实勉
为其难,但将已有的技术用于解决实际问题,却是我们可以做的。如果中国各行各业都真
正能通过进行信息化而提高生产效益,那中国不就从根本上强大起来了吗(象印度,it一
枝独秀,其他行业没有起色,我称之为跛足的国家,绝不能成为世界强国)?在扎实的社
会基础之上,软件业不就有了更大的市场与发展潜力?中国许多行业的信息化水平非常低,
而且中国地域广大,发展非常不平衡,有些地方信息化水平甚至为0!努力推动行业信息化,
是我们这一代软件开发者的责任!而追赶国外先进水平,恐怕就不是一代两代程序员可以
达到目标的,需要长期的努力。作为一名软件开发者,只能脚踏实地,哪怕你只做一个小
小的mis产品,也要尽力把它做好来。

于是,我开始了期刊发行系统的开发,这完全是自发的,没有任何资金投入,只有一种热
情在支撑。我开始选择c++builder开发,做了几个月,完成了第一个版本,但我发现,我
找不到足够水平的c++程序员进行合作开发,而且整个一个exe文件,在体系结构设计上虽
采用了分层分块的设计方案,但却是源代码级别的,要拆分成com组件难度太大,不是一
个人能完成的,于是中途流产。

2003年3月,我开始系统地学习.net,我吃惊地发现,我原来想在c++中实现的许多功能,
比如对象串行化为xml,在.net中已有现成的类可用,.net更把oo的功用发挥到了极致,它
的混合语言开发,它的反射机制,它的新的自识别的软件组件,以及强大好用的开发环境
vs.net,都让我惊叹微软对开发者遇到的困难的深入把握,相比用c++开发,至少可以提高
1/3的开发效率。于是一个新的想法产生了,我要把以前的产品用.net重写,利用.net强大
的组件模型,将设计模式理论推广应用到组件级别,通过xml和反射机制建立一套可动态装
配的软件生产流水线,实现象dell直销pc那样的软件动态装配直销。只要建立好灵活可不
断重构的系统架构,配以对业务领域的深入分析,逐步建立功能强大的业务组件仓库,就
可以实现软件系统的动态装配。说干就干,我用vb,net重写了原先用c++编写的系统,将
原先的一个exe变为十几个dll,而且这些dll还会随着发展而不断地分裂,也有可能重新
组合,利用refractoring(重构)不断进化,最终形成一整套完备的行业软件组件库。做
软件关键因素是变化,只有适应变化的系统才是有生命力的。

我用两个月的时间大体上弄清了.net平台下的主要类库,然后又用两个月的时间再次重新
实现了期刊发行系统的c++版本的全部功能,到8月份我写这篇文章之时,第一个产品里程
碑已经完成。同样的,除了需求是由另一个合作者去搜集的之外,几乎又是全部由我一个
人包揽了所有的系统设计及编码工作!

毫无疑问,我自觉得新系统要比老系统可维护性强得多,真正实现了彻底的全组件化系统
开发,计划再有一个月的界面美化,改正bug,引用多线程提高运行效率,优化系统结构,
就可以提供给用户试用了。市场如何,难说难测。

在开发过程中,我再次感到巨大的挑战,不光是技术上的,更是管理上的。人才是我最头
痛的问题,没有一流的人才,哪来一流的产品?我们找不到足够水平的程序员一起合作
(牛人哪屑于做这样一个小儿科的产品?)我们要走的路还很长。也许我们开发的产品是
失败的,但我从来就没指望能用这赚钱,我只是尽一个软件开发者的责任而己,成败已不
重要!人生不尝试,怎能体现人活着的价值?

结束语永无止境的软件之路

1.辛酸与苦辣

做软件开发很苦的,技术进步如此神速,每个软件开发者都得不断地学习以跟上发展的步
伐。有时我常想,何苦呢?我现在在大学中混,怎么样不能混下去?为什么要做这些吃力
不讨好的事?我投了十年的时间去学习电脑,却最终发现自己不过中人之资,离顶峰远之
又远。古语云:三十而立。我今年32了,仍是孤身一人,看看周围的同学,他们的小孩都
差不多上小学了!许多都有了自己的房子和车子,而我到现在才开始申报中级职称,还挤
在集体宿舍中,望着北京高昂的房价而叹息。现在社会越来越功利了,看着象我这样的穷
光蛋,看着由于长期面对电脑缺少锻炼而瘦弱的身躯,又有哪个女孩愿意嫁过来受苦?

软件人的生活很苦,压力很大,我认为是拿青春赌明天。就是在这种恶劣的开发环境中,
还有许多业外人士指手划脚说程序员如何如何,还有太多的公司只顾压榨程序员的劳动,
缺乏对程序员基本的尊重,怎不叫人寒心?

“三十而衰”,这句本不应该流行的话居然成了中国软件人员的流行语。中国程序员的悲哀!

2.无止境的追求

人类已进入信息时代,计算机技术几乎每隔半年就有一次大的变化,我现在又面临着这样
的抉择:今后的路如何走?

北大的教师聘任制度的改革一石激起千层浪,说明了中国高校的改革势在必行。我是欢迎
这种变化的,虽然到时我可能会下岗。但人生中总会遇到各种各样的挑战,只要你不倒下
爬不起来,就有希望。

我想我必须再次让自己有个提升,要从小事做起,但做小事则绝不能成为最终的目标,也
许,不远的将来,我会走出国门,到世界软件技术最发达的地区去汲取丰富的养份。今后
的路怎么走,我还在摸索之中。

3.人生无悔

人生年华如水,时光无情。在过去的岁月中,我尽了自己的力,回顾往事,我可以说:过
去的事只有遗憾,却没有后悔。如果给我再一次选择职业的机会,我还会再次选择软件!

再过10年,到2013年的时候,我也许会再次写一篇人生的十年回顾,到那时中国的软件会
如何?中国软件的明天靠你我这些普通人去扎扎实实地去工作来支撑!少发些牢骚,多做
些实事,中国软件才会有光辉的明天。你我共勉!

--------------------------------------一个老程序员的心理话

完成于2003-8-3北京

分享到:
评论

相关推荐

    20210810-国泰君安-互联网医疗行业2021年1~7月医疗IT订单回顾:7月小幅回落,公卫订单持续增长.pdf

    20210810-国泰君安-互联网医疗行业2021年1~7月医疗IT订单回顾:7月小幅回落,公卫订单持续增长.pdf

    2020年春七年级英语下册Unit7It’sraining要点回顾限时练新版人教新目标版

    2020年春七年级英语下册Unit7It’sraining要点回顾限时练新版人教新目标版

    2020年重庆房地产市场回顾及2021年展望.pdf

    很抱歉,但根据提供的信息,该文件"2020年重庆房地产市场回顾及2021年展望.pdf"的内容似乎并不涉及IT行业的专业知识。标题和描述提及的是房地产市场的分析,而标签为空,部分内容提到了一些数字和品牌,但没有明确的...

    fastdfs断点续传代码

    在IT行业中,断点续传是一项非常实用的技术,特别是在大文件传输时,它允许用户中断传输后从上次中断的位置继续,极大地提高了效率和用户体验。FastDFS是一个轻量级的分布式文件系统,它专为互联网设计,能有效地...

    2020年杭州房地产市场回顾及2021年展望.pdf

    很抱歉,但根据您提供的信息,标题和描述似乎与IT行业无关,而是关于杭州房地产市场的回顾和展望。标签为空,而部分内容提及的数据和词汇“TMT”、“PATAGONIA”、“Testoni”、“MOOSE KNUCKLES”、“in77XLARGE”...

    2019年软考系统规划与管理师-第7章IT服务持续改进.pdf

    【IT服务持续改进】是IT领域中一个关键的管理概念,尤其在系统规划与管理师的考试中占有重要地位。2019年的软考培训中,讲师丁伟对此进行了深入讲解。持续改进是为了使IT服务能更好地适应不断变化的业务需求,通过对...

    ASCII码和数字之间的相互转换

    例如,当你需要将一个字符(如字母或数字)转换为其对应的十进制或十六进制数值时,或者相反地,将一个十进制或十六进制数值转换回对应的ASCII字符时,就需要进行这种转换。 1. ASCII到十进制转换:每个ASCII字符都...

    十六进制转十进制ASCII码转换工具

    在这个场景中,我们关注的是"十六进制转十进制ASCII码转换工具"。这个工具显然旨在帮助用户将十六进制数值转换为对应的十进制数值,并进一步将其转换为ASCII字符。下面我们将详细探讨相关的知识点。 首先,十六进制...

    C# 大文件下载 断点续传

    通过以上步骤,我们可以构建一个类似迅雷的C#大文件下载器,支持断点续传、多线程下载和任务管理功能。这个过程涉及到网络编程、多线程编程、文件操作等多个方面的知识,对开发者的技术要求较高。不过,一旦实现,将...

    TXT文本转成BIN文件

    当我们打开一个TXT文件阅读时,看到的是字符,但这些字符在计算机内部是以ASCII或Unicode编码的二进制值表示的。转换过程就是提取这些字符的编码值,并将其保存到BIN文件中,形成连续的二进制序列。 在给定的压缩包...

    一个Flash转场效果

    转场效果是任何多媒体内容中增加视觉吸引力的重要元素,它们可以使观众的注意力平滑地从一个内容转移到另一个内容,提升观看体验。 在描述中提到的“有些地方可以用到”,暗示了Flash转场效果的适用范围。这可能...

    C#Http文件下载 支持断点续传

    如果服务器支持断点续传,它将返回一个206 Partial Content状态码,并在响应中包含请求的部分内容。这样,即使下载中断,只要记住已下载的文件部分和下一次应从何处开始,就可以实现续传。 二、C#实现HTTP断点续传 ...

    vc编写http多线程断点续传程序

    断点续传功能则是下载管理器的一个重要特性,尤其在大文件下载中。当下载中断时,程序会保存已下载的部分和当前位置。再次启动下载时,程序通过发送带有特定“Range”头部的HTTP请求,指示服务器从上次中断的地方...

    c#语音转文字程序

    这个程序的发布,为开发者和普通用户提供了一个方便的工具,无需自己从零开始构建语音识别系统,大大降低了使用门槛。 需要注意的是,尽管这个程序经过了测试并且被认为好用,但在实际使用中可能还会遇到各种问题,...

    IT项目管理案例(一个具体例子)

    通过一个具体实例说明IT项目。

    pb字符串转十六进制及各进制之间转换源码

    例如,可以创建一个函数`StringToHex()`,接收字符串作为输入,输出对应的十六进制表示。 对于其他进制之间的转换,例如二进制、八进制、十进制和十六进制之间的转换,我们可以利用以下策略: 1. **二进制与十进制...

    IT十年经典书系列英文版-Design_Patterns-Elements_of_Reusable_Object-Oriented_Software.pdf

    - 单例(Singleton):确保一个类只有一个实例,并提供一个全局访问点。 - **结构型模式**:关注类和对象的组合,封装复杂的关联关系,使代码设计更具灵活性和可扩展性。包括: - 适配器(Adapter):将一个类的...

    日期跟long转换小工具

    总的来说,日期与long型之间的转换在编程中至关重要,而"日期跟long转换小工具"则提供了一个直观、易用的解决方案,使开发者和普通用户都能轻松地处理日期时间相关的任务。无论是用于数据处理、日志分析还是简单的...

    HEX-Float转换工具 16进制转成float 或double类型数据的一个小工具

    总之,“HEX-Float转换工具”是一个针对IT专业人士设计的小型但高效的辅助工具,能够有效地帮助用户在16进制和浮点数之间进行转换。它简化了计算过程,提高了工作效率,对于理解和处理二进制数据的工作者来说,无疑...

    TXT转BIN 工具

    "TXT转BIN工具"就是这样的一个实用程序,它允许我们将文本文件转换为二进制文件。这种转换在很多场景下非常有用,比如编程、数据存储或者逆向工程等。接下来,我们将深入探讨这个过程以及相关知识点。 首先,我们要...

Global site tag (gtag.js) - Google Analytics