当前位置:编程学习 > C#/ASP.NET >>

我的软件梦和我的职业苦恼,求帮助!!!

亲爱的各位坛友:

我2006年某大学信息化专业毕业,大学时花了不少时间主攻网页设计,用PHOTOSHOP、网页三剑客设计过一些页面,美感还不错,也曾获得一些小奖项,但编程能力不足,只会一点点简单的编程(能写基本的HTML、CSS代码、SQL查询语句和非常简单的C程序),能读懂不太复杂的程序,对算法、数据结构和SQL SERVER数据库都有所了解。毕业后,因为当时希望继续考研,我去了一所私立高校做行政工作。我以为高校的工作会比较有空余时间,可实际上我所做的行政工作非常之忙碌,并没有想象的可供我考研复习的时间。在这个高校一做就是七八年(目前已30岁),虽然目前已升至主管岗位有三四年了,但我从内心偏好来说,仍不太喜欢行政管理岗位纷繁的事务性工作,收入也不高(包括奖金在内税前7-8万/年)。感觉呆的时间越久,越是把自己呆废了。

这些年中,我始终有一个梦想——那就是希望自己拥有能做整个网站(系统)的能力。因为我大学阶段只会做界面设计和简单的前端代码的编写。如今,时隔多年后,前端开发技术有了比较大的更新,不仅HTML\CSS更新到了HTML5\CSS5,而且对Javascript\Ajax等技术的要求也成为一种正常需要,而我对这些新的技术只有基本的了解,没有实质性的掌握和运用过。我的后台开发技术也非常薄弱,大学毕业时还能写简单的ASP程序,现在都更新到了.NET了,而我只在今年才开始自学了C#(之前视图学了很久的Java, 终因每次都没有连续性而半途终止),目前也没用它开发过什么项目,很不熟练。

由于想转入软件行业,三年前我开始自费读某大学的软件工程在职研究生,也学习过软件工程相关的一系列课程,对软件工程过程、软件测试与质量控制、需求分析、配置管理、项目管理、数据库设计、数据挖据技术、软件体系架构、XML等有了个概貌性的了解。但实际动手能力还是几乎为零。

目前,我非常苦恼,不知道如何定位自己的职业。我最想做的是先成为.NET软件开发工程师,然后经过几年的积累再成为项目经理或者培训师、顾问之类,但是参加了好些.NET工程师的面试都要求项目经验,而且要求有自己的一技之长,所以最终均无果。

当然我也可以退而求其次考虑去做前端开发或仅仅做网页美工,更或者去一些培训机构继续做教育培训行业,但是这依然无法弥补我希望自己能做出一个完整系统的遗憾。

前阵子面试时,有个面试官好心地提醒我说:“像你这个年龄状况的IT人,现在基本上都是项目经理以上级别了,你现在再去做程序员,我都替你着急。”我想他说的是实话。面试结束后,我特别找到他再次表示感谢。可是我还是无法放弃自己最初的想法,我固执地坚持自己可以完成完整地做一个系统的梦想,希望自己能真正成为一名软件工程师。

我知道,CSDN论坛里,有很多热情,且有相当行业经验的朋友,大牛和高管也不在少数。可否请你们给我些建议,看怎样可以让我的软件梦梦想成真?

职场 面试 技术 .net c# .net工程师 --------------------编程问答-------------------- 补充:

我想,我的痛苦,可能并不仅仅是一种个别的现象。许多而立之年酝酿转行的人,许多毕业后想跨专业寻找技术类工作的人,许多刚参加工作并无实际经验的应届毕业生,或许都面临着有相似之处的困惑。期待您的建议和讨论!

我也想过去参加培训,但是,高额的房贷月供,的确让我只好选择放弃培训的想法。 --------------------编程问答-------------------- 软件行业入行很痛苦!! --------------------编程问答--------------------
引用 2 楼 u010825984 的回复:
软件行业入行很痛苦!!


是啊,非常痛苦。好在,这个世界上痛苦的人大有人在,痛苦也就感觉轻了些。 --------------------编程问答--------------------   06年毕业快奔三了吧,搞软件这个行业吃的是青春饭,就像是妓女。
  
  而且年龄大了,对于软件开发多少都显得力不从心。 --------------------编程问答-------------------- 软件就是,里面的人想往外跑,外面的人想往里面跑! --------------------编程问答-------------------- 如果一个人就能做出一个完整系统,那么作为老板,肯定是非常高兴的。。。

其次,不知你对你想做一个完整系统的系统是一个有什么功能的系统,有些功能,未必一定要后台编码。 --------------------编程问答-------------------- 一如it深似海,三思呀 --------------------编程问答--------------------
引用 6 楼 KumaPower 的回复:
如果一个人就能做出一个完整系统,那么作为老板,肯定是非常高兴的。。。

其次,不知你对你想做一个完整系统的系统是一个有什么功能的系统,有些功能,未必一定要后台编码。


非常感谢你的回复!

1)我是希望自己具备做整站开发的能力。呵呵。因为如果不懂得一门后台编程语言,好像总是只见着着程序在跑,但就是做不出来。

2)我不希望一下子制作太多的功能,我只希望自己起码可以做出一个简单的管理系统,让他运行起来,比如说,可以做一个决策支持系统。

A 可以注册、登录和实现权限的分配和管理;
B 将一堆既有的历史业务数据利用起来。一方面进行数据统计,生成报表,供决策者使用;另一方面,对信息中潜藏的规律进行挖掘,为业务拓展和改进提供支持,可以让用户填写信息,然后将信息写入数据库;
C 完成信息的查询和显示,以报表、仪表盘等易于理解的方式清晰地展示出来。
……

如果能完成一个这样的项目(哪怕只是参与),就可以对整个软件工程的各个过程有一个相对实际些的理解。而不仅仅停留在抽象的概念和逻辑推理上。




不是想要单打独斗的意思,而是想提升个人的感知。打个比方,我只会说中文(但我依然可以找个翻译帮助以便于与外国人交流)与我自己会说中文、外文一样。 --------------------编程问答--------------------
引用 7 楼 lizeyuan8238386 的回复:
一如it深似海,三思呀


  你这深好像挺有深意啊   请不吝明示啊     --------------------编程问答-------------------- 06年,我那时还在上初一呢

叔叔,您真的老大不小了,再说软件梦不一定要去当程序员啊,干回你老本行,工作不忙的时候抽出时间来完成自己的梦想不是更好么,生活和梦想都互不干扰;
莫把兴趣当职业,或许等你跳进去的时候才发现自己进入到了另外一个坑; --------------------编程问答-------------------- --------------------编程问答-------------------- 软件是个苦力活,可能还不如你现在的 --------------------编程问答-------------------- 自己有空做个完整系统,注册个域名在自己电脑上跑就完了不? --------------------编程问答-------------------- 千万别转行了,可以当兴趣做,赚赚外快,例如我就经常给别人做破解赚钱,我之前搞金融的,在证券行业干了2年后转行的计算机,现在搞开发,我是完全因为兴趣转的,不过我比较年轻,转就转了,如果30岁转的话感觉有些晚了,而且IT这行刚入行很累,如果不够幸运的话,入行很久也会很累,刷夜加班是经常地事情,而且有学不完的东西,前些年还写过一阵驱动,过了段时间不弄,现在一看都用WDF框架了,变化太快了,掌握不了那么多的,当兴趣玩玩还行,别转行了 --------------------编程问答-------------------- 烙饼,馅饼,烧饼,都可以 --------------------编程问答--------------------
引用 楼主 paian52 的回复:
亲爱的各位坛友:

我2006年某大学信息化专业毕业,大学时花了不少时间主攻网页设计,用PHOTOSHOP、网页三剑客设计过一些页面,美感还不错,也曾获得一些小奖项,但编程能力不足,只会一点点简单的编程(能写基本的HTML、CSS代码、SQL查询语句和非常简单的C程序),能读懂不太复杂的程序,对算法、数据结构和SQL SERVER数据库都有所了解。毕业后,因为当时希望继续考研,我去了一所私立高校做行政工作。我以为高校的工作会比较有空余时间,可实际上我所做的行政工作非常之忙碌,并没有想象的可供我考研复习的时间。在这个高校一做就是七八年(目前已30岁),虽然目前已升至主管岗位有三四年了,但我从内心偏好来说,仍不太喜欢行政管理岗位纷繁的事务性工作,收入也不高(包括奖金在内税前7-8万/年)。感觉呆的时间越久,越是把自己呆废了。

这些年中,我始终有一个梦想——那就是希望自己拥有能做整个网站(系统)的能力。因为我大学阶段只会做界面设计和简单的前端代码的编写。如今,时隔多年后,前端开发技术有了比较大的更新,不仅HTML\CSS更新到了HTML5\CSS5,而且对Javascript\Ajax等技术的要求也成为一种正常需要,而我对这些新的技术只有基本的了解,没有实质性的掌握和运用过。我的后台开发技术也非常薄弱,大学毕业时还能写简单的ASP程序,现在都更新到了.NET了,而我只在今年才开始自学了C#(之前视图学了很久的Java, 终因每次都没有连续性而半途终止),目前也没用它开发过什么项目,很不熟练。

由于想转入软件行业,三年前我开始自费读某大学的软件工程在职研究生,也学习过软件工程相关的一系列课程,对软件工程过程、软件测试与质量控制、需求分析、配置管理、项目管理、数据库设计、数据挖据技术、软件体系架构、XML等有了个概貌性的了解。但实际动手能力还是几乎为零。

目前,我非常苦恼,不知道如何定位自己的职业。我最想做的是先成为.NET软件开发工程师,然后经过几年的积累再成为项目经理或者培训师、顾问之类,但是参加了好些.NET工程师的面试都要求项目经验,而且要求有自己的一技之长,所以最终均无果。

当然我也可以退而求其次考虑去做前端开发或仅仅做网页美工,更或者去一些培训机构继续做教育培训行业,但是这依然无法弥补我希望自己能做出一个完整系统的遗憾。

前阵子面试时,有个面试官好心地提醒我说:“像你这个年龄状况的IT人,现在基本上都是项目经理以上级别了,你现在再去做程序员,我都替你着急。”我想他说的是实话。面试结束后,我特别找到他再次表示感谢。可是我还是无法放弃自己最初的想法,我固执地坚持自己可以完成完整地做一个系统的梦想,希望自己能真正成为一名软件工程师。

我知道,CSDN论坛里,有很多热情,且有相当行业经验的朋友,大牛和高管也不在少数。可否请你们给我些建议,看怎样可以让我的软件梦梦想成真?


1.搞编程要有兴趣,喜欢编程
2.要有想法好比自己 想开发个啥。
3.付出实际行动去把想法实现
4.先从开发环镜入手,熟习。
5.遇到问题 要学会如何去解决问题 百度 GG就是你最好的老师。
6.学会收集对你有帮助的资源.
7.学会总结自己 开发的东西 。

注:如果第一条不满足,其他6点就不要看了。 --------------------编程问答--------------------
引用 楼主 paian52 的回复:
亲爱的各位坛友:

我2006年某大学信息化专业毕业,大学时花了不少时间主攻网页设计,用PHOTOSHOP、网页三剑客设计过一些页面,美感还不错,也曾获得一些小奖项,但编程能力不足,只会一点点简单的编程(能写基本的HTML、CSS代码、SQL查询语句和非常简单的C程序),能读懂不太复杂的程序,对算法、数据结构和SQL SERVER数据库都有所了解。毕业后,因为当时希望继续考研,我去了一所私立高校做行政工作。我以为高校的工作会比较有空余时间,可实际上我所做的行政工作非常之忙碌,并没有想象的可供我考研复习的时间。在这个高校一做就是七八年(目前已30岁),虽然目前已升至主管岗位有三四年了,但我从内心偏好来说,仍不太喜欢行政管理岗位纷繁的事务性工作,收入也不高(包括奖金在内税前7-8万/年)。感觉呆的时间越久,越是把自己呆废了。

这些年中,我始终有一个梦想——那就是希望自己拥有能做整个网站(系统)的能力。因为我大学阶段只会做界面设计和简单的前端代码的编写。如今,时隔多年后,前端开发技术有了比较大的更新,不仅HTML\CSS更新到了HTML5\CSS5,而且对Javascript\Ajax等技术的要求也成为一种正常需要,而我对这些新的技术只有基本的了解,没有实质性的掌握和运用过。我的后台开发技术也非常薄弱,大学毕业时还能写简单的ASP程序,现在都更新到了.NET了,而我只在今年才开始自学了C#(之前视图学了很久的Java, 终因每次都没有连续性而半途终止),目前也没用它开发过什么项目,很不熟练。

由于想转入软件行业,三年前我开始自费读某大学的软件工程在职研究生,也学习过软件工程相关的一系列课程,对软件工程过程、软件测试与质量控制、需求分析、配置管理、项目管理、数据库设计、数据挖据技术、软件体系架构、XML等有了个概貌性的了解。但实际动手能力还是几乎为零。

目前,我非常苦恼,不知道如何定位自己的职业。我最想做的是先成为.NET软件开发工程师,然后经过几年的积累再成为项目经理或者培训师、顾问之类,但是参加了好些.NET工程师的面试都要求项目经验,而且要求有自己的一技之长,所以最终均无果。

当然我也可以退而求其次考虑去做前端开发或仅仅做网页美工,更或者去一些培训机构继续做教育培训行业,但是这依然无法弥补我希望自己能做出一个完整系统的遗憾。

前阵子面试时,有个面试官好心地提醒我说:“像你这个年龄状况的IT人,现在基本上都是项目经理以上级别了,你现在再去做程序员,我都替你着急。”我想他说的是实话。面试结束后,我特别找到他再次表示感谢。可是我还是无法放弃自己最初的想法,我固执地坚持自己可以完成完整地做一个系统的梦想,希望自己能真正成为一名软件工程师。

