入坑IT都快十年了
一起帮的开发直播已经告一段落:一是主体的功能差不多都实现了,二是用到的架构技术都展示得差不多了。以后就算继续开发,也应该都是一些“技术上”重复的工作而已。整个直播过程耗时近半年,SVN提交1062次,视频录像60.5G,涉及到一个项目开发的方方面面,想来还真是有那么一点小小的成就感。
从包工头到程序猿,一晃就是快十年了。
想想我当初“三个月学会编程”的计划,不觉莞尔。计划从三个月变成一年,又从一年改到三年,再然后从三年到十年……我就这样磨磨蹭蹭的一路走了过来?
回过头来看看,有没有什么弯路?是不是耗时太长?有没有什么心得体会?
其实心里有点乱。
可能也捋不出个一二三,就想到哪儿说到哪儿吧。
一起帮的所有功能,我捋了一下,其实也没什么复杂的。仅从功能来看,五年前,甚至七年前,我都应该能够做出来了吧?那我这些年,究竟在干嘛呢?
所以有一个非常流行的问题:“程序员三十/三十五(以及五年后的四十?O(∩_∩)O~)岁之后在干嘛?”或者,换言之,“程序员是不是只能吃‘青春饭’?”因为,做了一段时间之后,你就会非常悲催的发现,好像每天都在重复劳动,干的都是体力活,技术上的提高非常有限……
有上面这种想法的人,其实还是比较幸运,不,只能说比较舒服的,因为他们多半是在一些比较稳定的单位/职位上,使用比较成熟的技术,所以才会有这种感觉。而另外一些更悲催的同学,可能一年到头都在学习各种新技术,他们追得更累,他们的疑问大概应该是:“十年之后究竟还有多少技术是有用的?”
这些问题,确实不怎么好问答。
先说技术的更新换代吧。
- 我最早进公司的时候,人家的老代码还是ASP,Html和VBScript混在一起,眼睛都要开花了的那种,真真不堪回首……
- 还好很快就升级成ASP.NET 2.0 WebForm,控件开发,页面和后台分离,那一个爽啊;那时候以PetShop为范本,“三层架构”满天飞;是用DataReader还是DataSet吵得不可开交……
- 安生日子还没过几天,Ajax来了,“富客户端”和“富服务器”端吵得天昏地暗,最后还是富客户端赢了,WebForm式微,迎来了ASP.NET MVC;数据库操作早就换成了Linq to SQL,虽然还有不少人言之凿凿的说Linq性能不行……
- 这MVC一出来,感觉又回到了ASP时代一样,View上面乱得一塌糊涂,但灵活啊,和各种前端框架结合方便啊;后台又蹦出一个Entity Framework,好在我用的是NHibernate,这玩意我没怎么接触……
- 还没有接触的,现在火得一塌糊涂的,还有各种前端框架,什么Vue啊React啊之类的;以及万众瞩目的.Net Core
- ……
也就不到十年的时间,回过头来看看,确实是眼花缭乱——这还就ASP.NET这一块!
我不是经常以“野生程序员”自居吗,有人看了我的经历,说,“呸!你都培训班出来的,你好意思说你是‘野生程序员’?”我仔细琢磨琢磨,培训班学的那点东西,和我现在用的这些技术,不知道哪里哪里了哟!
其实啊,不管科班的,还是野生的,做程序员,最终还是靠自学,否则根本走不远,是不是?
可能有些刚入行的同学被吓着了,呵呵。但其实呢,也没你们想像的那么恐怖。我说几点:
1、技术是渐进地演化的。每一个新技术,都不是凭空出现,而一定是构建在之前的技术上的。这就有两个结果:
- 有基础的老人,可以更轻松的学习新技术。比如有了ASP基础的老鸟,学习ASP.NET,不管是WebForm,还是MVC,你这些组件,直接一跑看生产的html,就已经懂了一大半,其他的GET/POST,cookie,session,门清儿得很。对于老鸟来说,很多东西,换汤不换药,上手快得很。
- 直接学习新技术的新人,扎实程度上比不上老人。这一点,我发现很多“外行”真没搞懂。我转行那年,才26岁,我表姐就说,“搞IT,是年轻人的事,你都这么一把年纪了……”当时我还真被她给吓着了,但入行越深,才越发现不是那么回事。
这里干脆多说点。
我是那种看了“21天精通ASP.NET”视频就死皮赖脸混进IT队伍的,拖控件的时候觉得简单,但很快,各种具体问题就出来了。我记得当时有一个问题,是后台取不到前台传回来的值,记得我满头大汗,无计可施,只好找我们 team leader,他是从ASP做过来的,“这简单啊,不要急不要急,方法很多!最简单的放一个hide input,或者放在cookie里,或者给个url参数……”
我印象特别深刻。一方面,他那种气定神闲的架势;另一方面,就在那一刻,我明白了那种“在基础层面上的差距”,不知道怎么形容,大概就是所谓的“底蕴”吧?
所以那时候ASP.NET开发人员被人看不起,“除了拉控件,啥也不会”。但这话是不对的,“除了拉控件,啥也不会”的,是我这种一开始就学ASP.NET WebForm的人。这也是没有办法的事,那时候凡是讲ASP.NET 2.0的,不管是书籍,还是视频,基本上就只讲控件,其他的就一笔带过。确实啊,讲ASP.NET 2.0的,不可能给你从Html开始讲起吧?但没有这些东西,你的知识,你的技能,其实是“浮”着的。
这里面,最关键的,是“技能”。“知识”吧,你还可以补,我回头学就是了;但日积月累形成的“技能”,是很难很难短时间内补上的。
其实我做一起帮的直播,就是想的让观众通过观看一个真实的项目开发过程,来弥补“工作经验”上的不足。但越做到后来,越觉得这基本上是不可能的——除非有人愿意跟着做,甚至跟着做都不行,要换着花样的做,要遇到困难并解决困难,才能得到磨练并形成能力。
我在直播中,遇到了各种稀奇古怪的问题。这些问题,才是衡量一个人能力的试金石。大家回想一下自己工作中搞不定的问题,是不是甩给了老大?那老大是怎么把它们解决了的呢?老大怎么就能把它解决了呢?大家都是用的C#,语法类库你都没问题,在知识层面上,你和你们老大可能是差不多的,甚至你们解决问题的方式都是一样的,google一下呗!但为什么老大就能搞定,你就搞不定?这就是能力的差距。
能力,是练出来的,是时间给垒出来的。
2、技术是越来越简单的。
很多新人,一听到新技术,两眼冒光,像打了鸡血一样,以为各种高大上。其实啊,越是新技术,越没有“技术含量”,或者,技术含量在新技术本身里面,而不在“学会新技术”“使用新技术”上。
举个例子,Ajax,最早的时候,要使用XMLHttpRequest对象,各种回调,各种兼容,那时候要谁会用Ajax,绝对的大牛。现在有了JQuery,Ajax绝对就一大路货,不会Ajax你好意思说你是前端?是不是现在的程序员都集体涨了技能?肯定不是的嘛,JQuery的Ajax那么简单,是个人都会啊!
你自个算算,从汇编到C语言,从C++到C#,从ADO到ADO.NET,从Linq to SQL到Entity Framework……所有的这一切,是不是让开发变得更简单了?不然,凭什么现在人家四个月培训出来就能干活?我那时候,要两年呢!
不是“培训班降低了IT行业的门槛”,是微软,是Google,开源社区里不断提供“新技术”“新框架”的牛人们,KISS(Keep It Simple, Stupid),有意无意的降低了IT开发的门槛——说不定以后哪一天,编程就像打字一样,是个人都会哟!
一不小心,就扯了这么多了?也不知道对大家有没有什么借鉴意义。
技术方面,就先说到这里吧。下次我们有机会,再聊聊技术之外的事情。顺便聊,大家有什么问题,欢迎留言,都会看的,O(∩_∩)O~
入坑IT都快十年了的更多相关文章
- 入坑IT十年(二)技术以外
上一篇博客里提到:技术越来越简单,发布后不久,就看到<技术并不是越来越简单>,这显然是打擂台来了. 技术究竟是不是越来越简单?其实这个问题,要看你究竟是以什么角度来思考这个问题.我们可以举 ...
- 大神都在看的RxSwift 的完全入坑手册
大神都在看的RxSwift 的完全入坑手册 2015-09-24 18:25 CallMeWhy callmewhy 字号:T | T 我主要是通过项目里的 Rx.playground 进行学习和了解 ...
- 【Xbox one S】开箱&开机&初入坑心得
再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...
- 新人入坑Redis必会的吐血总结
新人入坑Redis必会的吐血总结 一.什么是Redis Redis是一个使用C语言开发的开源的高性能的key-value存储系统,我们可以把它近似理解为Java Map.简单来讲,Redis是一种NO ...
- 入坑Vue
长期的后端数据开发着实有些枯燥无趣,项目完工,闲暇之际,最近一直在研究前端方面的东西,不得感叹,前端技术发展速度快的让人有些目不暇接,从jQuery开启的插件化时代,几乎许多网站都被jQuery支配, ...
- web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】
http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...
- webpack入坑之旅(一)不是开始的开始
最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过 ...
- 初生牛犊不怕虎 golang入坑系列
读前必读,下面所有内容都是来自这里. 放到这里的目的,就是为了比对一下,哪里的读者多.平心而论,同样的Markdown,博客园排版真心X看,怎么瞅怎么X看.(X := '难' || X :='耐' | ...
- 2-STM32带你入坑系列(点亮一个灯--Keil)
1-STM32带你入坑系列(STM32介绍) 首先是安装软件 这一节用Kei来实现,需要安装MDK4.7这个软件,怎么安装,自己百度哈.都学习32的人了,不会连个软件都不会安装吧....还是那句话 没 ...
随机推荐
- js小知识-数组去重
查看zepto源码时,看到它的数组去重写法非常简单.下面是代码 var uq = function(array){ return [].filter.call(array,function(item, ...
- vue.js基础知识篇(2):指令详解
第三章:指令 1.语法 指令以v-打头,它的值限定为绑定表达式,它负责的是按照表达式的值应用某些行为到DOM上. 内部指令有v-show,v-else,v-model,v-repeat,v-for,v ...
- Java:用Lambda表达式简化代码一例
之前,调用第3方服务,每个方法都差不多“长”这样, 写起来啰嗦, 改起来麻烦, 还容易改漏. public void authorizeRoleToUser(Long userId, List< ...
- 设置input的placeholder样式
自定义input默认placeholder样式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 inpu ...
- ios 初体验<窗口的创建>
1. 创建工程,这步很简单,百度下即可,在info.plist 里面 去掉 Main 的 ,便于新手练习ios,创建ios工程后,在AppDelegate.m,里面的方法application 加上几 ...
- 利用HTML5的window.postMessage实现跨域通信
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp77 HTML5的window.postMessage简述 postM ...
- [ASP.NET MVC]笔记(二) 数据注解和验证
验证注解的使用 1.Required:必须字段 [Required] public string FirstName() { get; set; } 2.StringLength:长度限制,或是可选项 ...
- UCOS-II学习记录
本文主要记录使用UCOS II的相关内容.包括如何完成第一个UCOS II应用程序,和如何创建任务,如何获取系统时间,和利用i3086 驱动完成时间获取,屏幕显示,按键驱动,信号量等内容. UCOS- ...
- 图论中DFS与BFS的区别、用法、详解…
DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...
- C# 引用类型之特例string
在C#编程的时候经常会使用字符串(string)类型,它也是引用类型,但是处处都不作为引用的用法来使用,实属特例,下来我一一罗列出来,供自己记忆方便: 1)字符串的直接赋值:本身字符串就是引用类型,应 ...