17611538698
webmaster@21cto.com

梦想是勇敢者的游戏:程序员成长攻略

资讯 0 12489 2016-04-09 12:00:43
我是一个老码农。数数手指头不够用,再加上脚趾头,从2000年现在,我的编程之路已逾15年。做为一个程序员,有苦有乐。它和这个世界的任何行业一样,有好处也有缺点,有轻松也有挑战。
 
至今我仍然在写程序,仍然享受在其中,乐此不疲。Enjoy那种成就感与那种无与伦比的控制感。从某些心理角度,控制计算机比与人打交道要直接,方便得多。
 
所以,我仍然做着一个程序员。在写代码的同时,再写一些书,还有文章,把有价值的内容送给大家。
 
这次,我来讲讲如何学习一门编程语言。这个话题不针对初学者,对于几年工作经验的人也同样适用。
 


兴趣驱动


 
看到这个标题,你就明白。想做一名程序员,工程师,第一个要素就是兴趣!
这个兴趣是你本心,不是觉得这行赚钱才来的,现在任何行业做都可以赚钱,特别极功尽利你可能做不好程序员。
你可能会跟我说,你非常喜欢代码,很想当程序猿。


你真的准备好了吗


 
那么先经过以下几个问题拷问吧——
 
这是北京市地铁中关村站的一幅图片:
 
 
001.jpg


 第二个问题问一下你,过两年你就成这个样子。还有这种让人捉急的事情,大伙逼杨白劳要跳楼:
 
 
002.jpg


 有人会问,我不是学计算机的,可以做得好程序员吗?没有问题,前面的兴趣你有了,而且你做好了前几年受孽待的准备。其实现实并未那么严重。。。
 
然后再来一张图片,你看到他们眼中的善良,执着了么?
 

003.jpg


 
从某些方面,编程是孤独的旅行,路上少不了错误和异常。但那又怎样,哪怕执行不了,也要编的漂亮!无论如何,我们都要坚持,坚持再坚持。
 
好了,经过了几关考验,看来你是铁心做开发了,我看你也是天庭饱满,地阁方圆,是块写程序的好材料。我们就一起开始讲如何学习一门编程语言。
 
先给大家放一首歌轻松一下吧:
这是光良的《童话》,听到那句: 我会编程~~童话里,你爱的那个天使..
我会编程...
我有种洗脑的感觉。我觉得得他已经为我们代言了。未来一定是程序员的时代,会编程就会了不起!


你的目标


 
有一句话:不为失败找理由,只为成功找方法。
目标就是要达到的结果。比如你要在3个月学会某个语言,编个什么小程序或产品,更实际的是找到工作,相到对象等,都是一个好目标。
 
有了明确的目标,我们就摩拳霍霍向语言了。


