.Net程序员如何快速成长之我见

在面试一些新程序员的时候,当问他为什么选择.net方向时,经常听到一些这样的回答:记得曾经我的老师对我们说,当你在开发语

言和工具方面不知道怎么选择的时候,那么你只要跟着微软走就行了.所以最终他选择了.net.我想大家都曾有过类似的经历.

当经历过数年之后,一些人在.net的某方面成为了专家,有些人精通数据库方面,有些人精通web界面设计,有些人精通系统架构.还

有一些人是什么都会,但不管哪一方面都算不上精通.当然还有另一些人,他们没有选择.net,他们选择了java,在若干年之后,他们

说:java程序系统比.net系统更稳定之类.既然大家都是.net阵营,暂且对他们不予讨论.

 

结合自己的亲身经历,对准备成为.net程序员和已经成为.net程序员的新人一些快速成长建议

 

1.选择研究方向后不要动摇

对.net好还是java好的问题,我一向的观点是:它们都好,它们都是软件开发领域的杰出工具,它们都能够做出非常出色的系统.评价

一个系统好与不好的标准不在于开发语言,而在于系统本身,更多地在于这个系统的开发者-程序员本身.只要你是一个出色的程序

员,你完全可以用你擅长的开发语言开发出高质量的系统,而不管这种开发语言是.net还是java.而如果你过度地徘徊在研究它们到

底谁更好的时候,甚至不断地在二者之间辗转的时候,你损失的将是宝贵的时间.

 

2.尽量缩小研究范围

.net只是一个大方向,你应尽量将自己的研究范围缩小,比如专注于数据库,专注于xml方面,专注于ajax,只要你专注任何一个区域

深入研究,当你成为专家之后,都不会愁饭吃.反之如果你什么都会,而没有一样真正精通,那么你可能永远只能做一个普通程序员.

 

3.找到正确的入门方法

不管做什么事,方法很重要.特别是入门时的方法.正确的入门方法将大大加快你学习的进度.了解语言本身和前提技术是最先要做

的事情,比如你选择c#方向的asp.net,那么你必须先学习c#基础语法,和asp.net基础知识,并实际写小程序测试你学习的成果.当学

会基本语法后马上找到asp.net的官方入门指导.微软做得很好的一个地方就是他的帮助系统做得很好。新人容易入门,建议首先

从《示例和快速入门教程》开始,这个东西就在你的机子上,在Framework SDK的菜单里面。强烈建议把这个教程全部学会。

 

4.多看别人的成果(源代码)
这个很重要,如果你是一个团队的新成员,那么看他们写好的代码将是非常好的学习途径,因为那些都是成功的代码经验。如果

你还没有加入团队,是自学,那么找一个好的学习网站,多看上面的源代码也是很好的方式(这里友情推荐我自己整理的一个代

码学习网站:http://www.study-code.com ,似乎有点广告嫌疑^-^)。另外一个强烈推荐的途径:仔细研究微软的.net Starter

Kit,个人认为这是.net入门学习途中最大的收获。

 

5.敢于接受新项目挑战,敢于尝试
主动承担公司的开发任务,敢于在项目中尝试你最新的研究成果将对你自身技术水平提高带来非常大的帮助。记得当初我在做一

个建站平台项目时有过这样的经历,之前公司开发的项目大都在原有技术积累下面用成型的框架做开发,那时我也正在学习

asp.net,不过那个项目我是主程序员,因此在开发上有很大自主性。于是1.0时我尝试将所有用户文章保存在web服务器的xml文

件里,而不是像传统项目那样保存在数据库里,以希望减少web服务器和db服务器之间的数据传输。结果1.0系统实际运行时确实

达到了我的目的,虽然随着数据量的大量增加,最终导致了IO瓶颈。但通过后来对IO瓶颈的优化解决,我在文件系统、服务器进

程、xml应用、代码规范和性能优化等方面学到了很多东西,倘若当初按原来的模式写程序,将错过学习这些知识的很好机会。

 

6.不断推翻自己,敢于重构
这是对程序质量的要求,我认为只有不断地优化和改造自己的程序代码,才能最终写出高质量的程序,做出高质量的系统,最终

使自己的技术水平提高。通常我会把实现一个功能的代码量作为衡量代码质量的标准,代码越少,越精简,同时又具有良好的可

读性,就越理想。重构需要几个前提:首先是项目时间允许,然后是确实找到更好的代码组织逻辑,如一种很好的结构模式,更

合理的面向对象调用方式等等。只要找到更好的解决办法,那么勇敢地推翻原来的程序框架,重构它,经过不断地重构后,有一

天你回过头去看之前自己写的程序时会有一个感叹:哇,怎么以前我的程序写的这么烂阿:)

 

