如何成为靠谱的DotNet/C#程序员

1 确定目标

微软系开发涉及面太广,所以你得先确定自己在哪方面有所专长。除了基础知识扎实以外,在asp.net / siliverlight / WPF 必须有一定的侧重。这个侧重点选择可以是自身兴趣,但大多数是项目需要。

2 选择教材

我还是倾向推荐纸质书,这里简单列几本。

C#本质论 http://www.amazon.cn/gp/product/B003ZXBKQC 这本书可以在一开始阅读,保证对C#基础有个全面掌握

CLR via C# http://www.amazon.cn/CLR-via-C-%E7%91%9E%E5%A5%87%E7%89%B9/dp/B00426BTTY/ 这本书建议买,但是高级阅读

深入理解C# 这本书如果看目录觉得感兴趣,可以买,但是不推荐初学者阅读。

另外专门技术方面,可以根据销量和评价买一本,不推荐在开始学习阶段购买。建议可以先通过文档/视频/代码实例学习一阵以后,对技术有一定了解了,然后再选择购买。

3 视频入门

这里推荐微软中国的webcast http://msdnwebcast.net 全中文视频,精品不少,比如老赵就有很多贡献。建议看视频学代码。

如果你英文很好,可以到channal9上看英文视频,也有成系列的。

4 文档中心

对于前面提到的几种技术,微软都有不同的网站专门介绍。

http://www.asp.net/ asp.net和asp.net mvc的老家,下载,文档,视频学习。

http://www.silverlight.net/ 银光的老家,下载,文档,视频学习。

http://windowsclient.net/  wpf的老家,下载,文档,视频学习。

另一个网站必须经常看的是 http://msdn.microsoft.com/en-us/default.aspx 比如这个 http://msdn.microsoft.com/en-us/vstudio/hh388566.aspx 就是Visual C#开发中心

http://msdn.microsoft.com/en-us/library/ff361664%28VS.110%29.aspx 这里是DotNet开发链接页面,可以作为homepage

www.codeplex.com 这是微软开源中心,推荐下载http://1code.codeplex.com/ all-in-one samples学习。

http://www.codeproject.com/ 这里面的文档和代码实例大多数目的单纯,简单扼要,学习起来很方便。

5 提高

http://msdn.microsoft.com/en-US/practices Enterprise Library, prism4.1, MVVM, 这些模式被广泛使用

MSDN要经常翻,里面好东西太多了。

http://msdn.microsoft.com/en-us/magazine/default.aspx MSDN magazine也要经常看。

就这些。

编程技术新闻12年2月24 VS11和DotNet4.5beta

近日最大新闻就是VisualStudio11和DotNet4.5 Beta版本在本月29号发布。微软几个知名的技术博客纷纷发文介绍。

http://herbsutter.com/2012/02/23/vc11-beta-on-feb-29/ Herb主要介绍了VC++11的变化,可以看到对C++11的支持是重头戏。

http://blogs.msdn.com/b/visualstudio/archive/2012/02/23/introducing-the-new-developer-experience.aspx VisualStudio官方博客介绍了新版本的界面变化,配色淡雅,整体感觉更舒服易用了(我试用过VS11的预览版)。

http://blogs.msdn.com/b/jasonz/archive/2012/02/23/sneak-preview-of-visual-studio-11-and-net-framework-4-5-beta.aspx “可以用于生产环境“,微软对自己这个产品的质量还是很有信心的。

http://www.microsoft.com/visualstudio/en-us/visual-studio-11 VS11的官网在这里

其它新闻及技术文章 ~~~~~~~~~~~~~~~~~~~~~~~~~

另一个大新闻是Apache2.4发布,号称要赶上Nginx的性能,可惜国内技术圈子对此毫无反响,廉颇老矣,能饭否?

如果要编写Nginx模块或者阅读Nginx代码,下面的连接或许有些帮助:

http://yaoweibin.cn/ 有Emiller的Nginx模块开发指南

http://blog.csdn.net/kenbinzhang/ 啃饼的Nginx源码分析,另外在浪湾博客/淘宝技术博客上都有源码分析的文章,不多说了。另外想开发http server的可以参考这个 http://www.codinglabs.org/html/http-server-docs.html

Lua部分项目或者文章链接:

