前言

今天想讲讲的是我的技术树。我最初是做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. Elasticsearch System Call Filters Failed to Install

    Elasticsearch starts to run, error occurs: : system call filters failed to install; check the logs a ...

  2. Think twice before starting the adventure

    杂文一篇. 1. 取名字真心是一件特别困难的事情.这位独立开发者花了将近两天的时间,给他的私人项目取了个名字:这篇博客<为何我不鸟你的开源项目>里显然还忽视了一个原因,就是名字取得太烂以至 ...

  3. 基于SVG.js实现网页初始化线条描绘效果

    前端实现看到一个网页的效果很cool(参考https://tympanus.net/Development/SVGDrawingAnimation/index2.html),决定自己去实现以下这个效果 ...

  4. weka环境配置

    java环境变量设置: 安装jdk到具体目录"ABC"下当前目录下应该有jdk+版本号和jre加版本号. 然后打开环境变量:新建JAVA_HOME内容是:jdk的安装目录.例如:D ...

  5. Collection类,泛型

    Collection(接口) 所有超级接口: Iterable<E> 一.集合 1.集合的介绍&集合和数组的区别 什么是集合:java中的一种容器 什么是数组:java中的一种容器 ...

  6. spark配置参数

    ~/.bashrc export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin /usr/local/spark/conf ...

  7. Linux 区别 chown和chmod的用法

    chown用法用来更改某个目录或文件的用户名和用户组的chown 用户名:组名 文件路径(可以是就对路径也可以是相对路径)例1:chown root:root /tmp/tmp1就是把tmp下的tmp ...

  8. 【腾讯Bugly干货分享】舞动的表情包——浅析GIF格式图片的存储和压缩

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/v0pffOhjFWnVbU2lXjuEmw 导语 G ...

  9. Vipe框架构思记

    准备着手写一个JAVA框架,基于公司目前的框架提取出来.当然公司现在的框架也是我搭建的.在这整理一下思路. 框架名称:Vipe AOP,IOC容器:Spring MVC:Spring MVC ORM: ...

  10. 自学自用 = 网易云课堂(细说Linux-从入门到精通视频教程)

    视频地址 https://study.163.com/course/courseMain.htm?courseId=983014 介绍 本篇博客,旨在记录视频学习的要点,所以格式随意,且没有文字描述, ...