选择一门语言


 
和选择女孩子一样,现在的开发语言不少,但主流的也就是那么几个。如果你想写服务器后端的程序,可以选.NET(C#,.net)、Java或PHP、Python。还有一些,比如Perl、Ruby等用得少可以不用考虑,除非你特别偏爱,选择后期开发也是可以的。
 
移动端开发可以选择Object-C或Swift,这两个语言是针对于iOS开发的,还有Anroid开发,它是Java的子集。
如果你想做前端开发,可以选择HTML5/CSS或JavaScript。
 
选择一门语言,其实看两点,一个是看工作职位是否多,另外是自己觉得用着顺手。开始时可能没有后面的感觉,就从主流的语言里选择一下就可以。


选择一本书


 
有数据说,现代人的节奏越来越快,读书的人越来越少。从身边人来看,大多数却是爱读书的人。对于程序员来讲,读书更加重要。
 
因为编程是一个递进工程,不是产品经理或者运营类,可以几天速成,需要踏实地,循序渐进。而书可以让我们在学习的路上更系统更有方向感。
 
有人会说,我就不看书,直接卷起袖子就开始写代码,可以买个VPN翻墙用Google查资料,用Github找代码。
这种“极客”精神值得学习,适合悟性和总结性强的人,而大多数人是要从系统的学习开始,这样会更扎实。
 
现在市面上的编程类图书品类不少,无论是国内作者还是国外作者的书,众人也褒贬不一。
 
刚开始学一个语言的时候,先买一本自己喜欢的。无论感情上喜欢,比如封面,行文。重要的是要薄,这个薄不单单是书的厚度,是写的内容由浅入深。
 
一定不要选择晦涩艰深,简单问题复杂化,故弄玄虚,让人不知所云的书。但有人会觉得那样的书才有深度,这个请大家要仔细鉴别。
 
选择编程类书,一定要面向实践和实用的书。
 
 还在一个我必须提一下学计算机的同学,如果你想成为程序员,先下面这本C语言暂放掉,如果你学过可以忘掉!
 
004.jpg


 就是这本书!让一部分想成为开发人员的同学,忘而却步,误以为写程序就是在解数学题,做一部分没趣没用的事情。
借这个机会吐槽一下谭老师,这本书在当年的价值有目共睹,但从现在来讲已经过时,希望国内院校不要再使用这本书做教材,会浪费更多好苗子。
 
因为,写程序是一个有趣,有料,有钱景,有尊严的好职业!


多看别人的代码


 
我们在书上可以找到一些样例。这些代码在作者的讲解下看懂后,然后再在本地环境上,自己敲进去运行一次,以加深印象。
 
现在的很多应用,包括商业应用,很多是在开源代码或框架上延展开发的。如果你加入一家公司,会有工程的代码给你。如果你还没有加入一家公司,可以在github、Google Code或21CTO网站上下载到源码。
 
一般的开发工具,使用eclipse或notpad++都可以打开查看。优秀的源代码工整有序,注释说明、手册齐全。
阅读别人的代码可以更好地了解你自己的代码,帮助自己增加编程速度和代码易用性,还可了解新的代码架构、框架,和他人优秀的编程方法,从而积累高质量的编程基础。
  


让程序跑起来


 
github的流行,得益于上面大多数是质量较高的半成品产品。光有心理上的兴趣还不够,当你下载完,加以调试可运行,这种是最好的驱动力。
 
运行后,你的心是快乐澎湃的。锻炼写程序能力的最好方式就是实践、实战。
修改别人写过的程序,不要怕,改!哪管是改了几个输出文字,然后再按自己的想法调整。
由小变大,我想你已开始渐入佳境啦。


按自己的思维写程序


 
当你看了不少别人写的程序。给自己定一个目标,写一个具体功能的程序。从零开始写,包括代码架构,数据库结构。
 
遇到问题想不要急着查资料,自己扛过去,之后就不怕了。
然后你再参考和你写的功能类似的产品,发现自己写的比对方写得还好,亦或者别人的写法值得借鉴。
 
如此往复并坚持。祝贺你,你的功力又进了一级。


开发一个模块


 
前面我们已经积累了一定代码编写能力,包括语法,编程逻辑上的能力。下面我们干把大的,写模块。
 
比如我们可以开发一个会员管理系统,亦或购物车系统等。不要小瞧每个功能,拿注册用户来说,等你开始从零开始时,会发现细节考虑的也不少,比如逻辑安全,代码优化等。
 
在开发模块的过程中,会遇到逻辑错误的情况,我们会积累调试和debug的能力。
还有一些棘手问题,可能通过搜索引擎也解决不了,需要我们自己先独立解决。这才是开发能力的真正体现。


小结


 
我们要做五年的准备,迎接与接受这些挑战。
 
不管一个人有多勇敢,对自己的攀登能力多有信心,没有手臂永远无法攀登岩石。编程。同样,我们对自己有信心,但不与人合作,接受别人的帮助也无法成就事业。程序员容易陷入自我的小天地,我们必须依赖与外界小伙伴的互动。
 
方法是积极参与技术社区,乐于开源,参加讲座分享。锻炼自己快速学习,解决问题的能力。
 
最后,一个合格的程序员,不限于某个编程语言,语法不再是障碍,问题也不再是烦恼。写程序只是日常,我们喜悦面对的一个游戏而已。
 
To be world-class professional,未来已经开始,祝大家成长愉快。

评论