哦,自学编程,好问题。我很适合,按说我原来的专业和兴趣是经济和哲学的。
01年接触C编程,02年接触网页编程,后来沉沦了几年,和计算机相关行业几乎都做过,卖数码相机、装机、电脑维护、平面设计,就是没有找到适合的程序员工作,直到07年。中间也有一直坚持看书,不停的学。04-05年,国内开始炒作前端重构,DIV CSS布局,06-07年国内原来的JavaEYE(现在的ITEYE)带领流行起Ruby on Rails。
我比较特殊,从02年开始,接触网页编程,就直接用的是CSS,那时候做网页还用Table Gif布局,然后那时候还特别沉迷JS特效。所以到了04-05年,国内流行前端重构的时候,当时如果花点时间多去碰碰灰,可能就能找到适合的工作。不过我是拖到了07年,也的确是通过学习Rails,看了几本Ruby编程思想和哲学的大砖头书以后,突然就对面向对象编程开窍了,也许是厚积薄发吧。
之后开启了疯狂跳槽的阶段,先是去了沈阳某个建筑门户网站,主力是做JS工程师,虽然的确征服了一众后端开发,可是这个团队的执行力不太强,制定各种开发规范,前端规范,从不执行。
或者是我年轻气盛吧,几个月后,接着跳槽去TCL,开发一套办公系统。但TCL那种养老环境,我不喜欢,继续跳去了当时沈阳某个门户网站。
那个门户网站的职位是我喜欢的,前端负责人,负责前端重构,那个公司当时前端和后端闹得不可开交,天天嘴炮,但凡开会总会变成吵架。虽然04-05年国内某些有识之士开始提倡前端重构,但这股风刮去门户网站的时候,其实到了07年才开始。所以,前端天天怼后端这不行那不行,这不符合规范,那不符合语义化要求。嗯,严重的时候,前端就罢工,影响非常不好。
当时那个门户网站在推一个自定义皮肤的博客系统,嗯,今天有那么多css编译工具,要弄自定义皮肤当然很简单,不过那年头,吼吼(顺带一提,07年,前端是个屁,和今天的地位不可同日而语,当年也没有webpack,jQuery也不是当红炸子鸡,而是那个叫做Prototype的框架。单元测试什么的不存在的,手动刷新吧,还有当时要兼容IE6/7和火狐浏览器,那时候的网页字体还清一色是宋体)。因为前端不配合,后端强力推,结果那个项目好像一泡屎一样,做了大半年,依旧无法运行起来,投入了大量精力,接近翻车状态。所以我过去以后,三下五除二,收拾了那帮闹事的前端,然后就开始重构。那时候其实对我个人技术也是一个考验,据说当时的技术总监是国内Oracle社区的版主,总之大牛,外加一群C#高手,我嘛,某程度上人家也是看笑话那样看待(毕竟不是正儿八经的科班出身)。不过结果当然是解决问题了,几万行JS而已嘛。因为我试过三天三夜没回家,一直在公司待着,那个技术总监后来总开玩笑说我是神一样的男子……这里面是不是有别的含义,我到现在没想过。
那时候年轻,反正搞了几个月吧,项目正式上线投入使用,公司给我分了期权,不知道为啥我又没兴趣了,期权是什么,可以吃吗?后来据说这个门户网站,完成了A轮融资,反正是过了几年滋润日子,然后,就没然后了,和众多曾经的门户网站一样,消失于滚滚红尘中。不过我事后总在想,也许那时候没走,留下来混吃养老等死,maybe会走上人生巅峰?谁知道呢?
所以马不停蹄的,在同学怂恿之下跑去创业,创业内容就不谈了,熬了大半年,开始有收益了,只是同学管钱,拿着钱去浪别的项目,后来碰上金融海啸,加币贬值,最后不欢而散。
接着是遇到一个双选题,网易网页部门当时找我,想做一个类似jQuery这样的前端类库。挺有意思的,去谈,三面免试,只是坐而论道。不过这过程,我大致了解他们网页部门的情况,当时是游戏部某位大佬主导时期,网页部,确切的说,是网页广告部的前端组,是个长期被人瞧不起的地方。我不否认他们想做一个jQuery这样的类库的决心,但是,作为经历过大风大浪的人来说,如果不能在一定时期内掌握到绝对权力,很难在大企业里面掀起什么风浪。什么,试用期6个月,再见了您!
所以最终选择另外一家港资企业,名字具体就不说了,当时这个企业定位是公关媒体公司,早期是做百威官网,说是谁负责这个项目吧,谁未来做为技术主管,其实谁在乎这个技术主管呢?权力如果不能做我想做的事情,不如不要权力。正因为这幼稚的想法,虽然解决了开发上的重重难关,不过在人事斗争上败下阵来(当年那个竞争对手据说现在已经在某上市公司养老了)。
后来自己接外包沉沦了一年多,鬼使神差的又回了这家公司港资公司。
不过当时这公司也是到了翻车边缘了,嗯,我不知道为什么,很喜欢收拾残局,所以我就熬了几年,把这个公司从生死边缘,熬了回来,沈阳做网站最嚣张的时候,某个和IBM合作的项目,嗯,你没看错,是IBM,我一个人对着十几个Java开发,这里不行,我教你,还是用我最熟练的技能,JS。后来IBM相当重视,从上海还是哪里专门掉了一个工程师来专职负责优化dojo这个框架(那年代流行requirejs,dojo基金会收购了requirejs,可是实际上dojo那个如梦似幻的框架,真的用requirejs加载的话,会成为刷爆服务器的神器。没办法呀,你自己指定非要用你家的框架的。)。其实要说,互联网技术公司有多不靠谱,你看IBM就知道,技术人力就那么多,屁股决定脑袋,成本就那么多,再多的人也请不起了。不出名的企业就没办法了,真的出名了,项目多到做不完,IBM也好,巨硬也好,该怠惰还给你怠惰。
后来和港资老板在技术上、未来发展方向上,发生了分歧,我就拜拜了您嘞。
在前面这些年里微信小程序开发,我形成了许多个目标,年轻嘛,要给自己设立一些目标。从那之后至今,确确实实的说,我是在追逐着自己的目标。也基本都一一实现了,目前正处于倒数第二个大目标。和不同人往来合作,起起伏伏,跌跌宕宕,被最出人意料之外人的坑得惨不忍睹。现在勉勉强强的活着吧,哈哈,死不了,火不了,也发不了。
编程,的确改变了我,改变我的人生,改变了我的生活轨迹。成为程序员,你必然会养成一些良好的习惯,才会将你逐渐推上一个成功的位置。
今天比起10年前的光景好太多。真的学编程,如果你真的掌握了,想找到工作,并不难。我面试,其实简历怎么写的,看完就算了,简历写的精通、熟练什么,80%面试再考他,别说太复杂的,稍微有点变化,就完全懵了,这怎么也敢写精通呢。特别的,你需要有一颗敏锐的心,每个时期的疑惑,都不要放纵他过去,一个问题一个问题扎扎实实解决,总有一天你也会成为大牛——不过你真的要赶快。
除此之外,你说自学net,我想说,巨硬呢,已经错过他最辉煌的年代,netcore早五年出现,也许今天光景大不相同。所以,你学.net,要想清楚自己目标是什么,期望跻身那个行业,才确定选择.net。如果可以,我希望劝你试试python,毕竟目前大火,而且的确后端开发、运维经常会接触到python,涉及面、适用度非常广。你现在开始学,就要赶人工智能这一趟车了,不妨朝这个方向多恶补恶补。
如果可以的,最好找《计算机组成原理》、《编译原理》、《算法导论》、《算法与数据结构》等几本基础书看看,把基础恶补一下。最初看这些书,我真的完全看不懂,看不懂我就抄,抄到几乎能背,然后再日后工作中再慢慢消化理解。毫不夸张的说,那几年里,计算机构成原理里面的图,整天在我脑海里浮现,一闭眼眼前就浮现那些流程图,还有一些基础理论。后来在某个时期,很沉迷算法和数据结构。读这些书很苦逼,但是的确能将你的编程水平提升上一个阶段,能从更接近计算机和汇编本质去理解编程语言。只有看懂这几本书,你才能在日后的编程生涯中立于不败之地。
面向对象编程、函数式编程、面向切面编程、事件驱动、异步非阻塞、《设计模式》,这些编程方法、思想,也要一一掌握,非常非常有用,是你遇到编程瓶颈时的良师益友。无论如何,你应该要在你所能熟练使用的编程语言,哪怕是javascript,都能演练这些方法和思想。
如果立志做后端开发,线程,线程安全,锁,这些也要有所了解,比如你说.net,在C#是如何实现各种锁。不然,不如去学PHP或者node.js或者python。不能很好理解线程,用C#做后端就是坑队友。
不要放纵自己,如果你真的想进入这一行,你也许只有开头那几年,有比较多的时间去学习,去看书。也只有那几年,你能孜孜不倦的去吸收书本的知识。随着工作开展深入,随着业务的纠缠,你慢慢就会被讨论、需求确定扯去大量时间,慢慢的,工作就会牵着你的鼻子走,以后你想再有翻开一本书的时间,也很难。