我知道,CSDN论坛里,有很多热情,且有相当行业经验的朋友,大牛和高管也不在少数。可否请你们给我些建议,看怎样可以让我的软件梦梦想成真?
1.1.17 如何成为一名优秀的程序员
一位仁兄说的“程序员写的程序不是‘算法+语法',而是要能够满足用户需求的工具”我非常赞同。要想达到用户需求就必须从各个方面来考虑,如业务、人机交互 、效率等方面,而不只是一个语言(语法)的问题,语言(语法)只是工具,只知语法不知其它那就真是编程机器了!编程机器在印度高中生经过几个月培训,按照严谨的软件工程方法,加上较高的管理,就可以胜任了!大家相信吗,我是相信的! 

谈到这里我就不禁说到了国内教育界最近在探讨的问题“计算机科系的毕业生特别是本科大专生到底出来干啥、如何适应社会要求”。大家也看到了很多计科系大学生说“精通N种语言,熟悉N种工具”,不知道学校里的其它知识到那里去了,甘愿做编程机器,浪费了人民的纳税 ,干高中生能干的事,比较可惜吧!在国内现在就是这样了。国内的软件开发业到底是需要那些人?如果仅仅是编码机器,那我估计中国硅谷还是做梦去吧! 

社会似乎也需要编码机器,翻翻招聘广告,做应用开发的都要求精通某某语言,熟悉某某工具,很少需要懂管理懂软件工程的人。以我个人一点偏激的想法,民族软件产业要腾飞,更需要的是能管理使用编码机器的人,即管理人员。国内软件产业编码机器已经很多了。希望不要惹怒了那些编程高手!System Develop 与Application Develop 在国内到底哪个能养活你,能赚钱?诸位仁兄想必也知道,况且俺也没发现几家水平高的公司招这方面的人。毕竟OS,DB MS,COMPILER都被国外做了;另外也别跟我谈LINUX,毕竟还是少数烧钱的人做的事情,我先喂饱肚皮再说。我手下的很多搞4GL语言的程序员都想转行学VC等所谓的更低级的语言,我总是说“在XX城市,先用4GL工具生存,以后再学习VC吧!” 。说的简单一点:先解决肚子问题。 

如何判断自己是否是编程机器? 
1、面对需求不考虑用户,只是考虑用哪些程序技术展示自己的语言语法技巧。 
2、学习了N种语言。 
3、从来不学习或实践软件工程。 
4、语法语言水平在众人中遥遥领先、特别是一些稀奇古怪的语法。凭着兴趣和创造力去干,却重复繁琐的劳动,做着没有意义——唯一意义是赚钱,而且真是出了半斤力, 拿不足八两。 终日劳累,却不能学自己想学的。最终结果是跟不上社会科技的发展 ,人已衰老。悲哀!!!   
我觉得大学里的高、数理方法之类的, 如果你不是做研究的话, 应该是很少能用到的。不过如果说到离散之类的, 倒还是时不时的能有点用。 

开发软件的关键是要有想法,一个好的想法比什么都重要。尤其是有关网络方面的就更是如此。实际上一个程序员最终的技术需要和实际相结合。真正在编写程序到达一定时候,语言的使用并不是最大的障碍,对整个项目的把握、软件工程的把握、数据库的设计以及执行效果的分析等等才是需要进一步考虑的东东!否则,为何大多数公司要求有编程经验了!这些不是程序员必须学的。但数据结构,编译原理,操作系统原理等是必须要学好的,英文也要多看,不懂计算机英语可不行。 

我不认为编码的人就是机器, 而系统分析就不是机器。 其实系统分析员就是销售的机器, 所有职员有是老板的机器。它们之间只是不同工种吧了。当然对系统分析要求要高一些, 薪水也高一些。 但更让人佩服的是销售, 是他们驱动了整个的运作。我也是个中专生, 还是学机械的(后来自学了计算机),我非常了解在传统的制造业是如何的规范, 设计人员设计图纸, 然后经审核,再到车间试样, 再根据情况, 修改图纸, 如此反复几次后才能一个产品定型,而在软件界, 就没那么好了,领导会说, 这个你做, 那个他做, 也没有经过很细的分析(国内很多都是这样),在我们这里也没有系统分析员, 每个人都是设计员,也是编程员。 虽然这样对个人来说, 能学到很多东西, 但不利于项目。我国的软件过程水平,确实令人担忧, 目前为止只是几个人十几个人的小软件, 还没有能拿得手的大型软件。 

至于中专生编程问题,我认为只要入了这个行, 就不会比本科生差。 因为对他来说没有优越的学历条件, 那么只好埋头苦学,但这正好适应当前计算机软件迅速发展的今天。 学历只能代表过去和基础。更需要的是有能力的人, 解决问题的人,实干的人。对我来说确实有时有点自卑,没有上过高中和大学(由于那个年代, 我只知道能为父母减少一点负担就行了), 所有我一直在努力的学习(corba,uml,java, 软件过程等), 目前为止我并没有觉的我的构架能力和编码水平比他们差,只是觉得E语言实在太差。过计算机本科又如何?我有几个同学到银行去搞业务了,有同学任教,有同学收税去了......60多个人真正现在搞计算机的还就只有几个人,再看看当时这些计算机本科生的毕业设计,//faint 有的人到最后连vb都搞不定,但他们什么编译原理啦什么组成原理啦什么软件工程啦学的(应该是考试的分数)还真不错,至少我感觉有些概念比我清楚(上课没听?)所以我觉的中专生并不比一般大学生差(当然有些重点学校除外 //hehe),有时中专生有更大的压力*迫自己去学习。 

学历不是重要的,关键是一个人的素质。我们不能将目标定位在做程序员或编码员(Coder)上。光会写代码有什么用?那叫“编码员”,在国外是属于体力劳动的,不像国内,会写程序的就叫高科技。重要的是分析问题、解决问题和规划的能力,系统分析,系统设计及项目规划才是正途。这就需要学习所谓的基础课程了,如:软件工程、离散数学、数据结构等等。我从vb到现在开始学vc后,一个人捣鼓了几天也没有什么新发现。跟本不知道VC的编程思想是什么,请大虾们告诉我,它和VB的差别真是太大了。VC的博大在于MFC的操纵,它是Win32API的封装.思想在于怎样了解MFC的内幕,它的运行机制。差别也大,差别也不大!这要看你对API的理解了,虽然VC++的可视化没有VB的好,但是不是绝对没有的,其对而且对话框的编辑是跟VB一样的,不过不是像VB那样放在第一个界面罢了,VC++的博大精深是VB难以望其项背的!:)而且VC++是完全面向对象的编程工具,而VB是不够完全的面向对象编程工具,VC++是完全编译语言,VB是本地编译语言,不够完全,VC++效率高,封装性好,继承性高,VB效率相对低了很多,但界面友好,二者只能取其一,或者使用 
VC++,VB辅助(因为VB开发快),当然Delphi,BCB也是不错的选择。 

程序员不应依赖开发工具,程序员更应该拥有的是一种思维、一种精神、一种观念。就像Richard.M.Stallman一样,有自己的精神,为自由软件而奋斗。就像求伯君,为民族软件的振兴而奋斗。这才是真正的程序员。应该说,他们更注重的不是技术,而是软件的思维,软件的灵魂!!我刚学VC的时候,还没有上网。身边也没有一个可以问的朋友,所以大部份都是自己啃的。那种感觉真是很痛苦。 现在在网上就不同了。可以得到太多的资料了。而且还可以得到在线帮助。但这些都不是学习的关键。相信各位也知道VC的难度,并不是那么容易上手的,所以要想学会,学好VC,靠外力是不可能的,主要得靠自己。 自己要有一份难得的毅力,对编程的狂热也可以在一定程序上起到帮助。我就是这样的。起初,没有人帮我,我学习VC是三天打鱼两天晒网,学习进度很慢,幸好对编程的执着,使得自己坚持下来了。 

如果你从来就没有接触过编程,那你学习VC的速度可能会比学过面向过程编程的人要慢一些,因为你要去理解命令及语句的含义。但只要你努力,并且可以得到别人的帮助,我相信在半年内会对VC有一定的认识。 请学赤面向过程编程的朋友也不要笑,因为面向过程与面向对象实在是区别太大了。就拿封装一词来说吧,当初我是左想右想才想通的。所以不要自己学过编程,就会在学习VC的通道上比别人轻松。 

现在有一种现状应该让我们注意,我发现有很大一部份初学者觉得VC是一种语言,C++又是另一各语言。我在和一些初学者的交谈当中,察觉到了这一点。有的初学者竟然还认为我学VC为什么就一定要学C++?我想这个问题是我们大家都没有注意到的一个问题。就是向初学者讲述C++对VC学习的重要性。 我这有个例子,跟大家讲一下。 我有个同学,他接触编程比我要早,在我还在为VC中“::”号怎么标记的时候,他已经在学习C了。后来,我对VC稍有理解的时候,他也发觉C的跟不上时代的脚步了。我便提议他从C++语言学起,可他认为自己有C的学习功底,根本就用不着再去学习C++。可在学习VC的当中,遇到的困难真是数不胜数。最近,他还是去买了一本学习C++的书,从头再来学习C++。 我希望通过这个例子,能让广大的初学者知道,C++对VC学习的重要性。 

学习VC必须有狂热的编程热情,否则是很难坚持下来的。我周围就有几个这样的人,他们比我先学VC近半年,但现在仍然学不会;而我现在虽说不是很厉害,但基本的应用程序是不在话下。我就是天天看书,上机实践,几乎所有的时间都泡在里面,有时连吃饭都在想,为什么?因为我确实想啃下这块硬骨头,我不想半途而废,我觉得学习VC不仅仅是学到了更多的东西,最主要的是培养了我们自己一种坚持克服困难的毅力。 
--------------------编程问答-------------------- 1.2.4 给浮躁的软件业同仁
作者:未知
链接:http://topic.csdn.net/u/20120315/12/A5BC5453-4333-4182-A4A9-08DC01D04F75.html
转载:CSDN

中国有很多小朋友,他们18,9岁或21,2岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺乏对系统,对程序的整体理解能力,这些人,一个网上的朋友说得很好,他们实际fans,压根没有资格称为程序员,但是据我所知,不少小网络公司的Cfans,拿着吓人的工资,做着吓人的项目,项目的结局通常也很吓人。
  程序员基本素质:
  作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。  
团队精神和协作能力  
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
文档习惯
  说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
规范化,标准化的代码编写习惯
  作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
  fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。
  再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
需求理解能力
  程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广 告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程序员,你给他深蓝那套系统,他也做不出太极链的并访能力。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
复用性,模块化思维能力
  经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。
  复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。
  一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力。
测试习惯
  作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
  测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定性测试,用户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状况的测试,频发的异常请求阻塞资源时的模块稳定测试等等。当然并不是程序员要对自己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到需求理解能力。
学习和总结的能力
  程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。
  善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。但是学习也要找对目标,一些小coding有些codingTO就是这样的coding上只是一些Cfans们,他们也津津乐道于他们的学习能力,一会学会了asp,一会儿学会了php,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目的追逐一些肤浅的,表面的东西和名词,做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理,这样的技术人员,不管掌握了多少所谓的新语言,永远不会有质的提高。
  善于总结,也是学习能力的一种体现,每次完 成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。
  一个不具备成长性的程序员,即便眼前看是个高手,建议也不要选用,因为他落伍的时候马上就到了。具备以上全部素质的人,应当说是够格的程序员了,请注意以上的各种素质都不是由IQ决定的,也不是大学某些课本里可以学习到的,需要的仅仅是程序员对自己工作的认识,是一种意识上的问题。  
  那么作为高级程序员,以至于系统分析员,也就是对于一个程序项目的设计者而言,除了应该具备上述全部素质之外,还需要具备以下素质:
需求分析能力
  对于程序员而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者,他们不但要理解客户需求,更多时候还要自行制定一些需求,为什么这么说呢?
  一般而言,进行研发任务,也许是客户提出需求,也许是市场和营销部门提出的需求,这时候对于研发部门,他们看到的不是一个完整的需求,通常而言,该需求仅仅是一些功能上的要求,或者更正规些,可能获得一个完整的用户视图;但是这都不够,因为客户由于非技术因素多一些,他们可能很难提出完整和清晰,或者说专业性的性能需求,但是对于项目组织者和规划者,他必须能够清醒认识到这些需求的存在并在完成 需求分析报告的时候适当的提出,同时要完整和清晰的体现在设计说明书里面,以便于程序员编码时不会失去这些准则。
  程序设计者必须正确理解用户需求所处的环境,并针对性做出需求的分析,举例而言,同样一个软件通过ASP租用方式发布和通过License方式发布,性能需求可能就是有区别的,前者强调的是更好的支撑能力和稳定性,而后者则可能更强调在各种平台下的普适性和安装使用的简捷性。
项目设计方法和流程处理能力
  程序设计者必须能够掌握不少于两到三种的项目设计方法(比如自顶至下的设计方法,比如快速原型法等等),并能够根据项目需求和资源搭配来选择合适的设计方法进行项 目的整体设计。设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影响研发效果。
  一个程序设计者还需要把很多功夫用在流程图的设计和处理上,他需要做数据流图以确立数据词典;他需要加工逻辑流图以形成整体的系统处理流程。一个流程有问题的系统,就算代码多漂亮,每个模块多精致,也不会成为一个好的系统。当然,做好流程分析并选择好项目设计方法,都需要在需求分析能力上具有足够的把握。
复用设计和模块化分解能力
  这个似乎又是老调重谈,前面基本素质上不是已经说明了这个问题吗?作为一个从事模块任务的程序员,他需要对他所面对的特定功能模块的 复用性进行考虑,而作为一个系统分析人员,他要面对的问题复杂的多,需要对整体系统按照一种模块化的分析能力分解为很多可复用的功能模块和函数,并针对每一模块形成一个独立的设计需求。举个例子,好比是汽车生产,最早每辆汽车都是独立安装的,每个部件都是量身定做的,但是后来不一样了,机器化大生产了,一个汽车厂开始通过流水线来生产汽车,独立部件开始具有一定的复用性,在后来标准化成为大趋势,不同型号,品牌甚至不同厂商的汽车部件也可以进行方便的换装和升级,这时候,汽车生产的效率达到最大化。软件工程也是同样的道理,一个成熟的软件行业,在一些相关项目和系统中,不同的部件是可以随意换装的,比如微软的许多桌面软件,在很多操作模块(如打开文件,保存文件等等)都是复用的同一套功能模块,而这些接口又通过一些类库提供给了桌面应用程序开发者方便挂接,这就是复用化的模块设计明显的一个佐证。
  将一个大型的,错综复杂的应用系统分解成一些相对独立的,具有高度复用性的,并能仅仅依靠几个参数完成数据联系的模块组合,是作为高级程序员和系统分析员一项最重要的工作,合适的项目设计方法,清晰的流程图,是实现这一目标的重要保证。
