随笔-137  评论-1674  文章-1  trackbacks-63

    看了.Net程序员如何快速成长之我见一文,本人有感而发,想唠叨几句.

   

    我觉的程序员的成长速度取觉于两点:


    第一:基础知识.
    第二:后天的努力.


    本人以一个例子说明基础知识对于程序员发展的重要性:


   分油问题:


   两个小孩去打油,一人带了一个一斤的空瓶,另一个带了一个七两和一个三两的空瓶。原计划各打一斤油,可是由于所带的钱不够,只好合打了一斤油,在回家的路上,二人想平分这一斤油,可是又没有其它工具。现只用这三个瓶子(一斤、七两、三两)精确地分出两个半斤油来。


   当时我看到这个问题,在纸上画了一阵,一头雾水.最后只有放弃,正确的答案思路是这样的:


   通过分析题目并结合深度优先、广度优先和迭代加深搜索的算法的特点以及有缺点,这里选择广度优先算法来求解该分油问题。如果采用深度优先算法搜索,由于其盲目性导致搜索陷入局部陷阱,并不一定能求得解即使得到解也不一定是最优解,因此并不采用此算法。迭代加深搜索则是在固定的深度上进行深度和广度搜索结合的策略来进行搜索,这样避免了单一的深度搜索无法得到解的缺点,但是找到的解并不一定是最优解。广度优先以牺牲空间代价和时间代价来换取保证取得最优解。由于该问题并不复杂,即使使用广度优先算法也不会占有太多的空间和时间,因此为了取得最优解这里选择广度优先算法来求解。

  
    原来是应用了数据结构中的算法.如果你在大学期间没有上好数据结构这课的话,这个问题要想解决可能存在不小的问题,起码本人就是其中的一个.

 

   本人是自考出生,学习期间难免没有正规在校学生学的系统,起码学习环境上比较差.学习期间学了C,数据库原理,数据结构,但印象都不深,自己根本就不太会编写C程序,只是明白些基本的语法.至于数据结构这方面当然就只算是听过课,谈不上理解,更谈不上实际应用.例如比较经典的算法题;大牛生小牛的问题,如果你对递归算法没有特别深入的理解的话,你很难想到用递归算法去解决。想到用什么方案后,你的问题基本已经解决一半.

 

   在一次去书店的时候,我发现在有的书名叫asp.net,我觉的好奇,因为我学的是ASP,觉得asp.net非常有意思,当时看了下内容,一下子就被DataGrid强大的功能给征服了,因为我发现用DataGrid可以非常方便的实现分页,当时马上决定学习.net,就这样我开始认识.net,当然主要是ASP.NET这方面.


    刚开始在工作中应用DataGrid,分页特别爽,不用写太多的代码,后来同事告诉我说这种要页方式不好,是假分页。后来经过指点才知道,DataGrid分页的原理,知道了它的原理后你才知道它的优点和缺点,才能写出以后的自定义分页。.net编程并不是简单的拖放几个服务器控件,要清楚服务器控件是如何运行的,如何自定义服务器控件,以及扩展原有的控件。


  在我后来的学习当中让我明白了一个道理,基础太重要。如果你对OOP,OOA,OOD不是特别了解的话,你很难写出扩展性强,维护性,可阅读性强的程序.


  现在很多的技术虽然我会,但是不一定能够用书面的方式描述清楚,因为缺少理论知识.这让我想起了有人说学校的知识没有的话,其实并不然,学校学的固然不能当饭吃,但它是一个重要的思想,只有具备了这种思想人才具备解决某种问题的能力.就像上面打油的问题,如果你对那些数据算法不太清楚的话,想找出答案我怕花的时候会多很多,想对了方向才会事半功倍。


   在原文中提到了一点:2.尽量缩小研究范围


   本人有自己的观点:觉得要看你所处的环境。


   如果你身在一个大公司,开发的都是特别大的项目,团队成员多,而且技术都强,那么你此时就要缩小研究范围,只有你在某方面有成就你才有生存的空间。


   如果你身在一个小公司,团队就那么几个人,这时,你必须会相对多的技术,小项目用的技术可能会非常多,但不会太难,太深,太复杂,所以会要求你的知识面广但并不要求特别精通。


   所以我觉得要根据自己当下的项目开发环境,决定你研究的知识范围。 

 

  在原文的评论中,大家对于程序追求新技术给出了相应的看法,认为不要盲目的去追求,掌握现在技术的同时关注新的技术。我个人也非常认可。


   本人自我觉得是个对新技术特别热衷的程序员,有什么新的技术书籍出来了我都会去买,但往往因为和实际开发环境不太匹配,说白点就是有的项目根本就用不上,这样会大大的降低我学习的积极性。所谓实践出真知,老是写demo......,而且新技术的速度太快,人非圣人,我想大部分分程序员都不可能全学会。况且如果你什么都会的话,那团队就失去它的作用了。一味的追求还会出现园友们说的现象,每种技术都停留在表面,每方面都是学而不精。

 

  注: 本人文笔不太好,只想和大家讨论下程序员成长的经历.