7.跟上技术更新的脚步
软件技术更新速度有时真的让人很郁闷,经常听人说,刚学会.net1.0,马上就出了1.1,1.1刚完成一两个项目,又出了2.0,用

2.0不到一年已经出了3.5,但现实就是这样,你必须得跟上脚步,当使用asp.net的时候,你就不能再像以前用asp那样去写程序

,当使用.net2.0的时候,你要敢于使用masterpage,skin去代替原来的usercontrol模式,原来的网站皮肤实现模式。而现在出

3.5了,你必须马上学习vs2008,学习Silverlight。只有跟得上技术更新的步伐,你才永远保持自己的技术领先地位。

 

以上几点建议,希望能给一些新加入的.net程序员们一些参考。

posted on 2008-07-24 17:41 新科程序员 阅读(4456) 评论(48) 编辑 收藏

评论

#1楼  回复 引用 查看   

呵呵,说的不错
2008-07-24 17:46 | love&tiger      

#2楼  回复 引用 查看   

非常赞成!
2008-07-24 17:50 | 陈超群      

#3楼  回复 引用 查看   

在一个用OO思想语言的开发团队,做过程式编程。。。。。。自己做开发也就半年时间这样,可总感觉自己没进步。LZ指导一下我的出路吧......
2008-07-24 17:51 | LanYo      

#4楼  回复 引用 查看   

受教
2008-07-24 17:51 | 石牌村夫      

#5楼  回复 引用 查看   

看到标题,我还想说,没有捷径呢。
看了内容吗,好像说的是少走一些弯路地方法,呵呵。
2008-07-24 17:53 | 金色海洋(jyk)      

#6楼  回复 引用 查看   

建议首先

从《示例和快速入门教程》开始,这个东西就在你的机子上,在Framework SDK的菜单里面。强烈建议把这个教程全部学会。


具体在哪个位置,请楼主指教
2008-07-24 17:56 | chunfeng      

#7楼[楼主]  回复 引用 查看   

@LanYo
"在一个用OO思想语言的开发团队,做过程式编程",对于一个程序员来说,这是非常郁闷的.可以说很难对自己的水平带来提高,如果你有选择开发模式的自由,那么建议你主动尝试在自己负责的程序里面使用OO结构,如果环境让你无法选择,那么建议你还是趁早选择新的环境:)
2008-07-24 18:00 | 新科程序员      

#8楼[楼主]  回复 引用 查看   

--引用--------------------------------------------------
chunfeng: 建议首先

从《示例和快速入门教程》开始,这个东西就在你的机子上,在Framework SDK的菜单里面。强烈建议把这个教程全部学会。


具体在哪个位置,请楼主指教
--------------------------------------------------------
首先需要安装Visual Studio2003或2005,装2008也行,在安装时记得选上安装.Net Framework SDK那一项,装完后在"程序"菜单的Microsoft .Net Framework v1.1(或2.0)里面就有"示例和快速入门教程":)
2008-07-24 18:04 | 新科程序员      

#9楼  回复 引用   

结果1.0系统实际运行时确实达到了我的目的,虽然随着数据量的大量增加,最终导致了IO瓶颈。但通过后来对IO瓶颈的优化解决

可否说一下如何优化的?学习一下
2008-07-24 18:05 | TKer[未注册用户]

#10楼  回复 引用 查看   

"在一个用OO思想语言的开发团队,做过程式编程",
好像大多数公司都是这样的。

5.敢于接受新项目挑战,敢于尝试

这一点,风险就很大了。虽然可以学到不少知识,我承认我也是这么学过来的,不过确实给公司带来了不少的损失。

从公司的角度来说,应该绝对不允许这样,拿新项目做实验。因为这样做风险很大,如果万一失败了,公司会损失惨重,而员工可以轻松的换个公司了事。

虽然员工会因此积累不少经验。但是公司的损失你考虑了吗?(在失败的情况下)

2008-07-24 18:07 | 金色海洋(jyk)      

#11楼  回复 引用 查看   

讲的不错,学习了
2008-07-24 18:26 | 专研.NET      

#12楼  回复 引用 查看   

楼主同志,请帮帮我吧!

我发现我对很多技术都知道做hello world级的东西,但是感觉没有一个是自己比较专的,这就让我比较郁闷了,我也想自己能够专一门啊,但是每次都是遇到新的东西由于好奇就去学那个去了,后来学了几天,把那个东西语法一看,哎,都是那几套差不多的东西,感觉也不够如此,就又放弃了。。。
一年来我就是在这种感觉中度过的,现在看了你的文章,感觉给我建议很大,但是我怎么才能改掉这浮躁的习惯,我真怕自己以后没饭吃了。。。
2008-07-24 18:51 | 把大海藏到心里      