整体项目评估能力
  作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评估项 目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需要大量的经验积累,换言之,这是一种不断总结的累计才能达到的境界。在西方一些软件系统设计的带头人都是很年长的,比如4,50岁,甚至更老,他们在编码方面已经远远不如年轻人那样活络,但是就项目评估而言,他们几十年的经验积累就是最重要和宝贵的财富。中国缺这么一代程序员,主要还不是缺那种年纪的程序员,而是那种年纪的程序员基本上都是研究单位作出来的,都不是从专业的产品化软件研发作出来的,他们没有能积累那种产品化研发的经验,这也是没有办法的事情。
团队组织管理能力
  完成一个项目工程,需要团队的齐心协力,作为项目设计者或研发的主管人,就应当有能力最大化发挥团队的整体力量,技术管理由于其专业性质,不大同于一般的人事管理,因为这里面设计了一些技术性的指标和因素。
  首先是工作的量化,没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。
  其次是对团队协作模式的调整,一般而言,程序开发的协作通常分为小组进行,小组有主程序员方式的,也有民主方式的,根据程序员之间的能力水平差距,以及根据项目研发的需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥组队的效率。
  一个代码水平高的人,未必能成为一个合格的项目研发主管,这方面的能力欠缺往往是容易被忽视的。
  综上可以看到,作为一个主管研发的负责人,一个项目设计者,所需要具备的素质和能力并不是程序代码编写的能力,当然一般情况下,一个程序员通过不断的总结提高达到了这种素质的时候,他所具有的代码编写能力也已经相当不简单了,但是请注意这里面的因果关系,一个高水平的项目设计者通常已经是代码编写相当优秀的人了,但是并不是一个代码相当优秀的程序员就可以胜任项目设计的工作,这里面存在的也不是智商和课本的问题,还是在于一个程序员在积累经验,逐步提升的时候没有意识到应当思考哪方面的东西,没有有意识的就项目的组织和复用设计进行揣摩,没有经常性的文档习惯和总结习惯, 不改变这些,我们的合格的项目设计者还是非常欠缺。
  另外,为防止有无聊的人和我较真,补充一点,本文针对目标是作商业化的软件项目和工程,那些科研机构的编程高手,比如算法高手,比如图象处理高手,他们的工作是研究课题而非直接完成商业软件(当然最终间接成为商业产品,比如微软研究院在作的研究课题),因此他们强调的素质可能是另外的东西,这些人(专家),并不能说是程序员,不能用程序员的标准去衡量。
  最后补充一点东西,一个软件项目研发的设计流程是怎样的呢?以通常标准的设计方法为例,(不过笔者喜欢快速原型法)。
• 第一个步骤是市场调研,技术和市场要结合才能体现最大价值。  
• 第二个步骤是需求分析,这个阶段需要出三样东西,用户视图,数据词典和用户操作手册。用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了很多操作方面的流程和条件。数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成了一半多。用户操作手册是指明了操作流程的说明书。  
  注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成这些,就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的,因果颠倒,顺序不分,开发工作和实际需求往往因此 产生隔阂脱节的现象。
  需求分析,除了以上工作,笔者以为作为项目设计者应当完整的做出项目的性能需求说明书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方(客户或公司市场部门)能够有真正的沟通和了解。
• 第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源要求。作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和经验教训的总结,还要重新进行详细设计的步骤。  
• 第四个步骤是详细设计,这是考验技术专家设计思维的重 要关卡,详细设计说明书应当把具体的模块以最‘干净’的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软件系统在完成了一半的时候,其实还没有开始一行代码工作。那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。  
• 第五个步骤是编码,在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不发补丁的时候吗?从来没有!  
• 第六个步骤是测试  
  测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条 件,可以分为正常操作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。
  总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会又不可预料的问题存在。
  完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营状况并持续修补升级,知道这个软件被彻底淘汰为止。
  写这些步骤算不上卖弄什么,因为实话讲我手边是一本《软件工程》,在大学里这是计算机专业的必修课程,但是我知道很多程序员似乎从来都只是热衷于什么《30天精通VC》之类的,他们有些和我一样游击队出身,没有正规学过这个专业,还有一些则早就在混够学分后就把这些真正有用的东西还给了老师。
  fans乱嚷嚷,混淆视听,实际上真正的技术专家很少在网上乱发帖子的,如笔者这样不知天高地厚的,其实实在是算不上什么高手,只不过看不惯这种对技术,对程序员的误解和胡说,只好挺身而出,做拨乱反正之言,也希望那些还fans们能认真想想,走到正途上,毕竟那些聪明的头脑还远远没有发挥应有的价值。沉迷于一些错误人士的coding
  *****************************
  从程序员升级到工程师大多数象我这样对软件有浓厚兴趣的人,毕业后义无反顾地走进了企业,开始了程序员的生涯。那时,我们迷恋“大全”、“秘籍”一类的书籍,心中只有代码。当我看到一行行枯燥的代码变成了能够打电话的设备,变成了屏幕上漂亮的表格,变成了动听的音乐,成就感油然而生。我觉得自己也是一个出色的程序员了。在用户的机房中苦熬三昼夜解决软件的bug,也成了一种可以夸耀的资历。五年前的某一天,我把曾经让我兴奋自豪的大量代码和少得可怜的文档移交之后,来到了华为。这里有更多的年轻人,我如鱼得水,可以充分发挥自己的想象力。依然是代码,依然是匆匆地在纸上记下稍纵即逝的灵感(我们把它称作文档),依然是无休止地和bug作斗争。当有一天,一个新来 的同事拿着署着我的大名的文档,小心翼翼地来问我时,我发现自己好象有点不认识它了。我心里有点沮丧,再看看代码,发现文档上记录的一些灵感已面目全非。我当时不知道那位新来的同事感受如何,但我从那时起,好象意识到什么。现在来看,那时的很多事情都是事倍功半。
  去年年底,公司派我到印度从事项目开发,学习印度的软件开发管理方法。一种久违的冲动在心底升起。印度,我已去过两次,虽说是走马观花,但是,印象还是比较深刻。我在访问过程中和印度的工程师交流过,他们言谈中透着自信。他们给我讲解正在做的软件的测试环境,给我看他们写的单元测试文档。当我看到一个软件模块的单元测试用例有三百多页时,我觉得心里很是沉重。当我第三次踏上这片土地时,我又见到了熟悉的人们,明亮的眼睛,温和的笑容,随意的穿着,风驰电掣的摩托,还有大学校园中穿着拖鞋,手抱书本的年轻人。
  我也见到了我的项目经理,一个个子较高,瘦瘦的年轻人,据说刚从美国回来,已工作了五、六年。我听了心里很高兴,这回要一招一式地学两手。需求分析的时间是一个月,项目经理和我们(实际上代表客户 )讨论了proposal中的内容,确定每一项都是需要的。然后他把模块大致划分了一下,开始进入计划中的学习阶段。每个人在学习阶段要写出功能描述的胶片,给其他人讲解,不知不觉中,项目组的所有人对项目有了整体的了解。
  他还安排了一些培训,如他们公司的软件开发模型、项目组中各角色的定义,以后及时的培训不断,只要项目组中有需求,他总是把qa或相关的人请来,培训很专业。需求分析完成后提交了一份四十多页的文档,当我看到这份英文文档中我写的部分整整齐齐地列在其中时,我的感觉很复杂,有些喜悦,但更多的是苦涩,我以前怎么就从来没有这样做过需求分析呢。
  在我写文档的过程中,qa给我们培训过srs的写作模板,后来我还是不放心,让他们一个有经验的工程师写了一段,我们再琢磨着照着写。这份srs虽然是多个人合写,但风格一致,内容详实。更为可贵的是,一直到最后,这份需求分析的内容都没有改过,以至于我们没有机会走一下他们的需求更改流程。
  需求分析是项目的第一阶段,第二阶段的开发时间要根据需求分析的结果来确定。当对方的首席技术官(相当于我们业务部的总体组长)来和我们讨论计划时,他们已列出了对每个 模块的代码行数的预测,可能存在的风险。根据他们公司的生产率--300行/人月,他得出了项目第二阶段需要多少周。
  我们当时就提出了异议:1)公司对该项目需求很急;2)每月300行是否太少;3)我们还有下载的源代码参考。他解释说,300行/人月是使得项目能达到他们质量标准的经验数据,考虑到有源代码参考,生产率最多不能超过350行/人月。
  当他问我们公司的生产率时,我脑袋里转了三个圈,没敢多说,大概六、七百行吧。他沉默了一会儿,然后坚定地说,我们这个计划是建立在确保质量的基础上的,我想你们到印度来开发软件,首先看中的应该是我们印度公司的质量保证。我知道你们不缺乏软件开发人员,你们为什么不选择下载的软件呢。几句话说到了我的痛处,现在国内的弟兄们还在为使用下载软件移植的产品四处奔波呢!
  随后的开发活动有条不紊,我们老老实实地跟着做。系统测试计划、用例,概要设计,集成测试计划、用例,详细设计,单元测试计划、用例,编码,单元测试,集成测试,系统测试。一个完整的v模型开发过程,其中每个过程都有review。当我们对一些设计的方法不太明白时,项目经理给我们发来了相关的资料,我不知道他当时是怎么想的,一些基本的分析、设计方法是十年,甚至二十年前的软件工程书中就讲到的,印度每个计算机专业的人员都是必修这些内容的。而我们除了对一些具体协议的代码很熟之外,对这些常用的方法似乎一无所知。我感到一些羞愧,进城直奔书店,把他给我开列的书找了出来,晚上躺在床上,仔细研读,我仿佛突然又遇到了能给我指点迷津的良师益友。现在印度所已形成了强烈的学习风气。我回来后也推销了700多本书,这些书教我们如何用工程化的方法开发软件,是成为一个软件工程师必读的资料。
  我们的项目经理的计划控制能力很强,当有什么影响到项目计划的事情发生时,如人员辞职、实验室搬家、某一模块预测不准(该模块是我们预测的),他总是采取必要的措施,减少延期,调整计划。刚开始,我们对他们每天上午11点,下午4点下楼喝咖啡还有点意见,后来也跟着喝去了,原来,喝咖啡时的交流非常丰富,从项目管理到设计方法,从技术发展到风土人情,无所不包,对我们互相之间的理解,对团队的气氛很有帮助。我们项目的qa也在适当的时候出现在我们的面前,我们对她的工作只有一些感性认识。她每次参加会议时,手里时常拿着一个check list,项目经理准备相应的资料,回答一些问题,她打着勾,或写着项目经理的解释。她给我们做培训时也很耐心,体现出很好的职业素养,我至今还在怀念她给我们的帮助。
  我从事软件开发已有九个年头了,可我现在仍然不能说自己是个合格的软件工程师,更不用谈什么合格的管理者。我看到一份报道说,瑞士洛桑一权威机构把中国的科技综合竞争力从原来的第十三位调到二十多位,原因是他们调整了一些评估标准,其中有一条是中国合格工程师的可获得性非常低。想着弟兄们熬红的双眼,四处奔波升级的疲惫身影,我有一个强烈的愿望:快把我们自己升级成合格的工程师吧!
--------------------编程问答-------------------- 1.9 .NET在蹉跎中一路前行
题记
    四年的时间对于历史而言只是沧海一粟,而对于一个商业公司而言,却足以重生几回。从微软提出.NET战略到现在也接近四年了,而今的我们应该怎样去看待.NET四年走过的历程,怎样去评价.NET战略。

    从职业角度来讲,过去的半年实在是疯狂,绝对的疯狂,至少我是这样。其中有很多原因,但最重要的一个原因实际上是我们公司正在经历的变迁。而今天所作的介绍从某种意义上可以说,许多人、尤其是我,度过了无数个不眠之夜、花费了无数心血来认真思考这场变革。但是从某种意义上讲,正是这一变革,促使比尔•盖茨在年初作出了重要决策。我们确实花费了全部时间来认真考虑新一代的互联网会是什么样,怎样把如此众多的部分,包括我们已经做过的一些开发,完美地结合起来,继续保持世界领先地位,成为100%的比尔•盖茨时代。
微软总裁兼首席执行官——史蒂夫•鲍尔默 
.NET的激情起航
    2000年6月22日,这是一个所有“微软人”都应该记住的日子,因为从这一天起,微软公司将下一场赌注,一场押上全部身家的世纪豪赌——这一天,比尔.盖茨向全球宣布其下一代软件和服务,即Microsoft .NET平台的构想和实施步骤。新一代的Microsoft .NET 家族产品和技术替代了此前“下一代Windows服务(NGWS)”的提法,它涵盖了帮助软件开发商构建下一代互联网服务和给予新一代智能互联网设备强大功能的软件。此外,微软还宣布了基于.NET 平台的新产品计划,其中包括新一代的微软Windows操作系统、Windows DNA服务器、微软Office、MSN互联网网络服务、Visual Studio开发系统。

    这样的决定对于当时已经全球领先的微软而言,无疑是“押宝”,将未来十几年内的发展押给了他们构筑的.NET,当然也正是从那一刻开始,这家全球最大的软件公司也会不会遗力的去推进这个“伟大的梦想”。
那时的.NET
    什么是.NET?.NET有什么?有人也认为是微软故意模糊概念,实际的.NET是Windows DNA(Distributed Network Architecture)和COM+的一个延续,在本质上没有改变。虽然这样的理解有时偏频,但是问题是明显的,我们不是那么容易的理解“什么是.NET”。

2000年微软的白皮书这样定义.NET:Microsoft? .NET 是Microsoft XML Web Services 平台。XML Web Services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。 我们可以清楚的看到微软对于.NET的理解是XML Web Services的平台,一切皆是服务,下一代的Internet应用将是依赖于Web Service来构建,Microsoft .NET 平台由以下技术构成:

