最近都在logdown写博文,周末无聊,就把博文也copy到iteye了。之所以去logdown就是怕被喷,周末鼓足勇气来被喷一下。
前些日子,部门来了一个暑假实习生,和大多数暑假实习生一样,很难让他们可以帮忙干活,但是,这暑假实习生你是真的很难安排他干活,因为公司大多数项目都是用java写的,然后他竟然是一名伟大的c#程序员。wtf!那为什么会安排来实习,得知,我天朝关系党威武。丢失了一个使唤领导亲戚干活的机会让我很懊恼,让我绞尽脑汁的想该怎么才能让他学好一门新的编程语言让他干活!
先来点题外话,也让这篇博文更加的轻松、诙谐、人文、社会主义,砖头灰过来,社会你妹主义啊。
从大学开始学习这个行业开始7年了,之间学了挺多编程语言的,前4年主攻C,后来接触java多了以后发现,C语言这种面向过程的语言太老套了,面向对象的风格实在是太特么的美了,然后大四即将毕业的时候开始狂学java,那个9月到11月,每天早上6点开始,到晚上睡觉,都只有java,还因为自己动手做几个项目,有一个星期一周都没睡几个小时,标准程序猿、码农、码畜。
坚持就是胜利,我就用这个学了2个月的语言,就在11月成为计算机学院07届第二个找到工作的,其实当时有3个offer在手,当时的选择就是银行、手机、造价工程。最终走亲戚问朋友找学长得知,后来我去的那家公司很适合作为毕业生的第一站。在我现在看来,也是相当明智的选择(当时选了银行的同学,现在已经拿了9k6的工资)。这那里我学到了原来用敏捷开发原来可以这么开心的工作,每天都充满成就感、责任感;学习业务知识对我们这行是多么的重要(有个数学系的朋友给我时候,你们程序员有什么了不起的,我也能写个小工具我自己用啊。我只回答他说,那你能写个我需要的软件给我用吗?他立马说那不行。我说,那我可以做出你想要的东西。);通过结对设计、结对编程学到了很多设计理念、设计模式、设计原则、很多在java来说很底层的东西(我觉得干我们这行就是得想,拿到一个东西就得想,这尼玛是干嘛的,底层是如何设计的,他真的给我们带来了什么吗。而设计模式和设计原则);学到了阿米马经营模式是如何操作的;学到了稻盛和夫的臭金钱哲学(原谅我,我就是很喜欢嘲讽我喜欢的东西);最关键是跟当时公司的设计师学到了程序员做事情的法,至少我现在还认为这样做是最好的。
说了这么多废话,我只是想说,如果你准备未来投身到IT江湖从事编码这份非常有前途的职业(谁说没前途我和谁急,在这个信息化的时代,有什么笔信息技术更牛掰的,如果你觉得没前途,我觉得是还没入门,因为我一年前也真觉得没前途),学习一门编程语言是不够的,没有哪个大虾因为他只会一门武功就称霸武林,那些乔峰、张无忌、郭靖这些男猪脚哪个没有好几套武功,只是他们都有一门特别厉害的。
不关是编程语言,要学的东西还非常多,比如操作系统、算法、编译原理、数据库、数据结构、计算机网络等等引擎和网络架构balabala的一堆。特别是当我熟练掌握了一门技术之后,才发现,这门技术早就已经日落西山了(java在2000-2007年的时候的确是工资最高的变成语言,现在最贵的语言当然是objective-c)。现在我觉得学变成就一定要学习一门元编程语言。高手如果笑而不语,我这入门生也就只能给门外汗忽悠忽悠。元编程就是,你不会去问谷歌啊。砖头立马飞过来。下面是我从维基搬来的东西(俺们码农就爱搬运)。
> 元编程是指某类计算机程序的编写,这类计算机程序编写或者操纵其它程序(或者自身)作为它们的数据,或者在运行时完成部分本应在编译时完成的工作。多数情况下,与手工编写全部代码相比,程序员可以获得更高的工作效率, 或者给与程序更大的灵活度去处理新的情形而无需重新编译。
复制这些,有的人可能更加晕菜了,我要的就是这种效果!我自己的理解描述就是,元编程就是能操作代码的代码,简单说,就是刘翔已经在跑道上起跑了,这时候他落后萝卜丝3个身位,但是我编码时候设定,当刘翔落后的时候,就改变他的行为,这时候,他能飞了,然后飞的超过了萝卜丝勇获第二,哦也!
说了这么多,还没说到如何学编程,肯定有人要飞砖头砸我了。我自己也肚子饿了,周末也不能9点吃饭的吧。那赶紧草草结尾下,哈哈哈哈。
1. 要有自己的想法
学习的时候,脑袋中要能清楚的知道自己为什么学这门语言,要学到什么程度,然后才是要怎么去学。就像我学scala,是因为我发现函数式编程很有意思,未来可能会成为一种趋势,所以为了跟上时代的步伐,我就开始学了。那要学到什么程度,当然是能做一个twitter那样的东西出来。那怎么去学,接下来几点慢慢去说。
2. 要有教材
刚毕业的时候,我很喜欢看学习的视频,现在,我更喜欢拿一本书去学习。首先视频太慢了,学习一个看书只要5分钟的事情,视频偏偏要半个小时。然后,看视频一直看别人动手,没有通过自己的尝试去得到体验的记忆往往不深刻,别说你看了视频也会去动手,你已经看别人做了一次了,可能的问题都知道了,印象一定不深刻了。教材当然要选择最经典,最牛掰的,这个我觉得最好是找身边的大牛们讨教。其实我也经常苦于不知道哪本书最好。然后根据教材掌握基础运行环境、数据类型、表达式、函数、流程控制、类、方法、bilibala;
3. 学会googel
这个就不说了,学习的过程中肯定有很多问题,但是要碰到别人都没碰到过的基本不可能。去问谷歌吧,别问度娘,至少我在学jbpm4和scala的时候就吃了好多度娘的亏了;
4. 先别用IDE
个人觉得学一门语言最好别先用IDE,现在IDE太智能了,会导致离开IDE什么都不会。我敢说让很多JAVA程序员离开IDE,HELLOWORLD都要写很久。先用文本编辑器去做,比如VIM、Emacs ,最好是直接用shell,不会还要我解释什么是shell吧,好吧,解释完让我去吃早饭吧。
shell就是个外壳,你不会直接告诉CPU要做什么,你要先告诉shell,他再去告诉cpu要执行什么指令。最经典的就是linux的Terminal,像我在学习的scala也有shell功能。因为这样能敲一行指令立马反馈,所见即所得。
5. 最好能找到一个老师,学会去问好的问题,我学scala就苦于身边没人在用,只能天天google,痛苦不堪。
吃饭,再见
前些日子,部门来了一个暑假实习生,和大多数暑假实习生一样,很难让他们可以帮忙干活,但是,这暑假实习生你是真的很难安排他干活,因为公司大多数项目都是用java写的,然后他竟然是一名伟大的c#程序员。wtf!那为什么会安排来实习,得知,我天朝关系党威武。丢失了一个使唤领导亲戚干活的机会让我很懊恼,让我绞尽脑汁的想该怎么才能让他学好一门新的编程语言让他干活!
先来点题外话,也让这篇博文更加的轻松、诙谐、人文、社会主义,砖头灰过来,社会你妹主义啊。
从大学开始学习这个行业开始7年了,之间学了挺多编程语言的,前4年主攻C,后来接触java多了以后发现,C语言这种面向过程的语言太老套了,面向对象的风格实在是太特么的美了,然后大四即将毕业的时候开始狂学java,那个9月到11月,每天早上6点开始,到晚上睡觉,都只有java,还因为自己动手做几个项目,有一个星期一周都没睡几个小时,标准程序猿、码农、码畜。
坚持就是胜利,我就用这个学了2个月的语言,就在11月成为计算机学院07届第二个找到工作的,其实当时有3个offer在手,当时的选择就是银行、手机、造价工程。最终走亲戚问朋友找学长得知,后来我去的那家公司很适合作为毕业生的第一站。在我现在看来,也是相当明智的选择(当时选了银行的同学,现在已经拿了9k6的工资)。这那里我学到了原来用敏捷开发原来可以这么开心的工作,每天都充满成就感、责任感;学习业务知识对我们这行是多么的重要(有个数学系的朋友给我时候,你们程序员有什么了不起的,我也能写个小工具我自己用啊。我只回答他说,那你能写个我需要的软件给我用吗?他立马说那不行。我说,那我可以做出你想要的东西。);通过结对设计、结对编程学到了很多设计理念、设计模式、设计原则、很多在java来说很底层的东西(我觉得干我们这行就是得想,拿到一个东西就得想,这尼玛是干嘛的,底层是如何设计的,他真的给我们带来了什么吗。而设计模式和设计原则);学到了阿米马经营模式是如何操作的;学到了稻盛和夫的臭金钱哲学(原谅我,我就是很喜欢嘲讽我喜欢的东西);最关键是跟当时公司的设计师学到了程序员做事情的法,至少我现在还认为这样做是最好的。
说了这么多废话,我只是想说,如果你准备未来投身到IT江湖从事编码这份非常有前途的职业(谁说没前途我和谁急,在这个信息化的时代,有什么笔信息技术更牛掰的,如果你觉得没前途,我觉得是还没入门,因为我一年前也真觉得没前途),学习一门编程语言是不够的,没有哪个大虾因为他只会一门武功就称霸武林,那些乔峰、张无忌、郭靖这些男猪脚哪个没有好几套武功,只是他们都有一门特别厉害的。
不关是编程语言,要学的东西还非常多,比如操作系统、算法、编译原理、数据库、数据结构、计算机网络等等引擎和网络架构balabala的一堆。特别是当我熟练掌握了一门技术之后,才发现,这门技术早就已经日落西山了(java在2000-2007年的时候的确是工资最高的变成语言,现在最贵的语言当然是objective-c)。现在我觉得学变成就一定要学习一门元编程语言。高手如果笑而不语,我这入门生也就只能给门外汗忽悠忽悠。元编程就是,你不会去问谷歌啊。砖头立马飞过来。下面是我从维基搬来的东西(俺们码农就爱搬运)。
> 元编程是指某类计算机程序的编写,这类计算机程序编写或者操纵其它程序(或者自身)作为它们的数据,或者在运行时完成部分本应在编译时完成的工作。多数情况下,与手工编写全部代码相比,程序员可以获得更高的工作效率, 或者给与程序更大的灵活度去处理新的情形而无需重新编译。
复制这些,有的人可能更加晕菜了,我要的就是这种效果!我自己的理解描述就是,元编程就是能操作代码的代码,简单说,就是刘翔已经在跑道上起跑了,这时候他落后萝卜丝3个身位,但是我编码时候设定,当刘翔落后的时候,就改变他的行为,这时候,他能飞了,然后飞的超过了萝卜丝勇获第二,哦也!
说了这么多,还没说到如何学编程,肯定有人要飞砖头砸我了。我自己也肚子饿了,周末也不能9点吃饭的吧。那赶紧草草结尾下,哈哈哈哈。
1. 要有自己的想法
学习的时候,脑袋中要能清楚的知道自己为什么学这门语言,要学到什么程度,然后才是要怎么去学。就像我学scala,是因为我发现函数式编程很有意思,未来可能会成为一种趋势,所以为了跟上时代的步伐,我就开始学了。那要学到什么程度,当然是能做一个twitter那样的东西出来。那怎么去学,接下来几点慢慢去说。
2. 要有教材
刚毕业的时候,我很喜欢看学习的视频,现在,我更喜欢拿一本书去学习。首先视频太慢了,学习一个看书只要5分钟的事情,视频偏偏要半个小时。然后,看视频一直看别人动手,没有通过自己的尝试去得到体验的记忆往往不深刻,别说你看了视频也会去动手,你已经看别人做了一次了,可能的问题都知道了,印象一定不深刻了。教材当然要选择最经典,最牛掰的,这个我觉得最好是找身边的大牛们讨教。其实我也经常苦于不知道哪本书最好。然后根据教材掌握基础运行环境、数据类型、表达式、函数、流程控制、类、方法、bilibala;
3. 学会googel
这个就不说了,学习的过程中肯定有很多问题,但是要碰到别人都没碰到过的基本不可能。去问谷歌吧,别问度娘,至少我在学jbpm4和scala的时候就吃了好多度娘的亏了;
4. 先别用IDE
个人觉得学一门语言最好别先用IDE,现在IDE太智能了,会导致离开IDE什么都不会。我敢说让很多JAVA程序员离开IDE,HELLOWORLD都要写很久。先用文本编辑器去做,比如VIM、Emacs ,最好是直接用shell,不会还要我解释什么是shell吧,好吧,解释完让我去吃早饭吧。
shell就是个外壳,你不会直接告诉CPU要做什么,你要先告诉shell,他再去告诉cpu要执行什么指令。最经典的就是linux的Terminal,像我在学习的scala也有shell功能。因为这样能敲一行指令立马反馈,所见即所得。
5. 最好能找到一个老师,学会去问好的问题,我学scala就苦于身边没人在用,只能天天google,痛苦不堪。
吃饭,再见