#13楼  回复 引用 查看   

说的不错
用好.net的基础是基础知识
我也在学习中,建议很好
顶了
2008-07-24 19:07 | ...鬼少爷~      

#14楼  回复 引用 查看   

7.跟上技术更新的脚步

对于这一点,还是先等一等吧。
要学会判断,那些应该更新,哪些可以先维持现状。这个判断不好的话,那么就永远都是初学者级别的。

比如一开始是asp的初学者,然后是asp.net的初学者,再然后又是WPF、Silverlight、F#、LinQ、ORM等等,都是处于初学者的级别。

什么时候才能升级呢?换语言,换新技术 != 能力的升级。
2008-07-24 19:16 | 金色海洋(jyk)      

#15楼  回复 引用   

对于第七点,我不敢恭维。。。

基础都没打好,就追求新技术。。。

到头来,还不是被微软牵着鼻子走,技术更新那么快,你能保证你这样学精了再学其它的吗,肯定不行的,不要说学精,就说熟练应用吧,都很难

就如面试中有人会问ASP.NET的控件状态是如何维护的,你可能认为只要会用就可以了,这就是新技术,我会用新控件,但哪天你发现你的程序实在是慢如蜗牛,就知道基础的重要了

所以第七点,博主还是慎重发布,不要误了新人

个人观点
2008-07-24 19:31 | Sleet_old[未注册用户]

#16楼  回复 引用 查看   

忽略了最重要的一点,那就是基础!基础不扎实,新技术跟的再快也没用。
2008-07-24 19:35 | TerryLee      

#17楼  回复 引用 查看   

基础很重要,真的很重要。
2008-07-24 19:58 | 傲然林      

#18楼  回复 引用 查看   

6.不断推翻自己,敢于重构

这一点非常同意,重构是技术升华的最短路程。
2008-07-24 20:03 | 5207      

#19楼  回复 引用 查看   

写得很好!
我认为成为好的程序员,有两个必备条件:
1.扎实的基础(理论。包括数学基础、数据结构与算法、软件工程理论等)
2.丰富的实践经验
2008-07-24 20:17 | T2噬菌体      

#20楼  回复 引用   

只精通一项,并不能帮助你在找工作上处于优势。相反,楼主说的“有一些人是什么都会,但不管哪一方面”更有优势。
2008-07-24 20:26 | leleroyn[未注册用户]

#21楼  回复 引用   

软件职业真的很迷茫,这些年薪水上涨远远跟不上其他职业,追赶技术到什么时候啊!真能追到50岁?北京是中国软件中心,还好一些,广州发展慢,连大点的软件公司都难找.想自己出来找一个行业做自己的软件,又没有经济基础.呵
2008-07-24 20:59 | legahero[未注册用户]

#22楼  回复 引用 查看   

好的程序员,要有点天赋才行的。
2008-07-24 21:59 | 金色海洋(jyk)      

#23楼  回复 引用 查看   

不错,帮助很大,谢谢楼主了
2008-07-24 22:24 | 张跃      

#24楼  回复 引用 查看   

楼主说的7点大部分还是不错的
坚定、重构、挑战,非常重要
但个人对2、5有些看法
2、尽量缩小研究范围
也不是不对,但一定要有广泛的基础和眼界之后,再进入这个层次
7、跟上新技术
上面有很多童子说了,基础,基础才是王道。
.net自从2.0之后,已经没有什么新东西了,因为IL一直没有改变。现在很火的linq,我看了两眼就没兴趣看下去了。新人难免会追逐新技术甚至舍本逐末,但老人应该向他们强调基础的重要性。
2008-07-24 22:28 | 阿多斯      

#25楼  回复 引用   

对于这个问题, 没有一直编程到50岁的人是说不上来的.
编程语言本来就是一个描述性的东西, 学不好, 学得慢, 说明思考你的方向有问题.
技术是什么, 是用一系列的方法来实现某种东西, 难学吗,其实不难, 但你能开发出来吗, 能自己想出来吗. 这个就是灵活的运用基础, 凌驾与数字之上了.
其实你就是在操作数字而已.
2008-07-24 22:48 | saxonkkk[未注册用户]

#26楼  回复 引用 查看   

我觉得 不论是不是.NET
应当把自己当成一个“编程者” 一个真正的利用代码创造价值的人,一个研究计算机的人
对于 2
喜欢一个T型理论 知识面要广 像那一横 某一方面要精 像那一竖
2008-07-24 23:00 | Yannic Yang      