.NET用户体验
.NET基础设施和工具
.NET服务构造块
.NET设备软件
用户永远是上帝,脱离用户讨论战略没有实际意义,为此除开倡导的平台核心技术以外,微软还承诺对于个人用户提供.NET用户体验,其中包括:
Windows .NET
MSN .NET
用户订购服务
Office .NET
bCentral for .NET
Visual Studio .NET
从这些文字我们可以看出,微软几乎可以将自己的全部产品加上“.NET”的字眼,但是那是不是因为着这就是“.NET”?
Everything is .NET
    大概是为了强化.NET在人们心目中的印象,微软此时开展了一场dotnetialization(.NET化)运动,几乎所有传统的、创新的和虚构的产品都被打上“.NET”的标签。

    为了扩展.NET战略的宣传,微软将其很多仍使用传统技术的产品都加上了“.NET”字眼。最典型的莫过于2000年底发布的.NET Enterprise Server系列。这套服务器软件虽然打上了.NET标签,但与.NET技术没有任何关系。

真正创新的思想是Web Service。微软当时极力推动Web Service从概念走入应用的最核心。

此外,微软还虚构了、或者至少是过早描绘了一些新的、以“.NET”命名的产品与服务。

    一切都是.NET,微软这样做的结果就是将.NET这个品牌叫得路人皆知,而其实质概念则几乎没有人了解。除了提供一些开发工具的支持,其它方面的.NET推进有点做作的感觉,更加实际的来说.NET战略只是一个CLR的平台,其它方面的概念解释都让人牵强。

    艰难晦涩的.NET改变终于带入微软走入了一个尴尬的境地,.NET Enterprise Server就如同水中望月,而Office XP的推出除了绚丽的图形表现界面以外,也没有太多东西让人发现和.NET有关,这是一段迷惘而痛苦的岁月。
迷惘
    经过一年多的喧嚣,.NET已经渐渐热起来,越来越多的人开始使用.NET,至少开始关注这个平台,C#的正确发音已经尽人皆知。但是,看得出来,微软自己对于.NET的态度已经发生了微妙的变化。原来的计划太庞大,即使微软这样的巨人也无法掌控。前面的路应该怎么走?微软也产生了迷惘。

    2001年5月31日Office XP正式发布,它显然不是“传说”中的Office.NET。微软强调这个XP版本加大的是“体验”(experience)及其网络的整合,而“用户体验”和与网络的融合都是“.NET战略”的一部分。但是,实质的改进有什么呢?除了返璞归真的平面图形菜单(戏剧性的是这样的界面成了日后众多软件界面模仿的对象),和内建支持了SOAP工具包及其联机搜索能力,我们发现和当初预想的Office.NET有天壤之别。

    Office开发采取滚动方式进行,也就是在发布Office XP之前,下一版Office已经在开发中。据说部真的正在开发一个雄心勃勃的Office.NET。在这一激进的计划中,所有的访问都是通过Web Service来完成的,应用程序与网络的融合史无前例。不幸的是,这个产品最终流产,并且直接导致一个副总裁的辞职。究竟是技术上太不现实,还是微软意识到这个产品无法被用户接受?我们已经不得而知。 如果说Office曾经太激进,那么那些支持IT应用基础架构的应用服务器又是如何呢?在商业应用中的Commerce Server 2002,Biztalk Server 2002,Content Management Server 2002等等,虽然在一定程度加上了.NET Framework的支持,但是感觉有点是被微软强行联姻的“亲家”罢了,Visual Studio .NET对于其开发的支持依然是一种有心无力的感觉,并且这写服务器提供的并不是完整的托管类库,很大一部分功能仍然需要通过COM的方式来完成访问。.NET是一个庞大的战略,但是在短短的时间内希望完成到一个新的平台的迁移不是那么容易的事情,而此时.NET Enterprise Server系列的2002版本虽然在一个.NET的名头下依然是一个服务器群集,但是根本无法体现出.NET曾经的设想。

    此时的VS.NET有点孤军奋战的感觉,毕竟和其它应用服务器的结合不是那么尽如人意,并且在Managed C++方面的表现也不足以作为系统级开发的利器,因此还是有些人在等待,而不会去考虑将已有的应用全部迁移到.NET平台上来。

    所有这些情况,不仅体现了,同时也导致了微软的困惑。一个技术概念,如果不能与切实可用的产品结合起来,就会变成空中楼阁。

    对于用户而言,最重要的是能够实际带来什么,而不是仅仅带来概念,经历了那段迷惘,微软对于.NET的理解终于“尘归尘,土归土”,穿过水花镜月,一路坚定的走来。
--------------------编程问答-------------------- 务实
    2002年7月24日,比尔?盖茨在一个内部讲话中承认说,2000年9月推出的.NET企业服务器称作.NET“是有点草率”,也正是从这个时候开始微软真正开始反思.NET战略是否太过泛滥,是否超出了他们所能够控制的范围。

    在反思中摒弃浮躁,在务实中前行,经过两年时间的喧嚣和反思,.NET正在一点一点地走进现实应用。

2003年4月25日,曾被命名为Windows .NET Server的Windows Server 2003正式发布。Windows Server 2003此前曾四易其名,它是第一个内置支持.NET Framework 1.1的Windows操作系统,因此有资格戴上.NET的标签,但最终确定的名称中并没有包括“.NET”字样,出乎很多人的预料。

    同日,微软发布了基于.NET Framework开发工具的第二个版本,也就是Visual Studio.NET 2003,经历了一年的发展,2003版本终于被越来越多的开发人员所接受,除了修正了2002版本的一些细节性错误,在类库方面也更加强健和良好的兼容。 也也就是从此刻开始,VS.NET成为一个最强大的开发平台,多语言集成的开发环境,开发人员不仅可以开发传统的Windows应用,能够开发Web应用程序,同时在移动开发,企业级组件方面都提供了良好的支持。

    Office.NET已经渐渐淡去,此刻的微软也明白一相情愿设计一个完全以Web Service为中心的Office版本至少在今天是不可行的。2003年10月27号的时候发布最新版本的Office 2003中,启用了一个比较保守的命名——Office System 2003。从此Office不再是一个纯粹的客户端软件,而是一个完整的企业信息应用平台,不过相对于神话般的Office.NET,还有很长的路需要走,不过我们可以肯定,神话仅仅是神话,这个时候的微软已经知道.NET对于用户意味着什么。

    在服务器系统方面,.NET Enterprise Server有点盛名难负,更加直接的来说是一个虚构的名字。为了更加贴近实际情况,微软将新版服务器系统命名为Windows Server System,旨在建立一个深度集成的服务器基础结构,而从使IT专业人员能够将精力集中到满足业务需求方面。

    这一切表明,微软在.NET的推广策略上已经趋于务实。事实上,一项新技术,必须有现实的产品支撑。微软一向的做法,是将新技术与自己的强势产品结合,从而让最终用户的需求推动开发者转向微软技术。然而,在.NET推广之初,这一策略并没有很好的贯彻。只是经过了这个务实阶段之后,微软才重新回到了自己的正确路线上。将.NET技术与Windows和Office两大拳头产品结合,这表明.NET已经迈上稳健发展之路。
未来展望
    Longhorn需要到2006年才能够发布,我们完全可以认为,这个就是四年以前微软提出的.NET战略时希望达成的梦想之一,集成互联,同时拥有一个非常出色的用户体验。微软当初承诺在三年内实现这些基础架构的建设,现在看来这个时间恰好需要多一倍,也就是整整六年的时间。这个号称完全重新构建的操作系统才能够称得上.NET操作系统,关于其中的Avalon(图形渲染技术)、Indigo(通信子系统)、WinFS(文件存储系统)还有纯粹的.NET编程接口WinFX。

    相信2006年的Longhorn发布的时候,.NET应该已经得到业界的认同,并且已经出现了相当部分基于.NET的成功案例,对于.NET的FUD(Fear/Uncertainty/Doubt,恐惧/不确定性/疑虑)也已经烟消云散,.NET和J2EE真正意义的站在同一个水平线上去对话。

    而在Longhorn中的Indigo子系统,则以一种更加透明的方式来实现系统的部署,于是“一次编写,多次部署”也成为可能。随着.NET提出微软一直倡导的Smart Client技术也得到完美的体现,这个时候已经可以不去考虑桌面和浏览器的区别,如果说有,那么只是一种部署方式的差异,而解决这个问题的核心在于XAML及其和Win32 API等同的WinFX技术。

    “一切皆是Web Service”,那个时候的确可以做到当初.NET战略希望的所有子系统都通过Web Service通信(当然了,那个时候的Web Service不再是今天的效率)。期待总是期待,毕竟还有两年的时间去观望,也许到了日后一切全部变了样。

    但是我们相信,未来的.NET会成功,就如同微软一贯以来的成功,于是今天我们不是考虑是否使用.NET而是考虑何时选择.NET,当然,每一次的选择和放弃都是一种痛苦。 

    不知道是刻意或是纯粹出于偶然,营销名词和技术名称以及通用词汇竟然都在同一个时间点代表了同样的意义:过去与现在,传统与流行。 
.NET重要技术思考
.NET Remoting
    从COM(Component Object Model)时代到DCOM(Distributed COM),微软扮演了一个推动者的角色。如果说COM提供了一个Windows平台上的对象通讯技术,并且逐渐成为应用程序之间彼此通讯及互动的技术主流,那么DCOM则是解决了计算机的通信和互动技术。

    COM的着眼点是在于同一台计算机上不同应用程序之间的通讯需求,跨到另外一台计算机之外,就不是一开始COM所设想到的领域。所幸跨程序的通讯和跨计算机的通讯差异仅在于通讯协议的处理(也就是定位问题),对于数据交换上型别差异的处理并不会因此而有区别。所以要让COM的环境能更进一步延伸到跨计算机的领域,只要妥善解决计算机定位的需求,就有机会克服。同样幸运的是,COM在一开始的设计中完全不去碰触跨计算机的问题,使得要在COM的架构之上再架上一层跨计算机的处理环境并不会去破坏到原本的架构。于是COM的网络延伸版本DCOM(Distributed COM)就此出现,专责让COM组件可以在网络环境下持续提供服务。DCOM最主要处理的是两个议题,第一个议题是网络通讯能力,第二个议题则是权限的问题。之前COM是在同一台计算机中找特定的组件,而DCOM则要更进一步去找网络上的某台计算机,之后沿用COM的机制找到计算机上的组件。

    到了.NET当中,跨计算机的问题同样也需要对应的技术进行处理,.NET Remoting就是一个对应于DCOM的技术,它让存活在不同应用程序域(AppDomain,一个 .NET中的新概念)、不同执行程序、以及不同计算机上的对象能够顺畅的进行沟通协作。在累积了长期以来分布式应用的经验之后,微软没有理由把东西设计的更难用。从某种意义来说,.NET Remoting提供了比过去更易于使用的开发架构,用来来支持跨计算机的沟通作业,省却开发人员建立分布式应用程序时必须花费的心力,不过这样一个“出色”的分布式应用应用框架并没有得到本来应该得到的“待遇”。相对于Java的RMI而言,它更加简单同时保持设计方面的弹性,同时摈弃了DCOM的一些缺点,在对于一个前后端必须以有状态紧密结合方式进行互动作业,同时又期望呼叫和数据交换的动作上能以最有效的方式进行的环境而言,.NET Remoting是一个比较恰当的选择方案。

    可是问题在于微软本身对于XML Web Services的狂热推崇让.NET Remoting迷失了本来属于它自己的阵地,也就是说XML Web Services的过火让.NET Remoting忘记了自己应该承担的角色,于是在开发者眼中成为了一个“可有可无”的作品,至少对于很多开发人员而言,在需要创建分布式应用程序的时候首先考虑的是XML Web Services,而在于企业内部应用,特别是在可以控制服务器和客户端平台的情况下(比如完全基于.NET平台的应用),Web Service因为效率等等各个方面的原因并无法体现出优势。从技术本身来讲,.NET Remoting是一个非常出色的架构,但在商业方面,这是一个失败,毕竟,设计一个出色的产品然后束之高阁难免“不像话”。

    .NET Remoting恰恰是这个战略的牺牲品,虽然拥有与生俱来的优点,不过依然生不逢时。
Enterprise Services
    从一个很直接的感觉来说,Enterprise Services只是对于COM+的一个包装,从使用方式和技术实现本身而言,和VB或者VC下使用COM+服务没有本质的区别,而更多的只是在于多了一层托管代码的包装,让.NET开发人员能够比较顺利的使用这些服务的功能。

    相对于J2EE平台上的应用服务器如BEA的WebLogic,IBM的WebSphere或者开放源代码的JBoss,微软是希望能够在企业级应用之中分一杯羹,可是因为先天不足的原因,在企业应用中需要的事务、负载平衡、故障转移等等技术中的表现不是那么尽如人意,至少缺乏非常清晰的应用服务器(Application Server)的概念,虽然微软不止一次的强调操作系统本身就是一个应用服务器,一个IT信息的基础结构。但是从开发人员实际的使用来看,这是一个“晦涩难懂”的产品。

    虽然.NET Framework改变了很多东西,但是作为企业级应用中最重要的支撑技术——事务和服务,并没有得到同等程度的发展,我想这个也就是很多大型企业应用目前不选择.NET的一个理由吧,毕竟从MTS——COM+——Enterprise Services,这一路走来微软始终不是提供一个非常透明的机制让开发人员去控制各个环节(可能和微软一贯以来的策略有关,只是关心最广泛的应用而不是最高端的应用),而.NET中的所谓企业服务,和竞争对手提供的相当的EJB还是有比较大的差距,这是一个日前的微软无法解决的软肋。
