前言

今天想讲讲的是我的技术树。我最初是做CS开发的,第一阶段的技术经历是以Powerbuilder来做CS开发,第二阶段开始基于C#做winform开发,眼看前端开发越来越流行,需要更广泛的技术栈势在必行。因此以.Net为基础,我开始拓展自己的技术栈。从14年到18年,跨越了很多界限,到现在为止,应该说.Net,Java,Android,基于nodejs的web开发都积累了一些经验,可以给大家分享一下。

01

我的技能树

我对技能的培养,是很有目的性的。我在开启我的第二阶段技能增长的时候,就预先对自己未来的技术树发展进行了选择。因此当时就画了思维导图并逐渐补充和调整。现在我就将我的“技能树”思维导图跟大家分享。

其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练。未标注的只是了解。

首先提一下我的技能树的底色。从我进入IT行业开始,一直从事的是企业信息化系统的开发,所以在技术树里,还看不到算法、集群、微服务这类技能,这还不在我的技能需求列表内。我的技能覆盖范围是:如何做好一个企业信息化系统。但我未来对这些还是很有兴趣并会进行研究。

史前技能:

作为IT行业的老爷爷,我还有前一段的技术经历,是使用PowerBuilder+Sybase数据库进行CS应用开发。我刚进入IT行业的时候,PowerBuilder还是非常火的,那时候有两火,PowerBuilder和Delphi。那时候也刚好是互联网时代刚开启的时候,所以几年之后,技能便逐渐过时,我从程序员到部门经理,感觉技能无法进步,最后我转行做了产品经理。

在几年前,经过n年的折腾产品,我发现搞技术也挺适合我的,我又回头拿起了技术。一手产品,一手技术,都是我喜欢的事情,因此我想如何能尽快的精进技术,我的技能树思维导图就是那时候诞生的。

首先开刀的就是C#。为什么要选择C#这个看起来似乎有点“没落”的技术呢?这里我得感叹,公司对个人的发展影响重大,一个人的一生,隐约的都在循着某条路线前进,最终形成了你独特的个人人生。你就职的公司是你人生轨迹的重要部分。我在之前的公司担任产品职位,因为做的是和RFID硬件相关的行业,因此选择了C#。在产品研发过程中,逐渐了解C#。之后我进入了一家外贸电商企业,负责企业ERP的研发,因为对操作便捷性的极致追求,仍然采用了C#基于Winform进行开发,这也使得我更深入的介入到研发中去。在这期间,为了攻克技术难题,优化系统架构,提高部门开发效率,我花了大半年的业余时间,把《C#高级编程》啃下来了,至今仍反复阅读,从此也真正的重新进入了程序员的行列。

但从0开始何其之难,因为基础太低。为了尽快的达成目标,我采用了“跳远”式的学习模式,这种模式现在仍然采用,那就是学习的新技术要和上一个技术要有相当程度的升级,尽量避免同级别技术都去学习,且要不断的学习技术和抛弃技术。技术要跳跃式升级是因为学习时间有限,而为什么要学习技术又要抛弃?这是多余么?我认为并不多余,我非常认同一句话:“人生中你所走的每一步,都是构成你人生的基石”,技术大厦的基石,一定是要牢固的,没有扎实的技术基础,就去学新技术,必然走火入魔(产生大量的认知错误)。这也是为什么我看《C#高级编程》的版本是第四版,而不是第六版,因为第四版基于.Net2.0,那是一个技术基石,我未来可以不用,但不能不学。

因为公司的产品是基于C#和WinForm,因此我首先学精的就是它们了。

02

C#相关技术

C#:必须

C#本身就不用说了,需要深度学习。

Linq:必须

Linq是个好东西,我觉得如果C#没有Linq,那可能就索然无味了。使用Linq可以大大的精简代码。而Linq的技术链其实很长,它是从委托、匿名委托、lamda表达式、表达式树,最后才有Linq。

DI/IOC/AOP:值得了解

我觉得深入理解这些概念,对程序员来说很重要。这可以让我们把架构做的非常优化,也有利于我们更好的理解asp.net mvc。

其中微软企业库EntLib我是详细了解过的,受益匪浅,但实际工作中没有用到,因为技术已经过时了。而对于MEF和Spring.Net有兴趣,但没时间去了解。

Membership:值得研究

对于网站的权限控制,不管是webform还是mvc,微软都提供了自己的解决方案,但在实际使用中,企业的需求各异,一般大家都是自己实现,不会用Membership。但了解它,从而了解微软的网站权限设计原理,从而定制自己的权限控制架构,是很有帮助的。

正则表达式:值得研究

我觉得这东西非常有用,但表达式太难记,又用的少。所以到现在为止,还只停留在碰到问题就百度的业余水平。

EmitMapper:必用

在.Net2.0时代,大家大量用DataTable,但它五年前甚至更早就应该被抛弃了,List对象使用起来非常方便,而映射工具使得将前端的数据映射到后端变得非常方便,使用强类型编程变得非常有优势,DataTable应该走入历史了。除了EmitMapper,也有人用其他的比如AutoMapper等,都可以。

Log4Net:必用

对于一个完整的应用系统,怎么能没有日志记录系统?Log4Net已经非常强大,没有必要自己去写一个。

Asp.Net WebForm:未来会继续研究

我算是大致研究过WebForm,虽然没有用于实用,但我始终保持一种想把它实用,并进一步深入了解它的兴趣。肯定有人会觉得,WebForm已经过时了,为什么还要研究它?因为要打好技术大厦的基础,WebForm可以说是一个非常经典的设计,虽然已经过时,但拿来把玩也是很好的。

Asp.Net Mvc:正在使用