#27楼  回复 引用 查看   

--引用--------------------------------------------------
Sleet_old: 对于第七点,我不敢恭维。。。

基础都没打好,就追求新技术。。。

到头来,还不是被微软牵着鼻子走,技术更新那么快,你能保证你这样学精了再学其它的吗,肯定不行的,不要说学精,就说熟练应用吧,都很难

就如面试中有人会问ASP.NET的控件状态是如何维护的,你可能认为只要会用就可以了,这就是新技术,我会用新控件,但哪天你发现你的程序实在是慢如蜗牛,就知道基础的重要了

所以第七点,博主还是慎重发布,不要误了新人

个人观点
--------------------------------------------------------
支持Sleet_old的观点。

什么都要从基础开始,如果连简单的数据结构及算法都不懂,连引用传值以及参数传值他们内部的机制都不懂,追求那些看似很时尚很前沿的技术,比如LINQ,WPF,WCF,可能真的会让你的程序慢蜗牛,就知道基础的重要了。

这也是我个人的观点。
2008-07-24 23:28 | HappyQQ      

#28楼  回复 引用 查看   

很有启发!!
2008-07-25 08:16 | 雅阁布      

#29楼  回复 引用 查看   

--引用--------------------------------------------------
leleroyn: 只精通一项,并不能帮助你在找工作上处于优势。相反,楼主说的“有一些人是什么都会,但不管哪一方面”更有优势。
--------------------------------------------------------
楼主说的第二点:尽量缩小范围。

我提出我的意见:现在做软件是分行业的。技术始终是为业务服务。别的行业不谈,就erp行业,也得先选中一行。很多业务人员拿的钱是开发经理的n倍。为什么,就因为人家是业务行家。物流行业,制药行业,医院行业,电力行业等等,应该选择一个行业深入下去,所有的.net技术要为这个行业软件的开发做服务。要想往上走,必须是业务专家,否则薪水很难上去。
2008-07-25 08:20 | 完全实况      

#30楼  回复 引用 查看   

--引用--------------------------------------------------
金色海洋(jyk): 好的程序员,要有点天赋才行的。
--------------------------------------------------------
不认同,我觉得绝顶高手才需要天赋,好程序员需要勤奋和锲而不舍。
2008-07-25 08:52 | xjb      

#31楼  回复 引用 查看   

哪一个专家不是知识渊博,不能拘泥于小的方面,每个人可以有自己的专长
2008-07-25 09:02 | 紫色阴影      

#32楼  回复 引用 查看   

对于第七点,很多都是学得没有他出得快!
2008-07-25 09:02 | 随风逝去(叶进)      

#33楼  回复 引用 查看   

@随风逝去(叶进)
反正我觉得我是有点赶不上节奏。
2008-07-25 09:31 | i.Posei      

#34楼  回复 引用 查看   

你想选什么就选什么啊
工作了,你可以说了算吗
公司有桌面的项目
你就winform了,有web的项目,你才可以webform了
你有那么多的选择吗
公司都是有什么做什么的
2008-07-25 09:33 | virus      

#35楼  回复 引用 查看   

也要看做哪方面的开发,是winform开发还是web开发,个人认为看天轰川的教程和看博客园对入门比较好,之后了解了再专攻,不然你开始就说我想攻数据库啊,而实际你根本对数据库了解不是很对,对ADO.NET也不是很了解.有些东西还是要跟实际代码结合的.有一点很重要,就是要敲代码不要光看代码,没用的.
2008-07-25 09:36 | 火无极      

#36楼  回复 引用 查看   