Web Service
    从一开始,微软就将其作为“重头戏”推出,并且饶有意思的增加了XML,然后那个“XML Web Services”就成为了.NET战略中一个非常重要的术语,就如微软的白皮书所言“Microsoft? .NET 是Microsoft XML Web Services 平台”,微软通过.NET来改变现有的互联网络结构,“Windows正在走向过去”这样的宣传是在于希望各个子系统之间的通信完全基于Web Service,那样的话,作为Win32开发人员一直困扰的组建注册,分发等等一系列问题都能够得到解决,并且能够用更多的语言更多的平台去开发应用。

    “一切皆是Web Service”,这是一个冒进的举动,至少对于4年以前的世界,而这四年以来,虽然Web Service有很多很多的优点可以让我们“歌功颂德”,但是不是“万金油”,比如一直称垢的性能和安全问题也阻碍了Web Service一统天下,于是其它分布式应用架构在特定的领域依然能够有自己的生存空间。

    这一次,微软高估了Web Service,虽然目前的.NET是实现XML Web Services最好的平台,Visual Studio .NET也提供了从上至下的包装,让开发人员完全可以不关心协议的底层实现,比如SOAP,比如对象序列化,比如WSDL,因为一切的一切都可以在IDE中自动完成。我们不否认因为.NET,Web Service从概念已经走进应用,而WSE 2.0的出台更加Web Service具备了互操作能力,不过依然无法改变开发人员的观点,只有在企业外网应用集成或者内部异种平台整合的时候才能够体现出优势,在于需要高度响应和服务支持的应用方面,Web Service只是一个臆造的神话。
--------------------编程问答-------------------- ASP.NET
    我们无法否认,这项技术对于开发人员而言是一个颠覆性的改变,从静态的HTML到CGI再到ASP/JSP/PHP时代,我们都必须去了解HTML,了解HTTP,对于高水平的开发人员而言,需要掌握的还远远不止这个,在脚本横行的时代,我们必须很清楚的去了解实现的各个细节,包括HTML,JavaScript,CSS,还有和服务器相关的Request、Response。最直接而言,开发人员必须严格控制所有HTML及其相关内容的产生,脚本带来的只是一个相对于CGI层次更加高级的“自动化”罢了。

    然后,ASP.NET将这一切完全改变,WebForm让Web开发人员能够和Windows开发人员一样处理页面事件,同时可以完全的访问强大的.NET Framework类库,而且预先编译机制解决了ASP一直以来的效率低下问题。而在服务器端的设计,在原先ISAPI的基础上从新实现了HttpHandler和HttpMoudle,从而为开发人员提供了高度扩展的可能,而日前比较成熟的WebLog引擎.Text正是这些技术的经典之作。

    XML Web Services的内置集成则使ASP.NET成为Web Service应用的最好实现,日前市场上相当大部分的Web Service都是基于ASP.NET的,在这点方面ASP.NET已经远远超出Java社群的技术,包括JSP,包括Struct,包括JSF还有其它相关的Web应用技术,在ASP.NET都能够得到非常好的集成。

    我们不可能否认这个事实,相当大一部分(我个人认为是大部分)的开发人员转向.NET是因为ASP.NET,对于ASP开发人员而言,ASP.NET提供了更加强大的功能,很多在ASP中必须依赖组件技术来解决的问题比如文件上传在新的平台上已经成为内置支持,当然更加重要的是依赖Visual Stuio.NET强大的集成开发环境能够成倍的提高生产率。而另外平台的开发人员转向ASP.NET我想也是因为弹性的设计及其便捷的开发,我相信没有太多人会怀疑ASP.NET已经走在Web开发的最前沿。

    当然,任何事情没有绝对的完美,在.NET Framework 1.1(也就是.NET的第二个版本)之前,太多的Postback也是让开发人员抱怨之处,而且采用WebForm的开发方式让很多开发人员不是那么容易的处理客户端脚本,所有的事件实现都是依赖于ViewState,因此在低带宽下的网络应用,不断地提交也让有些用户感到“恼火”。

    这个世界没有绝对的完美,但是会一点一点走向完美,也许ASP.NET 2.0就有太多东西值得期待。
ADO.NET
    相信大家不会忘记ADO(ActiveX Data Object),我想Windows上面数据库开发流行它功不可没,通过统一的接口来实现对于数据库的访问,从而屏蔽复杂的数据库访问协议。而到了.NET时代,ADO.NET进一步将数据访问“进化”,不要以为ADO.NET只是ADO的一个升级,在ADO的技术上提供了一个托管类库,除了都是数据访问框架,其它没有太多本质的关联。

    虽然ADO.NET带来的震撼远远不如其它技术,可依然有很多东西值得我们去欣喜,毕竟创新总是一件好事情,何况是这个最成功的软件公司带来的创新,那么我们就来看看到底带来了什么:

1. 除了提供了传统ADO的Connection,Command以外,我们意外的没有看到Recordset这样的对象,而是提供了DataReader用来处理向前滚动的数据访问,最最重要的是加入了DataSet这样的概念,因为如此,我们能够实现很多数据库应用中需要的“Disconnected Application”,能够实现“InProc-Database”,而这一切,通过DataSet能够得到很好的解决。
2. 以更加透明的方式提供了数据库连接池,同时开发人员能够通过变成的方式控制具体的运行方式。
3. 提出DataAdapter,让开发人员能够以一种统一的方式去访问异种数据库,唯一的区别在于具体适配器的实现不同罢了。
4. “Typed Dataset”让开发人员能够非常方便的将DataSet 中的Table、Field映射到自定义类。
5. 对于XML提供了良好的支持,所有的DataSet都能够非常容易的系列化或者反系列化成XML文档。

当然ADO.NET不是万能的,在数据持久层(Data Presistent Layer)方面的支持显然不如Java,到现在为止都没有一个很好的O/R Mapping工具,而Java方面的Hibernate已经非常成熟,ADO.NET 2.0中的ObjectSapce也许能够改变目前的现状,就让我们耐心去等待,虽然需要到2005年。

“我们离破产只有18个月”,这是全球最成功的软件公司对于自己的告诫,于是他始终走在最前端,通过概念——务实——再概念的循环一次又一次的改变自己,同时改变了整个世界。
.NET改变了什么?
Microsoft,是否依旧“Micro”?

    原先的Microsoft已经不再“Micro”,20多年的高速成长,这家从PC起家的软件公司已经早早称霸全球,除了在PC机方面保持绝对的垄断优势以外,在服务器市场,也已经发起对于高端应用的冲击,Windows 2000就是这个战役的经典之作,按照一贯的策略,微软依赖其价格优势和最简单的操作界面一点一点地换取中小企业的“芳心”,而对于大企业应用,虽然还无法改变其“小丑”形象,但是显而易见,那样的关系越来越“暧昧”。

    评论界很多人都认为微软是一个以销售起家的公司,毕竟微软的技术从来不是最好,却能够笑到最后,我们无法否认过去很长一段时间微软是依靠Windows和Office的销售来支撑整个公司的高速运转,但.NET战略的推出则展现出微软从销售型转向服务型企业。毕竟随着技术的发展,在操作系统和办公软件上面的利润已经越来越透明,加上Linux的冲击和微软自身旧产品如Windows 98,Office 97等等已经足够“好用”,这样带来的结果必然是企业IT采购成本的大幅度缩减,微软自身也必须找寻更好的商业模式来获取稳定的收入。

    将“Windows时代”带入“.NET时代”,对于微软公司而言,需要做的有很多很多,包括自身定位,包括如何打破用户的顾虑和恐惧,当然还有一直以来不是很友好的公关形象。于是.NET战略成了微软一个新的战场。
改变了开发人员
    很多人在会抱怨新的技术更新太快了,如果跟着微软走总是需要不断地学习新技术,而相对来说其它的技术更新就没有如此之外,至少能够保持一段时期的稳定,这点就从C++那么多年以来的发展还有Java就可以看得出来。

    不过,世界总是在变化,有很多东西总是在不断改变,与其拒绝变化然后徘徊不前,不如去拥抱变化,当然这里提到的并不是盲动的跟随改变,然后成为“语言学习机器”。4年的发展,.NET已经渐渐的成长为可以和J2EE对抗的应用平台,并且在中低端的应用开发中,能够显着的提高生产力,这是何乐而不为。

    不过微软在.NET的营销并不是非常成功而干脆,至少在Web Service方面对于广大的开发人员是一种误导,这个世界没有绝对的“银弹”,Java不是,.NET也不会是,而XML Web Service在微软自身的定位的反复不定也让人有点疲惫。

    带来一个新的选择,带来更高的生产力,带来一种新的理念, 作为一线的开发人员,我们曾经为选择一个工具或者平台困惑、迷惘、狂热、追逐,最后坚定或者放弃。

    这个世界本来就是一个需要不断探索的世界,.NET同样如此。从总体上来说.NET,经历从狂热到迷惘,在到务实,从而逐步走向成熟的过程。
--------------------编程问答-------------------- 还是没有找到非常有帮助的回复。请朋友们继续指点!

另,如果是推荐好的资源,请贴一个链接就可以,非常欢迎。不过,请避免大段的文字粘贴进来。非常感谢! --------------------编程问答-------------------- 如果lz实在想知道怎么弄一个网站,怎么弄后台,可以买本Asp.net的教程看看,或者网上找些视频,再到51aspx.com下载几个B/S的管理系统的源码学习下。应该也会略知一二了。 --------------------编程问答-------------------- 我觉得lz,可以先不要放弃那份工作。在业余时间学习编程。很多东西真的做了就知道了,做一个小系统有时根本不需要很大技术。完全是体力活。遇到技术难题(对自己而言),百度google 上解决方案一大把。把他用上就行了。当你做几个系统之后 就觉得开发系统(除非你涉及到高端技术如高访问量、人工智能、图像识别、等这些类技术问题) 真的不是需要太多技术。想法很重要。思路很重要。 --------------------编程问答-------------------- 如果你不够专研就别转行了,没必要,真的,你可以业余做着玩玩,试试,接下私活,然后在看你自己受得了吗 --------------------编程问答-------------------- 一般中国程序员没有软件梦,他只能为老板写代码,实现老板所谓的“软件梦”
--------------------编程问答-------------------- 如果对美工很有感觉到话,可以接点私活,做一下,周期也不长,人家也会比较放心,软件的话,可以自己私下锻炼,然后在做决定! --------------------编程问答-------------------- 奉劝一句,安心在体制内混吧,你不适合这一行 --------------------编程问答-------------------- 除非你想成为奇迹,不然  别来。 --------------------编程问答-------------------- 首先一点,你的年龄对于你现在进入软件开发行业来说,确实是有点大,毕竟你之前没有接触过这个行业,加入说你进入到了这个行业,首先你要适应一下这个行业的环境,之后还要学习技术,之后再进入实践,一般的公司很少会招这样的人,投入太大了,你完全可以在业余的时间里做点东西,毕竟30岁了,现在转行确实是有点晚了,平时空闲的时间里你可以多看看一些视频或者书籍,先从小的系统开发做起,慢慢研究,也是不错的选择 --------------------编程问答--------------------
引用 10 楼 vb763305825 的回复:
06年,我那时还在上初一呢

叔叔,您真的老大不小了,再说软件梦不一定要去当程序员啊,干回你老本行,工作不忙的时候抽出时间来完成自己的梦想不是更好么,生活和梦想都互不干扰;
莫把兴趣当职业,或许等你跳进去的时候才发现自己进入到了另外一个坑;

哥们眼熟啊!我觉得算是csdn里较为活跃的人物了,年龄虽不大,说话还是很有道理的。(有深度的男银) --------------------编程问答--------------------
引用 15 楼 wangmineasy 的回复:
烙饼,馅饼,烧饼,都可以

能吃饱就行 --------------------编程问答-------------------- 業餘做一下還是可以的。 --------------------编程问答-------------------- 呵呵,我说说个人的看法吧~~
1. 如果你有一定的c语言基础,要做一整个信息管理网站(前端、后端、UI美工),业余时间充裕的话,自学应该不用1年

2. 你可以利用业余时间自学网站后端开发,网上可供选择的教学视频、现成答案、源码仓库很多,主要是php、java、asp.net,三个方向是有区别的,选择之前需要慎重考虑,先专一门,以后可以触类旁通。而这才是最开始,之后可能还会进一步接触各种框架,各种新技术,各种惹人的bug还有不断挑战你底线的需求。

3. 做一个整个网站不需要特意转行,最关键的是认清自己是想做一个能用的系统还是决定转行,后者会让你得到同时会失去很多,可能得不偿失。

4. 你现在来到IT行业,等于是从零开始,不出意外的话,我猜想你的编码水平应该只比一个一般的应届毕业生好一些,搞开发要学的东西比较多,你一定要具备良好的基础,比如数据结构和面向对象程序设计、数据库原理、计算机网络、操作系统等知识才能较好的适应后续解决越来越高的软件需求。

5. 如果你执意要加入软件行业,那我肯定会对你竖起大拇指~因为你有这样的决心,再加上不懈的坚持,比什么都强!有时候人还是需要一点源动力来支撑生活的体验的,再难的东西遇到有心人,问题总是会克服的!希望你终有一天能够成绩你的独立开发梦~
--------------------编程问答-------------------- 能做整个网站没什么用,大部分web程序员(指有一定水平的)都能胜任,不管主要做前端还是后端的
能做整个网站!=水平高!=收入高!=能创业 --------------------编程问答-------------------- 现在很多工具都可以使用自带的模板,快速搭建一个人个网站了
需要自己动手修改的地方仅仅是标题之类的了
--------------------编程问答--------------------
引用 15 楼 wangmineasy 的回复:
烙饼,馅饼,烧饼,都可以
求合伙 --------------------编程问答--------------------
引用 15 楼 wangmineasy 的回复:
烙饼,馅饼,烧饼,都可以
--------------------编程问答--------------------
引用 37 楼 alone_bin 的回复:
Quote: 引用 15 楼 wangmineasy 的回复:

烙饼,馅饼,烧饼,都可以
求合伙
同求 --------------------编程问答--------------------
引用 39 楼 lion____ 的回复:
Quote: 引用 37 楼 alone_bin 的回复:

Quote: 引用 15 楼 wangmineasy 的回复:

烙饼,馅饼,烧饼,都可以
求合伙
同求
能不凑热闹不 --------------------编程问答-------------------- 30岁的码农要么是经理级别要么就准备转行了。楼主醒醒吧
--------------------编程问答--------------------
引用 31 楼 u010687495 的回复:
Quote: 引用 10 楼 vb763305825 的回复:

06年,我那时还在上初一呢

