键盘敲烂,月薪过万作业不做,等于没学
当前系列: 其他 修改讲义


1、学习的方向。

自学,最常见的一个问题是不知道方向。所以类似问题是最有市场的:

  • “我究竟该学什么?”
  • “学什么更有前途?”
  • “php和java哪一个更好?”

……

对初/自学者而言,这个问题非常头痛。除了给一个我已有的回答:如何转行(自学/培训)到IT/编程/互联网/软件开发/?我只能讲故事了(完整的故事在这里:《折腾》三卷:孕育 (初稿)哪里可以看到?)。

我和很多人不一样,我一开始学编程的目的就很明确:学做网站。甚至连要做的网站又哪些功能哪些要求,我都心中有数(大致上)。所以这个问题对我而言,不是那么麻烦。但和我一起学的同学们,就有很多故事啦。

我进班里的时候,同学中间已经出现了分化,有一些同学已经搞不懂跟不走了,有一些同学能勉强跟上进度,还有少数的几个同学比较优秀。我便努力的融入了最优秀同学的圈子。

圈子里有一个男生,他大学本来的专业就是计算机,不知道为什么又要来培训班里“回道锅”。他自己在做“游戏代练”(是这个词吧?就是弄个“脚本”整很多台服务器打游戏,然后卖打出来的装备),但这个“脚本”是他花钱买的,他的理想就是有一天自己能写这种“脚本”。所以他开始忽悠我们学“windows内核”,我笑而不语,但另外一个女同学中招了。

培训班的课开始听不下去了。“学这些都没前途”,“都是用别人(指微软/甲骨文等)的东西”,“没有一点技术含量,是个人都能学会,你知道吧?”……

那时候我只是觉得她这种说法有点不对,但只是觉得,也没有什么信心或者能力反驳她。我只是问了一些很浅层次的问题:“是个人都能学会?不至于吧?我学起来都还感觉有些吃力的……你会不会?”她的答复是:“唉呀!我只是不想学了而已。这些东西都很简单的……”

我觉得这个逻辑不能成立,你都不会了,你还说她很简单?

然后她就在她“钻底层”的路上一路狂奔,从c++到c再到汇编……买了一本很厚的书,《windows内核》原理之类的书,当成武林秘籍一样的供着,剃了个光头(真剃了),要闭关修炼……

另外还有一个女孩子,斯斯文文的,她就没什么野心,跟着老师的脚步走。无非就是听课上机,看得出来,她还是有点吃力,但她就是认真。我们这一学期的期末设计还是有点复杂的,我没想到她还真是一行一行的把代码给敲出来了,跑起来了(我都没做完,呵呵)。

然后她被我忽悠,下一学期也不学了(省学费),直接去找工作。其实找工作这事,只要你一直找,要求不要太高,总是能找到的。好像她最开始一个月600块,这样慢慢的加,一个公司一个公司的跳,到上海的时候,她能拿到5/6K了。而前面那个要学“别人都不会”的“底层”的同学,这时候在朝天门卖衣服呢。

我并不是说学“底层”不好,就我的了解,总有一些人要靠c、汇编、操作系统之类的知识吃饭的,比如开发单片机的同学?但你一旦确立了这个方向,你就要矢志不渝的坚持下去,最后到朝天门卖衣服这事……怎么说呢?我觉得就学习编程而言,还是一个失败。

为什么即使“削发明志”,都没有能坚持下来?我觉得还是门槛太高。


2、入门的门槛。

对自学者而言,入门的门槛不宜设得过高。我们通常都会在做事之前高估我们的意志力,而在事情完成之后低估事情的难度。所以就会造成这样一种现象:过来人会说“这也没有什么难的啊”,于是新人就信心满满的上路了。

典型的就是英语,你去问大部分英语学得好的人,他们都会说“不难啊,我就怎么这么就学好了”,听得你满眼冒星星口水流了一地;少部分人会给你讲一个激昂悲怆的励志故事,听得你热血沸腾……然而,前面真的好大一个坑。

评价自学编程的难度是非常困难的,因为对个人而言,“难度”是一个很主观的东西。但我的建议是:适当的高估总比低估好,尤其是在入门的时候。

所以我在如何自学成为程序猿?中建议不要从枯燥晦涩的“基础”学起,而是从一些更简单有趣的应用开始。学习的曲线不是那么陡,爬起来要轻松一些,可能反而走得更远。

我在培训班其实学的是java,但自己钻研学习,果断选择.NET,理由其实很无赖:.NET更容易上手一些。安装一个Visual Studio就可以开始开发了,java、php配环境都不知道要搞多久。而当你达到一定的程度之后,回过头来再了解java、php之类的,也不是那么难了。


3、学习的方法。

我一直认为,计算机是一门“实践”科学。意思就是:管你吹得天花乱坠,是骡子是马,牵出来遛遛。不明白这一点,一是会被人忽悠,比如我开始应聘的那几家公司,其实我就生了一张嘴,会吹而已;二是会走弯路,甚至走不下去。

很多同学,尤其是女同学、文科生,把学编程当成了学历史政治一样,一本书上画满了圈圈叉叉,但一学期完了,电脑都没开过几次。这样是不可能学好编程的。

必须动手!

哪怕你照着书上的代码敲一遍,也比你把代码都背下来强。事实上,你照着书敲一遍也可能跑不起来——你的环境没配对,上下文不匹配等等。能解决这些问题,才是你的能力。

还是以英语为例,要想学好英语,你一定要多用;要想学好编程,你也一定要多用。编程语言也就是一门语言,语言不用就不可能学好。

这也就是为什么“上班一个月当你自己学一年”的原因之一。其实如果你自己动手能力强,自学一个月才当你上班一年。我的所有编程方面的知识,90%是自己在家学会的,因为在公司翻来覆去就那点事,没什么新意。

关键不在于有没有教室、在不在公司,而在于你怎么学。


++++++++++++++++++++


没想到这么多赞。这两天带团队,又想到的两点,补充上来。


4、对错好坏的判读

入门之后,大致有两个阶段:

  • 能做出来。各种需求我大致都能满足,程序能够跑得起来,能达到这个水平,就差不多中级了。
  • 能做得好。这个就非常难——尤其是对于自学的同学而言(其实科班的也好不到哪里去,呵呵)。

能做出来,不一定就意味着你做得对。刚入行的程序员,尤其是脑瓜子稍微聪明一点的,有很多“天马行空”的想法,而且你放手让他们弄,他们说不定也真弄得出来,于是他们就沾沾自喜。这个问题非常麻烦,因为要和他们解释清楚“明明我的代码都跑起来了你还说我这样不行”是一件非常痛苦的事。

下一个问题更麻烦!能做得好,首先要知道怎么才算好。这不是开玩笑,也不是我在玩文字游戏。这是一个业内非常严重,非常基本,但又被严重忽视的一个问题。不厘清这个问题,你的前进就没有方向,很可能一直在原地打转。

想来想去,也只有几个建议:

  1. 继续保持虚心的态度。翅膀还没长硬呢,真的。半壶水,才响叮当。
  2. 夯实基础,扩大眼界。关于基础,我推荐参加一次“软考”(见:中国计算机技术职业资格网),一些理论性的东西,考试,有标准答案,你才能有正确反馈;扩大眼界,我推荐广泛阅读,尤其是看各种专业书籍。
  3. 翻来覆去的思考,有机会谢谢博客之类的,多交流吧。也只能这样啦?好像。


(以下:着写着发现好像跑题了,舍不得删,就放着吧。)



可参考我的博客:架构之路(一):目标

前文说过,评价架构好坏是一个很主观的东西。既然大家写出来的程序都能跑,凭什么就说你架构好,我的架构就差?拿出来大家评评理,张三说好,李四说不行,王五说将就……究竟谁说了算?现在已经不是一个迷信权威的时代了,所以不管你多少光环加持,你都得说出子丑寅卯来,都得服众才行。
我觉得,这种现象的产生,抛开“同行相轻”和“流派之争”之类无厘头的东西,一个很重要的原因就是没有明确判断标准。所以在网上,常常就出现这样一种很热闹很奇葩很无奈的现象:我和你说性能,你跟我说安全;我跟你说安全,你跟我说扩展;我跟你说扩展,你跟我说维护;我跟你说维护,你跟我说成本……

但这个(架构)问题,我觉得转行/自学的同学更有优势。因为他们的视野更开阔,软件工程其实是计算机技术和工程管理相结合的一门学科(个人朴素认识),它的很多着眼点已经远远的超出了计算机科学范畴。很多科班出身的同学还抱着“程序等于数据结构加算法”的老观念不放,就是没有认识到这一点。

举个例子吧。航空母舰肯定是钢铁造的,而且我们可以假设(这几乎是一定的)航母上的很多关键技术突破就卡在了材料上,那是不是冶金/材料学就是航空母舰的基础?那发动机呢?指挥系统呢?飞机升空降落呢……

软件开发就像造航母一样,其实更多的是一个“拼凑”的过程,各种各样的“零部件”,组装起来,修修改改,磨合测试,就可以用了。但这绝不是一件简单的事,工程学管理学,是非常复杂的。难度不亚于基础科学的突破。


学习笔记
源栈学历
键盘敲烂,月薪过万作业不做,等于没学

作业

觉得很 ,不要忘记分享哟!

任何问题,都可以直接加 QQ群:273534701

在当前系列 其他 中继续学习:

多快好省!前端后端,线上线下,名师精讲

  • 先学习,后付费;
  • 不满意,不要钱。
  • 编程培训班,我就选源栈

更多了解 加:

QQ群:273534701

答疑解惑,远程debug……

B站 源栈-小九 的直播间

写代码要保持微笑 (๑•̀ㅂ•́)و✧

公众号:源栈一起帮

二维码