At the beginning

      

      首先的首先,coding的基本要素是要热爱,不然你做不来的。为什么要从热爱谈起,先讲讲自己,我本科是一所二流学校的数学系学渣,毕业就失业已经是必然,离开学校那天注定干什么都要从头学起,想来想去还是干一门自己不叫热爱的东西--coder。然后自己开始啃java,记得当时跟我入行的有几个人,backgroud 很不错,都是重点大学计算机的学生,但是我想表示学校的那点玩意真的拿不出手,初出茅庐的程序猿是要经过第一阶段比较痛苦的阶段,就是阅读大量别人的代码,然后再这些已经成型的项目上作修改和添加,好多时候对着黑底白字的屏幕,看着红蓝白相间的代码就是一整天,因为你只有读懂读透了才能敢动手去修改,有的时候即便是文档写的很详细,你也要一一试过才真正明白原作者的用意。绝大多数人都在此放弃了,或者转行去做产品,或者去做业务。面对枯燥乏味的代码,和莫名奇妙的bug我只想说,如果你不是热爱真的是很难做到。

      挺过第一个阶段,说明你已经具备基本要素了。也说明你的代码量达到一个初级的水平了,然后重要的来了。以为我自己为例,我并未有在大学里受到正统的计算机教育,所以终归血统不正。起初我也并不觉得这有什么不妥,你能编程,我也能编程,为什么我就比你差。随着水平的提高,工作的难度也加大了,程序的bug也从最开始的字符语法,对象啊,变成逻辑,性能,效率的问题。再解决的过程当中就发现自己欠缺的恰恰是本科那几门核心基础的课程,即算法,操作系统,数据库,网络。这些东西,也许看的时候体会不到什么,但随着时间慢慢推移,经验满满积累,越来越觉得重要。现在很多用人单位在校招或者招聘初学者去培养的时候都限定计算机相关专业,也是因为这个原因。越是专注技术的单位越需要这个。为什么呢?因为现在很多像北大青鸟,达内这种培训单位可以很轻松的把一个不具备编程能力的人培养成一个可以立即放到工作岗位干活的工作人员,很多时候你大学四年下来不一定有一个专科培训过的人更有竞争力。但是要想在技术这个方面走的长远,显然科班出身的人要更具备优势。但这也不是说只有计算机专业的人才能成为大牛,还是回到上一个话题,看你有多热爱。记得开始写java web的时候都不知道nlogn的算法有哪些,我也丝毫不在意3个以上的循环嵌套,当时就在想,我操,编程能有多难,就这么回事吗!诚实的讲,编程本身并不难,学会一门计算机语言比学好外语简单多了。难点在于你要知道为什么这门语言是这么设计的,为什么这门语言干这个活要方便,如何用简单的语言描述复杂的工程。

       第二个阶段,大量的积累。这里有很多老生常谈,比如你要会两门以上的语言,要多逛社区,多学习好的开源框架。我想说,因人而异吧,因为毕竟简单的涉猎谈不上学习,只有工作或者学术的需要才能驱使人深入的研究,也就是说这个时候要给自己一个定位,自己是前端,后端,运维,移动端,科学计算,等等。还是那句话,跟着兴趣走,喜欢前端就多去看看国外好的js框架源码,更喜欢服务端,就多看看分布式计算,并行计算的经典paper。建立自己的知识体系很重要,要知道真正的计算机全才时不存在的,所以一定要专攻自己感兴趣的领域。永远保持一颗更新的心态。

        第三个阶段,我还没到呢.  

        最近一直忙着刷leetcode,即将毕业结束自己的学生时代,准备美国的coding之旅,觉得可以开始写blog总结和积累自己的知识体系。也把自己的经历拿来分享,希望这是一个好的开始。


你可能感兴趣的:(At the beginning)