http://stackoverflow.com/questions/89523/lua-patterns-tips-and-tricks Lua常用编程手筋

http://luvit.io/ 以前有人提native版本c++11的nodejs,其实Lua早就有了很多类似项目,比如这个luvit。

http://blog.datamules.com/blog/2012/01/30/why-lua/ 为什么用Lua?好玩算不算一个理由?

https://github.com/laeciofreitas/design-patterns-lua Lua设计模式,由于JS更火爆,所以Javascript设计模式这篇介绍更全面 http://addyosmani.com/resources/essentialjsdesignpatterns/book/

建议大家在github上关注leafo这个程序员,好玩的东西很多 http://leafo.net/moonlisp/ Lisp转Lua代码 http://leafo.net/posts/getting_started_with_moonscript.html MoonScript语言,类似CoffeeScript https://github.com/leafo/moonscript-javascript moonScript转到JS,使用了Emscripten,可以直接看演示http://moonscript.org/compiler

其它方面的技术:

WPF技术,这位大牛的文章值得推荐 http://www.codeproject.com/Articles/16342/WPF-JoshSmith

上次提到的R语言,这里有个商业运作版本的介绍 http://www.r-bloggers.com/introduction-to-r-and-revolution-r-enterprise-slides/ r-bloggers是R语言的博客聚合,关注R语言的朋友可以订阅。

highscalability上最近两篇关于网站架构的文章,都是知名网站youporn和Pinterest http://highscalability.com/blog/2012/2/16/a-super-short-on-the-youporn-stack-300k-qps-and-100-million.html http://highscalability.com/blog/2012/2/16/a-short-on-the-pinterest-stack-for-handling-3-million-users.html

http://samsaffron.com/archive/2012/02/22/miniprofiler-2-0-almost-out-of-the-gate 有人不知道优化前需要profiling么?还真有。stackoverflow的开源项目,微软系的朋友可以关注。

http://www.newsy.com/ 这个视频新闻的特点是:都有字幕!!

http://lostechies.com/derekgreer/2012/02/17/javascript-closures-explained/ javascript的闭包是什么?

http://nullege.com/ Python代码的搜索引擎

http://people.csail.mit.edu/pgbovine/python/ 在线Python教程,很好玩,代码开放。

http://www.linuxforu.com/2011/03/when-python-weds-c/ C编写Python模块。

R语言,高估自己的架构师和一些技术链接

part1

先说说创新,对金融类软件开发而言,个人觉得“Big Data”会是一个很大的发展方向,就如同这篇麦肯锡的文字所提到的 http://www.mckinseyquarterly.com/Strategy/Innovation/Are_you_ready_for_the_era_of_big_data_2864  http://blog.nodeable.com/2012/02/21/mckinsey-misses-the-market-on-big-data/

问题是我对统计方面的数学学的很不好,即使有R语言这样的统计数据分析的专门编程语言,仍然感觉到困惑。R语言资源不少 http://ftp.ctex.org/mirrors/CRAN/other-docs.html 也期望自己多学一些,但是精力真的有限,最近要看WPF,C# in depth2, 还想看看Python3, Lua5.2文档,还有Ruby语言和类似lisp的Clojure。这么多好玩的东西,稍微懒一懒就混过去了。回到R语言,国内比较大的讨论组是这个“统计之都“ http://cos.name/cn/forum/15

每年学一门编程语言,到底该选Clojure还是R呢? 

part2

Architect – Overrated! http://www.subbu.org/blog/2012/02/architect-overrated You always talk about the big picture. You think you know how the system ought to be built. You don’t have a working build. You spend a lot of time on documents that are not code. You can prototype – but your code is not production worthy. You spend too much time in meetings. The best code you wrote is a few years old. When asked for opinions you tend to speak in general terms. Your team members secretly joke about you. You start to take analysts and tech blogs too seriously. You are a dinosaur. Code. Don’t wiki. Don’t powerpoint.

顺便问一下,你是这样的架构师么??

part3

http://casbon.me/what-will-pypy-do-for-your-website-benchmarki 一个关于PyPy和CPython的比较测试,PyPy最近很火,就目前发展,很快就能应用到实际生产项目了。

