.NET社区面临的问题及其对策

  如今的.NET社区,特别是国内的.NET社区面临诸多问题,本文将一一例举.    很多人误认为“.NET门槛低”
    首先我来解释下门槛到底是什么意思,网上找了个标准解释,门槛是门框下端的横木条、石条或金属条.门槛高低本意是说要进入这个门需要多大力气,引申 意是说进入一个行业、学会一门技能的难度.你可以说.NET是个技能,.NET是个平台,那作为一个技能、一个平台,.NET好学吗?说实话,我一开始觉 得.NET不就是一个几门语言(C#, VB.NET, J#)都能随便用的玩意吗?但越学越发觉很多东西不是那么回事,越学越觉得很多东西其实并不懂,就是这种感觉,所以呢,我觉得门槛并不低.我就没搞懂,为 啥这么多人觉得.NET入门简单了,你们说的入门到底指啥?会写console?会写winForm?会写个排序?我对入门的理解是对大部分需求场景能够 经过少量时间的研究学习后进行处理,基本不需要别人帮助,如果用HR的话来说是熟悉,谈不上精通,但绝对不是了解、知道,那种写个hello world在我看来,连知道都谈不上,这谁不会写?!更何况.NET基本上2年就有一次大更新,当我们还沉浸在.NET 2.0的时候,微软已经出了3.0, 4.0,大量的概念引入,这么多东西你都知道个1、2、3了?我不信.怎么没见中国有几个大牛写出标志性的.NET开源应用呢?当然啦我不想一竿子打死一 批人,有还是有的,但确实比较少,比如Teddy Ma的NBear(当年可是很火的ORM哦~).
    同时我要澄清下,我说.NET门槛不低,不等于我说其他语言门槛低,或者.NET门槛很高,我觉得语言的门槛都差不多,希望大家不要误解,语言这东 西学到后面会发觉不懂的越来越多,这叫越学越觉得自己无知,入门没个5成功力请不要说入门.其实门槛高一点并非坏事,对自己严要求没错,也可以适当提高自 己的竞争力,否则你和那些没入门的有何区别?也请张子阳不要曲解我的意思,更不要走极端说要和JR水平一样,这话实在说的搞笑了点.国外牛人还是很多的, 只是你我都攀不上,好吧,这有点扯远了!
    解决方案:重新评估你自己的.NET水平,当然不一定要纠结入门不入门,但一定要清楚自己知道了哪些东西,不知道哪些东西,该学习哪些东西..NET作为一个平台,绝对是博大精深的.
    行业纵身不够,很多行业都被其他语言霸占
    这个问题我想大家经常看职位描述(JD)就明白了,基本上.NET的职位要比Java职位少掉一半,很多行业如电商、物流、能源、金融基本都是 Java的天下,那.NET在干嘛呢?真的是少数公司在用,很多公司即使用.NET也是辅助,比如测试代码用.NET写,比如用.NET做前端,后端用 Java或者C++(比如Morgan Stanley用WPF做前端,后端据说是C++)(老赵,关于大摩,你比较有发言权,可以适当介绍下)我群里有兄弟说以前京东是用.NET的,现在改 php了,看样子又是一个失败案例.
    解决方案:暂无,这靠我们这种草根程序员基本是不可能改变的,需要巨头来带动需求并进行市场营销,这一点微软一 直做得一般,希望微软能够想办法改变这种局面.当然啦,架构师在公司内部也可以顺理成章的刮起一股.NET风,当然要选择适当的时机,切不可硬上,切忌. 搞不好,.NET没转过去,把客户搞丢了,那就搞大了.我们公司就有个有趣的案例,本来都转Java了,结果我们Team的系统当年Java的版本转了两 次,上去就挂了,结果客户抱怨很严重,说得难听点就是你再转我就跟你合作了,从此以后再没有人敢提转Java,对于转.NET这也是一样的道理,客户至 上.
    标志性旗舰网站甚少
    当年最火的MySpace倒是真用ASP.NET写的,但很遗憾自从它没落以后就很少听到日访问量千万级的.NET网站应用了,最近的应用中我唯一 能想出来的就是Stackoverflow,这网站大家都懂的,访问量绝对是一线网站水准,全部是.NET代码实现.但这种网站数量实在少,以至于很多厂 商谈.NET色变,这也进一步加深了对.NET的误解.如今的.NET给人们的印象更多是中小型网站速成神器,而不是大型网站首选,而中小型网站生出来 快,死起来也快,很多公司也许你听还没听说过,它已经死掉了.微软倒确实有BizSpark计划,就是说初创企业可以免费用微软方案3年,只要年收入低于 100万美元,效果马马虎虎吧,可能是因为这些公司太小以至于不为人所知.
    解决方案:暂无,期待开源牛人或标志性企业的介入,如果你知道一些标志性的用.NET的网站(除了微软官网),请写在回复中,也许是我孤陋寡闻.
    .NET程序员的过度自嘲
    很多.NET程序员自己也说.NET这个不如,那个不行,以至于社区信心更加不足.这会在公司里创造一种氛围,那就是做.NET的人自己信心都不 足,如果你的公司有Java程序员,他们会引用你的话,“谁谁谁说.NET这个不行”,也许你无意中的一席话会成为公司决策层的参考.
    自嘲的另一个原因来自于很多.NET程序员觉得自己工资比java程序员低,但事实真的如此吗?工资这玩意其实和个人资历、公司、地域三个因素都有 很大关系,即使在同一家公司,同一个团队,如果那个人比你年长3岁以上,即使你们做同样的事,他比你拿得多也是很正常的,所以比要合理的比,要拿同等参照 物,当然啦,这其中肯定存在不公平,也许你们平时做的事真的是一模一样的,但这社会就是这么运转的,和你用啥语言没有太直接的关系.最近公司薪酬体系还流 行一种现象--很多新进员工拿的比老员工多很多,撇开能力不谈,这是近几年中国人力资本提升的表现,HR也很清楚,不提高薪酬,招不到人,但对于老员工, 多数采取的是默许政策,即你不要求我也不会给你加,所以不公平始终存在,这也是为啥HR要求员工不要相互问工资,一问容易问出问题,人比人气死人,哈哈.
    Java程序员之所以工资高多数是因为他所在的行业很不错,效益好,比如金融、能源,所以高也正常.我平时也做兼职猎头,所以对薪资很清楚,其实做 到资深级别都差不多,不管是.NET、Java、C++、php程序员,.NET程序员混的好的也不少.工资这玩意到最后拼的是资历、运气还有公司效益. 大公司看上去工资高,但加的少;小公司看似工资低,但运气好得到老板赏识得到重用的话,绝对比大公司的小领导混的好.
    解决方案:适当注意自己的言行,多宣传.NET好在哪里,而不是说.NET不好在哪里,这就好像你去推销一样东 西,你老是说这样东西不好,谁会买呢?有的时候我们甚至可以利用面试机会去宣传.NET,比如说有的公司他们即招Java也招.NET,你就可以适当质疑 为什么不都用.NET,因为使用.NET可以降低ROI(投资回报率),这是综合成本考虑,倒不是说.NET的人便宜,而是说如果你雇了个很贵的.NET 程序员,后期维护成本也会比Java低,当然前提是这哥们写的.NET代码给力,有一定的文档和注释、架构方面考虑完善,便于他人理解.
    第三方开源支持甚少
    Java社区的开源支持绝对是典范中的典范,基本上只要你想得到的应用,总有对应的Java项目,比如最近很火的数据挖掘,Java社区有大量现成 的解决方案,比如Hadoop, stanfordnlp等,反观.NET阵营,基本是全军覆没,你甚至找不出一个像样的数据挖掘辅助组件,有人说盘古分词,是的,它算一个,但它的作用是 非常前端的,仅是数据挖掘的第一步,接下来的聚类、情感分析之类的.NET没有任何支持库可用.所以你去看现在招数据挖掘职位只有三种语言,Java, C++, Python,没有.NET啥事..NET社区并不缺类库的使用者,缺的是类库的贡献者,也许是微软自己对开源社区支持不足的关系,也间接导致了他的客户 们(微软阵营的程序员)对开源不是很热衷,尽管近几年微软的态度有了很大程度改善,但这种阴霾还在.
    解决方案:.NET社区其实并不小,看看C#的语言排行就知道了,大家齐心协力出一些库,即使有些是个人英雄主 义,也行啊.这应了一句话“库到用时方恨少”,为何我们不能DIY出一些好库,别把好东西老窝着,说啥知识产权,知识产权大棒是大企业抑制竞争的手段,而 不是个人程序员应该把玩的东西.