1,3,4,6赞成
2,5,7觉得不妥。
2.尽量缩小研究范围
既然选定只做.net,那么在这个领域里,你就不能画个圈子把自己限制死了,你不能说你只作asp.net,那么winform,windows服务,命令行程序,你就不关心了,必须在有所侧重的情况下,尽可能多了解一些知识,不要求很深入的了解,但是要摸对深入研究的门路,将来要做这方面的开发可以很快速的切入。
5.敢于接受新项目挑战,敢于尝试
敢于接受挑战是好事,但是敢于尝试我是不推荐的,绝对不要拿公司的项目做小白鼠做实验,公司项目是用来给你发工资的,不是你的试验田,那你的例子说事。
-------------引用--------------------------------------------
不过那个项目我是主程序员,因此在开发上有很大自主性。于是1.0时我尝试将所有用户文章保存在web服务器的xml文件里,而不是像传统项目那样保存在数据库里,以希望减少web服务器和db服务器之间的数据传输。结果1.0系统实际运行时确实达到了我的目的,虽然随着数据量的大量增加,最终导致了IO瓶颈。但通过后来对IO瓶颈的优化解决,我在文件系统、服务器进程、xml应用、代码规范和性能优化等方面学到了很多东西,倘若当初按原来的模式写程序,将错过学习这些知识的很好机会。
-------------------------------------------------------------
你拿公司的项目做实验啊,把用户文章保存到xml文件仅仅是为了让你学习文件系统、服务器进程、xml应用、代码规范和性能优化?你这个做法很危险,小项目无所谓,大项目这样做是要出生产事故的。技术上这也是个很危险的选择,放在xml文件里好做备份吗,可以做到增量备份吗,将来数据量大了如何保证读取xml文件的稳定性,xml文件将来可以做集群吗。这都是你处理不了的,有的东西该放数据库就放数据库,速度慢了你要去找原因,而不是用这种超常规方法解决。
7.跟上技术更新的脚步
适当跟进即可,旧知识都没有消化好,就急急忙忙学新东西,东西掌握的都不深入,你永远是个新手,新知识只要保持一定的关注即可,没必要马上学会。
2008-07-25 09:42 | kiler      

#37楼  回复 引用 查看   

受教了
2008-07-25 10:09 | DaveLin      

#38楼  回复 引用 查看   

@kiler
昨儿面试别人就问我数据为什么不存储在XML中呵呵,可惜当时大哥的这个回复还没,要不然嘿嘿。
2008-07-25 11:55 | 留恋星空      

#39楼  回复 引用 查看   

@kiler
昨儿面试别人就问我数据为什么不存储在XML中呵呵,可惜当时大哥的这个回复还没,要不然嘿嘿。
@留恋星空
以后面试问我数据为什么不存储在XML中呵呵,有了大哥的这个回复,嘿嘿...
2008-07-25 12:33 | 斧头帮少帮主      

#40楼  回复 引用 查看   

@留恋星空

数据库存储数据说白了也就是IO操作,和xml保存数据方式也没太多的差异,但是一点,你的代码能比人家做数据库软件的人的代码写的好?不可能。说实在话,一般情况下xml也就是保存点基础配置信息,用来保存业务数据实在是得不偿失。
2008-07-25 12:50 | kiler      

#41楼[楼主]  回复 引用 查看   

@kiler
看得出你是资深专家.确实,xml方式在后期遇到很大瓶颈,甚至出现莫名数据丢失的情况,最终仍然选择用回数据库.并且为了解决大容量数据(千万级数据),还使用了水平分表的方式.但是仍然相信那是一个宝贵的尝试,是将学习成果应用于实际项目的好例子.倘若工作中没有这种敢于尝试新思路的心态,那么我相信他的技术水平永远只能"小心翼翼"地缓慢爬升.
当然,这种尝试必须是在可控制的范围内,如果你面临的是一个有严格开发时间限定的重要项目,或者是必须保证质量和安全的重要项目(如金融类),那么这种尝试必须建立在你和你的团队有充分信心保证的前提下.由于当时我那项目是新项目,并且我是开发负责人,时间上我有充分把握,所以我可以大胆尝试我的想法:)
2008-07-25 13:18 | 新科程序员      

#42楼  回复 引用 查看   

讲的好!
我也是刚刚入门不久的.NET程序员,我对数据库访问那块比较感兴趣,楼主讲得很有道理,.net是一个大方向,所以我要专门研究数据库访问那块,不段的提高自己!
楼主说的那些方法有很多我都赞同!谢谢
2008-07-25 13:22 | Cien      

#43楼  回复 引用   

是这样吗?
2008-07-25 13:29 | elsee[未注册用户]

#44楼  回复 引用   

面试关怎么过

谁坚持asp,不进园子
2008-07-25 13:30 | elsee[未注册用户]

#45楼  回复 引用   

◎7,简直胡说八道。盲目跟潮流,累死你,永远被工具所奴役,微软最乐意见你这种人了。要学别人的思想。
2008-07-25 14:21 | 胡说八道2[未注册用户]

#46楼  回复 引用   

做dotnet太累了,转行搞嵌入式吧

#47楼  回复 引用 查看   

我爱你楼主!
2008-07-25 22:37 | SuperWulei      

#48楼  回复 引用 查看   

很不错,读后有很多帮助 谢谢
2008-09-08 23:39 | Sky-yu      

导航

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

公告

昵称:新科程序员
园龄:6年6个月
粉丝:0
关注:0

搜索

 
 

常用链接

最新随笔

我的标签

随笔档案

文章档案

相册

链接

收藏

积分与排名

  • 积分 - 5284
  • 排名 - 12881

最新评论