首页 > 代码库 > 我是如何走上程序员这条道路的(续)

我是如何走上程序员这条道路的(续)

      去我们那实习的女老师,最终因为不习惯我们那小地方的环境,选择了离开。忘了告诉大家,她的名字叫珊。我没能打动她留下,准确的说,是我没有向她表白,于是她要走了,有许多行礼拿不下,我去送她,上车的时候她把自己的黑熊娃娃送给了我,说她会去长沙那边找工作。她离开后的那年暑假,我感觉她把我的心也带走了,整天无精打彩,生活变得漫长而又无趣。于是我坚决的辞掉了这份安稳,看起来也还算体面的工作,只身来到了长沙。

      俗话说在家靠父母,出门靠朋友。坐了近四个小时的大巴,寄居在一个朋友宿舍里。刚到长沙那会,人生地不熟,学历不够,技术也不够,面试了好几家公司都没有等到电话通知。找了一个星期的工作,也没有结果,打算回去算了。在好友的一再鼓励下,我坚持续继投简历,跑人才市场。在我快要放弃的时候,终于有一家公司同意我去上班了。

     2008年的冬天,长沙大雪,道路结冰,许多地方停水停电,这是我来长沙的第二个年头,就遇上了长沙百年一遇的大雪灾。我在一家做网络的小公司做技术员,试用期月薪800百。每天除了装系统,还是装系统。为了能拿下这份来之不易的工作,我工作的比任何同事都勤快,坚持每天早晨第一个到,下班最后一个走。很快,我就正式的成为这家公司的一员了。我激动的打电话告诉珊,我来长沙了,而且找到工作了,她的反映很平常,只是说了一些客套的话,她说回老家了,暂时没有出来的打算。通完电话,我有一种莫名的失落和伤感,我发现我早已习惯有她在身边的感觉了,这种感觉随着时间渐浓渐近,以前天天在一起,没觉得有什么,如今却时常想起她,还没有恋爱,却先尝到了失恋的痛苦。每天都听那首陈楚生的《有没有人告诉你》,越听,越难过。我终于信了朋友的那句名言:两个人,不在一起,什么都是假的。于是我决定去找她。

   第二年的国庆节,公司放七天假,我没有回家,从未出过远门的我,买了人生第一张火车票,踏上了寻找真爱的旅程,列车上的背景音乐真好听:如果你真的在乎我,又怎会让握花的手在风中擅抖,莫明,我真的喜欢你,深深地爱上你,没有原因,没有理由....。

  。。。。。