Tag标签: C#,.NET
posted on 2008-07-25 16:05 姜敏 阅读(2137) 评论(50)  编辑 收藏 网摘 所属分类: ASP.NET2.0

评论:
#1楼 2008-07-25 16:10 | 个人知识管理      
和PKM相关,顶一下
  回复  引用  查看    
#2楼 2008-07-25 16:16 | 安眠花      
看得出楼主也是经过不少历练,否则写不出这样感受的文章。

其中的观点我大部分都同意。

IT人的确不是简单的职业,有压力,而且很累人。

祝楼主事业一帆风顺,祝大家编码愉快!

  回复  引用  查看    
#3楼 2008-07-25 16:16 | xinyu[未注册用户]
程序员的成长和所处的身存环境也有直接的关系,很多在三线城市的程序员,只能生活在城市的底层,只能维持基本的生活。
  回复  引用    
#4楼[楼主] 2008-07-25 16:18 | 姜敏      
@安眠花
谢谢,共同进步

  回复  引用  查看    
#5楼 2008-07-25 16:20 | Allie      
-,,-我就是3线的 前途坎难啊!
  回复  引用  查看    
#6楼[楼主] 2008-07-25 16:25 | 姜敏      
@xinyu
------------
程序员的成长和所处的身存环境也有直接的关系,很多在三线城市的程序员,只能生活在城市的底层,只能维持基本的生活。
-------------
强烈同意,如果你老做小项目,你的知识面也不见的会有多高.

  回复  引用  查看    
#7楼 2008-07-25 16:28 | 真见      
我也是在成长中,只是现在把新技术看得太重,以至于基础的东西都不知道。
  回复  引用  查看    
#8楼 2008-07-25 16:31 | 毁于随      
非常有同感.
  回复  引用  查看    
#9楼[楼主] 2008-07-25 16:32 | 姜敏      
@真见
我个人的经验是:当时学习新技术的时候,会发现其实技术不管怎么发展,基本原理都是差不多的,例如控件,无论是用户控件还是服务器控件,它们最终都是生成html代码.

  回复  引用  查看    
#10楼 2008-07-25 16:38 | love&tiger      
哪一样也学不好
  回复  引用  查看    
#11楼 2008-07-25 16:47 | 王孟军!      
对,基础
  回复  引用  查看    
#12楼 2008-07-25 16:48 | 石牌村夫      
受教了~~
  回复  引用  查看    
#13楼[楼主] 2008-07-25 16:49 | 姜敏      
希望后天的努力能够弥补之前基础的缺陷
  回复  引用  查看    
#14楼 2008-07-25 17:00 | 陈晨      
"学校学的固然不能当饭吃,但它是一个重要的思想,只有具备了这种思想人才具备解决某种问题的能力"
---------------------------------------------------------
非常赞同这句话,很多人认为在学校没学到什么有实际价值的知识
其实不然,你已经学到了最有价值的知识,解决问题的思想和学习的能力

  回复  引用  查看    
#15楼 2008-07-25 17:02 | 海风1998      
虽然学过数据结构,但是还是不会解上面的分油问题.
  回复  引用  查看    
#16楼[楼主] 2008-07-25 17:04 | 姜敏      
@陈晨
同感.所以本人一直为自己没有上正规的大学而感到遗憾,虽然通过了自考

  回复  引用  查看    
#17楼[楼主] 2008-07-25 17:05 | 姜敏      
@海风1998
可能会有别的好的解决方案,上面的解决方案只是建议方案,没想到可能是你有别的思路吧.

  回复  引用  查看    
#18楼 2008-07-25 17:11 | 留恋星空      
@真见
米事的时候可以多去面试面试,被人蹂躏得多了,基础也就扎实了,今天去一家公司做的几道题,理论题差不多全是网上的,只是几个代码问题比较搞,主要是有些基本概念没有认真理清楚,所以就.....

  回复  引用  查看    
#19楼 2008-07-25 17:14 | 火无极      
不完全苟同
  回复  引用  查看    
