如何迈好转行CSharp的第一步(转自刘校长亲笔)

 随着这几天小群的人越聚越多,发现不得不反复回答这样一个问题:我是零基础,应该怎
么开始转行学习的第一步?借这个帖子我来总结一下。
-----------
首先你得明白,跟计算机相关的学科是个比较大、比较庞杂的学科,粗略地分,有两大
方向。如果未来想去搞研究,那么你应该选择“计算机科学”这一方向,也就是
Computer Science(CS),而学习路径呢,几乎只有一个,那就是——上学,这个上学不
是读个网校就能解决问题的,你还真得在有组织、有计划、有作业、有考试、有老师、
有同学的环境里锤炼上几年。如果你只是想学些编程技能,然后找份薪水还算不错的工
作,那么你选择的就是“软件工程”方向了,也就是Software Engineering(SE)。选择
这个方向,你有可能自学成才哦!选择CS方向的朋友,不用说,第一步肯定是准备成绩
啦——什么TOEFL啦、GRE啦,还有一些预科成绩,比如有些学校要求你必需会编程,甚
至还要求修过数据结构与算法。本文剩下的部分,主要说给那些选择SE方向的朋友,应
该如何自学。
学习搞开发是一件跟其他学习不太一样地方,可能更像学临床医学——需要大量的动手
与实践。与其说是学出来的,不如说是练出来的。这就是为什么工程师之间喜欢用代码
量来衡量一个人的技术水平。
这个特点决定了CS的学习一怕“拖”, 二怕“缩”。
=>'拖'就是下了决心总是不开始,一会儿想学这个,一会儿想学那个。结果吵吵着转了好
几年也没转成
=>'缩'指的是怕难,总感觉这个看不懂,那个也看不懂~~编程真的很难吗?No!我在转
行过程中为了积累知识,当过一段时间的教编程的老师、在国内教计算机等级考试。我
曾经把一批高一的学生辅导考过了二级C和VB。后来有几个大学也找我去做辅导,结果我
发现大学生学习二级C的速度比高中生慢很多,而且经常叫难——回头一想,高中生们也
没这样呀!今天在群里跟大家一起总结原因,发现是这么几个
=>高中生是靠兴趣学,不喜欢看书而更喜欢直接写程序,出了错只想着调试,调试几次就'
顿悟'了,也记住了。 而大学生喜欢看书,套路是先看懂再上手
=>我一直跟高中生们说这东西不难,所以他们一直没感觉难;而大学生们多少听自己的老
师或者学长说过'指针很难', 'xxx很难'这类的话,一看这知识不难,反而不放心了,生
怕自己错过了什么,于是学习的时候谨小慎微,老去抠字面上的东西了。而且一旦什么
东西做不出来,会产生额外的受挫感和畏惧感——“你看!这东西就是很难”,他给自
己印证了一下,然后又告诉别人。
所以,我可以很负责任地告诉大家——只要你的学习和理解能力达到高中水平,学编程
是完全没有问题的。
--------------
捎带说一下“文科生”和“女生”(还有交集“文科女生”)——我不只一次地强调,
文科生和女生在学编程方面有很大优势。因为编程本质上来说就是用一种简化的自然语
言把逻辑重新描述一遍,所以文科生有优势;编程本身又是个细致活儿,像绣花,这个
女生有优势。
-------------
在开始学习技术之前,先端正一下心态。我们正确对待技术的看法应用是:技术学来是
为了写项目挣钱的,应该一切以生产力为标准。常见的两种错误心态,一个是把开发书
籍像文言文一样来研究,到最后除了能去给别人讲语言,估计是写不出项目的;二是有些
人喜欢拿某个领域内比较难的知识来炫耀或者刁难别人、以让别人'不明觉厉'而获得满
足,这种人初学者尤其要避开。初学者需要的是懂得带人,性格温和的mentor,需要的是
引导和鼓励。这两种常见错误都是因为脱离生产力、搞学院派造成的。
------------
我在国内的时候常在CSDN里泡着,那里面不少高手都是转行的,大家的共性是:最开始转
行基本上都是'项目驱动'的。也就是说:自己还不会开发,也许只是一知半解,结果遇到
了能挣钱的项目。想挣钱怎么办?硬着头皮上吧~~一个项目下来,也就通了。可惜在
美国这样的机会不多,但有一点是可以肯的:只要你恒下心来照着书也好,查着搜索引擎也
好,写一个两个项目出来,也就从入门变成junior了。很多朋友跟我抱怨说找不到项目做
,其实是创新能力不足——你能不能给自己写个动态的小网站,或者实用的Android小
程序?这些不都是项目吗?
------------
再来说说大家经常问的'我学什么好?'或者'学Java好还是C#(还是xxx)好?'的问题
。无论你学什么,基本上都逃不出这三个方向:客户端(也叫前端,UI),服务层(也叫
业务逻辑),数据库。老码工都知道,这三样到最后都得能鼓捣(时髦的说法叫full-
stack developer)。至于一开始选哪个,就要看你的基础和爱好了。常说的学Java和学
C#,泛指写服务层和UI、但侧重服务层。因为UI那边还有一些比较杂的东西,比如HTML/
CSS/JavaScript什么的。数据库方向自然是学SQL了,微软的T-SQL,甲骨文的MySQL, 
Oracle等。 但一般情况下,如果想转行就业的话,单靠一项技能是不行的,一定是一套。
比如:
=> C#+WCF+Entity Framework+SQL Server, 这是一套服务层+数据库的,学的不多就能
找工作
=> Java + Servlet + JSP + Spring, 也不用学太多就能试试找工作
=> C# + ASP.NET MVC + SQL Server, 三层都有的Web开发,比较火
=> Java + Struts 2 + Spring 3 + Hibernate + MySQL,三层都有的Web开发,比较火
=> Linux + Apache + MySQL + PHP, 传说中的LAMP,也挺火
=> JavaScritp + jQuery + HTML/CSS,这是做Web UI的,学的不多,市场需求量挺大
=> Java + Android,这是手机UI的,自己在家就能干
=> Objective-C + Cocoa, 这是水果的,自己在家就能开工
=> Swift + Cocoa, 水果的新一代开发平台,自己在家就能开工
=> C# + Windows Phone,这是给微软那个不争气的Windows Phone写程序的,自己在家
就能开工
=> 怎么没有C和C++?因为这两个自学(没人带)的难度太大、时间太长、成才率太低
了,不推荐
。。。
之所以跟大家说这个,是怕大家在每套里面各选了一个,结果不成系列,不能互相叠加。
常见的,很多朋友学完Java后不是去学MySQL,而是去学Python,认为语言学的越多越好找
工作。 我勒个亲!六年级小学毕业,那我读6次一年级,学校能让我毕业不?
其实我了解的也不多,如果大家想了解哪些技能组合最热招,那就多泡monster和
linkedin吧。
--------------
<这段是补的>怎样自学才不会成为“野路子”?
自学成才的朋友最怕被人称为“野路子”。那么,与学校里学出来的“官路子”、“学
院派”,区别在什么地方呢?区别就在于学习新知识和解决问题的方法。自学的朋友们
往往比较封闭,喜欢用仅有的一点知识去推测新知识或者解决问题,这就不可避免地生
造出一些只有自己能懂的“理论”,而不知道书籍中或者网上早已经有成形的知识。所
以,提醒自学的同学们,大量阅读专业书籍和文章、多使用搜索引擎,这是必需的技能
,切不可自我封闭、钻牛角尖。
-------------- 
这里我要说的是,无论你是去学校读也好,在网上读也好,还是自学学校的课程也好,一定
要注意:学校的课程分为两类,一类是理论,一类是工程。工程类的与实际工作靠的比较
近,理论类的不能说对工作没帮助,但帮助不大。那为什么学校还要开设这些课程呢?为
的是培养更高级的研究人员。比如:中的离散数学,编译原理,操作系统。。。总会有人
在学习的过程中对它们产生兴趣然后投入毕生精力,这才有了操作系统,编译器,cpu等等
的不断更新。想想这些似乎并不是转行的目标。所以,以找工作为目的自学的同学要合
理分配时间和精力。
--------------
这篇文章不是药方子,更不是什么准则(要我自己来反驳都能找出不少漏洞来)。它的
用处是抛砖引玉,给大家一个思路
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值