找回密码
 注册
查看: 1505|回复: 13

[转贴] 几年工作的技术感悟

[复制链接]
发表于 2008-6-29 23:42:15 | 显示全部楼层 |阅读模式
几年工作的技术感悟
连续不断的工作了快4年后,终于辞职了,暂时结束了每天上班生活。而在前几天,受吕欣欣同学的影响,我也买了全套金庸新版武侠小说,所以辞职的日子不怕无聊。不过更重要的是,在这段时间里休养生息,锻炼身体,系统的巩固自己所学,并且重新思考以后的职业发展。

我记得第一次去上班是在2004.6.28号,不过第一天去只是去清理一下办公室,真正工作是在7.5号。那时候我还没没毕业,大三暑假,这叫做:初出茅庐。一开始参与做的是一个电子商务网站项目(一个大公司的商城频道,具体哪个我就不说了),技术人员总共5个,其中包括一个架构师。项目开始,我很是兴奋,自学的知识终于可以用于实际生产了。当时项目采用asp.net/c#开发,而我那时候的web开发经验几乎为0,仅有的只是少量html知识,但是在实际项目中,我却并没有因为技术问题而拖后腿,从这一点我就感到:学习能力才是一个技术人员根本的能力。一个项目下来,我学到了很多知识,并且也培养和他人沟通交流的习惯。那时候我常常上csdn,去论坛上回答问题,记得当时写了一篇关于存储过程的文档还上csdn首页,心里真是高兴,呵呵。在项目中,我会突然找到边上一个同事请教或是探讨,那时候我还为了直接使用SQL还是使用存储过程和一个哥们争执几句,事隔2年多后,他msn跟我聊起来还提到:那时候你说的道理是对的,但是实际还是应该使用存储过程,我不禁微笑。

    我真正开始自学编程是在2003年初,一开始学习vc++(MFC),那时候成天泡在学校论坛的编程板块、CSDN等地方。不过那时候我学习进度太慢了,一个人学习,并且是最初学习编程,身边并没有人探讨。终于在半年后,我用vc编写了一个完整的程序,ftp客户端,完成了基本的登录登出、目录浏览、上传下载、断点序传等功能。那时候我们计算机系的学生正在进行小学期试验,也就是几个人在一起做一个项目,我们组做的是一个小型文件系统,最终程序圆满完成,不过我由于忙于自己的ftp客户端,在小学期的项目中只是参与了部分设计和开发了输入输出接口(Console环境下)。之后我继续学习关于vc++知识,直到有一天我上铺的同同学劝我学习c#,并且给我演示用vs.net开发c#程序,我看过之后,只能用一个词来形容:太酷了,那感觉就像一直以来用破手机的人突然看到了新的iphone一样...。于是我马上投奔了c#怀抱,我在看了几天c#语法书之后开始着手编写一个单机的俄罗斯方块游戏,一周以后编写完成,也没有什么bug,现在来看,那个程序都还是一个比较满意的作品。从此之后,我得益于c#语言功能强大和vs.net开发环境的便捷,我快速学习了很多东西,比如窗口界面、网络编程、多线程、web service、数据库编程等,我还清楚记得2003年暑假,我和上铺的那个同学一起学习编程一起玩游戏,每次通宵到第二天清晨然后去餐厅吃早餐,然后回来上一下所谓的“清晨网”,之后睡觉到下午,真是段快乐的时光。

    刚毕业时找到一个做企业项目的公司,后来转型作外包,于是自己被外包出去到别的公司写程序,工作是把用c++开发的程序(桌面段程序)移植到c#上,一个team 80多个人,计划周期1年多,我在里面做了一个小组的实际的leader,不过那时候干的并不开心,我很快辞职了,进入了毕业前兼职的公司。之后的时间,我所参与的都是web项目,web开发经验也就从这里积累、增长。在入职后不久,我看公司里面所有的人开发数据访问层的时都自己写很多ado.net代码,非常的繁琐,那时候部分还是采用了微软的Application Data Block。但是那时候流行ORM组件,特别是java里面的hibernate,如日中天,而在.net里也出现了nhibernate。我特意去了解了一下hibernate,遗憾的是一开始就被它繁琐的配置文件给吓倒了,于是有了自己写一个ORM库的想法。有了想法就开始做,业余时间我自己从设计到开发,大约1个月时间完成了基本的雏形,完成所有的测试后,我编写了一些简单的介绍和入门sample发给项目组的其他成员,但是大家对这个都并没有实质的兴趣。直到公司开始做另外一个项目,开发快要结束时,客户方指出,我们的代码根本不是面向对象的开发,很多数据实体都采用hashtable的结构来传送,要求我们重新开发整个系统。而在我的极力推荐下,再次开发中采用了我设计的那个ORM组件,在项目期间我完善了很多特性以及大量的细节,并且最终保持了这个库的简单易用,同时一个同事帮忙编写了一个代码生成工具(生成实体类),开发进展的很顺利,很快项目就开发完了。一直到后面我参与的好几个项目里面都采用了那个ORM组件。做这个东西给我一点感受就是:作基础的组件对人技术的要求远高于做应用系统。在基础组件里面,对待接口和代码的稳定性绝对不能有一点疏忽,为每一个公开接口编写一个测试用例是一个明智的选择。

    2006年出,公司正好开发一些web2.0应用,这时候我已经成为技术leader。当时国内正流行ajax,于是在我们项目里面,ajax也被大量使用,那时候我才真正感受到javascript(一直以来被开发者们不怎么重视的语言)的强大,在一个纯js的webos和一个rss阅读器的中,我开发了绝大部分js代码,掌握了大量js已及css兼容性细节问题。在2007年时,由于公司项目原因,我转移到了lamp平台进行开发,有意思的是,由于项目中的实战经验以及在实际生产环境中的锻炼,现在我已经觉得我对lamp的熟悉已经超过windows+iis+sqlserver平台。