#20楼 2008-07-25 17:14 | kiler      
兴趣才是一个优秀程序员必备的要素,没有兴趣,什么都别说。
  回复  引用  查看    
#21楼[楼主] 2008-07-25 17:23 | 姜敏      
@kiler
既然是选择了程序员这条道路,肯定是有兴趣的,至少在刚开始的时候会有.

  回复  引用  查看    
#22楼 2008-07-25 17:29 | kiler      
@姜敏
有很多从业人员对开发也只有这么多兴趣,有多少人愿意一直踏踏实实的写程序呢?有多少人都无时无刻不在想着将来转行做管理呢?如何一个人真的愿意一直踏踏实实写程序,那他成为一个高手也并非难事。

  回复  引用  查看    
#23楼 2008-07-25 17:37 | 火无极      
我同意楼主的说法,基础和思想很重要。基础是学来的,但是思想不是,如果认为思想是学来的就错了,思想是悟出来的。思想不是从学校学来的,是从生活中悟出来的,体验生活,领悟生活。
我不是计算机相关专业毕业的,你上面说的那些深度优先、广度优先和迭代加深搜索的算法,我都陌生。但是那个打油题我花30秒不到就做出来了。
题目的意思就是10L的满油,3L,7L的空桶,要分成两份,也就是两个5L。想怎么得到这个5L呢?一个10L的肯定不会自己变成两个5L的,只有通过3和7的帮助,我们想到小学算术,5=3+2,5=7-2;关键是要多出一个2L的油,2L的空间。先10->7,那么7L是满的,7->3,3->10,7->3,3->10,7->3看清楚了吧,这一轮下来,7是空的,10里有9L油,3里有1L,剩下的还要我说吗?9-7=2,就满足了我说的5=3+2;还有一种,3里空2L在,不是么,也满足了我说的5=7-2;那么这两种方法都可以。
我还读小学二年级的时候就卖蜡烛,到五年级遇到这样的打油,几下就出来了。
如果单是在学校学什么加减乘除,那肯定是不行的。
思想源于生活,基础来自学校。
还有,我是相当同意楼主说的,基础和思想很重要。我就是差基础啊。貌似楼主给的打油的例子不是很有说服力啊,呵呵。
我没有拆台的意思啊,我同意楼主的很多想法,呵呵。
顶楼主!

  回复  引用  查看    
#24楼 2008-07-25 17:39 | 火无极      
我的也只代表我的个人想法啊!呵呵
不可以误导大家。

  回复  引用  查看    
#25楼 2008-07-25 17:40 | CoderZh      
总结的不错,但不是所以观点都赞同

  回复  引用  查看    
#26楼 2008-07-25 17:42 | 预备役中尉      
可怜的我,所谓的技术永远停留在那些所谓的基础知识上.
  回复  引用  查看    
#27楼[楼主] 2008-07-25 17:46 | 姜敏      
@火无极
你仔细分析过你的答案吗?
-------
10里有9L油,3里有1L,剩下的还要我说吗?9-7=2
-------
按你说的此时如果进行9-7,则此时,10L 里面有2L,7L里面有7L,3L里面有1L,
下一步你如果得到一个3L呢?

  回复  引用  查看    
#28楼[楼主] 2008-07-25 17:47 | 姜敏      
不要讲的太快哟,而且你这种方法纯属推理,如果你推理正确而且快速,那只能说明你太聪明.如果用计算机实现呢?
  回复  引用  查看    
#29楼 2008-07-25 17:51 | 火无极      
7可以把3到满,3里空2L在,那么3满,7是5L.你也说了10有2L,3的倒到10里就有5L.
我没别的意思,真的是小学算术,要是要我算什么积分什么的,估计就不好搞.呵呵

  回复  引用  查看    
#30楼[楼主] 2008-07-25 17:56 | 姜敏      
按你说的此时如果进行9-7,则此时,10L 里面有2L,7L里面有7L,3L里面有1L,
3L是只有1L啊,并不是2L,你仔细分析下看看.

  回复  引用  查看    
#31楼 2008-07-25 17:57 | 火无极      
我认为只有像汉若塔那样复杂的算术才会来想到计算机实现,这个打油就没必要了吧?真要我用计算机实现,我感觉比汉若塔还难,跟你说一样,我基础太差了,呵呵.

  回复  引用  查看    
#32楼[楼主] 2008-07-25 17:58 | 姜敏      
啊,是我错了,你的推理是正确的,哈哈,见笑了.我也没有仔细推理过
  回复  引用  查看    
#33楼 2008-07-25 17:58 | 火无极      
3里与1L,就说明他空2L啊
  回复  引用  查看    