叔叔,您真的老大不小了,再说软件梦不一定要去当程序员啊,干回你老本行,工作不忙的时候抽出时间来完成自己的梦想不是更好么,生活和梦想都互不干扰;
莫把兴趣当职业,或许等你跳进去的时候才发现自己进入到了另外一个坑;

哥们眼熟啊!我觉得算是csdn里较为活跃的人物了,年龄虽不大,说话还是很有道理的。(有深度的男银)

哈哈,难道我会跟你说我是水王么 --------------------编程问答-------------------- 独立开发,不是梦,如果把这个当成梦想,我觉得你不适合作开发。

我觉得:作为爱好还是比较好的。国内软件行业,没啥好的出路,一般都是苦逼的码农。

--------------------编程问答-------------------- 我还是继续默默的苦逼吧... --------------------编程问答-------------------- 以楼主现在的年龄,建议三思,理想和现实差距很大!
--------------------编程问答-------------------- LZ不要冲动,三思而后行啊,目前软件这个行业也不好做,十分悲催的,绝对没有你想象的好。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 4 楼 tangyanzhi1111 的回复:
  06年毕业快奔三了吧,搞软件这个行业吃的是青春饭,就像是妓女。
  
  而且年龄大了,对于软件开发多少都显得力不从心。

谁告诉你的?只要坚持,并且有党和政府的伟大领导,天朝的未来一片光明!总有一天会出现詹姆斯高斯林、李纳斯托瓦兹、唐克努特...... --------------------编程问答-------------------- 给你点小建议吧,都这么大了还是不要转行了吧,刚进it这个行业能解决你的温饱问题已经不错了,而且现在很多30岁以上的老程序员挣考虑转行问题呢,关于你说的那个自己做个完整的网站程序 ,也没有想象中的那么难,如果你一些c#基础,可以买本关于asp.net的数据,花一个月时间看完,基本做一个简单地网站系统没什么大问题了,如果感觉比较困难,就用asp或者做个纯静态的html站也还不错,希望对你有用! --------------------编程问答-------------------- 有兴趣就去做吧,那才有动力 --------------------编程问答--------------------
引用 楼主 paian52 的回复:
亲爱的各位坛友:

我2006年某大学信息化专业毕业,大学时花了不少时间主攻网页设计,用PHOTOSHOP、网页三剑客设计过一些页面,美感还不错,也曾获得一些小奖项,但编程能力不足,只会一点点简单的编程(能写基本的HTML、CSS代码、SQL查询语句和非常简单的C程序),能读懂不太复杂的程序,对算法、数据结构和SQL SERVER数据库都有所了解。毕业后,因为当时希望继续考研,我去了一所私立高校做行政工作。我以为高校的工作会比较有空余时间,可实际上我所做的行政工作非常之忙碌,并没有想象的可供我考研复习的时间。在这个高校一做就是七八年(目前已30岁),虽然目前已升至主管岗位有三四年了,但我从内心偏好来说,仍不太喜欢行政管理岗位纷繁的事务性工作,收入也不高(包括奖金在内税前7-8万/年)。感觉呆的时间越久,越是把自己呆废了。

这些年中,我始终有一个梦想——那就是希望自己拥有能做整个网站(系统)的能力。因为我大学阶段只会做界面设计和简单的前端代码的编写。如今,时隔多年后,前端开发技术有了比较大的更新,不仅HTML\CSS更新到了HTML5\CSS5,而且对Javascript\Ajax等技术的要求也成为一种正常需要,而我对这些新的技术只有基本的了解,没有实质性的掌握和运用过。我的后台开发技术也非常薄弱,大学毕业时还能写简单的ASP程序,现在都更新到了.NET了,而我只在今年才开始自学了C#(之前视图学了很久的Java, 终因每次都没有连续性而半途终止),目前也没用它开发过什么项目,很不熟练。

由于想转入软件行业,三年前我开始自费读某大学的软件工程在职研究生,也学习过软件工程相关的一系列课程,对软件工程过程、软件测试与质量控制、需求分析、配置管理、项目管理、数据库设计、数据挖据技术、软件体系架构、XML等有了个概貌性的了解。但实际动手能力还是几乎为零。

目前,我非常苦恼,不知道如何定位自己的职业。我最想做的是先成为.NET软件开发工程师,然后经过几年的积累再成为项目经理或者培训师、顾问之类,但是参加了好些.NET工程师的面试都要求项目经验,而且要求有自己的一技之长,所以最终均无果。

当然我也可以退而求其次考虑去做前端开发或仅仅做网页美工,更或者去一些培训机构继续做教育培训行业,但是这依然无法弥补我希望自己能做出一个完整系统的遗憾。

前阵子面试时,有个面试官好心地提醒我说:“像你这个年龄状况的IT人,现在基本上都是项目经理以上级别了,你现在再去做程序员,我都替你着急。”我想他说的是实话。面试结束后,我特别找到他再次表示感谢。可是我还是无法放弃自己最初的想法,我固执地坚持自己可以完成完整地做一个系统的梦想,希望自己能真正成为一名软件工程师。

我知道,CSDN论坛里,有很多热情,且有相当行业经验的朋友,大牛和高管也不在少数。可否请你们给我些建议,看怎样可以让我的软件梦梦想成真?





朋友 ,

如果你一年有个几万,
家里又不缺你赚的钱,也就是说你即使不赚钱,

家庭也不受影响,
那你大可跟着爱好,感觉走

我刚不久前33岁,目前正在学编程,上培训班那种
 
说实话,如果没有破釜沉舟的勇气, 三思而行



我理想是,做一个网站能赚钱的
或者一个IOS,or android应用赚钱 养家

目前看起来远得很

我目前虽然学了三个月了,(之前有一点基础的,对底层也有点了解)

理解了C
C++语法原理OOP,了解模板,泛型(两个均在unix下学的) 

数据结构目前只能写链表,和冒泡查找,
半生写快速查找

了解QT,练习了一些例子

unix c编程,走过一遍unix下编程的例子,理解原理

目前学win32 gui编程 和mfc


可以预见的是,我结束培训后,
还有相当长的路

甚至要有一个工作机会,有一个人带我才行
长路漫漫任我闯,
我能坚持到几时,

...学的同时,一直关注创业...
没法,兴趣与生活压力交织,

碌碌无为,
成功
彻底失败



说实话,你能混到行政主管,继续混吧

实在憋慌了,你兼职搞程序吧


我的经历应该对你有很强的 镜子效应作用

希望对你有帮助. --------------------编程问答-------------------- --------------------编程问答-------------------- 既然你现在是管理岗位,那就在管理方面充实自己呗,技术方便的东西现在从头开始我觉得不太合适,而且也有一些技术人员到了30也该转管理了。技术永远学不完,楼主好好考虑 --------------------编程问答--------------------
引用 8 楼 paian52 的回复:
Quote: 引用 6 楼 KumaPower 的回复:

如果一个人就能做出一个完整系统,那么作为老板,肯定是非常高兴的。。。

其次,不知你对你想做一个完整系统的系统是一个有什么功能的系统,有些功能,未必一定要后台编码。


非常感谢你的回复!

1)我是希望自己具备做整站开发的能力。呵呵。因为如果不懂得一门后台编程语言,好像总是只见着着程序在跑,但就是做不出来。

2)我不希望一下子制作太多的功能,我只希望自己起码可以做出一个简单的管理系统,让他运行起来,比如说,可以做一个决策支持系统。

A 可以注册、登录和实现权限的分配和管理;
B 将一堆既有的历史业务数据利用起来。一方面进行数据统计,生成报表,供决策者使用;另一方面,对信息中潜藏的规律进行挖掘,为业务拓展和改进提供支持,可以让用户填写信息,然后将信息写入数据库;
C 完成信息的查询和显示,以报表、仪表盘等易于理解的方式清晰地展示出来。
……

如果能完成一个这样的项目(哪怕只是参与),就可以对整个软件工程的各个过程有一个相对实际些的理解。而不仅仅停留在抽象的概念和逻辑推理上。




不是想要单打独斗的意思,而是想提升个人的感知。打个比方,我只会说中文(但我依然可以找个翻译帮助以便于与外国人交流)与我自己会说中文、外文一样。


我觉得阁下不是求项目经验,而是希望突然有项目经验直接干上项目经理的位置。阁下说的项目经验在公司做个三五个月应该就没问题了吧。主要是房贷拖后腿,起步心理期望偏高。 --------------------编程问答-------------------- 其实软件工程就是一个围城,在外面的人想进去,里面的人想出来 --------------------编程问答-------------------- 其实做个完整的网站系统并没有你想象的那么复杂,你可以采用逆向学习方法,这样目标更明确,学得也快。也就是找一个现有开源的网站架构,拿回来研究。不懂的随时查看书本。当你能够把所有代码都看明白。那么基本知识就具备了,然后可以偿试的修改某些代码。慢慢的对整个架构和代码熟悉起来,这时书本上的东西基本都复盖了。 --------------------编程问答-------------------- 研究别人写的代码是学习编程的最快方式。只要你有耐心! --------------------编程问答-------------------- 我上一个主管,人33岁才开始学的程序,之前都不知道网页是啥个东西

人现在40多岁了,照样过的很好。

--------------------编程问答-------------------- 很多人都在说30岁迷茫了,转行了,你这才刚起步。。 --------------------编程问答-------------------- 这个总体还是自己把握的。 --------------------编程问答-------------------- 我只想说:LZ三思! --------------------编程问答-------------------- 看完楼主这么多迷茫,我来说两句。
你说你现在的收入年薪7-8万,如果你转行做软件开发/网站开发(这个更低,发展有瓶颈),估计入行只有你现在的一半薪水了,你愿意这样做两年然后达到你目前的工资水平吗? 之后想再高就看你的“造化”了。

另外,你想要有做整个网站系统的能力,这个并不难。我之前就是做asp.net网站后台程序的,而且具有你说的完整开发一个网站项目的能力。你可以研究一些开源的代码,熟悉时下流行的三层架构开发模式(这个对你架构一个网站非常必要,有成熟的软件帮你生成,非常简单,深入研究也不难),一至两个月基本就能入门了,你说的那些功能,说白了就是对数据库的增删查改,不要想得那么高深复杂。 什么权限控制就更简单了,就是先把权限按序号分类,然后在用户登录后,判断它这个ID是否属于该分类。 网页加载有个流程,在页面刚载入就去判断就能实现。 说了这些你是不是感觉很简单呢?

所以你把这么简单的一件事情,当成一件不可能完成的梦想未免太那个了。 如果你的梦想就是这样,按我上面的方面去做业余时间就能“圆梦”。 但当成职业到时你要比现在还迷茫。

软件开发就是围城,我现在已转行了。当然业余时间还会搞网站,自己也有运营一两个网站。 --------------------编程问答-------------------- 你思维进入了一个误区啊?
别人为什么需要你能开发一个完整的网站?
你知道一个完整的网站分 前中后台么
按你说的
你可以当前端工程师
工资不低
而且相对轻松
你一个人能做一个网站有什么用
别人做网站都是团队的
不可能什么都你一个人
除非小公司 
那你呆着也没什么意思
还有 
你30岁再转行
有点难的
30岁
还没经验
别人不会要你的
除非你工资要的很低 --------------------编程问答--------------------
引用 42 楼 vb763305825 的回复:
Quote: 引用 31 楼 u010687495 的回复:

Quote: 引用 10 楼 vb763305825 的回复:

06年,我那时还在上初一呢

叔叔,您真的老大不小了,再说软件梦不一定要去当程序员啊,干回你老本行,工作不忙的时候抽出时间来完成自己的梦想不是更好么,生活和梦想都互不干扰;
莫把兴趣当职业,或许等你跳进去的时候才发现自己进入到了另外一个坑;

哥们眼熟啊!我觉得算是csdn里较为活跃的人物了,年龄虽不大,说话还是很有道理的。(有深度的男银)

哈哈,难道我会跟你说我是水王么

额、、水王是什么东西?我们有代沟啊、、、 --------------------编程问答--------------------
引用 64 楼 u010687495 的回复:
Quote: 引用 42 楼 vb763305825 的回复:

Quote: 引用 31 楼 u010687495 的回复:

Quote: 引用 10 楼 vb763305825 的回复:

06年,我那时还在上初一呢

叔叔,您真的老大不小了,再说软件梦不一定要去当程序员啊,干回你老本行,工作不忙的时候抽出时间来完成自己的梦想不是更好么,生活和梦想都互不干扰;
莫把兴趣当职业,或许等你跳进去的时候才发现自己进入到了另外一个坑;

哥们眼熟啊!我觉得算是csdn里较为活跃的人物了,年龄虽不大,说话还是很有道理的。(有深度的男银)

哈哈,难道我会跟你说我是水王么

额、、水王是什么东西?我们有代沟啊、、、


额,你可以理解为牛逼的样子,意思就是我很牛逼 --------------------编程问答-------------------- 还“理想与现实的差距”。。。被骗了 --------------------编程问答-------------------- 别想软件了,
继续在高校里混吧,当个小官挺好的。


--------------------编程问答-------------------- 大叔,国内软件行业30是个瓶颈,人家都是30回家卖烧饼,蛋炒饭什么的


再说过了这么久,如见更新的那么快,你还得重新学习,而且指不定人家开给你的薪水还不如现在的! --------------------编程问答-------------------- 屌丝  飘过   --------------------编程问答-------------------- 国外的大牛没几个<30岁的吧,谁让咱们来错了地方。 --------------------编程问答-------------------- 如果我是你啊,继续自己这份工作,空闲时间快乐编程 --------------------编程问答-------------------- 大哥,趁早转行吧, --------------------编程问答-------------------- 大哥,你需要转变一下思维。初恋的感觉虽然很美,不过现在的妻儿更重要。 --------------------编程问答-------------------- 转IT?好吧。。。 --------------------编程问答-------------------- 软件开发这行,在中国真是不好说啊!我现在也想转行了,但是不晓得转那个行业了! --------------------编程问答-------------------- 我們只有習總書記構建的“中國夢”,沒有“軟件夢”。
樓主改行要三思。如果實在想學,我可以遠程教學,50RMB/H,如何?
--------------------编程问答--------------------
引用 73 楼 zhaoshan313 的回复:
大哥,你需要转变一下思维。初恋的感觉虽然很美,不过现在的妻儿更重要。
十分贊同,十分形象的比喻! --------------------编程问答-------------------- 本来还没觉得IT好的,楼主这样一说,感觉自己似乎很幸福似的。。。。 --------------------编程问答-------------------- 痛苦经常有! --------------------编程问答--------------------     其实就是曾经有一件事想做,一直想做的,却一直没有腾出足够的时间来做,现在已经走得很远很远了,还是想把那件事做一做而已,做完这件事,你就没有一直的顾虑了,只是因为一直那么的放不下。
    所以你可以在假期自己找资料来学习,做一个完整的网站,弥补这一直以来的遗憾。把这些只当作业余爱好吧,真正要进入到工作,跟现在的毕业生恐怕都比不过的,时代不同了,很多知道都更新换代了。更何况,你想像一下,即使企业接收了你这样一个高龄员工,你30岁做着人家20几岁刚来的工作,你脸皮也要足够厚呀,自己的尊严都会受伤的。 --------------------编程问答-------------------- 坚持做程序员没有错误,努力去做吧,
