一起帮的开发直播已经告一段落:一是主体的功能差不多都实现了,二是用到的架构技术都展示得差不多了。以后就算继续开发,也应该都是一些“技术上”重复的工作而已。整个直播过程耗时近半年,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都快十年了的更多相关文章

  1. 入坑IT十年(二)技术以外

    上一篇博客里提到:技术越来越简单,发布后不久,就看到<技术并不是越来越简单>,这显然是打擂台来了. 技术究竟是不是越来越简单?其实这个问题,要看你究竟是以什么角度来思考这个问题.我们可以举 ...

  2. 大神都在看的RxSwift 的完全入坑手册

    大神都在看的RxSwift 的完全入坑手册 2015-09-24 18:25 CallMeWhy callmewhy 字号:T | T 我主要是通过项目里的 Rx.playground 进行学习和了解 ...

  3. 【Xbox one S】开箱&开机&初入坑心得

    再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...

  4. 新人入坑Redis必会的吐血总结

    新人入坑Redis必会的吐血总结 一.什么是Redis Redis是一个使用C语言开发的开源的高性能的key-value存储系统,我们可以把它近似理解为Java Map.简单来讲,Redis是一种NO ...

  5. 入坑Vue

    长期的后端数据开发着实有些枯燥无趣,项目完工,闲暇之际,最近一直在研究前端方面的东西,不得感叹,前端技术发展速度快的让人有些目不暇接,从jQuery开启的插件化时代,几乎许多网站都被jQuery支配, ...

  6. web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】

    http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...

  7. webpack入坑之旅(一)不是开始的开始

    最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过 ...

  8. 初生牛犊不怕虎 golang入坑系列

    读前必读,下面所有内容都是来自这里. 放到这里的目的,就是为了比对一下,哪里的读者多.平心而论,同样的Markdown,博客园排版真心X看,怎么瞅怎么X看.(X := '难' || X :='耐' | ...

  9. 2-STM32带你入坑系列(点亮一个灯--Keil)

    1-STM32带你入坑系列(STM32介绍) 首先是安装软件 这一节用Kei来实现,需要安装MDK4.7这个软件,怎么安装,自己百度哈.都学习32的人了,不会连个软件都不会安装吧....还是那句话 没 ...

随机推荐

  1. class对象详解

    我们知道,对于java语言,我们一般先写一个类对象,表示对某一类对象概述,其中包括属性,方法等.我们在对类对象编译时,会产生一个.class对象,jvm在加载类对象时,是加载.class 对象文件,我 ...

  2. Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)

    准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796. ...

  3. Amazon Aurora解读(SIGMOD 2017)

    Amazon在SIGMOD 2017发表了论文<Amazon Aurora: DesignConsiderations for High Throughput Cloud-Native Rela ...

  4. H - transaction transaction transaction

    https://vjudge.net/contest/184514#problem/H 题意: 一个商人为了赚钱,在城市之间倒卖商品.有n个城市,每个城市之间有且只有一条无向边连通.给出n个城市的货物 ...

  5. None是什么?

    None是什么,是空,就是空即是色,色即是空.是一个真的很特别的值,下面比较了下 0,True,False (python 的比較) >>> None == 0False>&g ...

  6. c# DateTime 类

    获得当前系统时间: DateTime dt = DateTime.Now;Environment.TickCount可以得到"系统启动到现在"的毫秒值DateTime now = ...

  7. JavaScript封装一个MyAlert弹出框

    平时我们想要显示一些提示信息时会用到alert方法,alert是全局的一个方法,会短暂的中断程序,我们主要用来显示提示客户信息.但是这个方法有一定的局限性,而且本身样式也不够美观.于是我封装了一个实用 ...

  8. 201521123113 《Java程序设计》第2周学习总结

    1.本周学习总结 学习了各种java数据类型以及各种运算符的使用 string类之所以好用是因为这是人可以看得懂的类型,操作简便 Scanner扫描器与标准输出输入用法上的不同,Scanner较标准输 ...

  9. 201521123079《Java程序设计》第2周学习总结

    1. 本周学习总结 学会String类和StringBuilder类的一些用法. 学会使用码云管理代码,会将码云上的代码和本地仓库关联 2. 书面作业 Q1.使用Eclipse关联jdk源代码,并查看 ...

  10. 201521123109 《java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...