当前我的产品里,在后端使用的就是Mvc。但我所使用的Mvc远远不是asp.net mvc。因为实际上只用了其中很少的一部分,而完全抛弃了Razor。因为Razor也过时了,现在流行的是前端开发,后端只要简简单单,就好。

.Net Core:未来应该会使用

当前产品还不需要跨平台,但我感觉未来可能会需要跨平台。

CodeSmith:在用

为什么会使用CodeSmith?这是历史遗留问题,因为当初公司使用的架构,是博客园上的一篇文章推荐的基于Repository的经典架构,那个架构下需要生成大量的类,Model,ViewModel,Access,Service等,所以需要代码生成工具,就用上了CodeSmith。

但随着我后来彻底抛弃了Repository架构,架构越来越简单,CodeSmith也用的越来越少,现在只用于生成ViewModel类。其实就生成VM这种简单的POCO类,用C#直接写一个就行了,但用习惯了CodeSmith不用白不用吧。

不知不觉已经写了5页了,今天就到此为止,下一次继续写完我的技能树。

觉得文章有意义的话,请动动手指,分享给朋友一起来共同学习进步。

欢迎关注本人微信公众号,更及时的关注最新文章(每周三篇原创文章,以及多篇专题文章):

基于.Net进行前端开发的技术栈发展路线(一)的更多相关文章

  1. 基于.Net进行前端开发的技术栈发展路线(二)

    前言 上一篇<我的技能树>文章分享了我的技能成长过程,还未完成,今天继续跟大家分享. 01 我的技能树 我的当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练.未 ...

  2. 基于.Net进行前端开发的技术栈发展路线(三)

    前言 上一篇<我的技能树二>文章分享了我的技能中的前端技能和Java技能,今天继续跟大家分享的就是后端技能了. 我的技能树 我当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗 ...

  3. 网络统计学与web前端开发基础技术

    网络统计学与web前端开发基础技术 学习web前端开发基础技术(网页设计)需要了解:HTML.CSS.JavaScript三种语言.下面我们就来了解一下这三门技术在网页设计中的用途: HTML是网页内 ...

  4. 【web开发】web前端开发常用技术总结归纳

    技术选型规范规范 • Vue版本:2.x • 前端路由:vue-route • 异步请求:Axios • 全局状态管理:VueX • css预处理器:sass/less • h5项目移动端适配规则:使 ...

  5. web前端开发必备技术

    1.Vue.js是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注 ...

  6. 装饰器的初识,基于bootstrap的前端开发

    1装饰器的初识 概念:不改变函数原来的调用方式,动态地给函数添加功能 开放封闭的原则:1>对添加的新功能是开放的,32>不要在元代码进行修改(封闭) 1.1>函数的定义:对代码块和功 ...

  7. 快速了解“云原生”(Cloud Native)和前端开发的技术结合点

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 后端视角,结合点就是通过前端流控缓解后端的压力,提升系统响应能力. 从一般意义理解,Cloud Native 是后端应用的事情,要搞的是系统解耦.横 ...

  8. Web前端开发--JS技术大梳理

    什么是JS      JavaScript是一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语 ...

  9. 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言

    1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等. 2. CSS样式是表现.就像网页的外衣.比如,标题字体.颜色变化,或为标题加入背景图片. ...

随机推荐

  1. 20155205 郝博雅 Exp7 网络欺诈防范

    20155205 郝博雅 Exp7 网络欺诈防范 一.实践内容 (1)简单应用SET工具建立冒名网站 (1分) (2)ettercap DNS spoof (1分) (3)结合应用两种技术,用DNS ...

  2. 关于Apahce服务器安装中遇到的问题

    在这篇中,将记录一下安装Apache服务器所遇到的一些问题,并简单讲一些Apache和Tomcat的区别: 1>apache安装中遇到的问题: 1.1 Apache目前不再提供编译好的exe安装 ...

  3. now

  4. dell T130服务器加内存

    需求:客户一台dell T130塔式服务器,由于本机只有一条8G内存,系统运行比较慢,需要再增加一条8G内存. 增加过程:第一次增加时由于没有注意机器上内存频率是2133的,所以新增加的一条2400频 ...

  5. github使用步骤

    首先需要注册一个github账号 1.认识github首页界面 2.如何新建一个自己的仓库 3.创建README文件 4.创建自己的文件 5.解析文件 6.生成地址 7.如何修改编辑文件

  6. Windows 10 IoT Core 17083 for Insider 版本更新

    1月26日,微软发布了Windows 10 IoT Core 17083 for Insider版本更新,概括如下: 新特性:1. General bug fixes2. Enabled Flash ...

  7. 两张图彻底搞懂MyBatis的Mapper原理!

    作者:肥朝 简单使用 这是一个简单的Mybatis保存对象的例子 1@Test 2public void testSave() throws Exception { 3 //创建sessionFact ...

  8. 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力

    1.引言   达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台. 达达的业务模式与滴滴以及Uber很相似,以众包的方式利 ...

  9. Git使用详细教程(5):修改提交说明

    在使用git的过程中,我们有时在提交时,注释说明会写错,那么我们该如何修改这次提交说明呢?在SVN上我们只能在代码的某个地方加一个不影响功能的空格再次提交,然后写新说明.但是在Git中我们可以吃后悔药 ...

  10. Python学习笔记【第六篇】:迭代器、生成器、高阶函数、装饰器

    迭代器 迭代器是访问集合元素的一种方式,迭代器从对象的第一个元素开始访问,知道所有元素被访问完成.迭代器只能往前访问,不能通过索引访问. 类型内部使用__iter__()方法转为迭代器,使用__nex ...