http://msdnwebcast.net/ 面试的时候,很多人抱怨自己项目中只用了这个或者那个,所以不会这个或那个。好吧,只要你懂点DotNet编程,有恒心坚持,天天学一个这里面的webcast,你就能变成高手。另一个选择是 http://learndotnetprogramming.com/free-dot-net-videos-webcasts/

http://blog.phusion.nl/2012/02/21/ruby-enterprise-edition-1-8-7-2012-02-released-end-of-life-imminent/ “We wish to focus our efforts on Phusion Passenger and other products. Instead of doing many things poorly, we want to do a few things, but do them very very well.” 深有同感。

http://www.iro.umontreal.ca/~felipe/IFT2030-Automne2002/Complements/tinyc.c 一个简单的语言编译器,在K&R中也有个简单版本,每个程序员都应该多少了解一下相关的概念。

http://www.bestechvideos.com/2012/02/21/railscasts-265-rails-3-1-overview Railscasts #265: Rails 3.1 Overview

http://www.bestechvideos.com/2012/02/21/railscasts-265-rails-3-1-overview Railscasts #265: Rails 3.1 Overview

http://www.bestechvideos.com/2012/02/21/railscasts-267-coffeescript-basics Railscasts #267: CoffeeScript Basics

Techdays 2012 the Netherlands 部分视频链接

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2159

Building Single Page Apps for desktop, mobile and tablet with ASP.NET MVC 4

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2364

A look at ASP.NET MVC 4

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2153

Introducing Windows Runtime in Windows 8

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2261

What’s new in ASP.NET 4.5 + Visual Studio 11

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2287

C#5, ASP.NET MVC 4, and asynchronous Web applications

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2264 (这周日大连的QClub就有一个关于MVVM的话题)

MVVM Appied From Silverlight to Windows Phone to Windows 8

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2259

Rocking the Enterprise with the Kinect Experience

 

团队管理总结2011-2012

2011年4月来到现在这家公司,到现在快有一年时间,在这段时间里,从一个开发者转变成为一个Team Lead,其中有一些心得体会,以及想提高改进的地方,在这里做个简单总结。

团队的硬件方面,申请了双显示器和白板,对生产力有一定的提高。但是也发现有的同事不习惯使用双显。

软件方面,大力推行使用一些工具进行日常开发以及提升生产力。开发了一个键盘鼠标回放工具;开发了一个Fiddler2的插件记录特定service;推行使用ILSpy分析代码;推行使用VS2010的mstest做单元测试;推行VS2010的code analysis和performance profiling功能使用。

工作流程方面,我们组基本达到以下流程:对需求分析及时提问,分析存在的代码和业务形成文档;对设计过程进行group review,确保没有大的技术风险;代码实现中期进行第二次group review,确保方向正确;代码完成后对整个代码进行逐行的group review,确保没有大的问题;每次check in都要有另外两个人进行peer review,当天邮件反馈;每个项目都要有相应的测试计划,如果有unittest就做,如果没法做单元测试,比如是界面相关的,就要有手动测试的计划(创建相关测试数据等等)。

从2011年4月至今已经完成大概四五个项目,基本上每个项目完成都会进行总结。主要存在问题是对业务需要更多了解,另外是需求沟通的问题。

英语和business knowledge基本保证了坚持学习。每周大概会有一次左右的技术视频小组学习。现在也在学习一个金融方面的公开课,跟业务比较相关。

整个团队的搭配比较合理,senior和junior程序员组合比较合适,但是在最近一段时间会有新成员加入,培养新人是一个需要关注的任务。

就个人而言,整个团队的风格养成,希望是主动(主动性)、严谨(关注代码质量,关注关键开发流程的保证)、上进(有持续的自我学习能力)。

在这一段时间,我的问题主要在几个方面:没有很好的保证定期与组员沟通;对于细节抓的太多,没有做到抓大放小;个人技术在这段时间的提高不多,尤其是WPF这块。

整个团队的问题和下个阶段提升方向,主要是这几个方面:代码质量和代码标准要一以贯之,这个需要更多的坚持和培养。主动地寻找任务、主动地学习、主动地沟通反馈,提高小组成员的主动性是今年的一个大目标。WPF技术方面需要有专家,业务需要更多的学习了解。需要保证与小组成员的定期沟通聊天。另外英语能力的提高也是整个小组的重中之重。