在学校里面,我接触过asm、c、c++、java、html,然后又自学了c#、javascript、actionscript、php等语言,到现在我还没有感到一种让我满意的语言。asm就不说了,c/c++光一个内存管理问题就让人崩溃,并且c++也太复杂了。c#是我一开始喜爱的语言,不过现在也越来越复杂,和java一样,和动态语言比起来灵活性差的太多。javascript倒是干净,但是他缺乏面向对象支持,未免遗憾,这点上actionscript好的多。而php中的面向对象中途加上去,总感觉很多地方不是很好,并且目前还不支持unicode。其实每一种语言都很不错,都在各自的领域工作的很好,并且在一个复杂系统中,搭配使用多种语言基本是少不了的。不过一些编程的规范性问题也就随之而来,终归没有一种语言来的得心应手。我希望有一种语言:既有静态强类型语言的性能和编译检查,又有动态语言的灵活,并且尽量简单的语言特性和尽可能多的库支持,也许我只有做梦了。基本上每一种语言都越来越复杂化,而各种各样的框架也不断产生,而我却越来越喜欢简单,我深信,解决问题的不是复杂而是简单。而在开发中,除了平台原生的不可避免的框架外,我不主张采用其他任何框架,我更喜欢的是设计简单灵活的结构来容纳各种各样的功能库。刚毕业时,我花了很多时间去了解设计模式,不过到现在我基本上心理面已经没多少模式了,而记得的只有一点:简单。

    在实际工作中,我发现能真正写出高质量代码的人不多。大部分人水平都还是很不错的,但不知怎样,能产出高质量代码的人确实不多。我认为主要的原因还是一个心态和方法问题。正确的可靠的方法和平稳扎实的心态都是写好代码的必要条件,比如开始动手之前先经过全盘的考虑和设计,技术难点应该先突破,每一个细节都要仔细考虑它的影响,完整的测试等。一个人写代码就像做人,如果能够扎扎实实一行一行写出好的代码,细心不急躁,那他也基本上是个比较可靠的人。

    在工作的过程中,我曾经迷茫了一段时间,感觉自己不知道怎么提高了。后来慢慢发现,我在技术上一直在追逐一些表面上的东西,比如追求对一些语言的了解,对一些库和框架的了解,这样终究会遇到发展瓶颈。于是后来我着重了解一些低层平台的运行原理,学习一些框架的设计方法,也陆续看过一些原代码如asp.net forum、.text、mudos。以前听人说一个oracle专家通读了所有的oracle帮助手册,于是我也效仿,打开SQLServer联机帮助,从头开始读。这确实是一个合不错的方法,从帮助里我了解了大量sqlserver的实现原理,这对于数据库优化和管理相当有用。以至于后来学习mysql,我也是从头看mysql的帮助手册。现在觉得,真正能限制自己发展的就只有自己。一个人要常常总结反思自己,并且要一点一滴的巩固自己的知识和技能,这样才能让自己掌握的东西想滚雪球一样,越滚越大。
发表于 2008-6-30 08:42:21 | 显示全部楼层
认真看了,但一大堆的专业术语...搞不懂...
但还是明白那个雪球效应...加油
 楼主| 发表于 2008-6-30 08:44:25 | 显示全部楼层
分享下!
发表于 2008-6-30 09:35:36 | 显示全部楼层
楼主好厉害啊,懂这么多,光会一个JAVA和C++就不得了啦。PHP语言 还懂oracle数据库真不简单,牛人啊。
发表于 2008-6-30 12:01:08 | 显示全部楼层
对这些不懂,但对LZ说的很赞同,技术是要是基础做起!
发表于 2008-7-1 08:36:53 | 显示全部楼层
俺新来的``没钱啊``所以来灌水了!
发表于 2008-7-4 16:13:54 | 显示全部楼层
感觉你挺能干睥
发表于 2008-7-15 12:00:05 | 显示全部楼层
发表于 2008-7-15 19:58:23 | 显示全部楼层
我也是学计算机的,但现在已经全部还给了老师。
以上的专业术语已经不记得了 ,就更谈不上理解了
发表于 2008-7-15 20:48:21 | 显示全部楼层
不错的感悟,对后来人有帮助!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

本站无意传播任何侵权软件与信息,部分资源为网友搜集或发布,仅供学习和研究使用,请支持正版。站内所发布的资源,如有侵犯你的权益,请联系我们,本站将立即改正或删除。

QQ|Archiver|手机版|小黑屋|联系我们|中华设计论坛 ( 苏ICP备20023187号-1

GMT+8, 2024-11-25 19:40

Powered by Discuz! X3.5

© 2006-2024 Daliang Team.

快速回复 返回顶部 返回列表