#34楼[楼主] 2008-07-25 17:59 | 姜敏      
对的对的,看来你的数字应该不错.
  回复  引用  查看    
#35楼 2008-07-25 18:00 | 火无极      
呵呵,你写的很不错,再顶下,以后多看你们的文章,下班喽,吃饭去啦
  回复  引用  查看    
#36楼 2008-07-25 18:08 | 金色海洋(jyk)      
在我看来,一个是天赋,一个是兴趣,还有就是成就感。

为什么有人觉得写代码太枯燥?为什么有人中途转行?

有点天赋,会对编程自然而然的产生兴趣,去写第一段代码;

写成功了之后会有一种莫名的成就感和兴奋感,推动继续写程序。

然后在实践中发现自己的不足,才会去恶补基础知识。

看到和别人的差距,才会更加的努力。而努力的动力是——成就感。

我已经好久没有成就感了,因为我现在是为了生存而写代码。


  回复  引用  查看    
#37楼 2008-07-25 18:14 | 金色海洋(jyk)      
@火无极
思想确实是悟出来的,那么是怎么悟出来的呢?靠灵感,和天赋。呵呵。

@lz
你的分页控件是什么样子的呀,能不能拿出来共享一下呢,我这里有一个,开源了,http://www.cnblogs.com/jyk/category/135294.html" target="_new">http://www.cnblogs.com/jyk/category/135294.html

  回复  引用  查看    
#38楼 2008-07-25 19:16 | prime.li      
1. 跟进新技术没什么不对,不对的是盲目崇拜。
新技术都是基于老技术上的改进或者创新,全用老技术也能实现,只不过麻烦了。而且,有了深厚基础,学习新技术根本不需要太长,c#3有点经验的学会不超过3天(给linq2天,其他1天)。当然,WCF,WPF,Silverlight这种框架级别的需要个把月。可以做做demo,等到需要用了,边做边学,很快的。
2. 本科学的那些东西,根本不需要4年,太荒废了,2年足够了。在校更多的时间花费在无用功上,比如,聊天,游戏,泡论坛,拍拖,唠嗑等等。而且老师教的明显都是入门级,根本都不深入,甚至他自己估计都不懂,只知道教条主义,那我还不如自学呢,看的更快。
本科教育重点不在知识,而在能力,而且不局限于专业技能。工作以后你就发现,用到的不是那些遗忘的知识,而是4年培养的能力,包括交际、口才、思维等等。然而这些能力,都不是能教出来的。
研究生教育就是从事科研,一般都是搞出个什么发明或者理论。不过跟软件开发关系不大,与其花费3年混个文凭,还不如踏踏实实提高工作经验来的好。
3. 术业有专攻。.net包涵面很大。等我们基础打牢后,就需要注意选择研究方向了,比如数据库,Web开发,桌面开发,开源软件,架构设计等等都是可选方向。这些都是高薪的基础。
4. 算法是程序的核心,而思维是算法的核心。做ACM题目是很好,可意义不大,实际中更多的是非数值计算和熟悉各种类库,至于高效、核心算法就让牛人写吧,看不懂也没关系,知道怎么用就成。我们搞应用的,就是要知道怎么用才能达到最好的效果。算法本身不重要,重要的是思维,学会了思维,我们可以用到很多地方,不仅仅局限于某道题目或者某一类问题。

5. 多交流,一个人学习很艰苦,而且会有很多误解。而大家一起互相学习,提高很快。真知就在思想的激烈碰撞中产生。

PS:欢迎大家反驳我。

  回复  引用  查看    
#39楼 2008-07-25 19:49 | 金色海洋(jyk)      
聊天,游戏,泡论坛,拍拖,唠嗑

这些都是交际、口才、思维呀。


  回复  引用  查看    
#40楼 2008-07-25 20:02 | prime.li      
@金色海洋(jyk)
在学校时候你QQ聊天会像在博客园一样谈论技术么?我想更多学生是瞎侃吧,一般都是发个新闻,然后大家胡侃,然后发个图片大家乐呵乐呵的。这能锻炼个啥啊。
我倒是觉得参加课外活动可以锻炼能力。
游戏就不说了,泡论坛不是指博客园,而是天涯那种,很YY的。
拍拖嘛,这个不好说。每个人有自己的看法。
我指的唠嗑是没事干的时候,各自互相瞎掰,”那个老师上课可恶心了,老是点名……“之类的。

有些教授和研究生真是越来越不像话了,花费大量物力财力,研究出来了”上海话输入法“,真是吃饱了撑的。

  回复  引用  查看    