经验丰富善于总结的老程序员,与新人(概念上的,不论工作年数)相比,差别不一点半点的,是能做和不能做,或 ,能做好,和不能做好的差别!
将来会有很多50,60的高程!

大家都按份的作罢,不事有很多机会,成为项目经理,部长,高级管理的,话说,现在很多的项目经理也就是高级程序员的说 --------------------编程问答-------------------- 码农生活 --------------------编程问答-------------------- 做前端不是很好?还有,为什么当年不报个培训班啊,这个见效最快。 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 26 楼 c_o_o_l_u_l_u 的回复:
一般中国程序员没有软件梦,他只能为老板写代码,实现老板所谓的“软件梦”
--------------------编程问答-------------------- 为什么放弃治疗 --------------------编程问答--------------------
引用 64 楼 u010687495 的回复:
Quote: 引用 42 楼 vb763305825 的回复:

Quote: 引用 31 楼 u010687495 的回复:

Quote: 引用 10 楼 vb763305825 的回复:

06年,我那时还在上初一呢

叔叔,您真的老大不小了,再说软件梦不一定要去当程序员啊,干回你老本行,工作不忙的时候抽出时间来完成自己的梦想不是更好么,生活和梦想都互不干扰;
莫把兴趣当职业,或许等你跳进去的时候才发现自己进入到了另外一个坑;

哥们眼熟啊!我觉得算是csdn里较为活跃的人物了,年龄虽不大,说话还是很有道理的。(有深度的男银)

哈哈,难道我会跟你说我是水王么

额、、水王是什么东西?我们有代沟啊、、、

我难道会告诉你,水王是躲在深水中看戏的万年.... --------------------编程问答--------------------
引用 49 楼 mengzaifei6 的回复:
给你点小建议吧,都这么大了还是不要转行了吧,刚进it这个行业能解决你的温饱问题已经不错了,而且现在很多30岁以上的老程序员挣考虑转行问题呢,关于你说的那个自己做个完整的网站程序 ,也没有想象中的那么难,如果你一些c#基础,可以买本关于asp.net的数据,花一个月时间看完,基本做一个简单地网站系统没什么大问题了,如果感觉比较困难,就用asp或者做个纯静态的html站也还不错,希望对你有用!


7-8年前我可以做整站的FLASH/HTML的静态网站,现在问题也不大。修修改改的整一点动态代码也没问题。只不过,我就是挺想学会动态网站开发的。感觉自学起来好像特别费劲,比如代码吧,看是能看懂,就是不知道从哪写起?

我特别想找本教人从头学做.net web开发项目的书,讲得比较形象的那种,但一直也没找到。(不是那种逐个逐个讲知识点的入门书。那种挨个讲知识点的,整个看完是什么也做不了) --------------------编程问答--------------------
引用 62 楼 threeperson 的回复:
看完楼主这么多迷茫,我来说两句。
你说你现在的收入年薪7-8万,如果你转行做软件开发/网站开发(这个更低,发展有瓶颈),估计入行只有你现在的一半薪水了,你愿意这样做两年然后达到你目前的工资水平吗? 之后想再高就看你的“造化”了。

另外,你想要有做整个网站系统的能力,这个并不难。我之前就是做asp.net网站后台程序的,而且具有你说的完整开发一个网站项目的能力。你可以研究一些开源的代码,熟悉时下流行的三层架构开发模式(这个对你架构一个网站非常必要,有成熟的软件帮你生成,非常简单,深入研究也不难),一至两个月基本就能入门了,你说的那些功能,说白了就是对数据库的增删查改,不要想得那么高深复杂。 什么权限控制就更简单了,就是先把权限按序号分类,然后在用户登录后,判断它这个ID是否属于该分类。 网页加载有个流程,在页面刚载入就去判断就能实现。 说了这些你是不是感觉很简单呢?

所以你把这么简单的一件事情,当成一件不可能完成的梦想未免太那个了。 如果你的梦想就是这样,按我上面的方面去做业余时间就能“圆梦”。 但当成职业到时你要比现在还迷茫。

软件开发就是围城,我现在已转行了。当然业余时间还会搞网站,自己也有运营一两个网站。


谢谢你!我想你有可能能帮助解决我的问题。

可否请你说得具体一些。因为有些东西在熟悉的你来说可能非常之简单,但是对我来说却一头雾水。如果你能提供一个比较好的例子或者提供一本一步步以教人做项目的方式学会做一个系统的教程或者视频,我觉得我可能就找到方法了。

三层架构是否指的MVC,这个我有点了解。只是不知道怎么用。
--------------------编程问答--------------------
引用 63 楼 djy18178 的回复:
你思维进入了一个误区啊?
别人为什么需要你能开发一个完整的网站?
你知道一个完整的网站分 前中后台么
按你说的
你可以当前端工程师
工资不低
而且相对轻松
你一个人能做一个网站有什么用
别人做网站都是团队的
不可能什么都你一个人
除非小公司 
那你呆着也没什么意思
还有 
你30岁再转行
有点难的
30岁
还没经验
别人不会要你的
除非你工资要的很低



谢谢你!事实上,我也确实是在做前端的兼职。但只会做前端不能满足我的小小心愿就是。
--------------------编程问答-------------------- 你可以继续做现在的工作,把软件编程当成一个兴趣爱好。 --------------------编程问答-------------------- 要想好了,程序员要做很久蛋会疼的 --------------------编程问答--------------------
引用 4 楼 tangyanzhi1111 的回复:
  06年毕业快奔三了吧,搞软件这个行业吃的是青春饭,就像是妓女。
  
  而且年龄大了,对于软件开发多少都显得力不从心。
IT行业不是越老越吃香吗!因为积累的经验多。。。不是吗 --------------------编程问答--------------------
引用 8 楼 paian52 的回复:
Quote: 引用 6 楼 KumaPower 的回复:

如果一个人就能做出一个完整系统,那么作为老板,肯定是非常高兴的。。。

其次,不知你对你想做一个完整系统的系统是一个有什么功能的系统,有些功能,未必一定要后台编码。


非常感谢你的回复!

1)我是希望自己具备做整站开发的能力。呵呵。因为如果不懂得一门后台编程语言,好像总是只见着着程序在跑,但就是做不出来。

2)我不希望一下子制作太多的功能,我只希望自己起码可以做出一个简单的管理系统,让他运行起来,比如说,可以做一个决策支持系统。

A 可以注册、登录和实现权限的分配和管理;
B 将一堆既有的历史业务数据利用起来。一方面进行数据统计,生成报表,供决策者使用;另一方面,对信息中潜藏的规律进行挖掘,为业务拓展和改进提供支持,可以让用户填写信息,然后将信息写入数据库;
C 完成信息的查询和显示,以报表、仪表盘等易于理解的方式清晰地展示出来。
……

如果能完成一个这样的项目(哪怕只是参与),就可以对整个软件工程的各个过程有一个相对实际些的理解。而不仅仅停留在抽象的概念和逻辑推理上。




不是想要单打独斗的意思,而是想提升个人的感知。打个比方,我只会说中文(但我依然可以找个翻译帮助以便于与外国人交流)与我自己会说中文、外文一样。


我擦,懂数据挖掘的牛人啊 --------------------编程问答--------------------
引用 88 楼 paian52 的回复:
Quote: 引用 49 楼 mengzaifei6 的回复:

给你点小建议吧,都这么大了还是不要转行了吧,刚进it这个行业能解决你的温饱问题已经不错了,而且现在很多30岁以上的老程序员挣考虑转行问题呢,关于你说的那个自己做个完整的网站程序 ,也没有想象中的那么难,如果你一些c#基础,可以买本关于asp.net的数据,花一个月时间看完,基本做一个简单地网站系统没什么大问题了,如果感觉比较困难,就用asp或者做个纯静态的html站也还不错,希望对你有用!


7-8年前我可以做整站的FLASH/HTML的静态网站,现在问题也不大。修修改改的整一点动态代码也没问题。只不过,我就是挺想学会动态网站开发的。感觉自学起来好像特别费劲,比如代码吧,看是能看懂,就是不知道从哪写起?

我特别想找本教人从头学做.net web开发项目的书,讲得比较形象的那种,但一直也没找到。(不是那种逐个逐个讲知识点的入门书。那种挨个讲知识点的,整个看完是什么也做不了)


你可以去这个网站http://www.51aspx.com/,全部是.net的,符合你的要求。下载几个源码,自己运行来学习。  把一个网站看懂,就入门了。看书没用的,我也买过很多.net方面的书,基本都是越讲你就越糊涂,如果有基础,拿来解惑还行,新手想入门连门都没有,也许你看完一本还发现它连怎么运行一个项目都没讲,给你个源码都不知怎么运行起来,这不是扯蛋吗?  这些书都是骗钱的,东拼西凑。 --------------------编程问答--------------------

你可以去这个网站http://www.51aspx.com/,全部是.net的,符合你的要求。下载几个源码,自己运行来学习。  把一个网站看懂,就入门了。看书没用的,我也买过很多.net方面的书,基本都是越讲你就越糊涂,如果有基础,拿来解惑还行,新手想入门连门都没有,也许你看完一本还发现它连怎么运行一个项目都没讲,给你个源码都不知怎么运行起来,这不是扯蛋吗?  这些书都是骗钱的,东拼西凑。

非常感谢!我试试看。 --------------------编程问答-------------------- 楼主应该年纪不小了,既然已经有了稳定的工作就没必要在换来换去。编程也是可以当作爱好的。可以自己给自己做点东西啊。比如说买个空间,然后自己写一套博客管理系统,慢慢的完善它。喜欢的东西千万不要当作工作来做,有热爱某个行业,愿意为它奉献一切的人,但是更多的人做一个行业是因为能挣钱吃饭。编程什么时候学都行,但是不一定要当作自己的工作。 --------------------编程问答-------------------- 我比楼主早毕业10年,一直做自动化控制工程,09年才改行做软件,70后。
想做永远不晚,就跟学习一样,下决心,就去做吧。
国外的老程序员比国内要多很多。 --------------------编程问答--------------------
引用 18 楼 msadmzz 的回复:
1.2.4 给浮躁的软件业同仁
作者:未知
链接:http://topic.csdn.net/u/20120315/12/A5BC5453-4333-4182-A4A9-08DC01D04F75.html
转载:CSDN

中国有很多小朋友,他们18,9岁或21,2岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺乏对系统,对程序的整体理解能力,这些人,一个网上的朋友说得很好,他们实际fans,压根没有资格称为程序员,但是据我所知,不少小网络公司的Cfans,拿着吓人的工资,做着吓人的项目,项目的结局通常也很吓人。
  程序员基本素质:
  作一个真正合格的程序员,或者说就是可以真正合格完成一些代码工作的程序员,应该具有的素质。  
团队精神和协作能力  
把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。把高水平程序员说成独行侠的都是在呓语,任何个人的力量都是有限的,即便如linus这样的天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。独行侠可以作一些赚钱的小软件发点小财,但是一旦进入一些大系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人就完全不合格了。
文档习惯
  说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
规范化,标准化的代码编写习惯
  作为一些外国知名软件公司的规矩,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
  fans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己压根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。
  再看看整个linux的搭建,没有规范化和标准化的代码习惯,全球的研发协作是绝对不可想象的。
需求理解能力
  程序员需要理解一个模块的需求,很多小朋友写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考虑,有人曾经放言说写一个广 告交换程序很简单,这种人从来不知道在百万甚至千万数量级的访问情况下的性能指标是如何实现的,对于这样的程序员,你给他深蓝那套系统,他也做不出太极链的并访能力。性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。
复用性,模块化思维能力
  经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。
  复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。
  一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在我看到的是,很多小公司软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力。
测试习惯
  作为一些商业化正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
  测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定性测试,用户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状况的测试,频发的异常请求阻塞资源时的模块稳定测试等等。当然并不是程序员要对自己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到需求理解能力。
学习和总结的能力
  程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。
  善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。但是学习也要找对目标,一些小coding有些codingTO就是这样的coding上只是一些Cfans们,他们也津津乐道于他们的学习能力,一会学会了asp,一会儿学会了php,一会儿学会了jsp,他们把这个作为炫耀的资本,盲目的追逐一些肤浅的,表面的东西和名词,做网络程序不懂通讯传输协议,做应用程序不懂中断向量处理,这样的技术人员,不管掌握了多少所谓的新语言,永远不会有质的提高。
  善于总结,也是学习能力的一种体现,每次完 成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。
  一个不具备成长性的程序员,即便眼前看是个高手,建议也不要选用,因为他落伍的时候马上就到了。具备以上全部素质的人,应当说是够格的程序员了,请注意以上的各种素质都不是由IQ决定的,也不是大学某些课本里可以学习到的,需要的仅仅是程序员对自己工作的认识,是一种意识上的问题。  
  那么作为高级程序员,以至于系统分析员,也就是对于一个程序项目的设计者而言,除了应该具备上述全部素质之外,还需要具备以下素质:
需求分析能力
  对于程序员而言,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者,他们不但要理解客户需求,更多时候还要自行制定一些需求,为什么这么说呢?
  一般而言,进行研发任务,也许是客户提出需求,也许是市场和营销部门提出的需求,这时候对于研发部门,他们看到的不是一个完整的需求,通常而言,该需求仅仅是一些功能上的要求,或者更正规些,可能获得一个完整的用户视图;但是这都不够,因为客户由于非技术因素多一些,他们可能很难提出完整和清晰,或者说专业性的性能需求,但是对于项目组织者和规划者,他必须能够清醒认识到这些需求的存在并在完成 需求分析报告的时候适当的提出,同时要完整和清晰的体现在设计说明书里面,以便于程序员编码时不会失去这些准则。
  程序设计者必须正确理解用户需求所处的环境,并针对性做出需求的分析,举例而言,同样一个软件通过ASP租用方式发布和通过License方式发布,性能需求可能就是有区别的,前者强调的是更好的支撑能力和稳定性,而后者则可能更强调在各种平台下的普适性和安装使用的简捷性。
项目设计方法和流程处理能力
  程序设计者必须能够掌握不少于两到三种的项目设计方法(比如自顶至下的设计方法,比如快速原型法等等),并能够根据项目需求和资源搭配来选择合适的设计方法进行项 目的整体设计。设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影响研发效果。
  一个程序设计者还需要把很多功夫用在流程图的设计和处理上,他需要做数据流图以确立数据词典;他需要加工逻辑流图以形成整体的系统处理流程。一个流程有问题的系统,就算代码多漂亮,每个模块多精致,也不会成为一个好的系统。当然,做好流程分析并选择好项目设计方法,都需要在需求分析能力上具有足够的把握。
复用设计和模块化分解能力
  这个似乎又是老调重谈,前面基本素质上不是已经说明了这个问题吗?作为一个从事模块任务的程序员,他需要对他所面对的特定功能模块的 复用性进行考虑,而作为一个系统分析人员,他要面对的问题复杂的多,需要对整体系统按照一种模块化的分析能力分解为很多可复用的功能模块和函数,并针对每一模块形成一个独立的设计需求。举个例子,好比是汽车生产,最早每辆汽车都是独立安装的,每个部件都是量身定做的,但是后来不一样了,机器化大生产了,一个汽车厂开始通过流水线来生产汽车,独立部件开始具有一定的复用性,在后来标准化成为大趋势,不同型号,品牌甚至不同厂商的汽车部件也可以进行方便的换装和升级,这时候,汽车生产的效率达到最大化。软件工程也是同样的道理,一个成熟的软件行业,在一些相关项目和系统中,不同的部件是可以随意换装的,比如微软的许多桌面软件,在很多操作模块(如打开文件,保存文件等等)都是复用的同一套功能模块,而这些接口又通过一些类库提供给了桌面应用程序开发者方便挂接,这就是复用化的模块设计明显的一个佐证。
  将一个大型的,错综复杂的应用系统分解成一些相对独立的,具有高度复用性的,并能仅仅依靠几个参数完成数据联系的模块组合,是作为高级程序员和系统分析员一项最重要的工作,合适的项目设计方法,清晰的流程图,是实现这一目标的重要保证。
整体项目评估能力
  作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评估项 目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需要大量的经验积累,换言之,这是一种不断总结的累计才能达到的境界。在西方一些软件系统设计的带头人都是很年长的,比如4,50岁,甚至更老,他们在编码方面已经远远不如年轻人那样活络,但是就项目评估而言,他们几十年的经验积累就是最重要和宝贵的财富。中国缺这么一代程序员,主要还不是缺那种年纪的程序员,而是那种年纪的程序员基本上都是研究单位作出来的,都不是从专业的产品化软件研发作出来的,他们没有能积累那种产品化研发的经验,这也是没有办法的事情。
团队组织管理能力
  完成一个项目工程,需要团队的齐心协力,作为项目设计者或研发的主管人,就应当有能力最大化发挥团队的整体力量,技术管理由于其专业性质,不大同于一般的人事管理,因为这里面设计了一些技术性的指标和因素。
  首先是工作的量化,没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。
  其次是对团队协作模式的调整,一般而言,程序开发的协作通常分为小组进行,小组有主程序员方式的,也有民主方式的,根据程序员之间的能力水平差距,以及根据项目研发的需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥组队的效率。
  一个代码水平高的人,未必能成为一个合格的项目研发主管,这方面的能力欠缺往往是容易被忽视的。
  综上可以看到,作为一个主管研发的负责人,一个项目设计者,所需要具备的素质和能力并不是程序代码编写的能力,当然一般情况下,一个程序员通过不断的总结提高达到了这种素质的时候,他所具有的代码编写能力也已经相当不简单了,但是请注意这里面的因果关系,一个高水平的项目设计者通常已经是代码编写相当优秀的人了,但是并不是一个代码相当优秀的程序员就可以胜任项目设计的工作,这里面存在的也不是智商和课本的问题,还是在于一个程序员在积累经验,逐步提升的时候没有意识到应当思考哪方面的东西,没有有意识的就项目的组织和复用设计进行揣摩,没有经常性的文档习惯和总结习惯, 不改变这些,我们的合格的项目设计者还是非常欠缺。
  另外,为防止有无聊的人和我较真,补充一点,本文针对目标是作商业化的软件项目和工程,那些科研机构的编程高手,比如算法高手,比如图象处理高手,他们的工作是研究课题而非直接完成商业软件(当然最终间接成为商业产品,比如微软研究院在作的研究课题),因此他们强调的素质可能是另外的东西,这些人(专家),并不能说是程序员,不能用程序员的标准去衡量。
  最后补充一点东西,一个软件项目研发的设计流程是怎样的呢?以通常标准的设计方法为例,(不过笔者喜欢快速原型法)。
• 第一个步骤是市场调研,技术和市场要结合才能体现最大价值。  
• 第二个步骤是需求分析,这个阶段需要出三样东西,用户视图,数据词典和用户操作手册。用户视图是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了很多操作方面的流程和条件。数据词典是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成了一半多。用户操作手册是指明了操作流程的说明书。  
  注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成这些,就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的,因果颠倒,顺序不分,开发工作和实际需求往往因此 产生隔阂脱节的现象。
  需求分析,除了以上工作,笔者以为作为项目设计者应当完整的做出项目的性能需求说明书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方(客户或公司市场部门)能够有真正的沟通和了解。
• 第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源要求。作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和经验教训的总结,还要重新进行详细设计的步骤。  
• 第四个步骤是详细设计,这是考验技术专家设计思维的重 要关卡,详细设计说明书应当把具体的模块以最‘干净’的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。换言之,一个大型软件系统在完成了一半的时候,其实还没有开始一行代码工作。那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。  
• 第五个步骤是编码,在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不发补丁的时候吗?从来没有!  
• 第六个步骤是测试  
  测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条 件,可以分为正常操作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。
  总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会又不可预料的问题存在。
  完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营状况并持续修补升级,知道这个软件被彻底淘汰为止。
  写这些步骤算不上卖弄什么,因为实话讲我手边是一本《软件工程》,在大学里这是计算机专业的必修课程,但是我知道很多程序员似乎从来都只是热衷于什么《30天精通VC》之类的,他们有些和我一样游击队出身,没有正规学过这个专业,还有一些则早就在混够学分后就把这些真正有用的东西还给了老师。
  fans乱嚷嚷,混淆视听,实际上真正的技术专家很少在网上乱发帖子的,如笔者这样不知天高地厚的,其实实在是算不上什么高手,只不过看不惯这种对技术,对程序员的误解和胡说,只好挺身而出,做拨乱反正之言,也希望那些还fans们能认真想想,走到正途上,毕竟那些聪明的头脑还远远没有发挥应有的价值。沉迷于一些错误人士的coding
  *****************************
  从程序员升级到工程师大多数象我这样对软件有浓厚兴趣的人,毕业后义无反顾地走进了企业,开始了程序员的生涯。那时,我们迷恋“大全”、“秘籍”一类的书籍,心中只有代码。当我看到一行行枯燥的代码变成了能够打电话的设备,变成了屏幕上漂亮的表格,变成了动听的音乐,成就感油然而生。我觉得自己也是一个出色的程序员了。在用户的机房中苦熬三昼夜解决软件的bug,也成了一种可以夸耀的资历。五年前的某一天,我把曾经让我兴奋自豪的大量代码和少得可怜的文档移交之后,来到了华为。这里有更多的年轻人,我如鱼得水,可以充分发挥自己的想象力。依然是代码,依然是匆匆地在纸上记下稍纵即逝的灵感(我们把它称作文档),依然是无休止地和bug作斗争。当有一天,一个新来 的同事拿着署着我的大名的文档,小心翼翼地来问我时,我发现自己好象有点不认识它了。我心里有点沮丧,再看看代码,发现文档上记录的一些灵感已面目全非。我当时不知道那位新来的同事感受如何,但我从那时起,好象意识到什么。现在来看,那时的很多事情都是事倍功半。
  去年年底,公司派我到印度从事项目开发,学习印度的软件开发管理方法。一种久违的冲动在心底升起。印度,我已去过两次,虽说是走马观花,但是,印象还是比较深刻。我在访问过程中和印度的工程师交流过,他们言谈中透着自信。他们给我讲解正在做的软件的测试环境,给我看他们写的单元测试文档。当我看到一个软件模块的单元测试用例有三百多页时,我觉得心里很是沉重。当我第三次踏上这片土地时,我又见到了熟悉的人们,明亮的眼睛,温和的笑容,随意的穿着,风驰电掣的摩托,还有大学校园中穿着拖鞋,手抱书本的年轻人。
  我也见到了我的项目经理,一个个子较高,瘦瘦的年轻人,据说刚从美国回来,已工作了五、六年。我听了心里很高兴,这回要一招一式地学两手。需求分析的时间是一个月,项目经理和我们(实际上代表客户 )讨论了proposal中的内容,确定每一项都是需要的。然后他把模块大致划分了一下,开始进入计划中的学习阶段。每个人在学习阶段要写出功能描述的胶片,给其他人讲解,不知不觉中,项目组的所有人对项目有了整体的了解。
  他还安排了一些培训,如他们公司的软件开发模型、项目组中各角色的定义,以后及时的培训不断,只要项目组中有需求,他总是把qa或相关的人请来,培训很专业。需求分析完成后提交了一份四十多页的文档,当我看到这份英文文档中我写的部分整整齐齐地列在其中时,我的感觉很复杂,有些喜悦,但更多的是苦涩,我以前怎么就从来没有这样做过需求分析呢。
  在我写文档的过程中,qa给我们培训过srs的写作模板,后来我还是不放心,让他们一个有经验的工程师写了一段,我们再琢磨着照着写。这份srs虽然是多个人合写,但风格一致,内容详实。更为可贵的是,一直到最后,这份需求分析的内容都没有改过,以至于我们没有机会走一下他们的需求更改流程。
  需求分析是项目的第一阶段,第二阶段的开发时间要根据需求分析的结果来确定。当对方的首席技术官(相当于我们业务部的总体组长)来和我们讨论计划时,他们已列出了对每个 模块的代码行数的预测,可能存在的风险。根据他们公司的生产率--300行/人月,他得出了项目第二阶段需要多少周。
  我们当时就提出了异议:1)公司对该项目需求很急;2)每月300行是否太少;3)我们还有下载的源代码参考。他解释说,300行/人月是使得项目能达到他们质量标准的经验数据,考虑到有源代码参考,生产率最多不能超过350行/人月。
  当他问我们公司的生产率时,我脑袋里转了三个圈,没敢多说,大概六、七百行吧。他沉默了一会儿,然后坚定地说,我们这个计划是建立在确保质量的基础上的,我想你们到印度来开发软件,首先看中的应该是我们印度公司的质量保证。我知道你们不缺乏软件开发人员,你们为什么不选择下载的软件呢。几句话说到了我的痛处,现在国内的弟兄们还在为使用下载软件移植的产品四处奔波呢!
  随后的开发活动有条不紊,我们老老实实地跟着做。系统测试计划、用例,概要设计,集成测试计划、用例,详细设计,单元测试计划、用例,编码,单元测试,集成测试,系统测试。一个完整的v模型开发过程,其中每个过程都有review。当我们对一些设计的方法不太明白时,项目经理给我们发来了相关的资料,我不知道他当时是怎么想的,一些基本的分析、设计方法是十年,甚至二十年前的软件工程书中就讲到的,印度每个计算机专业的人员都是必修这些内容的。而我们除了对一些具体协议的代码很熟之外,对这些常用的方法似乎一无所知。我感到一些羞愧,进城直奔书店,把他给我开列的书找了出来,晚上躺在床上,仔细研读,我仿佛突然又遇到了能给我指点迷津的良师益友。现在印度所已形成了强烈的学习风气。我回来后也推销了700多本书,这些书教我们如何用工程化的方法开发软件,是成为一个软件工程师必读的资料。
  我们的项目经理的计划控制能力很强,当有什么影响到项目计划的事情发生时,如人员辞职、实验室搬家、某一模块预测不准(该模块是我们预测的),他总是采取必要的措施,减少延期,调整计划。刚开始,我们对他们每天上午11点,下午4点下楼喝咖啡还有点意见,后来也跟着喝去了,原来,喝咖啡时的交流非常丰富,从项目管理到设计方法,从技术发展到风土人情,无所不包,对我们互相之间的理解,对团队的气氛很有帮助。我们项目的qa也在适当的时候出现在我们的面前,我们对她的工作只有一些感性认识。她每次参加会议时,手里时常拿着一个check list,项目经理准备相应的资料,回答一些问题,她打着勾,或写着项目经理的解释。她给我们做培训时也很耐心,体现出很好的职业素养,我至今还在怀念她给我们的帮助。
  我从事软件开发已有九个年头了,可我现在仍然不能说自己是个合格的软件工程师,更不用谈什么合格的管理者。我看到一份报道说,瑞士洛桑一权威机构把中国的科技综合竞争力从原来的第十三位调到二十多位,原因是他们调整了一些评估标准,其中有一条是中国合格工程师的可获得性非常低。想着弟兄们熬红的双眼,四处奔波升级的疲惫身影,我有一个强烈的愿望:快把我们自己升级成合格的工程师吧!

求书名!!!
补充:.NET技术 ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,