。。。。。

      经过一年多的异地恋,当我把用过的火车票刚好凑齐两副扑克牌的时候, 最终,珊答应做我的女朋友了。我们在一起的那段日子,是我最幸福的时光。为了她,我更加努力的工作,但是这样一个小公司,再努力,跳一跳也就可以摸到顶了。在这个看脸和拼爹的年代,如果连个学历都没有,怎么好意思出来混啊。于是我决定提升自己的学历,开始报名全国高等教育的自学考试。珊非常支持我的学习,她推荐我报计算机相关的专业,这样即拿了文凭,对将来的工作也有帮助。自那以后,珊对我的生活起居照顾的无微不至,学习上只要我稍有松懈,她一秒变老师,拿出她当年教育学生的姿态来教育我,每次被她训完,我不但不生气,居然还厚脸皮的呵呵傻笑。自学的过程枯燥而漫长,什么马列主义,思想道德修养,全是死记硬背的东西,除了有学分之外,我再也找不到学它的意义。这背背题也就算了,那高数真的让我抓狂,三角函数,等比数例什么的,我都早还给老师了。要学好这门课,这不得从高中开始复习啊。我说算了吧,这太折磨人了。每每我有这种想法的时候,珊的思想工作就开始了,她说,积极的人像太阳,走到哪里哪里亮,消极的人像月亮,初一到十五,一天一个样。你是要做一个内心强大,积极向上的太阳呢,还是要做一个走不出阴影的月亮呢?我说当然想做太阳,但是这一没同学,二没老师,巧妇难为无米之炊啊。珊笑了,露出一个甜美的小酒窝,说:你还巧妇呢,都快成怨妇了吧。玩笑归玩笑,她一本正经的告诉我,办法总比困难多。于是她帮我出了不少主意,比如加一些自考群,注册一些论坛,让我多结识一些同道中人,这样就感觉不是一个人在奋斗了,然后搜索一些免费的授课视频,这样老师也就有了。

     经过五年的自考之路,终于通过了计算机信息管理的全部课程。因此也有不少人向我打听自考的心得,问我自考到底难不难之类的问题。其实自考的内容本身不难,难的是长久的坚持。计算机原理,C语言程序设计,数据库基础等等,这些课程的知识为我后来从事php相关的开发工作,起到了至关重要的作用。如果当初我急于求成,只是选容易考,科目少的专业读的话,估计也就没有我今天的这篇总结了。

     第一份正儿八经的程序员工作,是从2011年开始的。刚进去的时候,难度远比我想象的大。一上来就要我做一个比价网,然后发了一堆的需求资料给我看。我滴个神啊,每天上班,就像是坐在一块cpu上,难受啊,除了要会php,还要会数据库,还要会前端。小公司就是这样,一人就是一个团队。还好,我的领导待我非常包容,前端方面的一些问题他帮我分担了,而且告诉我,拿到需求,不要马上开始写代码,要先思考。只有想清楚了,才能写清楚。这一点,我开始也不是很理解。随着项目经验的积累,我现在才渐渐明白,那是一个老程序员对一个新程序员的经验传授啊。小心翼翼的做了一个月,项目还只是做了一个简单的界面,我挺着急的,抓的头发掉了一键盘。我想,这拿人家工钱,活没有做好,到时肯定交不了差。下班拖着沉重的身驱,挪到了租住的小屋。我对珊说我做不下去了,每天都过的很累,压力太大了。珊关切的把她的手轻轻的放在我的背上,轻轻的拍了拍。她说,一个人,只有当他走下坡路的时候,才会觉得是轻松的,如果他是在往上走,哪有不吃力的道理。你现在感觉很辛苦,说明你正在提升,你在进步。你不是喜欢写程序吗?这人家花钱请你学,还不好啊。办法总比困难多。我相你,一定可以做的到。说完,眨巴眨巴着那双迷人的大眼睛看着我。我说好,加油!第二天我就像换了一个人似的,虽然还是没有写几行代码,但是我感觉心里淡定了许多,思路也宽阔了许多。终于赶在过年前,完成了比价程序的测试版。经过几次版本的升级,我在想,如果只是简单重复的写一些CRUD操作,那不是太没有技术含量了。这时候,我们的头说:再大的系统,拆开来看,都是一些CURD操作,但是量变会产生质变。你要学会站在一个更高的角度,去把你的业务逻辑进行抽象,减少代码的重复和偶合。什么是更高的角度?什么是对业务进行抽象?我当时不是很懂,现在也不敢说很懂。活到老,学到老,学习无止境,技术才能创新。

     经过一年多的努力,我的比价程序终于迎来了它的春天,不久就成功的申请了软件著作知识产权,有更多的第三方数据的加入,紧接着有风投对它进行了首轮注资。一切都看起来很美好。可是公司一直没有要给我加点工资的意思。小公司就是这样,没钱的时候,他会跟你画蓝图,有钱的时候,他和你讲奉献。可是他们永远也不会看到,当他一脚油门可以烧掉几块钱的时候,我还在为了等一块钱的公交车而不得不长时间的忍受尾气的毒害。团队开始扩大,人员变动也更加频繁。和我一同进来的哥们,因为工资结算的事和老板大吵了一架,最后也离职了。我还在坚守着,因为我还有两个产品,一个比价,一个美图,它们就像是我的孩子一样,我不想放弃它们。但是后来,公司要搬迁,很远。正好我朋友的公司招前端工程师。我就提出辞职了,老板问我为什么做的好好的要走了?我没有说实话,因为马云说过,一个员工不想干了,无非是两种原因:一种是钱给的不到位,一种是做的不爽了,他们之所以不说真话,其实是想给你留面子。说的真TMD太好了。

    话说这也算是我程序员生涯的第一次转型,由后端转前端。为什么要做前端,而且连ajax都不会用,这个也太冒险了吧。当时我想的只有两点,一是做为web程序员,如果不懂前端,那会是一种缺陷,二是前端给的待遇比我过去好。不就是一点css加javascript吗,挺一挺就过去了。说到待遇,没有什么前端待遇比后端差,也没有java比php待遇好。学任何技术,只有当你成了那个稀缺的人儿的时候,你的待遇才会好。所以不管你现在是做前端,还是后端,学php还是java,待遇的问题先放一放,把东西学好先。俗话说,耐的住寂寞,守的住繁华。

     想着容易,做起来难,以前我一直以为前端是个很容易的事件,不就是写行样式和js脚本吗?直到我遇上公司这个项目,一个纯前端开发的项目。让我见识了javascript的灵活和深度。以前也听前諯高手讲过这方面的知识,但是俗话说,听教授讲课,听听激动,想想感动,事后没有行动。真要自己深入进去,才发现没有那么简单。我接手的项目里边有太多的闭包,回调,异步,再加上整个程序在运前结束之前,页面上看不到一个dom节点,完全打破了我对前端的传统认知。我又连续恶补了一个月的基础知识。那本被我翻烂的《高级程序设计三》,俗称红宝书的那本,就是一个见证。在此也要感谢我的好友Aaron,是他一人顶了两人的压力,让我有空闲追赶项目。有兴趣了解他的朋友,可以在博客园的推荐博客中找到他。他不但长的像陆毅,写程序也是非常历害的一个家伙。

    关于前端的学习,我有两点体会,一是要多看书和优秀的源码,二是多做练习进行实践。如果还在起步阶段的朋友,那本红宝书是你不错的选择。不要看一遍就收起来,要多看几遍,我现在也偶尔会翻里边的某些章节来看看,每次都会不同的心得。通过Aaron写书,我就体会到了,写一本书出来,真心不容易,所以,如果是看纸质书的话,还是买正版吧。书不用买太多,对于前端来说,把红宝书上的营养吸干净了,不算高手,至少一般的面试题是难不到你了。其次就是学以致用,那些用不到的东西,将来也不打算往这个领域发展的话,就不要去跟风了。有些人学东西,就跟追星似的。今天新出了一个angular,就买本angular从入门到精通,明天出了一个bootstrap前端框架,就赶紧去学bootsrap去了,再后天又来了一个nodejs,说什么也要买一本回来学学。我想对于大多数人来说,精力都是有限的,这么空乏乏的学来学去,搞的好像什么都懂一点,但是真的要用到项目的时候,又好像用不上劲。更何况大多数情况,我们连javascript和css一些基础的东西还没有吃透,还是多花点时间在巩固基础上面会比较好。基础这个东西,要厚积溥发,掌所的越细越深,你学相关的框架和库才会省时省力。jquery这么火,拆开来看,哪一个知识不是基础的东西构成的。当然,光看不写,那是假把式,有些东西必须要自己用过,经历过,才会有深刻的体会。像闭包问题,原型链的问题,这些你不去试,刚看,是不会有什么收获的。开始的时候,可以从模仿开始,把书上的demo拿来,在console.log一下,看看是不是和自己预期的那样。写程序,要会学会断点调试,别老是alert,echo什么的,那是没有效率的,也不专业。当然,调试还有许多别的方法,但是一般来说,先掌握断点调试吧,这是基本的。做练习呢,我不追求多,但是一定要有质量,做一个,总要有一点收获,最好是以后改吧改吧就能在项目中用上。最后就是要学会分享,分享的过程,即是交流的过程,也是自己提练的过程。一个知识点,只有当你能用自己的话说出来,并且能让其它人也能听懂的时候,才说明你是真的学到了。这种知识是不会随着时间而淡忘的。你听说过学会了游泳的人,过几年没下水,就不会游了的吗?不要怕你把东西告诉别人,自己就被别人超过了,技术不是因你保守,别人就不能进步的。苹果和苹果交换,你还是一个苹果,技术和技术交换,你就有两项目技术。要学会交流,学会分享,道理就是么简单。

   关于前端和后端,有些人说,我只要会前端就可以了,后端不是我的专业。还有的呢就说,我是搞后端的,前端那么简单的东西没有必要浪费我的时间。我恰好是前端和后端都有经历,所以还算有点体会。之前做php的时候,我会一点css,但是js真的只会写一个弹窗什么的。所以当后台里边要用到一些交互和界面的时候,真心觉得吃力,而且也局限了我的思路。如今全职做前端,虽然主要是写js和css,但是现在越来越趋向于全能型的开发。nodejs就是一个例子,mvvm 的兴起也是一个例子。设计模式和数据结构,以前只在后端开发的时候,才有用,现在前端照样也有了。我们的项目里边就到处都有用js操作数据库的例子,甚至还有用php写的数据脚本(因为有些浏览器不支持WEBSQL),所以有些大的企业,虽然明确招前端,但是要求至少会一门服务器端语言,有些呢,虽然是招后端程序开发人员,但是要求至少要会用jquery之类的前端工具,就是这个用意。正所谓技多不压身,对相关的周边知识进地扩展还是必要的,但这是有选择的学和什么都学还是有区别的。公司规模越大,分工越明确,虽然做前端,你除了写js,可能连css都有人帮你写了。但是总免不了要和后端的人去交互吧,如果你不懂java,你就不知道他的插件是怎么调到你的js,所以你也不知道你的js要怎么写对方才能收到。同样,如果你做后端,如果你只会php,那么你就不知道怎么样的数据格式是前端最容易实现的。

    经历这么多,我现在总算是这家公司的前端开发工程师了,从当初连jquery是何物都不知道,到现在独立开发功能模块,也仅仅用了一年半的时间。我的学历也从高中升到了大专,那个曾经在机房默默陪伴我的年轻实习女教师,我把她的名字写进了我的户口本,配偶那一栏。这一切都是辛苦付出的结果。写到里,我想很多学弟学妹们又会相信爱情了吧。当然,我在这里要说的不是我的爱情,而是我的前端总结。

我是如何走上程序员这条道路的(续)