入坑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的人了,不会连个软件都不会安装吧....还是那句话 没 ...
随机推荐
- Python之测试webservice接口
前段时间学习了Python操作http接口,觉得挺容易的.最近项目组也有接触webservice接口,心里想想是否Python也可以操作这类接口.于是利用伟大的度娘,花了6个小时研究出来了,所以迫不及 ...
- Linux程序设计综合训练之简易Web服务器
1.功能需求: (1)学习网络套接字编程.HTPP协议.Web服务器等知识: (2)设计一简单Web服务器,提供静态网页浏览服务功能. 2.实现的功能: (1)C语言实现基于socket的Web服务器 ...
- Thread.interrupt()方法理解
原博客地址: 多线程编程 实战篇 (四) 不客气地说,至少有一半人认为,线程的"中断"就是让线程停止. 如果你也这么认为,那你对多线程编程还没有入门. 在java中,线程的中断(i ...
- Oracle DG测试failover和后续恢复报告
Oracle DG测试failover和后续恢复报告 一.概述 二.验证过程: 2.1 A库异常关闭 2.2 B库进行failover切换为新主库 2.3 要求C库成为新主库的备库 2.4 要求A库成 ...
- Java初学者必知 关于Java字符串问题
摘自 http://developer.51cto.com/art/201503/469443.htm 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学 ...
- Linux虚拟机之间实现密钥登陆
Server1与Server2在同一虚拟网络当中,在Server2中使用Server1的Hostname连接Server1,并且无需密码认证. Server1, Hostname: hlmvmea ...
- JSP入门必读
JSP基础知识:转自老师上课梳理的笔记,希望对大家有所帮助.有什么不妥当的地方还望大家批评指正. 特别适用于JSP入门的人员使用.1.JSP [1] 简介1.1 HTML HTML擅长显示一个静 ...
- Springboot 框架实现rest接口风格
在springboot中的一些注解解释: http://blog.csdn.net/u010399316/article/details/52913299 书写规则可参照这个: http://blog ...
- Maven简述
一.前言 以前做过的项目中,没有真正的使用过Maven,只知道其名声很大,其作用是用来管理jar 包的.最近一段时间在项目过程中使用Maven,用Maven构建的web项目,其项目结构只停留在 ...
- my new day in CNblog
感谢大家 今天正式在博客园平台开启我的第三个技术面博客 之前一直坚持在csdn平台撰文(http://blog.csdn.net/github_38885296)欢迎参观:) 因为觉得博客园知名度虽不 ...