#41楼 2008-07-25 22:30 | 金色海洋(jyk)      
我现在就不会瞎侃,在聚会的时候就是听别人说,我一句都插不上。

别人问我,你怎么不说呢?我说什么呀,什么都不会说呀,要是问我写程序方面的,我倒是能说点,呵呵。

陪领导、陪客户吃饭就更郁闷了,不会喝酒、不会敬酒、基本上就和一木头是的,呵呵。

如果当初能在大学的时候锻炼锻炼就好了。要说拍拖嘛,那就更后悔了,至今我还没有女朋友呢。

  回复  引用  查看    
#42楼 2008-07-25 23:13 | barney      
建议楼主 用C# 把程序写出来 !!嘿嘿!!
  回复  引用  查看    
#43楼 2008-07-26 14:46 | 金金      
@prime.li
2. 本科学的那些东西,根本不需要4年,太荒废了,2年足够了。在校更多的时间花费在无用功上,比如,聊天,游戏,泡论坛,拍拖,唠嗑等等。而且老师教的明显都是入门级,根本都不深入,甚至他自己估计都不懂,只知道教条主义,那我还不如自学呢,看的更快。
本科教育重点不在知识,而在能力,而且不局限于专业技能。工作以后你就发现,用到的不是那些遗忘的知识,而是4年培养的能力,包括交际、口才、思维等等。然而这些能力,都不是能教出来的。
研究生教育就是从事科研,一般都是搞出个什么发明或者理论。不过跟软件开发关系不大,与其花费3年混个文凭,还不如踏踏实实提高工作经验来的好。

5. 多交流,一个人学习很艰苦,而且会有很多误解。而大家一起互相学习,提高很快。真知就在思想的激烈碰撞中产生。
赞同啊,说到咱们心里去了

  回复  引用  查看    
#44楼[楼主] 2008-07-26 17:08 | 姜敏      
@金金
---------
研究生教育就是从事科研,一般都是搞出个什么发明或者理论。不过跟软件开发关系不大,与其花费3年混个文凭
-----
有时候文凭还是相当重要的

  回复  引用  查看    
#45楼[楼主] 2008-07-26 17:12 | 姜敏      
@金色海洋
--------
不会喝酒、不会敬酒、基本上就和一木头是的
--------
和你的性格差不多

  回复  引用  查看    
#46楼 2008-07-26 17:19 | goal[未注册用户]
我觉得大学教育不是注重学甚么,而是注重于学会怎么学,也就是领悟一套适合自己的学习方法。

  回复  引用    
#47楼 2008-07-28 15:32 | 茶茶v3[未注册用户]
又是一基础差的飘过
  回复  引用    
#48楼 2008-08-13 19:36 | 吴刚      
大学的学习对你的帮助会很大的,不管你学到什么或者什么都没学到,对你的成长都是一个拐点,不管如何你都是跟全国思想最活跃的人群在一起生活了四年.
如果说你在大学里什么都没学到,你会来这里发牢骚,你现在就会更上进,学习工作更积极,从某种程序来说对你来说也是很大的激励;如果你在大学里学得好,那对你以后的学习工作将更有利.
大学里教会我的就两个字----自学.

  回复  引用  查看    
#49楼 2008-08-18 17:00 | hoodlum1980      
@吴刚
------
觉得这番话说的还是有点道理。其实在学校里的时候就见惯了一些大学无用论的论调,什么上了大学毕业后照样找不到工作呀,大学生卖猪肉啊,工资还不如小学毕业的老板啊,等等,其实更多情况可算是一种自我安慰。个人感觉,大学生活确实是一个人一生中极其重要的经历。从我自身来看,作为得到赖以谋生的职业技能,最重要的获取阶段都是在本科期间。在校园里是一种比较自由的成长阶段,并且在你周围是比较活跃的思想和群体,这种氛围会影响和塑造一个人的特质,如果主动去获取,将对自身极为有益。

  回复  引用  查看    
#50楼 2008-10-22 15:50 | 无澍      
一味的追求还会出现园友们说的现象,每种技术都停留在表面,每方面都是学而不精。
===感觉楼主这句话说得好,每个人的精力是有限的,虽然像当全才的愿望是美好的,但是毕竟没有那么多的时间,精力,咱们搞技术的大多内向的(也有外向的),在搞技术的时间外也要多多与人打打交道,培养兴趣,扩大社交范围,不要一味追求技术
==(晕,刚刚把自己上边的留言看看了,汗~~自己都不知道要表达什么了)

  回复  引用  查看    
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1251430




相关文章:

相关链接: